plugins/avanti/skills/status/SKILL.md
Summarize active plans, open tickets, proposed ADRs, and the latest pulse entry
npx skillsauth add acostanzo/quickstop statusInstall 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:status orchestrator. When the user runs /avanti:status, walk project/ and summarize what work is in flight: active plans, open tickets, proposed ADRs, and the latest pulse entry. Default output is a two-line summary; --verbose expands to a full dump.
Read ${CLAUDE_PLUGIN_ROOT}/references/sdlc-conventions.md if you need to recheck what "active" or "open" mean.
--verbose in $ARGUMENTS → set VERBOSE = true, else false.Run git rev-parse --show-toplevel 2>/dev/null. Abort on failure — /avanti:status expects to be inside a repo. Store as REPO_ROOT.
Check whether ${REPO_ROOT}/project/ exists. If it does not, report cleanly and exit:
No project/ directory in this repo. Nothing to report.
Run these Globs and file scans in parallel where possible:
Glob project/plans/active/*.md. For each match, read the file's frontmatter to get updated:. Also run git log -1 --format=%cI -- <path> (via Bash) to get the last commit date touching the file. Prefer the git commit date if available; fall back to frontmatter updated: if git has no history for the file yet.
Store as ACTIVE_PLANS (list of {slug, updated, last_commit} records).
Glob project/tickets/open/*.md. For each, read frontmatter to get id:, status: (open vs in-progress), plan:, and updated:. Also get last-commit date via git log.
Store as OPEN_TICKETS (list of {id, slug, plan, status, updated, last_commit} records).
Glob project/adrs/*.md. For each, read frontmatter status:. Keep the ones where status: proposed.
Store as PROPOSED_ADRS (list of {id, slug, updated} records).
Glob project/pulse/*.md. Pick the one whose filename sorts highest (ISO date, so lexicographic = chronological). Store the path as LATEST_PULSE_FILE (may be null if no pulse files exist).
If LATEST_PULSE_FILE is not null, read the file and find the last ## HH:MM sub-header and the paragraph immediately after it. Store as LATEST_PULSE_ENTRY = {date, time, message}. If no entries appear below the date header (file is header-only), note "day-file exists but no entries yet."
Always print this, even in --verbose mode (as a leader):
Plans: N active | Tickets: N open (M in-progress) | ADRs: N proposed | Pulse: <date> @ <time>
<latest pulse message, truncated to ~100 chars if longer>
Empty-state variants:
Plans: 0 | Tickets: 0 | ADRs: 0 | Pulse: <date @ time, or "never">Pulse: neverPulse: <date> (empty)If VERBOSE is false, stop here.
If VERBOSE is true, continue with an expanded listing:
ACTIVE PLANS (${len(ACTIVE_PLANS)}):
- <slug> updated <date> last touched <date>
- <slug> updated <date> last touched <date>
OPEN TICKETS (${len(OPEN_TICKETS)}):
- <id>-<slug> plan: <plan-slug> status: <open|in-progress> updated <date> age <N> days
- …
PROPOSED ADRS (${len(PROPOSED_ADRS)}):
- <NNN>-<slug> updated <date>
LATEST PULSE:
project/pulse/<date>.md @ <time>
<full message>
Sort active plans by last-touched descending (most recent first). Sort open tickets by age descending (oldest first — these are the ones most likely to be stale). Sort proposed ADRs by id ascending.
If a category is empty, show (none) under its header rather than omitting the section.
"Age" for tickets is (today - last_commit_date) in whole days. For the first-ever run with no commit history, use (today - frontmatter_updated).
project/ missing: clean early exit with the "Nothing to report" message above.(none) in the category.MALFORMED (N): section at the bottom of verbose output (path + the parse error). Don't crash the whole status report over one bad file.updated:; mark last-touched as "(uncommitted)" in verbose output.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.