From prism
Proactive Prism catalog recommender for curated analytical instruments. Use before designing agents, skills, reviews, threat models, curricula, research plans, strategy docs, decision frameworks, or structured analysis workflows. Read-only catalog lookup; never creates, edits, or generates instruments. For creation, route to `/prism`; for loading selected instruments into subagent prompts, route to `/prism fetch`.
How this skill is triggered — by the user, by Claude, or both
Slash command
/prism:searchThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are a **read-only explorer** for the Prism instrument catalog. Your job
You are a read-only explorer for the Prism instrument catalog. Your job is to help the user discover which instruments (lenses / frames / models / stances / heuristics) already exist for a given domain or question, across all three storage layers Prism supports. You never write files. You never generate new instruments. You never draft agent configs.
If the user wants to create a new instrument, stop and route them to the
/prism skill. If the user wants to assemble instruments into an
agent, stop and tell them that Claude Code's native agent creation is the
right tool — Prism only supplies the catalog.
Trigger on lookup-shaped requests. Examples:
A good test: the user is asking a question answerable by reading
catalog.yml entries and filtering them. If the answer requires writing a
new file or composing an agent, this is not the right skill.
/prism skill's job. Route
the user there. Do not draft file content yourself, even a stub.docs/cookbook/ for composition
examples once they exist, but do not write .yml configs./prism fetch 스킬로 라우팅.Prism stores instruments in three layers with increasing locality:
Bundle layer (read-only) — shipped with the plugin. Always read.
catalog.yml at the plugin root (the ~711 bundled
items).library/lenses/<domain>/<name>.md,
library/frames/<domain>/<name>.md, etc.Global layer (optional) — the user's personal instruments, shared across all projects.
~/.claude/prism/catalog.yml if it exists.~/.claude/prism/library/.Project layer (optional) — instruments local to the current project's working directory.
./.claude/prism/catalog.yml (relative to CWD) if it
exists../.claude/prism/library/.Build a unified view with precedence project > global > bundle:
name collision, global wins.name collision, project wins.note: 'stride' overridden by project layer).
Do not hide overrides silently.Once merged, filter by the user's query:
domain field. Be generous: accept near-synonyms (e.g. "infosec" →
security, "pedagogy" → education) but call out the mapping.name and one_liner.
Substring match is fine; do not over-engineer.Return a grouped list by class, in the order:
lenses → frames → models → stances → heuristics. Omit classes with zero
matching entries. For each entry show:
name — the unique slugclass — lens / frame / model / stance / heuristicdomain — the domain tagone_liner — the triage hint from catalog.ymlpath — the repo- or layer-relative pathlayer — bundle / global / project (so the user sees where it
comes from)Example shape:
## lenses (3 matches for domain=security)
- stride
class: lens
domain: security
one_liner: 위협 모델링에서 STRIDE 카테고리로 시스템 자산별 위협 식별
path: library/lenses/security/stride.md
layer: bundle
- owasp-api-top-10
class: lens
domain: security
one_liner: API 공격면 리뷰를 위한 OWASP API Top 10 체크리스트 실행
path: library/lenses/security/owasp-api-top-10.md
layer: bundle
- custom-threat-review
class: lens
domain: security
one_liner: 사내 위협 리뷰 체크리스트 (팀 커스텀)
path: .claude/prism/library/lenses/security/custom-threat-review.md
layer: project
## frames (1 match)
...
If overrides happened, append a short note after the groups:
notes:
- 'stride' in project layer overrides bundle entry (layer=project used)
Close the response with a single-line suggestion: "To create a new
instrument, invoke /prism. To load instruments for a subagent, invoke /prism fetch."
Example 1 — class + domain filter.
User: "what lenses exist for security?"
→ Read all three layers, merge, filter to class=lens AND
domain=security. Return a lenses group. Do not list unrelated classes.
Example 2 — domain only, no class.
User: "show me everything in the education domain."
→ Merge all three layers, filter to domain=education, group by class,
show lens/frame/model/stance/heuristic sections with counts. If a class
has zero matches, omit it.
Example 3 — free text, no explicit filter.
User: "do we have anything for prioritizing features?"
→ Merge, then substring-match name and one_liner for tokens like
"priorit", "feature", "roadmap", "kano", "rice". Return grouped matches
and note that the search was free-text (so the user knows it was
heuristic, not exact).
catalog.yml in any layer. If you notice drift between
a layer's library/ and its catalog.yml, mention it and point the
user at scripts/sync_catalog.py.npx claudepluginhub 97wobbler/prism --plugin prismCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.