AGENT SKILL

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

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

  1. 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
    
  2. 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 gh is 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-*.md files still count as PRDs, so a repo with no remote can still show the PRD artifact present.
  3. 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.

  4. 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-prd The spine starts here. Prior artifacts are optional accelerants
    Nothing — no idea what to build ideate The only door that generates an idea from the codebase
    A conversation from claude.ai or elsewhere chat-to-approach Captures the handoff into approach.md
    An approach doc, wants to prioritise to-roadmap Turns many features into Now / Next / Later
    A roadmap, wants to start building Pick one card → to-prd Each card is its own spine run
    A PRD for a code feature to-plan Writes the plan whose approval gates ticket cutting
    A PRD for non-code work, or an approved plan to-tickets
    Tickets already filed ticket-tracker Move 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 AskUserQuestion rather 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

O-Marsters-1997
O-Marsters-1997/my-claude-code

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).

★ 0
O-Marsters-1997
O-Marsters-1997/my-claude-code

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).

★ 0
O-Marsters-1997
O-Marsters-1997/my-claude-code

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.

★ 0
O-Marsters-1997
O-Marsters-1997/my-claude-code

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.

Skill与智能体开发
★ 0
O-Marsters-1997
O-Marsters-1997/my-claude-code

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.

产品经理
★ 0
O-Marsters-1997
O-Marsters-1997/my-claude-code

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).

产品经理
★ 0