Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/genkovich/sdd/tasksnpx skills add genkovich/sdd --skill tasksgit clone --depth 1 https://github.com/genkovich/sddWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00176 | $0.02871 |
| Opus 5 | $0.00088 | $0.01435 |
| Sonnet 5 | $0.00035 | $0.00574 |
| Haiku 4.5 | $0.00018 | $0.00287 |
Grade A, and why
tasks scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 101 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Skill: tasks
Task-breakdown generator: atomic tasks ≤1 day, each a separately reviewable change (≤~500 LOC preferred), with a visible dependency graph and a Definition of Done per task. One task = one focused session = one PR. "Build the feature" is not a task — break it down.
Task files link to upstream artifacts (spec.md §AC-N, sad.md §6, data-model.md, contracts/openapi.yaml, adr/NNNN-*.md) — they do not duplicate them. Alongside the human-facing markdown, this skill emits tasks.json, the contract the implement engine reads to build its dependency DAG.
Task prose (title / dod, the markdown bodies) follows artifact_language — the tasks.json machine fields (id, layer, deps, acs, files_hint, slug) and tracker states stay English → ../_shared/artifact-language.md.
Owner
Tech Lead.
Inputs
<slug>— feature slug.- Gate (hard refuse):
docs/features/<slug>/spec.md+docs/features/<slug>/sad.md+ ≥1 Accepted ADR inadr/. Missing → STOP and point at the producing skill (specify/design/decide-adr). - Read directly (not via an index): spec §5 AC + §6 NFR, sad §5 module boundaries + §6 runtime + §9 ADR index, each Accepted ADR, and — if present —
data-model.md,contracts/openapi.yamlandscreens.md(the screen manifestuitasks cite). - (Expected)
sad.mdfrontmattertarget_surfaces— gates which layers appear (step 4). Absent or empty → warn («surfaces undeclared — re-rundesign, or proceeding asbackend-service») and treat as[backend-service](→../_shared/surfaces.md); never silently emituitasks for an undeclared surface.
Protocol
- Prereq check (hard). spec.md + sad.md + ≥1 Accepted ADR, else refuse with the missing one named.
- Read upstream directly. Each task will link back to the section it derives from — no paraphrase layer.
- Scaffold output.
docs/features/<slug>/tasks/:_epic.md(summary + links + the DAGflowchart),tracker.md(status table), one<task-slug>.mdper task. Templates →./templates/_epic.md,./templates/tracker.md,./templates/task.md. Validate the_epic.mdflowchartper../_shared/mermaid-check.md(render-parse withmmdcif available, else the structural lint; fix before committing). - Identify work-items by layer. Generic, stack-agnostic layers:
migration(DB) ·domain(entities/invariants) ·infra(repo/persistence) ·app(service/use-case) ·ports(handler/API) ·ui(UI components / screens / view-state — only when a UI surface is declared) ·tests·wiring(composition/DI) ·docs.sad.mdfrontmattertarget_surfacesgates which layers appear (→../_shared/surfaces.md): aweb-frontend/mobile-app/desktop-appsurface addsuitasks; a backend-only feature emits domain/infra/app/ports (noui); aclifeature app/ports; aworkerdomain/infra. Eachuitask names the existing components / tokens / styling it reuses (fromarchitecture-map.md§Frontend and thedocs/design-system.mdinventory) — a new component is listed only when no existing primitive fits — and, whendocs/features/<slug>/screens.mdexists, cites theSCR-NNid(s) + the states it builds (the manifest is the task's screen contract;implementbuilds to those states). List 8–20 items by size (see../_shared/size-matrix.md). - Atomic check. Each task ≤1 working day. More → split. A change >~500 LOC is a smell that the task is too wide. Contract-task rule: a task whose content is changing a shared interface/type that existing implementations must satisfy in a statically-checked language (Go, TS, Java, …) is not emitted standalone — it cannot be committed green on its own (the compile-time check breaks every implementer). Fold it into the first implementing task. If a split is still warranted (several implementers), mark the pair a compile-coupled lane: both tasks list the contract file in
files_hint(reusing the existing overlap-lane mechanics — notasks.jsonschema change), soimplementserializes them and may close them with one shared gate + commit. - Dependency graph. For each task,
deps: [...]. Identify parallel branches (e.g. the migration and a pure-domain task can start together). This graph IS the DAGimplementwill topologically sort into phases. - Per-task DoD. Each task is testable: «unit tests for the new validation pass», «migration applies and reverts cleanly», «handler returns the spec'd outcome for AC-03». No subjective «done when I say so».
- AC refs + files hint. Each task lists the
acsit satisfies (spec §5 IDs) and afiles_hint— the directories/files it will touch.files_hintletsimplementserialize tasks whose file sets overlap, andlayer: migrationis always serialized (ordered migration sequence); a compile-coupled pair (step 5) shares the contract file across bothfiles_hints for the same reason;layer: uiis not auto-serialized — UI tasks parallelize unless theirfiles_hintoverlaps. A migration task'sfiles_hintis the staged pairdocs/features/<slug>/migrations/<NN>_*(whichimplementpromotes into the livemigrations/when it runs the task) — not a livemigrations/path. - Estimate + owner. S/M/L or hours; a named owner (or
<TBD lead>). Adapt to the team's sizing if any. - Emit
tasks.json(step contract below) — the same model the markdown reflects, in machine form, atdocs/features/<slug>/tasks.json. - Optional tracker export. If an issue-tracker MCP is connected (Jira / Linear / GitHub Issues / Redmine — whichever the repo uses), offer to create tickets from
_epic.md+ the task files. Otherwise provide copy-paste-ready bodies. Never hard-bind to one tracker. - Self-check. Every task ≤1 day; DAG acyclic with ≥1 parallel branch where the work allows; DoD per task;
acscover every spec §5 AC;tasks.jsonvalidates against the contract. - Propose commit + handoff.
tasks: <slug> (breakdown + tasks.json). Then emit the stage-handoff block per../_shared/handoff.md— What I did + Review (tasks/,tasks.json) + Run next — resolve the next stage per.route(the Routes table in../_shared/size-matrix.md): forward/sdd:plan-tests <slug>(onquickit always collapses to the inline## Test planinspec.md), then/sdd:implement <slug>;plan-tests' N/A condition = every task's DoD already names its test — only then skip target/sdd:implement <slug>directly (auto-skip onquick, offered↳ oronstandard, never onfull).
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 101 lines · 176 tokens per session scan A b9a1e9022501
tasks is a skill published in the GitHub repository genkovich/sdd (118 stars, last pushed 14d ago), licensed MIT. It adds 176 tokens to every session and 2,871 once invoked, about $0.0009 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
auto-perf-optimize
Run agent-driven VS Code performance or memory investigations. Use when asked to launch Code OSS, automate a VS Code scenario, run the Chat memory smoke runner, capture renderer heap snapshots, take workflow screenshots, compare run summaries, or drive a repeatable scenario before heap-snapshot analysis.
chat-perf
Run chat perf benchmarks and memory leak checks against the local dev build or any published VS Code version. Use when investigating chat rendering regressions, validating perf-sensitive changes to chat UI, or checking for memory leaks in the chat response pipeline.
chat-pet-sprite-creation
Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…