From appmaker
Deterministic cross-artifact gate for AppMaker projects. Checks PRD, decomposition, backlog, glossary, context packets, review, memory wiki, Graphify freshness, and archive readiness with PASS/FAIL/WARN output.
How this skill is triggered — by the user, by Claude, or both
Slash command
/appmaker:checklistThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Checklist gate. Spec Kit `/analyze` spirit, AppMaker invariants. Deterministic first, judgment second.
Checklist gate. Spec Kit /analyze spirit, AppMaker invariants. Deterministic first, judgment second.
Output style: Follow the Compact report contract in appmaker/skills/output-style.md. Checklist report is ONE markdown table + (optional) compact Warnings/Blockers bullet sections. No prose deep-dives, no Suggested Next section, no count fields in frontmatter, no companion paragraphs. Evidence cells ≤ 80 chars. Skip empty sections.
/appmaker:checklist [feature <NNN-slug> | backlog <NNN> | project | archive <NNN-slug>]decompose before tdd, by archive before closeout, by afk before loopsappmaker/appmaker/checklists/<YYYY-MM-DD>-<scope>.mdDefault order:
prd.mdRead appmaker/config.yaml, constitution, glossary, memory index, relevant feature/backlog/context packets.
Classify each check:
Required checks:
| Check | Scope | Fail condition |
|---|---|---|
| Required files | feature | missing prd.md or decomposition.md after phase claims ready |
| PRD criteria IDs | feature | duplicate or malformed pcrit-* IDs |
| Trace coverage | feature | any PRD pcrit-* absent from backlog traces_to |
| Orphan traces | feature/backlog | backlog references nonexistent pcrit-* |
| Backlog blockers | project/feature | blocked_by references missing item |
| Blocker cycles | project/feature | cycle in blocked_by graph |
| Status validity | backlog | status not `open |
| Execution class | backlog | missing or not `human_required |
| AC checkbox coverage | backlog | item done with unchecked AC |
| Review gate | archive | feature archive requested without review PASS or explicit force |
| Context packet links | brownfield | referenced context_packets missing |
| Touch map drift | review/archive | changed files outside expected touches.files without note |
| Graphify freshness | project | graph enabled but output missing or older than threshold = WARN |
| Glossary drift | feature | PRD/backlog uses known aliases-to-avoid = WARN/FAIL depending severity |
| Memory wiki health | project | missing memory/index.md, memory/schema.md, or core wiki pages = WARN |
Prefer concrete commands:
test -f <path> for required filesrg -no 'pcrit-[0-9]+|SC[0-9]+|ID[0-9]+' for criteria/traces (project may use any stable ID format — pcrit-* is suggested, NOT required)rg -n 'status:|execution_class:|blocked_by:|traces_to:' appmaker/backlogfind appmaker/context -type fgit status --short and git log -1 --format=%ct -- graphify-out/GRAPH_REPORT.md if git repoDo not rely on vibes when a file/regex check is possible.
⚠ macOS default $SHELL=/bin/zsh. Claude Code's Bash tool may invoke zsh subprocess. Several variable names are read-only in zsh and will fail assignment:
status (zsh built-in — last command's exit code)path (zsh built-in — $PATH as array)argv, argcpipestatusUse safe names instead: check_state, result, outcome, file_path, n_args.
Example — DO:
check_state="PASS"
result=$(rg -c 'pcrit-' appmaker/features/*/prd.md || echo 0)
Example — DON'T:
status="PASS" # zsh: read-only variable
path="/some/dir" # zsh: read-only variable
If zsh rejection happens, retry the same logic with safe variable names — do NOT switch to subshell hacks.
Canonical: pcrit-NNN (e.g. pcrit-001). BUT projects may use other stable ID schemes (e.g. SC1/ID1, R1/AC1). Don't FAIL on format alone — check that:
pcrit-001 + SC1 in same PRD → WARN)After deterministic checks:
human_required slices justified?Mark as WARN unless clear contradiction.
Save to appmaker/checklists/<YYYY-MM-DD>-<scope>.md using this exact skeleton (skip empty sections, no counts in frontmatter, no Suggested Next, no prose deep-dives):
---
scope: feature 003-add-dark-mode
status: FAIL
created: 2026-05-11
---
# Checklist: feature 003-add-dark-mode
**14 PASS / 1 FAIL / 2 WARN**
## Checks
| ID | Status | Check | Evidence | Fix |
|---|---|---|---|---|
| trace-coverage | FAIL | PRD IDs traced | `pcrit-004` missing from backlog | add slice or defer explicitly |
| ac-checkbox-coverage | WARN | Done items: all ACs ticked | slice 007: 4/9 ticked, 5 stray `[ ]` lines | tick or convert to `-` |
| graphify-freshness | WARN | Graph at HEAD | 6 commits ahead, mtime 8h stale | `graphify update .` |
## Blockers
- **trace-coverage**: `pcrit-004` orphan (no slice covers it). Fix: add slice or note deferral in `decomposition.md`.
## Warnings
- **ac-checkbox-coverage**: slice 007 has 5 stray `[ ]` inside description, not real ACs. Fix: replace with `-` bullets.
- **graphify-freshness**: graph 6 commits behind HEAD. Fix: `graphify update .` (AST-only, no API cost).
Forbidden:
## Summary heading with prose explanation (replace with single bold count line)## Suggested Next section (next-action belongs in chat reply, not the file)fail_count / warn_count / pass_count in frontmatter## Blockers — None. filler — omit the heading entirelyPersist via Bash heredoc:
mkdir -p appmaker/checklists
REPORT_PATH="appmaker/checklists/$(date -u +%Y-%m-%d)-<scope-slug>.md"
cat > "$REPORT_PATH" <<'REPORT_EOF'
[compact skeleton above, filled in]
REPORT_EOF
test -f "$REPORT_PATH" && echo "✓ Checklist: $REPORT_PATH"
npx claudepluginhub paweldobrzynski/appmaker --plugin appmakerProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.