artifact-scan
Use whenever the user asks "which skill should I use?", "where are we in the workflow?", "what should I run next?", "what product docs already exist?", "do we have a roadmap/PRD/plan yet?", or "what's left before I start coding?". Front door to the product workflow suite: detects the ideate report, approach doc, roadmap, PRDs, plans and tickets, then names the one skill to run next based on what exists rather than a fixed order. Routes between *skills* — for "what feature should I build next?" use ideate. Also usable as a preflight routine from other product skills.
- License 许可
- MIT
- 最近更新
- 2026-11-11
- Stars
- ★ 0
- Forks
- 0
01 前言 Front Matter
- name
- artifact-scan
- description
- Use whenever the user asks "which skill should I use?", "where are we in the workflow?", "what should I run next?", "what product docs already exist?", "do we have a roadmap/PRD/plan yet?", or "what's left before I start coding?". Front door to the product workflow suite: detects the ideate report, approach doc, roadmap, PRDs, plans and tickets, then names the one skill to run next based on what exists rather than a fixed order. Routes between *skills* — for "what feature should I build next?" use ideate. Also usable as a preflight routine from other product skills.
02 资源文件 1
- 参考文档evals/evals.json7.4 KB
03 SKILL.md 正文
Artifact Scan
A fast, read-only routine. Scan the repo for the product artifacts, report what exists, and point the user at exactly one next skill. No interview, no grilling, no writing. Just look, report, route.
Where this sits
PORTFOLIO — many features ideate or chat-to-approach
↓
./docs/approach.md → ./ideas/roadmap.html
↓ pick ONE card
FEATURE — one feature per run to-prd → to-plan → to-tickets → ticket-tracker
non-code work: to-prd → to-tickets
- The doors (
ideate,chat-to-approach, or an already-scoped task) are optional ways in. - Portfolio → feature is a fan-out, not a step. A roadmap card is a feature — something to be built, which then breaks down into several tickets. Six cards means six runs down the spine, not one. When a skill is handed a portfolio artifact, it must establish which feature first.
- Never send the user backwards. A missing upstream artifact is written inline or offered, never a reason to stop and run another skill first. The one hard gate is an approved plan.
That rule drives this skill's whole job: report what exists, don't compute a first gap. An earlier artifact being absent is not a problem to solve — it is usually a deliberate skip.
The artifacts
| Artifact | Level | How to detect it | Skill that produces it |
|---|---|---|---|
| ideate report | portfolio | ls ./ideas/reports/*-ideate.md |
ideate |
| approach doc | portfolio | test -f ./docs/approach.md |
chat-to-approach |
| roadmap board | portfolio | test -f ./ideas/roadmap.html |
to-roadmap |
| PRD | feature | ls ./docs/prd-*.md and gh issue list for [PRD] |
to-prd |
| plan | feature | ls ./docs/plans/*.md (excluding metrics.md) |
to-plan |
| tickets | feature | gh issue list — any issue NOT titled [PRD] |
to-tickets |
Feature-level artifacts are countable, not binary. Three plans means three features are mid-spine; it does not mean "the plan stage is done". Report counts and names, never a single tick.
Procedure
-
Scan local files in one pass:
ls ./ideas/reports/*-ideate.md ./docs/approach.md ./ideas/roadmap.html \ ./docs/prd-*.md ./docs/plans/*.md 2>/dev/null -
Scan GitHub issues once, then split by title:
gh issue list --state open --limit 100 --json number,title 2>/dev/null- PRDs: any title starting
[PRD]. - Tickets: any open issue that is not a
[PRD]issue. - If
ghis unavailable or errors (no remote, not authed), mark the GitHub-backed artifacts unknown, not absent — never guess. Say so in the report. Local./docs/prd-*.mdfiles still count as PRDs, so a repo with no remote can still show the PRD artifact present.
- PRDs: any title starting
-
Report what you observed, citing the file path or issue number as evidence. Never report an artifact you did not see. Group by level so the user can tell portfolio work from feature work.
-
Route. Do not compute "the earliest gap". Ask what the user has and match it:
What the user has Route to Why A scoped feature or a clear idea to-prdThe spine starts here. Prior artifacts are optional accelerants Nothing — no idea what to build ideateThe only door that generates an idea from the codebase A conversation from claude.ai or elsewhere chat-to-approachCaptures the handoff into approach.mdAn approach doc, wants to prioritise to-roadmapTurns many features into Now / Next / Later A roadmap, wants to start building Pick one card → to-prdEach card is its own spine run A PRD for a code feature to-planWrites the plan whose approval gates ticket cutting A PRD for non-code work, or an approved plan to-ticketsTickets already filed ticket-trackerMove them through the board When the invocation itself makes the intent obvious, route on that and say so — a user who describes a feature is not asking to ideate, even on an empty repo.
If you genuinely cannot tell which of two doors applies, ask one question via
AskUserQuestionrather than guessing. Recommend exactly one skill.
Report format
Product artifacts
Portfolio (many features)
[x] ideate report — ./ideas/reports/2026-05-01-ideate.md
[x] approach doc — ./docs/approach.md
[ ] roadmap — not found
Feature (per feature)
[x] PRDs — 2: ./docs/prd-search.md, #41 [PRD] Saved views
[x] plans — 1: ./docs/plans/search.md
[?] tickets — unknown (gh unavailable)
Next: `to-plan` — "Saved views" has a PRD but no plan yet.
Use [x] present, [ ] absent, [?] unknown. Always list all six so the user sees the whole
suite. Close with one line naming exactly one skill and the reason.
Absent portfolio artifacts are not a finding. Do not tell the user to go back and write an approach doc because one is missing — say what is missing, then let the routing table decide.
Notes
- Read-only. This skill never creates or edits artifacts — it only reports and routes.
- When invoked as a preflight by another skill, return the artifact map and skip the prose framing and the routing verdict — the calling skill does its own routing.
04 同仓库更多 Skills
vault-recall
Answer the user's conceptual or technical question using their Obsidian vault as well as general knowledge. Use when the user asks a question (not a task) whose topic appears in the vault MOC digest from session start. Not for task instructions, not mid-task, and not for writing to the vault (that is to-vault).
ingest
Ingest one external source (an article, course lesson, doc, PDF or URL) into the user's Obsidian vault: save the original to raw/, then build wiki/ pages per the vault's § Ingest. Use when the user types /ingest, or says "ingest this", "add this source to my wiki", "put this article/lesson in the vault as a wiki page". Works from any repo. Routing rule: someone else's words go to wiki/ (this skill); the user's own learnings and decisions go to notes/ (/to-vault).
to-tickets
Breaks a source into independently-grabbable GitHub tickets. For a code feature the source is the plan (`docs/plans/<feature>.md`, from /to-plan) and every new or changed symbol lands in exactly one ticket, its signatures copied into the ticket body; a non-code feature is cut from the PRD's slices. Cuts tickets for one feature per run. If a code feature has no approved plan, offers /to-plan instead of cutting from prose. In a repo that runs command-centre, also emits `[[task]]` blocks into its config; in a plain treepad repo, emits a Batch Manifest instead so the tickets materialise as stacked worktrees.
to-seams
Records an agreed-but-unlanded cross-repo interface as a seam: the file a consumer's agent gets pasted into its prompt as ground truth, plus the `[[seam]]` block command-centre reads for the retirement pointer. Use when two repos need to build against an interface neither has landed yet — "record a seam for X", "we agreed on this schema, seam it", "add a seam so Y can build against Z's new field". Halts for approval before writing either file.
to-roadmap
Prioritises settled features into a Now / Next / Later kanban board, rendered as a self-contained ./ideas/roadmap.html. Each card is a feature, not a ticket — one card later becomes several tickets via /to-prd -> /to-plan -> /to-tickets. Boards the features in ./docs/approach.md, or the "## Accepted ideas" in ./ideas/CONTEXT.md when there is no approach doc. The approach doc is settled truth: this assigns tiers and reasons about ordering, it never re-litigates what was decided.
to-prd
Turns one feature idea into a PRD built on journeys: a one-line problem, journeys (each ending in an observable state) and delivery slices that say what is usable after each. Interviews, explores the codebase, and saves to docs/prds/<feature>.md. Covers exactly one feature: given a multi-feature source, ask which one. Reads any approach doc or ideate report as priors so it doesn't re-ask what's settled, but needs none. Starts the per-feature spine (/to-prd -> /to-plan -> /to-tickets).