Dx Org Devhub Configure logo

Dx Org Devhub Configure

OrganizationPopular
forcedotcom
dx-org-devhub-configure

Enable Dev Hub on a Salesforce org and view its scratch org allocation, using the Salesforce CLI (sf). Use when someone wants to turn on or enable Dev Hub, set up an org to create scratch orgs or second-generation (2GP) and unlocked packages, check whether Dev Hub is already enabled, see how many scratch orgs they can create (Active and Daily scratch org limits, remaining allocation), configure Dev Hub preferences such as packaging, org shape export, or scratch org snapshots, or list the active scratch orgs created from a Dev Hub. Enabling deploys the enableScratchOrgManagementPref setting, is irreversible, needs a System Administrator (ModifyAllData or ModifyMetadata), and does not work in sandboxes. DO NOT TRIGGER for creating or deleting individual scratch orgs, for switching the default org (use dx-org-switch), or for trial or org expiration dates (use dx-org-trial-expiration-check).

Overview

Publisherforcedotcom
Repositorysf-skills
Skill namedx-org-devhub-configure
Stars
1.1K
Forks
351
Bundled files
3
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 3 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by forcedotcom on GitHub. Read the source before you install it.

Installation

Install the Dx Org Devhub Configure AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/forcedotcom/sf-skills/tree/main/plugins/builder/dx-org-lifecycle/skills/dx-org-devhub-configure
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/forcedotcom/sf-skills.git /tmp/sf-skills
mkdir -p .claude/skills
cp -r /tmp/sf-skills/plugins/builder/dx-org-lifecycle/skills/dx-org-devhub-configure .claude/skills/dx-org-devhub-configure
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Dx Org Devhub Configure in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Dx Org Devhub Configure on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Dx Org Devhub Configure is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Enable Dev Hub & View Scratch Org Allocation

Enable Dev Hub on a Salesforce org, verify whether it is already on, and see the org's scratch org allocation (Active and Daily limits and how many remain) — for the default org or a named org. The skill can also configure Dev Hub sub-preferences (packaging, org shape export, scratch org snapshots) and list the active scratch orgs created from a Dev Hub.

Dev Hub is the org feature that lets you create and manage scratch orgs and second-generation (2GP) / unlocked packages.

When to use

Trigger on requests like:

  • "Enable Dev Hub" / "Turn on Dev Hub" / "Set up this org for scratch orgs."
  • "Is Dev Hub enabled on my org?" / "Check if Dev Hub is on."
  • "How many scratch orgs can I create?" / "What's my scratch org allocation / limit?" / "How many scratch orgs do I have left?"
  • "Turn on packaging / 2GP / unlocked packages" / "Enable org shape export" / "Enable scratch org snapshots" (Dev Hub sub-preferences).
  • "List the scratch orgs on my Dev Hub."

When NOT to use

Do not trigger this skill for:

  • Creating or deleting an individual scratch org — that is sf org create scratch / sf org delete scratch, a different workflow. This skill enables the Dev Hub feature and reports allocation; it does not create scratch orgs.
  • Switching the default/active org — use dx-org-switch.
  • Trial or org expiration dates ("when does my org expire") — use dx-org-trial-expiration-check.

How Dev Hub enablement is determined

The standard object ScratchOrgInfo is provisioned and becomes queryable only when Dev Hub is enabled. So a successful SELECT COUNT() FROM ScratchOrgInfo means Dev Hub is ON; an INVALID_TYPE error means it is OFF. This is the reliable signal.

Do not infer enablement from sf org list limits alone: it reports ActiveScratchOrgs / DailyScratchOrgs rows even on orgs where Dev Hub is off, so limits show allocation but not enablement.

How enabling works (important)

  • The Dev Hub master switch is the deployable Metadata API field DevHubSettings.enableScratchOrgManagementPref. There is no enableDevHub field and no dedicated sf command to turn it on — deploying this setting is exactly what the Setup toggle does.
  • Enabling is irreversible — once on, Dev Hub cannot be turned off.
  • Requires a user with ModifyAllData or ModifyMetadata (a System Administrator has these). A user without them gets INSUFFICIENT_ACCESS.
  • Cannot be enabled in a sandbox, or in an org that has a registered namespace.
  • Available in Developer, Enterprise, Performance, Unlimited, and trial editions.

Steps

  1. CRITICAL: Run the bundled helper script, which handles Dev Hub detection, the enablement deploy (with a safe dry-run default), allocation math, and structured output, and works on macOS and Linux. Always invoke it by absolute path from the skill directory — never ./scripts/, which resolves against the user's current directory and will either run the wrong script or fail. The script self-checks this: if $0 is not absolute it exits with a usage error, so pass the full path to <skill_dir> (the directory containing this SKILL.md).

    bash
    bash "<skill_dir>/scripts/devhub.sh" <alias-or-username>            # status: on? + allocation
    bash "<skill_dir>/scripts/devhub.sh"                               # default org (target-org)
    bash "<skill_dir>/scripts/devhub.sh" <org> --allocation           # allocation only
    bash "<skill_dir>/scripts/devhub.sh" <org> --enable               # validate enabling (dry run)
    bash "<skill_dir>/scripts/devhub.sh" <org> --enable --apply       # actually enable (irreversible)
    bash "<skill_dir>/scripts/devhub.sh" <org> --list-scratch         # list active scratch orgs
    bash "<skill_dir>/scripts/devhub.sh" <alias> --instance-url <url> --enable --apply  # log in first, then enable
    bash "<skill_dir>/scripts/devhub.sh" <url>                        # bare instance URL: log in to it

    When the user supplies an instance URL (their My Domain, sandbox, or pre-release/scratch login URL — e.g. https://my-domain.my.salesforce.com), pass that exact URL with --instance-url <url> — the script accepts Salesforce-owned hostnames and logs in with sf org login web --instance-url <url> and then continues. A bare URL positional is accepted as shorthand for the same thing.

    <skill_dir> is the absolute path to the directory containing this SKILL.md.

  2. For enablement, default to a dry run first. Run --enable (no --apply) to validate the deploy, then relay the result. Because enabling is irreversible, only run --enable --apply when the user has clearly asked to actually enable Dev Hub. Applied operations require an explicit org alias or username; the script refuses to mutate an implicit default org. If the deploy is rejected for permissions, surface the Setup-UI fallback it prints.

  3. Relay the script output. When an org can't be queried, surface the sf org login web command the script prints so the user can authenticate. Pick optional flags based on the request (see below): --allocation for limits only, --list-scratch to enumerate scratch orgs, --packaging / --snapshots / --shape to turn on sub-preferences, --json for automation.

Before you finish

Verify these before returning your answer:

  • CRITICAL: Invoked the helper via its absolute path (bash "<skill_dir>/scripts/devhub.sh" …), never ./scripts/ (the script rejects a non-absolute $0).
  • Did not run --apply unless the user clearly asked to actually enable Dev Hub or deploy a preference — enabling is irreversible.
  • Relayed the script's own output (status/allocation or the login/Setup-UI guidance it printed), rather than substituting a hand-written answer.

Options

FlagPurpose
--allocation, -AShow only the scratch org allocation (Active/Daily).
--list-scratch, -lList active scratch orgs created from this Dev Hub.
--enable, -eEnable Dev Hub (deploys enableScratchOrgManagementPref=true). Dry run unless --apply.
--configure, -cConfigure sub-preferences without (re)enabling the master switch. Pair with a pref flag.
--packagingenablePackaging2=true (Unlocked + 2GP packages).
--snapshotsenableScratchOrgSnapshotPref=true.
--shapeenableShapeExportPref=true.
--scratch-managementenableScratchOrgManagementPref=true (the Dev Hub switch).
--pref KEY=VALUEAny DevHubSettings sub-pref (KEY starts with enable, VALUE true/false). Repeatable.
--applyActually deploy to the explicit org argument. Default for --enable/--configure is a validate-only dry run.
--loginAuthenticate an org first via sf org login web (opens a browser), then run the action.
--instance-url <url>Log in to a specific instance (My Domain, sandbox, or pre-release/scratch instance) with sf org login web --instance-url <url>. Implies --login.
--jsonEmit machine-readable JSON.
--fail-if-disabledExit 3 if Dev Hub is not enabled (CI/cron gate).
--help, -hShow usage.

--enable may be combined with sub-pref flags to enable and configure at once (e.g. --enable --packaging --apply). If omitted, the org defaults to target-org, then target-dev-hub.

Output examples

The script prints the authoritative output at runtime. If you need to calibrate what an enabled-vs-disabled status transcript looks like (including the allocation table and the enable/Setup-UI guidance), read examples/status-output.md — otherwise skip it to keep this workflow lean.

Structured output for automation (--json)

Use --json in any mode for machine-readable output (no prose). Status returns devHubEnabled, status, and an allocation object; enablement returns success, applied, and devHubVerifiedState. Deterministic, no LLM needed.

bash
bash "<skill_dir>/scripts/devhub.sh" my-devhub --json
# {"org":"my-devhub","devHubEnabled":true,"status":"enabled", ... }

--fail-if-disabled exits 3 (and prints an ALERT: line to stderr) if Dev Hub is not enabled, so a scheduled job can gate on it.

Exit codes

  • 0 success
  • 1 an org could not be queried, or a deploy failed (auth/connection/deploy)
  • 2 bad usage or a missing dependency (sf or jq)
  • 3 Dev Hub is not enabled (only when --fail-if-disabled is set)

Authentication

If the org isn't authenticated yet, the skill can log in for you with --login (or --instance-url <url>), then continue with the requested action in the same run — this is the preferred path when the user provides an instance URL:

Substitute the user's actual instance URL for <url> (shown here as the generic https://my-domain.my.salesforce.com placeholder):

bash
# Log in to a specific instance (My Domain / pre-release / sandbox), then enable:
bash "<skill_dir>/scripts/devhub.sh" my-alias \
  --instance-url https://my-domain.my.salesforce.com --enable --apply

# Bare instance URL as shorthand — logs in to it, then reports status:
bash "<skill_dir>/scripts/devhub.sh" https://my-domain.my.salesforce.com

# Just authenticate an org (no other action):
bash "<skill_dir>/scripts/devhub.sh" my-alias --login

sf org login web opens a browser for the OAuth flow; complete it promptly (the session times out). A supplied positional (my-alias) becomes the CLI alias; a positional that looks like a URL (contains ://) is taken as the --instance-url to log in to. The script accepts only HTTPS Salesforce-owned hostnames for this option. Omit --instance-url for standard production/DE/trial logins (login.salesforce.com). If the browser flow keeps timing out, the script prints the sf org login device fallback for a code-based login.

If an org isn't authenticated and no login flag was passed, the script instead prints the exact command to log in and re-run — using the instance URL you supplied when there is one:

text
  my-org                         could not query org (...)

  To authenticate against https://my-domain.my.salesforce.com, run:
    sf org login web --instance-url "https://my-domain.my.salesforce.com" --alias "my-org"
  Or let this script log you in and continue in one step:
    devhub.sh "my-org" --instance-url "https://my-domain.my.salesforce.com" --login
  Then re-run. List existing logins with:  sf org list

Manual fallback (if the script is unavailable)

bash
# Detect Dev Hub (INVALID_TYPE error means OFF; a count means ON):
sf data query --query "SELECT COUNT() FROM ScratchOrgInfo" --target-org <org> --json

# Enable Dev Hub via the Tooling API (what the Setup toggle does; irreversible):
sf api request rest "/services/data/v47.0/tooling/sobjects/DevHubSettings/DevHub" \
  --method PATCH \
  --body '{"FullName":"DevHub","Metadata":{"enableScratchOrgManagementPref":true}}' \
  --target-org <org>

# Or enable in the UI: Setup > Quick Find > "Dev Hub" > turn Enable Dev Hub On.

# View scratch org allocation:
sf org list limits --target-org <org> --json | jq '.result[] | select(.name|test("ScratchOrg"))'

Notes

  • Requires the Salesforce CLI (sf) and jq on the PATH, plus at least one authenticated org (sf org login web).
  • After enabling, set the org as your default Dev Hub: sf config set target-dev-hub <org>.
  • Enabling packaging (enablePackaging2) requires Dev Hub to be on first — --enable --packaging handles the ordering in a single deploy.
  • Non-admin users still need object access (Read/Create on ScratchOrgInfo and ActiveScratchOrg) to create/view scratch orgs, and the "Create and Update Second-Generation Packages" permission to build 2GP/unlocked packages.
  • To switch the default org use dx-org-switch; to check expiration use dx-org-trial-expiration-check.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Dx Org Devhub Configure AI skill do?

Enable Dev Hub on a Salesforce org and view its scratch org allocation, using the Salesforce CLI (sf). Use when someone wants to turn on or enable Dev Hub, set up an org to create scratch orgs or second-generation (2GP) and unlocked packages, check whether Dev Hub is already enabled, see how many scratch orgs they can create (Active and Daily scratch org limits, remaining allocation), configure Dev Hub preferences such as packaging, org shape export, or scratch org snapshots, or list the active scratch orgs created from a Dev Hub. Enabling deploys the enableScratchOrgManagementPref setting,...

Why use Dx Org Devhub Configure on TypingMind?

Because you install it once and use it with any model. Dx Org Devhub Configure is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Dx Org Devhub Configure in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/forcedotcom/sf-skills/tree/main/plugins/builder/dx-org-lifecycle/skills/dx-org-devhub-configure. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Dx Org Devhub Configure?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Dx Org Devhub Configure?

As many as you like. As long as a model supports skills, you can use Dx Org Devhub Configure with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Dx Org Devhub Configure AI skill free?

Yes. It is published on GitHub by forcedotcom under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇