From spellbook
Use when the user asks to "start development", "implement the spec", "run the dev loop", or to continue/resume the implementation of an existing spec.
How this skill is triggered — by the user, by Claude, or both
Slash command
/spellbook:running-spec-devThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Replicates, in Claude Code, the `claude-quickstarts/autonomous-coding` flow:
Replicates, in Claude Code, the claude-quickstarts/autonomous-coding flow:
the spec.xml (rich contract) feeds a trackable tasks.json, which is the
durable source of truth of the development loop. The harness task tools
(TaskCreate/TaskUpdate/TaskList) are the live mirror of the session; the
tasks.json is the persistent state across sessions.
Role split:
spec.xml= the what (rich, stable).tasks.json= the state of doing (mutable, trackable). Never editspec.xmlduring the loop.
specs/.
If there are several, ask which one.python "${CLAUDE_PLUGIN_ROOT}/skills/writing-specs/scripts/validate_spec.py" specs/<slug>/spec.xml
Don't proceed until it exits with code 0.tasks.json (in specs/<slug>/tasks.json):
<implementation_steps>: one task per item in
<tasks> (or per <step> for coarser granularity). blockedBy
default = the previous step's tasks. Fill files/acceptance from
<context> and <success_criteria>. Schema and example in
references/tasks_schema.json.feat/<slug> or fix/<slug> branch
(per the spec's type). Create it if needed. Don't commit unless the user asks.completed, create the task
(TaskCreate) and reproduce dependencies with addBlockedBy per the
blockedBy in tasks.json.On resume (anti-regression). If the session starts with tasks already completed,
before picking up new work re-validate the acceptance of 1–2 of the most recently
completed ones (the most central to functionality). If any fails, move it back to
in_progress and fix it before advancing — the previous session may have
introduced a regression.
Repeat until there's no pending/in_progress task:
TaskList → lowest unblocked id (all blockedBy are completed).
TaskGet for the full context.TaskUpdate status=in_progress.python main_nova.py (smoke), or checking the task's acceptance. If it fails,
stay on the task (don't mark completed); fix and re-validate.TaskUpdate status=completed and update the
corresponding status in tasks.json. Keep both sides in sync.When the queue is empty, summarize: completed tasks, validations run, and what's
still open (<open_questions> from the spec that are still relevant).
completed with a failing test, partial implementation, or unresolved error.TaskCreate +
addBlockedBy) and record them in tasks.json too.Agent tool, using owner to claim the task. Use it only
when the user asks or the gain is clear — the default is the sequential loop.Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub iagovrocha/spellbook-agents --plugin spellbook