plan — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited plan (Agent Skill) and scored it 87/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 3 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 3 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
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.
Produce a structured plan document within a few tool calls — no extended clarifying-question loop. The output is shaped so that:
/abc:scaffold-sub-issues (Linear) or /abc:scaffold-sub-issues-gh (GitHub Issues) can turn the sub-tasks into a parent + sub-issues. Pick the scaffold by tracker — the PLAN grammar is identical for both./abc:ship-epic / /abc:ship-epic-gh (later) can read the sub-issue dependency graph and ship them in parallel.The exact grammar these consumers parse — sub-task block fields, the relations sentinel, and where the validation gate attaches — is single-sourced in plan-format.md. The skeleton below emits that grammar; keep them in sync.
PLAN-<slug>.md on disk. Then iterate via the file, not via Q&A. The user has explicitly said extended clarifying questions before any deliverable are an anti-pattern.repo:<name> label and /abc:ship-epic[-gh] can resolve it to a workdir. For a repo owned by a different org/user than the hub (the GitHub cross-owner case), write the fully-qualified repo:<owner>/<name> so scaffold-sub-issues-gh routes it to the right repo instead of assuming the hub owner.Default: ~/.claude/plans/PLAN-<kebab-slug>.md (keeps drafts out of project repos by default).
Override: if the user passes an explicit path or is inside a project repo and says "in this repo", write to ./PLAN-<kebab-slug>.md in the cwd.
Slug: derive from the task description. Keep it short, kebab-case (e.g. cuj-platform-poc, auth-migration).
AskUserQuestion — only if you genuinely can't draft a useful skeleton without it. Most of the time, draft and let the user redirect from the file.ls, git remote get-url origin, maybe one rg for related code). One or two reads max — this is scoping, not investigation.Create PLAN-<slug>.md with this skeleton:
# PLAN: <Title>
**Status:** Draft
**Created:** <YYYY-MM-DD>
**Owner:** <inferred from user, or leave blank>
## Context
<2-4 sentences on why this work matters. The motivation, the user-visible
problem, or the technical pressure. NOT a feature spec — the *why*.>
## Approach
<2-4 sentences on the high-level technical strategy. What we're building
or changing at the system level, NOT a step-by-step. Reference repos by
name (e.g. "web-frontend", "analytics-tools") so
the reader knows what surfaces are involved.>
## Sub-tasks
> Each sub-task becomes a sub-issue via `/abc:scaffold-sub-issues` (Linear) or `/abc:scaffold-sub-issues-gh` (GitHub).
> `repo:` matches the `repo:<name>` label convention (`repo:<owner>/<name>` for a cross-owner GitHub repo).
> `blocks` / `blocked by` create the dependency graph for `/abc:ship-epic[-gh]`.
> Add a `validation:` bullet to the one sub-task whose merge should gate on manual verification (see `plan-format.md`).
### ST-1: <Short imperative title>
- **repo:** web-frontend
- **scope:** <1-2 sentences on what changes>
- **acceptance criteria:**
- <bullet>
- <bullet>
- **validation:** (optional) <how a human confirms this specific sub-task post-merge — attaches the `blocked-verify` gate to this child>
- **blocks:** (none | ST-N, ST-M)
- **blocked by:** (none | ST-N)
### ST-2: <…>
- …
## Open questions
- <Anything that requires a decision before sub-tasks are final.>
## Validation
<Parent-level: how we'll know the overall work landed correctly. Could be: manual
smoke test, specific metric to watch, "no regressions in X test suite", "a/b
experiment results within Y range". Single bullet or short list. To gate a
*specific* sub-task's merge on manual verification, put a `validation:` bullet in
that sub-task instead — a top-level section here stays unattached until the scaffold
asks who should inherit it.>
## Out of scope
<What we're deliberately NOT doing in this plan, to keep scope tight.>After the file is written, output to the terminal:
Draft plan written: <path>
Suggested next steps:
1. Open the file and iterate — edit sub-tasks, acceptance criteria, dependencies.
2. Create the tracker issues from the plan (pick by tracker):
• Linear: /abc:scaffold-sub-issues <path>
• GitHub: /abc:scaffold-sub-issues-gh <path>
3. Once issues exist, ship them:
• Linear: /abc:ship-epic <PARENT-ID> (or /abc:ship-issue for serial)
• GitHub: /abc:ship-epic-gh <owner>/<repo>#<N> (or /abc:ship-issue-gh)Do NOT then start interactively iterating on the plan in the conversation unless the user asks. The point is to give them a file to edit.
@org/contracts, consumed in webapp), that's TWO sub-tasks with a blocks relation.blocks when there's a genuine ordering requirement (e.g. consumer can't compile until producer is published)./abc:ship-issue from a Linear ticket directly. Plans are for multi-step, multi-repo, or multi-week work.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.