Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Convert a SPEC.md into a structured Kanban board with atomic tasks, dependencies, and acceptance criteria. Detects which PM tool MCP is available and adapts automatically.
.claude/skills/bilal140202-spec-to-board/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | -1% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 153% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 64% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 1% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 15% | 0% |
Convert a product spec into a fully structured Kanban project board for the AgentFlow pipeline.
This skill works with any supported PM tool. It detects which MCP is available:
The skill uses adapter-neutral language. See core/adapters/interface.md for mapping.
Before running, you need:
conventions.mdIf a SPEC.md path is provided as argument, read it.
If no argument provided, ask the user:
docs/specs/ directory Glob: **/*.ts, **/*.tsx, **/*.js pattern in the project directory This gives predicted files context for decomposition.
Read the decomposition prompt: prompts/decompose.md
For each phase/section in the SPEC.md:
Run the decomposition validator (from decompose.md) BEFORE creating anything in the PM tool:
rm -rf, no eval, no sudo.If validation fails, fix the decomposition. Do NOT proceed with invalid tasks.
Step 1: Create the project
Create the project with 8 sections:
project_name: "[SDLC] <CODE> Phase <N> - <Phase Title>"
sections:
- name: "0 - Needs Human"
tasks: []
- name: "1 - Backlog"
tasks: [... all atomic tasks ...]
- name: "2 - Research"
tasks: []
- name: "3 - Build"
tasks: []
- name: "4 - Review"
tasks: []
- name: "5 - Test"
tasks: []
- name: "6 - Integrate"
tasks: []
- name: "7 - Done"
tasks: []Each task in the Backlog section includes the full description template from conventions.md.
Step 2: Set dependencies
After project creation, set dependencies between tasks using the PM tool's API. Batch updates where possible.
Step 3: Create pinned Status task
Create a task in "0 - Needs Human" section:
name: "SDLC Status"
description: |
[STATUS] [SPEC_HASH:<sha256 of SPEC.md>]
---
## System Status
Active: 0 tasks
Completed: 0/<total> tasks
Total retries: 0
Est. cost: ~$0
Blocked: 0
ETA: not startedThis serves as the dashboard and spec drift detector.
Step 4: Add decomposition summary comment
Post a comment on the Status task:
## Decomposition Summary
Phase: <phase title>
Total tasks: <N>
Sub-phases: <N>
Dependencies: <N edges>
Research required: <N tasks>
Estimated total cost: ~$<N>
### Dependency Graph
<sub-phase groupings showing parallel tracks>
### Risk Assessment
- Highest-dependency task: [CODE-NNN] (blocks N others)
- Longest chain: [CODE-001] → [CODE-003] → [CODE-007] (3 deep)
- Shared-file serializations: NShow the user:
Ask: "Board created. Want me to start the workers, or do you want to review the board first?"
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | fail→pass | 9,420 | 1,881 | -80% | 1 | 1 | 0% | 1,713 | 1,694 | -1% | 0 | 0 | — |
case-09 | pass→pass | 9,219 | 2,857 | -69% | 1 | 1 | 0% | 1,451 | 1,822 | +26% | 0 | 0 | — |
case-01 | fail→fail | 2,553 | 3,077 | +21% | 1 | 1 | 0% | 435 | 1,750 | +302% | 0 | 0 | — |
case-02 | fail→fail | 22,366 | 5,481 | -75% | 1 | 1 | 0% | 3,422 | 2,278 | -33% | 0 | 0 | — |
case-03 | fail→fail | 1,844 | 2,146 | +16% | 1 | 1 | 0% | 325 | 1,549 | +377% | 0 | 0 | — |
case-05 | fail→pass | 3,900 | 1,253 | -68% | 1 | 1 | 0% | 599 | 1,513 | +153% | 0 | 0 | — |
case-06 | fail→pass | 5,917 | 1,742 | -71% | 1 | 1 | 0% | 1,011 | 1,661 | +64% | 0 | 0 | — |
case-07 | fail→pass | 8,567 | 2,523 | -71% | 1 | 1 | 0% | 1,772 | 1,796 | +1% | 0 | 0 | — |
case-08 | pass→pass | 9,280 | 2,722 | -71% | 1 | 1 | 0% | 1,622 | 1,819 | +12% | 0 | 0 | — |
case-10 | pass→pass | 10,543 | 3,000 | -72% | 1 | 1 | 0% | 1,749 | 1,854 | +6% | 0 | 0 | — |
case-11 | fail→pass | 8,762 | 2,388 | -73% | 1 | 1 | 0% | 1,514 | 1,734 | +15% | 0 | 0 | — |
case-12 | fail→pass | 9,364 | 2,376 | -75% | 1 | 1 | 0% | 1,634 | 1,802 | +10% | 0 | 0 | — |
case-13 | fail→pass | 9,471 | 7,201 | -24% | 1 | 1 | 0% | 2,025 | 2,722 | +34% | 0 | 0 | — |
case-14 | fail→pass | 5,411 | 2,430 | -55% | 1 | 1 | 0% | 898 | 1,730 | +93% | 0 | 0 | — |
case-15 | fail→pass | 8,613 | 3,990 | -54% | 1 | 1 | 0% | 1,586 | 2,017 | +27% | 0 | 0 | — |
case-16 | fail→pass | 5,249 | 2,513 | -52% | 1 | 1 | 0% | 890 | 1,798 | +102% | 0 | 0 | — |
case-17 | fail→pass | 9,690 | 2,659 | -73% | 1 | 1 | 0% | 1,551 | 1,803 | +16% | 0 | 0 | — |
case-22 | fail→fail | 2,129 | 4,388 | +106% | 1 | 1 | 0% | 373 | 2,070 | +455% | 0 | 0 | — |
case-18 | fail→pass | 6,444 | 1,283 | -80% | 1 | 1 | 0% | 999 | 1,533 | +53% | 0 | 0 | — |
case-19 | pass→pass | 8,612 | 3,755 | -56% | 1 | 1 | 0% | 1,465 | 1,998 | +36% | 0 | 0 | — |
case-20 | pass→pass | 3,109 | 9,047 | +191% | 1 | 1 | 0% | 506 | 2,644 | +423% | 0 | 0 | — |
case-21 | pass→pass | 4,768 | 6,334 | +33% | 1 | 1 | 0% | 847 | 2,093 | +147% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +55 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.