Skip to content
Back to skills

Trace Spec To Plan

ASecurity

**Announce at start:** "I'm using trace-spec-to-plan to walk every spec requirement into the plan."

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
ai-agentsgo

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add thrum-team/thrum-pro --skill trace-spec-to-plan --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Trace Spec To Plan?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Trace Spec To Plan
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/thrum-team-trace-spec-to-plan-thrum-pro/badge)](https://www.skillsdirectory.com/skills/thrum-team-trace-spec-to-plan-thrum-pro)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: trace-spec-to-plan
description:
  "Use before converting a plan into epics/beads/worktrees, and whenever you
  need to know whether a plan actually implements its spec. Walks EVERY
  requirement in the spec forward into the plan, one item at a time, and reports
  PLANNED / NAME-ONLY / ABSENT / PARTIAL. Distinct from verify-against-source,
  which reads the ARTIFACT and asks 'does this honor its source' β€” this reads
  the SPEC and asks 'where did this land'. Triggers - about to run
  project-setup, about to create epics or beads, plan review, 'does the plan
  cover the spec', 'did we miss anything', 'is the plan complete'."
# source: claude-plugin/skills/trace-spec-to-plan/SKILL.md
---

## Trace Spec β†’ Plan

**Announce at start:** "I'm using trace-spec-to-plan to walk every spec
requirement into the plan."

### Why this exists

> πŸ”‘ **A reviewer reading an artifact cannot see what isn't in it.**

That sentence is the whole justification. Every other review in the pipeline
reads the **plan** and asks _"is this sound?"_ β€” so it can only find defects in
what is present. **Absence has nothing to look at.**

β‡’ **This replaces ad-hoc extra audits in the standard flow rather than
supplementing them.**

### When it runs

**Immediately before `project-setup` creates epics and beads.** That is the last
moment the spec is still in the room. Once a requirement is missing from the
plan **and** absent from the beads, the beads become the working set, nobody
consults the spec again, and the gap stops being discoverable at all.

Also valid: any time someone asks whether a plan is complete against its source.

#### Two hard preconditions

🚫 **NEVER run by the plan's own author.** Self-review cannot catch a
requirement the author never perceived β€” same person, same anchoring, same blind
spot. **Dispatch it.**

⚠️ **Run against a FROZEN plan.** A sweep racing live edits produces stale
findings that cost more to triage than they are worth.

### Sizing β€” the judgment call

1. **COUNT THE SPEC ITEMS FIRST, NOT PAGES.** Include every sub-item:
   `A3.1–3.4`, `P1–P8`, each ruled-out branch, each contradiction disposition,
   each named sequencing constraint. A spec that reads as "20-something
   sections" was **~65 discrete requirements**.
2. **≀ ~15 items β‡’ one agent. More β‡’ partition at ~12–15 items per agent.**
3. πŸ”΄ **PARTITION BY SPEC ITEM, NEVER BY PLAN SECTION.** Section-partitioning
   manufactures false ABSENTs whenever a requirement is covered in a phase that
   auditor wasn't given. **Every agent searches the WHOLE plan for its own
   items.**
4. Write the shared instructions to **one file**
   (`resources/sweep-agent-prompt.md`) and give each agent only its item list.
   Keeps dispatches short and identical.
5. Use `efficient-multi-agent-research` for launch-and-wait mechanics.

### The four verdicts

| Verdict       | Means                                                                                                         |
| ------------- | ------------------------------------------------------------------------------------------------------------- |
| **PLANNED**   | A task exists with concrete steps that would make the requirement true β€” files named, code or commands shown. |
| **NAME-ONLY** | The plan mentions, quotes, or asserts the requirement β€” but no task carries out steps.                        |
| **ABSENT**    | Not mentioned anywhere.                                                                                       |
| **PARTIAL**   | Part is planned; a named part is not. Say which.                                                              |

πŸ”‘ **NAME-ONLY IS THE LOAD-BEARING VERDICT AND THE ONE AN AGENT WILL AVOID
ASSIGNING.** It feels harsh against well-written prose, and PLANNED is always
the cheaper answer. **A requirement restated in a warning box, a doc comment, an
architecture paragraph, or a Definition-of-Done row is NAME-ONLY unless a task
carries out steps.**

#### Worked example β€” the judgement that decides this skill's value

```go
// assess computes one agent's verdict from the joined snapshot. It decides
// from PROCESS EVIDENCE β€” PID pair union session presence β€” and never from a
// self-written timestamp. It writes nothing.
func assess(s *Snapshot, j *Joined, agentID string) Verdict
```

A correct doc comment restating the spec, a precise signature, and it is
**consumed by a task elsewhere in the plan**. It reads as covered.

**Verdict: NAME-ONLY.** There is no body and no task anywhere implements one.
That function _was_ the reconciler. **The tell is not the quality of the prose β€”
it is that no step produces the thing.**

### Three questions per requirement

1. **Is there a task?** Naming a mechanism is not doing it.
2. πŸ”΄ **Does the plan contain every step to make it true β€” INCLUDING CREATING
   SUBSTRATE THAT DOES NOT EXIST YET?** Open the real struct / table / interface
   at the plan's authored-against SHA. **A mechanism operating on a substrate
   that cannot hold the data is a silent no-op.** _Highest-yield question here:_
   a paired-write primitive was fully and correctly specified while the struct
   lacked the field and the table lacked the column.
3. **Would anything FAIL if it regressed?** A property with an implementation
   but no failing test is not achieved. **A manual grep in a Definition of Done
   cannot fail next month.**

### Framing β€” do not get this backwards

πŸ”΄ **A gap is a MISSING STEP IN THE PLAN, never a defect in the spec.** The spec
is owner-ruled. If a requirement needs a field that does not exist, **the plan
must add the field** β€” that is what plans are for.

**Never report a requirement as "impossible" and never suggest narrowing one.**
"Impossible" points the next reader at scoping down the spec, which is the
opposite of the repair.

🚫 **The spec is never edited by this skill or its findings.** A finding that
appears to require a spec change is an escalation to the owner, never an action.

### Reporting rules

- **Write the report to a FILE first and append as you go.** The final message
  is a summary; the file is the deliverable. _(Dispatched agents have completed
  full audits whose final text never reached the parent. The agent does not
  notice.)_
- **Record PLANNED items too.** A map that lists only holes cannot show what is
  safe to build on, and cannot be checked for completeness.
- **Report what could not be resolved**, naming the search run β€” never guess. An
  honest "unresolved" is what makes the PLANNED verdicts worth anything.
- πŸ”΄ **If a partition returns ALL PLANNED with zero NAME-ONLY, hand-verify two
  PLANNED rows at random and show the working.** **An all-clear is the result
  most likely to be produced by not looking.**

### After the sweep β€” the dispatcher's job

1. **Consolidate into ONE numbered list** across all partitions. Never act on
   partial batches.
2. **Filter stale findings** if the plan moved during the sweep β€” and say so
   rather than counting them.
3. **Close every gap before epics are created.** That is the entire point of
   running it here; a filed-and-deferred gap is the failure this skill exists to
   prevent.
4. **Spot-verify any finding that names a file, line, or symbol** before acting.
   Auditors misread cites, and a correction carries the same evidence bar as the
   finding it replaces.

### What this does NOT cover

**Compositional defects.** Per-item traversal cannot see _"every phase
individually fine, the whole broken."_ Measured example: an end state that would
run **two concurrent reconcilers**, violating the premise of the design's own
no-multi-writer ruling β€” while every individual requirement was satisfied.

β‡’ **Pair this with a compositional pass.** They are different lenses and neither
substitutes for the other. **The standard flow wants two audits, not eight.**

### Failure modes of this skill itself

| Failure                                          | Symptom                                 | Guard                                      |
| ------------------------------------------------ | --------------------------------------- | ------------------------------------------ |
| Folded into `verify-against-source` as redundant | "we already check coverage"             | The traversal direction differs; keep both |
| Run by the plan's author                         | Everything PLANNED                      | Dispatch it                                |
| Partitioned by plan section                      | False ABSENTs                           | Partition by spec item                     |
| Agent avoids NAME-ONLY                           | Zero NAME-ONLY across a large partition | Mandatory hand-verify of two rows          |
| Findings filed, not fixed                        | Gaps reach the beads anyway             | Close before epics                         |

Files in this skill

  • SKILL.md8.7 KB
  • agents/openai.yaml1.2 KB
  • resources/sweep-agent-prompt.md4.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.