planning — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited planning (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill produces anvil/plan.yml as a task DAG with wave ordering. An atomic task is one that produces one diff that one Verify pass can score. Every task names the contract criterion id(s) it is accountable for; tasks without citations are invalid and do not execute. Waves are topologically sorted: a task in wave k depends only on tasks in waves strictly less than k.
Invoking the Anvil CLI: the CLI is cli/anvil.js inside the plugin directory, NOT on PATH. Use node "$CLAUDE_PLUGIN_ROOT/cli/anvil.js" <subcommand> ... for every invocation.
Invoked by the orchestrator after anvil/contract.yml is confirmed. Not invoked from user prompts directly. If the contract is edited after the plan is written, this skill is re-invoked to regenerate the plan from scratch.
Steps 1 and 4 run in the orchestrator's main thread. Steps 2 and 3 (decomposition + YAML authoring) are dispatched to a fresh subagent. The orchestrator holds only the confirmed contract and the written anvil/plan.yml file. It never holds the decomposition reasoning.
anvil/contract.yml exists and validates (node "$CLAUDE_PLUGIN_ROOT/cli/anvil.js" contract --validate anvil/contract.yml exits 0). If it does not, route back to contracting; planning does not run against an unconfirmed contract.agents/plan-drafter.md) using the Task tool. Pass in the briefing: the repository path and the path to anvil/contract.yml. The subagent reads the contract, decomposes the work into an atomic task DAG with wave ordering, writes anvil/plan.yml, runs anvil plan --validate, and returns exactly one sentence. Do NOT decompose or write the YAML inline in the orchestrator thread - the orchestrator's context stays clean.details.rule string to the user and stop.anvil/plan.yml). It does not re-read the whole plan for every subsequent dispatch; it reads individual task records as the executing skill requests them.Reject the following shortcuts:
If any of these conditions obtain, the plan is rejected:
criterion_ids (failure-taxonomy row 26: Spec-to-plan drift).depends_on edge (failure-taxonomy row 17: Cross-task architectural drift).plan-drafter agent (failure-taxonomy row 16: Context-window collapse).Before saving the plan, run in order:
node "$CLAUDE_PLUGIN_ROOT/cli/anvil.js" plan --validate anvil/plan.yml --contract anvil/contract.yml exits 0.criterion_ids array.topologicalWaves, produces one wave per distinct wave integer and contains no cycles.k > 0 has a depends_on whose members are tasks in waves < k.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.