This page lists every release of the devstride Claude Code plugin, newest first, in plain terms: what you can now do, and what changed that you would notice. Releases that need you to act carry a warning.
To update, run /devstride:update, then /reload-plugins. To have Claude Code update the plugin for you, or to update by hand, see Staying in sync.
The full technical changelog is in CHANGELOG.md in the plugin's repository.
release.backstop.maxWaitMinutes (15 to 1440, default 120) and release.backstop.mode. Run /devstride:release backstop on a schedule. It starts a release only when the oldest waiting work is older than the limit, no release is in progress and no release hold applies, and at most once per window across all your machines.mode: shadow, which records what it would have started and changes nothing. Switch to live once those records look right. The backstop needs a claims block with a get command; /devstride:doctor reports one that is missing.review.localCommand or review.localAssistCommand) can no longer hang silently waiting for input. Before, a stuck review looked like a slow one.PRESENCE_ACTIVE_AT), so your presence command can tell a hung session from a busy one.DEVSTRIDE_MACHINE_NAME when set, otherwise the hostname without .local, in lower case.presence block (presence.command, optional presence.intervalMinutes, default 5) and the plugin runs it at session start, on prompts, while Claude waits for you, at session end and on an interval. Without the block nothing changes.build-item checks the final diff for changes that could cost money, remove something callers still use, cut off someone's access or break a published interface. When it finds one, it posts a DevStride comment that @-mentions the item's creator. It is a notice, not a gate.consequenceNotices block (enabled, notify, categories). /devstride:doctor checks it.build-item now records the as-built description through DevStride, which also updates every linked Knowledge Base spec, or marks it out of sync. The original description is still kept in a comment.devstride/reviewed commit status on GitHub. An epic may carry migrations or deploy configuration onto the release train only when its merged head carries that proof; a branch name alone no longer counts.release.fullRelease). A release at its reviewed head with every gate green merges and deploys without an in-the-moment yes, provided every migration it adds or changes is in the owner's approvedMigrations list. Anything else still asks.Release hold: not before <date> or Release hold: after <item> is live in an item's description to keep its work off the release path. Dates use release.holdTimeZone (default UTC)./devstride:review local-full <base>. A one-off over the small-fix limit lands on the release train only when such a review is recorded at exactly its head, and your own landing tooling can run the same check.releaseTrain.smallFixes set, a one-off that is not a small fix gets a full local review (Claude plus your CLI engine) before it lands on the release train, instead of waiting for the release's pull request. It adds no CI runs.final), so the stuck alarm no longer counts that wait.Review by default), so the board shows it is waiting for a release. It becomes Done when the release ships it.releaseTrain.branch no longer creates a second, empty train beside the old one. The loop keeps using the existing train and tells you how to finish the rename.Release scope: plan line on a plan root collects each epic on a plan integration branch (planIntegrationBranches.pattern) and releases the whole plan together once nothing is left.release.autoStart.enabled (with a claims block) lets a train landing or a finished release start the next release automatically, with exactly one session winning.release.lightRelease.standingYes merges a light release on the owner's standing yes when it is identical to its reviewed tree. Both default to off.runAt: "train" runs on the release-train snapshot before the train merges, and is not repeated later on the same snapshot.release.clearance.scope: "cut-to-deploy" holds release clearance only from the cut to a confirmed deploy, so the next release can start sooner. The post-deploy result is posted as a release/post-deploy commit status, and the next release will not merge until it is green./devstride:release post-deploy only finishes a post-deploy check whose session stopped./reload-plugins, or asks whether to run /devstride:update. Turn it off with plugin.updateCheck: false./devstride:setup agents creates an Active Agents board, tag and shared view in DevStride after your typed yes, and writes the activeAgents block. build-item then places each plan root it works on that board and runs your start and end commands. /devstride:doctor agents checks the setup.create-story deferred <item#> parks a postponed follow-up in the same container under the plan root as deferred bugs. Deferred items are dated after the plan, and the closing report lists what is still open there.Deferred; containers named Deferred defects are still found. List other old titles in defects.deferredContainerLegacyTitles.defects.deferredContainerLegacyTitles and look only for Deferred defects. If you set either container key, or rely on the new default, make sure everyone working in the repository is on 3.24.0 or later.releaseTrain.smallFixes (maxFiles, maxChangedLines): a small one-off on the release train skips its separate review pass. The train's pull request stays the batch's one full review and one CI run.releaseTrain.lateArrivals: "restart" absorbs a one-off that lands while the train's pull request is under review, and reviews the whole snapshot again.releaseTrain (supportTrain is still read), and snapshot branches are named release-train-<date>.release.migrationRenumber and release.devDeployVerification.*/*/support-train-*, add */*/release-train-* before you update.claims block ({ "provider": "devstride" }, or your own commands), build-item claims each story before starting it, so two agents on two machines never build the same one. A story another agent holds is skipped.release.clearance.provider: "devstride" keeps release clearance in DevStride instead of a git ref. /devstride:doctor checks both.update-docs, pre-ship, post-deploy, classify-release, pre-merge-check and others) can be run again on its own by name after a failure.docs.knowledgeBaseSyncSkill, release.classifySkill, release.preMergeSkill, and pool.checkout with pool.checkin (set both or neither).pre-ship accepts --skip <name> (an explicit waiver) and --only <names>.CLEARANCE_HOLDER_TOKEN; DEVSTRIDE_LEASE_TOKEN still works. If your repository has its own tooling that works out the clearance holder, such as a merge guard, update it to read the new name first..claude/ds-config.json now has a published JSON Schema. /devstride:doctor and setup check your config against it and warn about unknown keys with the key you probably meant. Add a top-level "$schema" for editor completion, and list your own tools' key prefixes in repoLocalKeys./devstride:doctor no longer blocks a /devstride:build-item in the same session, and finishes every section even when the plugin is behind. Its seven-day CI audit is now opt-in (/devstride:doctor ci --audit)..claude/statusline.sh modified when your branch already carries the newer copy, and no longer leaves a .bak file in the work tree. The update check no longer fails with installed-payload-mismatch.claude plugin marketplace update devstride, then claude plugin update devstride@devstride --scope <scope> (use the id and scope claude plugin list shows), then restart sessions./reload-plugins when a newer copy is installed, in yellow with /devstride:update when a newer release is published. Hide it with the plugin key in statusLine.hiddenSegments.release.clearance.phaseBudgetMinutes flags a release whose phase runs past its budget.close-out mode for longer work that nothing else waits on.release.deployApproval: a command that approves a production deploy waiting behind a protected environment or manual gate, so the owner's yes to the release also approves its deploy.review.localEffort (initial, followUp, safety) sets the local CLI engine's reasoning effort for each kind of review round.release.productionReview skips a second full review when the production pull request's tree matches what was already reviewed, checking only high-risk paths. onlyWhenTouched runs a release-only pre-ship check only when the release touches its paths. release.syncWorkflow waits for your own production-to-source sync workflow.stat.enterprise delivery profile is retired. Three profiles remain: prototype, standard and extended.profile of enterprise, in config or in a plan root's Delivery profile: line, now runs as standard. To keep the old rigor, set profileOverrides (fixFloor: "all-confirmed", storyVerify: "full", maxLocalReviewRounds: 2, understandReaders: 6) plus review.pollTimeoutMinutes: 20. Run /devstride:rebalance <root> standard (or extended) to rewrite a plan's marker.release.clearance ({ "provider": "github" }, or your own commands), only one release runs at a time across every machine and person. Others wait and are told who holds it. Hotfixes are never blocked.setup ci can add a release-tower check that orders release pull requests.epicIntegrationBranches.mergedStatusName, default Review).release.releaseBranchPattern cuts each release as its own protected branch, so the source keeps taking merges while the release is reviewed.supportTrain.branch lets one-off work ride a long-lived train branch and ship in batches.requestPolicy: "final-head".ci.freezeBaseWhileReleasePrReady is now ignored. A merge beneath a ready release pull request moves its head and triggers another review round before the owner is asked. Set release.releaseBranchPattern to keep merges away from a release in flight.baseBranches, for example ["main"] for a reviewer you pay for per use.extended delivery profile for coarser, multi-hour stories, with the same safety floors as standard./devstride:update runs as written, including for project installs across checkouts and worktrees. Project scope is now the recommended install./devstride:update can stop with plugin-root-missing. Update once with claude plugin marketplace update devstride, then claude plugin update <id> --scope <scope> (from claude plugin list), then reload.codex review is now a second supported Codex engine.--same-session, or set session.jobClassGate: false, to allow it.defects.deferredContainerTitle), and epicIntegrationBranches.autoRelease accepts "ask".release no longer skips the deploy confirmation when a post-deploy check is configured.review.mandatoryLenses forces your own review lens onto your own risk paths: each entry names path globs and the question a reviewer must answer for every changed hunk.build-item and release fetch first and check what others have landed before acting.release.postDeployCheckSkill: a local skill that checks production after a deploy and can stop a release for a rollback decision. localEnvironment.fetchOnSessionStart tells you at session start when your branch is behind./devstride:update updates the installation in use and verifies it. /reload-plugins usually activates the new version without a restart.review.localAssistCommand asks for a second opinion on hard calls.review.localReReviewScope now sets the follow-up scope for Claude, the local CLI and cloud reviewers alike. If you set it to "full", every reviewer now re-reviews the whole diff./devstride:doctor now offers to fix what it found, after the full report, with one question for the batch.statusLine.autoUpdate: false. Record segments that do not apply in statusLine.hiddenSegments.stage block (resolve, productionStages) tells the loop which deployment stage a checkout points at. release names it at the production gate, and branch-hotfix stops before touching a production stage's database.setup can write the repository a status line.review.localReReviewScope), and the wait for a cloud reviewer is learned per reviewer (review.adaptiveReviewerWait).localEnvironment.recreateMode and localEnvironment.instanceName tell branch-hotfix how your recreate command behaves, so a hotfix always ends in a working local instance.localEnvironment.recreate lets branch-hotfix rebuild a local instance from the production base instead of leaving its schema ahead of the code. It stops and asks when there is no safe path.ci.expectedRunsPerPullRequest now counts runs per workflow, not across all workflows.ci.expectedRunsPerPullRequest to tolerate the old total across workflows, set it back to the runs you expect from each workflow (almost always 1).plugin block: updateCheck, autoUpdate and pin.localEnvironment block describes how your repository stands up an isolated local instance./devstride:ci-audit measures executed CI runs and minutes. setup ci offers CI-cost changes to your workflows and applies only the ones you accept.release now hands documentation to a local skill in your repository (docs.updateSkill) after the deploy is confirmed. Release notes are opt-in with --release-notes.release.docsRepo is deprecated and releaseNotesWhen is retired. Run /devstride:setup docs to migrate.prototype, standard, enterprise) set how much rigor the loop spends on each item, through the new profile and profileOverrides keys. New /devstride:rebalance <root> <profile> re-slices a live plan to another profile.profile now runs standard, lighter than the single level used before. At the time, "profile": "enterprise" kept the old behaviour; that profile was retired in 3.12.0.main, develop and similar).ds marketplace entry lets you install as ds@devstride; commands stay /devstride:<skill>. Install one entry or the other, never both./devstride:setup inspects your repository, proposes .claude/ds-config.json with the evidence for each value, asks only what it could not settle, then validates the result by running it./devstride:doctor: a read-only check of every loop prerequisite, with the fix for each problem it finds.itemTagFormat, review.localReviewerName, epicIntegrationBranches.slugRule and epicIntegrationBranches.releaseTarget.ultracode-build now reads verify.testSingle to run the touched test suite.push includes new files, inserted stories are wired into the plan, and rationalize-gantt stops on a dependency cycle.@<tag> to the marketplace source.claude plugin marketplace update devstride and claude plugin update devstride@devstride, then a restart./mcp after installing to connect. Until you do, the server adds no tools and nothing prompts you. Signing in grants read and write access to the organization you choose, at your level in the app./devstride:<name>: planning (plan, comprehend-plan, insert-story, insert-defect, rationalize-gantt) and delivery (build-item, ultracode-build, review, pr, push, branch-feature, branch-hotfix, create-story, create-defect, release).