From odin
Runs a sharp interview to write or maintain STRATEGY.md as the product anchor. Use when defining product strategy, setting a north star, or starting or redirecting a product.
How this skill is triggered — by the user, by Claude, or both
Slash command
/odin:strategyThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
`strategy` runs a sharp interview and writes one durable anchor: the operating repo's `STRATEGY.md` (peer of `README.md`). It pins intent with a VS preamble, pushes back on weak answers instead of transcribing them, and resumes in place when the file already exists. It writes exactly **one** surface: `STRATEGY.md` at the operating repo root. It writes nothing else.
strategy runs a sharp interview and writes one durable anchor: the operating repo's STRATEGY.md (peer of README.md). It pins intent with a VS preamble, pushes back on weak answers instead of transcribing them, and resumes in place when the file already exists. It writes exactly one surface: STRATEGY.md at the operating repo root. It writes nothing else.
Rigor lives in the questions, not the headings. Section names are plain English; the interview enforces the discipline. Short is a feature. The template is constrained on purpose.
Op: of every run is extend: the anchor is a load-bearing capability added or sharpened, never a refactor of existing prose.
<auto_invoke> <trigger_phrases>
/strategy [section] runs immediately without waiting for a trigger phrase; an argument names a section to revisit (approach, metrics, tracks).</manual_override>
</auto_invoke>STRATEGY.md exists and the same framing keeps getting relitigated.STRATEGY.md has gone stale, or a section reads as a slogan.plan or ideate need upstream grounding and find no anchor.plan. Strategy says what the product is; plan says how to build a slice.ideate. Strategy pins one intent; ideate diverges.A section earns its place in STRATEGY.md only if it clears, in order:
Push back at most twice per section; then capture what the user gave and mark the section worth revisiting. If the required sections (target problem, approach, persona, metrics, tracks) can't clear the gate, write nothing, commit nothing, and say so in one line. A clean "not enough to anchor yet" is a valid result.
Don't bulk-load. Read each at the step that needs it.
references/interview.md: the question bank, per-section quality bar, and pushback rules for all eight sections. Load before any interview turn; improvising the pushback from memory degrades into transcription.assets/strategy-template.md: the locked section skeleton and post-write checklist. Read when assembling the draft.askme skill) to surface the distinct things the user could mean by "strategy" here, and pin one. Skip only when the user already stated a single unambiguous intent. Pinning the wrong frame wastes the whole interview.git rev-parse --show-toplevel; the anchor is exactly $root/STRATEGY.md and nothing nested or recursively discovered. Read that one path with the native file-read tool. A not-found result is the existence signal:
Read references/interview.md. Run the eight sections in document order: target problem, approach, persona, metrics, tracks, then optional milestones, non-goals, marketing. For each: ask the opening question, apply the reject-by-default gate, push back at most twice on a weak answer, then capture it in the user's own words. Required sections are 1 to 5; optional sections default to skip. Never invent them.
Read the existing STRATEGY.md in full. Summarize current state in 3 to 5 lines so the user sees what's on file. Re-interview only the targeted or stale sections with full pushback. Do not rubber-stamp existing weak content because it's already written. Preserve every untouched section byte-for-byte. Update, don't clobber.
assets/strategy-template.md; fill it with captured answers in the user's language. Delete unused optional sections. No empty headers. Set last_updated to today's ISO date.$root/STRATEGY.md (the path resolved in Phase 0).git -C "$root" add STRATEGY.md. Never git add -A. Publish by the operating repo's normal flow.plan and ideate read it as optional grounding on their next run.ideate/plan; schedules → the tracker. Reject creep.STRATEGY.md at the operating repo root, and stages only that file.| Gate | Pass criteria | Blocking |
|---|---|---|
| Intent pinned | A single intent fixed via VS preamble, or stated unambiguously | Yes |
| Required sections | Target problem, approach, persona, metrics, tracks each clear the reject-by-default gate | Yes. No write on failure |
| Connection | Approach answers the problem; tracks serve the approach; metrics can regress | Yes |
| Read-back | Written STRATEGY.md re-read and matches intent | Yes |
| Staging | git -C "$root" add STRATEGY.md only; working tree otherwise untouched | Yes |
One anchor per commit. Stage only the resolved anchor: git -C "$root" add STRATEGY.md. Never git add -A. A new or sharpened anchor is load-bearing capability; a resume that repairs a stale section is still additive. Publish by the operating repo's normal flow.
git add -A. Sweeping unrelated dirty files into the strategy commit. Stage STRATEGY.md alone.plan: plan designs implementation: decisions and units for building a slice, read-only over the codebase. strategy anchors what the product is and why. plan reads STRATEGY.md as optional grounding.ideate: ideate generates many directions and filters them. strategy pins one intent. Diverge with ideate; converge and anchor with strategy. ideate reads STRATEGY.md as optional grounding.askme: askme runs the Verbalized Sampling protocol to explore intent. strategy invokes it as the Phase 0 preamble, then writes the durable doc. askme asks; strategy records.strategy writes exactly one surface: the operating repo's STRATEGY.md. No other files, no git add -A, no writes to undefined locations.
The "Target problem / Our approach / Tracks" structure follows Richard Rumelt's Good Strategy Bad Strategy -- his kernel of diagnosis, guiding policy, and coherent action. The interview questions are designed to push past the patterns Rumelt calls "bad strategy": fluff, goals dressed up as strategy, and feature lists in place of a guiding choice. The book is the recommended follow-up reading when the distinction between a slogan and a strategy is not yet sharp.
npx claudepluginhub outlinedriven/odin-claude-plugin --plugin odinCreates or updates STRATEGY.md — a short, durable product strategy document. Use when starting a product, changing direction, or grounding downstream planning skills.
Runs an interview to write or update a root-level STRATEGY.md, enforcing pushback rules against fluff, goals-as-strategy, and feature-lists. Validates existing strategy files and offers repair paths.
Guides users through a structured strategy interview using the kernel framework (diagnosis, guiding policy, coherent action). Helps think through company, product, team, career, or initiative strategy via conversation.