Developer Docs

Claude Code Skills: AI-Assisted Development

What the /ds-* Claude Code skills are, why they exist, and the safety model every one of them shares.

Claude Code Skills: AI-Assisted Development

DevStride's build/ship process — select work, plan it, build it, review it, ship it — used to live entirely in ad-hoc prompting: every developer re-explaining the same steps to Claude Code in slightly different words, with no shared record of what "done right" looks like. The /ds-* skill system turns that proven loop into repeatable, checked-in automation.

This page is the first of three covering the skill system:

  1. This page — what the skills are, why they exist, and the safety model that governs all of them.
  2. The planning loop — shaping roadmap work with /ds-plan and its supporting skills.
  3. The delivery loop — shipping code with /ds-story and its supporting skills.

What these skills are

Each /ds-* skill is a custom slash-command markdown file living at .claude/commands/ds-*.md in the devstride repo — for example .claude/commands/ds-story.md or .claude/commands/ds-plan.md. They are checked into the repo alongside the application code, not stored in a personal Claude Code config. That means:

  • The whole team shares the exact same skill definitions — no "works on my machine" drift between one developer's prompting habits and another's.
  • Skill changes go through the same review process as any other code change (a PR against devstride), so improvements to the automation are visible, diffable, and reviewable.
  • Running /ds-story I11024, /ds-plan I10992, or any other /ds-* command invokes the markdown file at that path — Claude Code reads it as an instruction set for the current turn.

Why they exist

Before this system, shipping a DevStride story meant re-deriving the same sequence by hand every time: figure out which item to work on, move it to In Progress, branch correctly, build the change, self-review, open a PR, get it through CI, merge, update the item, sync develop, and pick the next item. That sequence is well understood — it just wasn't encoded anywhere. Two developers (or the same developer on two different days) would do it slightly differently, and any lesson learned ("always rebase before merging," "don't merge red CI") lived only in that day's chat transcript.

The /ds-* skills exist to fix that: the select → plan → build → review → ship loop is written down once, versioned, and run the same way every time — by a human directly, or autonomously under /loop.

The critical safety model

Every skill that touches DevStride items shares one non-negotiable fact, and it is stated explicitly at the top of each of those skill files — ds-story, ds-plan, ds-insert-story, ds-insert-defect, ds-rationalize-gantt, and (as a read-only caveat) ds-comprehend-plan. Skills that never call the DevStride MCP at all — ds-branch-feature, ds-branch-hotfix, ds-push, ds-ultracode-build, ds-golden, and ds-golden-build — simply don't mention it, because it doesn't apply to them; they operate on git and local/CI infrastructure instead.

This has two direct consequences baked into how the skills are written:

  • Planning skills get explicit sign-off before writing. /ds-plan runs an entire interactive discovery loop with the user and will not create a single item until the user has explicitly confirmed the full Capability → Epic → Story shape. /ds-insert-story and /ds-insert-defect are direct, single-item writes, and /ds-insert-defect additionally asks for explicit confirmation before queue-jumping a defect ahead of already-planned work, rather than silently reprioritizing the roadmap.
  • Delivery skills treat item/lane changes as real even though code isn't live yet. /ds-story moves an item to In Progress, and later to Done, as soon as those transitions happen in the loop — those are real changes to a live item, independent of whether the PR has merged. The MCP cannot exercise branch code, so it has no way to "hold" a write until code ships; the write simply happens.

Code changes are different, and deliberately so: they go through normal git branches and pull requests, exactly as they would without any of these skills. A feature branch, a PR, CI, and a human-reviewable diff stand between a code change and develop/master. There is no equivalent safety net on the DevStride-item side — which is exactly why the skills that touch items are the ones with the heaviest confirm-first language.

The autonomy pattern: full-auto, except at genuine forks

Most /ds-* skills — and especially the top-level delivery orchestrator, /ds-story — are written to run end-to-end without pausing. /ds-story in particular is explicitly designed to be driven under /loop: select a story, mark it In Progress, branch, build, review, open a PR, address findings, merge, run the completion ritual, sync develop, and move to the next story — all without a confirmation prompt between steps. /ds-plan is the one major exception to this pattern — see the callout below.

That autonomy is bounded, not unlimited. Every orchestrating skill pauses and asks the user only at a genuine fork:

  • A human- or infra-gated decision — a story blocked on AWS, DNS, SES, Stripe, secrets, or account provisioning that only the user can act on.
  • An ambiguous, risky, or unverifiable finding — a code-review finding the automation can't confirm on its own, or a merge conflict it can't resolve safely.
  • A destructive or outward-facing action — anything in the guard list above, or any write the skill can't cleanly undo.

Everything else proceeds on the skill's own judgment, with every deferral recorded explicitly — in the build plan, the PR body, and project memory — rather than silently dropped.

The contrast is the important thing to remember: /ds-story is a loop that only stops for genuine forks; /ds-plan is a loop that keeps the human in the room throughout, because the thing it's producing — the shape of the roadmap itself — is exactly the kind of decision this system won't make on your behalf.

Quick start: which skill do I run first?

  • Building out a whole new hierarchy — turning a Module/Capability/Epic into a real, dependency-wired Capability → Epic → Story hierarchy through the interactive discovery loop — start with The Planning Loop and run /ds-plan <item>.
  • Adding a single Story or Defect to a plan that already exists — don't use /ds-plan for this; go straight to The Planning Loop and run /ds-insert-story or /ds-insert-defect directly. /ds-plan is reserved for building/extending a whole hierarchy.
  • Shipping a story that's already planned — picking up the next unblocked item and carrying it through branch, build, review, PR, and merge — start with The Delivery Loop and run /ds-story <item|next>.

If you're not sure which situation you're in: if there's no Story yet with an implementation-ready spec and dependency edges, you need the planning loop first. If the Story already exists and just needs to be built, go straight to the delivery loop.

Next Steps