plugins/avanti/skills/plan/SKILL.md
Draft a new plan from the avanti template into project/plans/active/
npx skillsauth add acostanzo/quickstop planInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are the /avanti:plan orchestrator. When the user runs /avanti:plan <slug>, draft a new plan from templates/plan.md into project/plans/active/<slug>.md, then walk the user through an interactive authoring pass over the frontmatter and pivot paragraph. Refuse to overwrite existing files.
Read ${CLAUDE_PLUGIN_ROOT}/references/sdlc-conventions.md before proceeding if you are uncertain about any lifecycle or frontmatter rule.
Extract the slug from $ARGUMENTS.
$ARGUMENTS is empty or missing → use AskUserQuestion to prompt: "What slug should the plan use? (kebab-case, e.g. phase-2-lintguini)"^[a-z][a-z0-9]*(-[a-z0-9]+)*$. If it fails, reject and re-prompt.Store the validated slug as SLUG.
Run git rev-parse --show-toplevel 2>/dev/null via Bash. If this fails (not a git repo), abort with a clear message — avanti expects to be run inside a repo.
Store the result as REPO_ROOT. The plans directory is PLANS_DIR = ${REPO_ROOT}/project/plans/.
Glob for project/plans/*/${SLUG}.md rooted at REPO_ROOT. If any file matches (in draft/, active/, or done/), abort:
A plan with slug "${SLUG}" already exists at <matching path>.
Refusing to overwrite. Pick a different slug or remove the existing plan.
The destination is deterministic: ${PLANS_DIR}active/. If it is missing, create it with mkdir -p via Bash and continue. The destination is avanti's to manage and cheap to create on demand.
Run date +%Y-%m-%d via Bash. Store as TODAY.
Use AskUserQuestion to collect:
1 for first-phase work.Store as TITLE, PHASE, PIVOT.
Read ${CLAUDE_PLUGIN_ROOT}/templates/plan.md. Store as TEMPLATE.
Produce RENDERED by applying these substitutions to TEMPLATE:
phase: 0 → phase: ${PHASE}updated: TODO → updated: ${TODAY}# TODO — <plan title> → # ${TITLE}## The role in one paragraph → ${PIVOT}The template ships with status: active (the default landing folder), so no status substitution is needed for the default path. If a future --draft flag ships, the substitution becomes status: active → status: draft and the write target becomes plans/draft/.
Leave all other TODO/placeholder sections intact — the author will flesh them out over the course of the plan's life (model, tickets, acceptance bars, out-of-scope, DoD).
Write RENDERED to ${PLANS_DIR}active/${SLUG}.md using the Write tool.
Tell the user:
Plan drafted: project/plans/active/${SLUG}.md
Next:
- Fill in the model, tickets, acceptance bars, and DoD sections.
- Commit the plan; the PR is the draft surface.
- Mint tickets with /avanti:ticket <slug> --plan ${SLUG}
- Promote to done/ with /avanti:promote plan:${SLUG} once every ticket is closed and A-bars pass.
rm via Bash) before re-raising.project/plans/active/: auto-create it with mkdir -p and proceed. Plan-state subdirectories (active/, draft/, done/) are avanti's destination — cheap to create on demand.documentation
Surface (and optionally fix) doc-tree drift — duplicates, dead links, stale docs, template non-compliance, missing `## Related` blocks. Read-only by default; `--apply` does mechanical fixes; `--apply-semantic` emits diffs for human review.
documentation
Full-text search over the repo's `docs/` tree (FTS5-backed). Returns ranked hits with file paths, tags, and matching snippets.
testing
Retrieval-augmented Q&A over the repo's `docs/` tree. Returns a one-paragraph synthesis plus citations (doc path + heading anchor) and per-citation corroboration verdicts. Field shape and ordering are locked at M3; M5 populates the verdicts.
documentation
Scaffold a new doc under `docs/` from a Diátaxis template, or update an existing one and bump its `updated:` date. Suggests `## Related` candidates and refreshes the FTS5 index on write.