Skill: implement
SkillProductivityUse to implement a feature from its tasks.json with test-driven development — writes a failing test first, makes it pass, refactors, gates, and commits per task. Triggers on "implement {slug}", "build {slug}", "TDD {slug}", "code up the tasks for {slug}", "/sdd:implement {slug}", "імплементуй {slug}", "реалізуй фічу {slug}", "напиши код за задачами". Reads docs/features/{slug}/tasks.json + the upstream artifacts, detects the repo's test/lint/vet commands stack-agnostically, builds a dependency DAG, and runs one of three modes — sequential single-agent TDD, an agent team (TeamCreate), or a dynamic Workflow — chosen from settings + DAG shape with graceful fallback. Hard-refuses if tasks.json is missing.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Skill: implement skill
What this skill tells your AI
The instructions your AI receives, as published by genkovich/sdd in skills/implement/SKILL.md and read by ahel’s review.
The implementation engine. It turns tasks.json into committed, tested code through a strict TDD cycle per task — SELECT → RED → GREEN → REFACTOR → GATE → COMMIT — and orchestrates that cycle in one of three modes (sequential / agent-team / dynamic-workflow) picked by an unambiguous decision tree. Everything is stack-agnostic: the test, lint, and vet commands are detected, never hard-coded.
This file is the spine. Each step delegates to a file in references/.
Owner
Tech Lead drives; the engine runs the cycle. The three subagents ship with the plugin: test-author (RED), implementer (GREEN/REFACTOR/GATE), reviewer (read-only review).
Inputs
<slug>— feature slug.- Gate (hard refuse):
docs/features/<slug>/tasks.json. Missing → «runtasks <slug>first». - Read for context (the agents read these directly, not via paraphrase):
spec.md(AC),data-model.md+ the staged migrations underdocs/features/<slug>/migrations/(alayer: migrationtask promotes these into the livemigrations/tree — see./references/inputs.md),contracts/openapi.yaml,test-plan.md,sad.md, Acceptedadr/. - Settings:
.claude/sdd.local.md(auto-created with documented defaults if absent — normally byspecifyat the backbone start;implementcreates it too if you jump straight here) →./references/settings.md.
Protocol
- Preconditions. Verify
tasks.jsonexists and parses; load the upstream artifacts list. Detail →./references/inputs.md. - Settings. Read
.claude/sdd.local.md; if absent, auto-create it with the documented defaults (frontmatter + the «What each key does» body, self-documenting) and patch.gitignore(.claude/*.local.md,.worktrees/) — the same templatespecifywrites. →./references/settings.md. - Detect commands. Run the stack-agnostic cascade (settings override → Makefile → package scripts → language manifests → Docker probe for the integration tier) to resolve unit / integration / lint / vet commands. Print what was detected. →
./references/command-detection.md. - Build the DAG. Parse
tasks.json, validatedepsis acyclic, topologically sort into phases (Kahn). Computetask_count,longest_chain,parallel_width. Mark serialization lanes (layer: migration; tasks with overlappingfiles_hint). - Pick the mode. Run the decision tree (below; full form →
./references/decision-tree.md). Apply the guards. - Generate the run-plan. Sequential → an ordered task list. Team → a shared TaskList with the full task text in each body. Workflow → a generated
Workflowscript (DAG → Kahn phases → fan-out pipeline). →./references/team-exec.md/./references/workflow-exec.md. - Banner. Print the active mode and the settings that drove it:
mode=<…> tdd=<…> isolation=<…> parallel=<n> integration=<…>. The user sees exactly how the engine will behave before it acts. - Execute in the chosen mode. Every task runs the TDD cycle →
./references/tdd-loop.md. Alayer: migrationtask first promotes its staged migration(s) (docs/features/<slug>/migrations/<NN>_*) into the livemigrations/tree — assigning the real sequence number / timestamp per the repo's convention, in ordinal order — then applies + reverts them; detail →./references/inputs.md. - Per-task gate + commit. After GREEN+REFACTOR: unit + (integration if available) + lint + vet must be clean, then commit task-scoped with trailers
SDD-Task: <id>andSDD-AC: <id>(one per satisfied AC). Tasks in one compile-coupled lane (shared contract file infiles_hint) pass one shared gate and one commit carrying every task's trailers — the sanctioned exception in./references/tdd-loop.md§COMMIT. Updatetracker.md→done. - Summary + hand off. Report covered AC, commits made (with
SDD-Tasktrailers), any task dropped/blocked, and the per-task gate results. Then emit the stage-handoff block per../_shared/handoff.md— What I did (covered AC, commits withSDD-Tasktrailers, gate results) + Review (the committed diff +tasks/tracker.md) + Run next (/clear, then/sdd:review <slug>— a clean-context pass over the whole diff), then/sdd:ship <slug>. In team mode thereviewermay also run per-task, but the authoritative independent review of the whole change lives in thereviewskill —implementdoes not self-certify.
Decision tree (compact)
parallel_eligible := isolation==worktree AND max_parallel>1 AND parallel_width>=2
AND (size in {M,L,XL} OR task_count>=4)
if team_mode AND parallel_eligible: → AGENT TEAM (TeamCreate) over the DAG
elif workflow_mode=="auto" AND parallel_eligible AND Workflow-available: → DYNAMIC WORKFLOW
else: → SEQUENTIAL single-agent TDD (topo order)
Guards (apply before dispatch): team_mode but not eligible → warn + downgrade to the next mode. max_parallel>1 with isolation: inplace → clamp parallel to 1 (no two agents edit one tree). workflow_mode: off → never generate a Workflow. tdd: false → skip RED (warn loudly — you lose the safety net). require_integration: always but Docker absent → BLOCK before dispatch; auto → run unit-only and mark integration NON-red; never → skip the integration tier. Full table → ./references/decision-tree.md. Graceful degrade: if Workflow/TeamCreate is unavailable at runtime, fall through to sequential.
TDD cycle (per task)
SELECT → RED → GREEN → REFACTOR → GATE → COMMIT. The RED step is load-bearing: write the test first, run it, and classify the first run — GOOD red (assertion fails / unimplemented) vs BAD red (the test itself won't compile → fix the test) vs false-pass (green immediately → the test is too weak, strengthen it) vs NON-red (skipped because Docker is absent → governed by require_integration, counts as neither red nor green). Quote the failing line before writing any production code. Escalation on persistent red → ./references/escalation.md: more-capable model → retry → split the task → if the test encodes a wrong AC, ask a human (never weaken the test) → rollback to the last green. stop_on_red decides halt vs drop-and-continue (dependents auto-block).
Definition of Done
- Every task in
tasks.jsonis either committed (test-first, gate-clean,SDD-Task/SDD-ACtrailers) or explicitly reported as dropped/blocked with the reason. - Unit gate green; integration green where available (or NON-red recorded with the policy reason); lint + vet clean per the detected commands.
- The active mode + settings were printed in the banner before execution.
tracker.mdreflects final status; the summary reports the gate results and hands off toreview(the independent review gate) —implementdoes not self-certify the whole change.- The per-task GATE (unit + integration + lint + vet) is this skill's structural self-check (
../_shared/self-check.md); its results are reported in the handoff.
Anti-patterns
- Code before the test. RED first, always (unless
tdd: false, which warns). - Weakening a test to make it pass. If the AC is wrong, ask a human and fix the AC; never edit the test to be less strict.
- Skipping the RED classification. A false-pass that looks green hides a useless test.
- Parallel agents editing one working tree. Parallelism requires worktree isolation — the guard clamps it.
- Committing with a red or skipped gate and calling it done. A NON-red integration tier must be labelled, not hidden.
- Spawning a team for <4 tasks — coordination overhead exceeds the gain; the eligibility check forbids it.
- Claiming integration passed when Docker was absent. Report NON-red honestly.
References & template
inputs.md · settings.md · command-detection.md · decision-tree.md · tdd-loop.md · team-exec.md · workflow-exec.md · escalation.md — all in ./references/.
Signals
- GitHub stars
- 140
- Forks
- 51
- Last commit
- Sep 2026
- Hacker News mentions
- 20
Advanced
- Catalog kind
- skill
- Gateway key
implement-genkovich- Source
- github.com/genkovich/sdd