From lore
Use BEFORE planning, when an idea is still fuzzy and needs discovery. The goal is to flesh out boundaries, surface unknowns, poke at edges, and produce a frozen spec (problem, objectives, acceptance criteria, non-goals, UI direction) so that planning can be perfunctory and execution-focused. TRIGGER when: user says "thinking about", "what if", "exploring", "noodling on", "should we", "wondering about", "feeling out", "kicking around", "let's iterate on", or invokes /brainstorm explicitly. DO NOT TRIGGER when: user uses concrete verbs ("implement", "fix", "add", "build") without exploration framing, or has already decided what to do.
How this skill is triggered — by the user, by Claude, or both
Slash command
/lore:brainstormThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Discover the shape of the thing **before** committing to how to build it. Most discovery happens
Discover the shape of the thing before committing to how to build it. Most discovery happens here so that planning is mechanical and execution is unsurprising.
A spec is a frozen artifact. Once finalized, it is not edited. New thinking → new spec, with a reference back to the prior one.
Do NOT use this skill for:
If the idea is concrete enough that the next question is "how do we build it," brainstorming is done — go to planning.
Inline vs. dispatched: This skill runs brainstorming inline in the current session — use when you want interactive back-and-forth with the user. If brainstorming is a step inside an automated workflow that pauses because a slice surfaced an objectives-level question, dispatch a planner subagent instead — it covers the full brainstorm → spec → plan arc in an isolated context and returns a summary.
$LORE_VAULT/subsystems/
if your vault has subsystem profiles).$LORE_VAULT/specs/ on overlapping topics$LORE_VAULT/decisions/$LORE_VAULT/dead-ends/$LORE_VAULT/lessons/ for the touched subsystems — each carries a
prevention check that should shape acceptance criteria or non-goalslore:lore-librarian), dispatch it with a synthesis question ("what do we
know about X, and what's already been decided / tried / deferred?") rather than reading each
note yourself. If no such subagent is configured, read the relevant notes directly.Related
section.This is the heart of the skill. Sweep across discovery dimensions and surface the questions that would shape the design if answered differently. Batch them, rank by impact, and ask the user to answer / defer / accept-as-risk.
Cover at minimum:
Don't ask all dimensions every time. Pick the ones with real ambiguity for this idea, present them as a ranked batch, and let the user pick what to dig into.
For each open question raised in step 2, route it:
/lore:defer (or your vault's defer
command) with a revisit condition. Note in spec.Non-obvious choices made during this step → capture via /lore:decision.
If the idea has a user-facing surface, settle the direction in conversation before locking objectives.
Identify the surface(s). Which parts of the product does this touch? Describe them.
Settle the direction in conversation. Talk through the views/states needed (empty, populated, error, edge cases), the primary actions, the information hierarchy.
Design mockup (extension point — design_mockup):
Iterate. For follow-on edits, work in conversation or re-dispatch the mockup tool if available.
Don't generate mockups for backend-only or infrastructure changes — describe the surface verbally instead.
Before writing the spec, decide whether this work ships behind a feature flag or gating mechanism. Every spec must answer this — internal-only refactors and pure infrastructure/docs changes use the one-line "n/a" escape, but the question is never skipped.
Ask:
n/a — internal refactor, n/a — docs only, n/a — bug fix with no behavior change).Feature-flag provider (extension point — feature_flags):
If a feature-flag provider is configured in your environment (such as a flag management tool or
service), use its naming conventions and dispatch its configuration skill if one is available.
If no feature-flag provider configured — see the extend guide in docs/DEGRADATION.md. The
Rollout & Gating decision still happens; the provider-specific implementation details are skipped.
Capture the decision in the spec under a Rollout & Gating section. The downstream planning
skill reads this section to know whether to design flag touchpoints.
Every spec must declare what signal appears when this work breaks in production. Internal-only
refactors, pure docs, and tooling changes use named n/a escapes, but the question is never
skipped.
Answer:
n/a — <reason>.n/a — soak-invisible: <reason>
— and the reason must name what was considered and why it was rejected. Bare n/a — soak-invisible is not template-conformant.Observability provider (extension point — observability):
If an observability provider is configured in your environment (alerting rules, health endpoints,
metric stores), use its conventions and dispatch its configuration skill if one is available.
If no observability provider configured — see the extend guide in docs/DEGRADATION.md. The
Observability & Failure Visibility decision still happens; the provider-specific wiring is skipped.
Capture in the spec under an Observability & Failure Visibility section. Downstream planning
reads it to assign signal-emission ownership to slices.
Run lore new spec --title "<topic>" --project "<project>" to render the template and write the
note to $LORE_VAULT/specs/. The template creates a dated file with valid frontmatter that passes
the status validator.
The template (see lore new spec) contains these canonical sections — fill each in:
n/a if no UI surfaceAfter lore new spec writes the file, open it with an editor and fill in the body sections.
Before declaring brainstorming done, verify the checklist:
n/a — <reason>). Never blank.n/a — <reason>). n/a — soak-invisible must name what was considered. Never blank.Issue tracker (extension point — issue_tracker):
If an issue tracker is configured in your environment, advance the corresponding ticket to the
appropriate status (e.g. "Requirements Under Development" or equivalent) after setting
status: ready on the spec. If no issue tracker configured — status sync skipped. The spec
status update still happens.
If all checklist items are green, propose the handoff:
"Spec is at
$LORE_VAULT/specs/.... Ready to flip status toreadyand hand off to planning — agree?"
On user agreement, update the spec frontmatter status: ready and stop.
Cross-plugin handoff (forge plugin):
The planning skill lives in the forge plugin — install forge to continue into planning, or write
your implementation slices directly from this spec. Do not enter planning yourself from within
brainstorm — let the user invoke it explicitly so the planning skill loads cleanly.
The spec frontmatter status field tracks where the idea is in its lifecycle:
draft — actively brainstorming; spec is being edited.ready — brainstorming complete, spec frozen, ready for planning.planned — a plan exists referencing this spec.complete — the work has landed.The lore status guard enforces this vocab. Do not use shipped or other off-vocab values —
the pre-commit hook will reject the commit.
Once status: ready, the spec is frozen. No more edits. New thinking on the same topic
creates a new spec with a Related → Prior specs link back.
If planning (or implementation) surfaces something that would change a spec's objectives, acceptance criteria, or non-goals, do not edit the spec — re-enter brainstorming:
Related.If the surfaced item is task-level uncertainty (how to structure a query, which library to use, what to name a module), resolve it inline in planning. The bounce-back rule is for what / why shifts, not how shifts.
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.
npx claudepluginhub tduffield/lore --plugin lore