Agentic Skills

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 four 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 skill audit — a flat reference of every /ds-* skill: how you invoke it, its arguments, and what it does.
  3. The planning loop — shaping roadmap work with /ds-plan and its supporting skills.
  4. The delivery loop — shipping code with /ds-build-item and its supporting skills.

What these skills are

Each /ds-* skill is a checked-in Claude Code skill — a SKILL.md markdown file living at .claude/skills/ds-*/SKILL.md in the devstride repo — for example .claude/skills/ds-build-item/SKILL.md or .claude/skills/ds-plan/SKILL.md. They are checked into the repo alongside the application code, not stored in a personal Claude Code config, and are invoked as slash commands (/ds-build-item, /ds-plan, …) or picked up automatically by name/description. 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-build-item 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-build-item, ds-plan, ds-insert-story, ds-insert-defect, ds-create-story, ds-create-defect, ds-rationalize-gantt, and (as a read-only caveat) ds-comprehend-plan. ds-pr also touches the MCP, but only to link_pull_request a finished PR to its item. Skills that never call the DevStride MCP at all — ds-branch-feature, ds-branch-hotfix, ds-push, ds-ultracode-build, ds-review, ds-pr-review, 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. /ds-create-story and /ds-create-defect — the one-off entry points for inbound work that isn't part of a plan — likewise confirm where the item lands (which Module/Capability/Epic, which board) before creating it.
  • Delivery skills treat item/lane changes as real even though code isn't live yet. /ds-build-item 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-build-item — are written to run end-to-end without pausing. /ds-build-item 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-build-item 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-build-item <item|next> (drive it under /loop to walk a whole plan).
  • Handling a one-off ticket or bug that isn't in any plan — an inbound support request or ad-hoc fix — run /ds-create-story or /ds-create-defect. They create the item, place it, assign it to you, and then deliver it through the same build loop once (single-shot, no plan walk). See The Delivery Loop.

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. If the work isn't tracked at all yet and isn't part of a sequenced plan, the one-off /ds-create-* skills create and ship it in one shot.

Next Steps