Run this after installing the plugin and connecting DevStride:
/devstride:setup
Setup’s job is to produce a repository-specific .claude/ds-config.json from evidence, not guesses, and prove that the resulting commands and branch roles work.
origin remote..claude/ds-config.json.Detected values carry their evidence. Ambiguous values become questions with candidates; unknown values become open questions. One unambiguous repository fact is confirmed in a batch instead of being asked again individually.
Setup always confirms the work-type mapping because it determines where integration branches and releases occur. It also asks:
/devstride:release can quote the real consequence at the owner gate;.claude/ds-lessons.md.An explicit answer always wins over detection.
.claude/ds-config.json. It does not edit code, AGENTS.md, CLAUDE.md, .gitignore, CI workflows, Claude permissions, git config, branches, or DevStride items. It never installs or updates tools.Inspection and interviewing are read-only. The repository’s own verify commands run during validation and may themselves create caches, regenerate files, or format code; setup asks before running a command that looks mutating and reports if the tree changes.
The plugin has fixed no-config fallbacks—develop for normal work and release source, master for production and hotfixes—but setup does not blindly write those names. In a git repository with an origin remote, it enumerates the branches that actually exist and confirms remote-only or cached evidence before proposing four explicit settings:
baseBranch and release.releaseSource, where normal work lands and releases start;release.productionBranch and hotfixBaseBranch, where production releases and urgent fixes are based.Setup recognizes exact common names among those existing branches:
| Likely role | Exact candidates |
|---|---|
| Development or pre-production | develop, development, staging, stage, canary, test, testing, qa |
| Production | main, master, production, prod |
| Single trunk | trunk |
One development candidate and one production candidate form a proposed pair. If several names match either role—for example both main and production—setup shows the candidates and asks; list order is not a ranking. A lone staging, canary, test, or QA branch is never promoted to production by name alone. Matching is on the whole branch name, so production-fix is not mistaken for production.
origin/HEAD helps identify the repository’s ordinary pull-request base, but it does not prove which branch deploys. An explicit answer or existing config always wins.
Doctor applies the same read-only detection when an absent branch setting falls back to a ref that does not exist. It prints the exact mapping setup would propose, but never edits the config. An explicit configured branch that does not exist is reported as invalid rather than replaced by a naming guess.
epicIntegrationBranches.autoRelease starts as false. A completed release unit stops at release-ready until an owner deliberately enables automatic release to the base branch.verify.typecheck and verify.test are configured. Otherwise each item keeps its own pull-request path.verify.skipDuringStoryBuilds, preShipChecks, and preCommitWiringChecks start empty. Setup does not invent expensive or repository-specific gates.lessonsDoc but never creates the lessons file. review is its only writer.After writing, setup checks:
origin, GitHub, and an authenticated gh with write access;Every check reports PASS, FAIL, SKIPPED, or UNVERIFIABLE. Setup runs all checks even after a failure and calls the repository loop-ready only when there are no failures. A skipped test or offline organization check is named rather than silently treated as a pass.
Re-running /devstride:setup re-detects the repository and proposes only changes. Its deep merge preserves:
_-prefixed annotation;It does not normalize or replace the whole file. A docs-repository block may be removed only after you explicitly say it no longer applies.
To validate an existing file without inspecting for a rewrite, asking questions, or writing anything:
/devstride:setup validate
For read-only inspection of one detector, use ecosystem, verify, ci, branches, engines, or docs:
/devstride:setup ci
A detector-only run reports its findings and stops; it never writes a partial config.
/devstride:setup validate proves the config file. /devstride:doctor checks the broader machine and repository state, including the installed plugin version, marketplace registration, DevStride connection, CI draft gate, and merge gates. Both report fixes; doctor never applies them.