Strategy: interview-driven product anchor, honest by construction
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.
Op: of every run is extend: the anchor is a load-bearing capability added or sharpened, never a refactor of existing prose.
Auto-invoke
<auto_invoke> <trigger_phrases>
- "what's our north star"
- "define the strategy"
- "set our product strategy"
- "what are we actually building"
</trigger_phrases>
Fire automatically on a trigger phrase or when the user starts or redirects a product. The reject-by-default gate below decides whether a doc is actually written. Auto-firing is permission to evaluate, not permission to fabricate a strategy the user did not provide.
<manual_override>
/strategy [section]runs immediately without waiting for a trigger phrase; an argument names a section to revisit (approach,metrics,tracks).</manual_override> </auto_invoke>
When to Apply
- Starting or redirecting a product: no
STRATEGY.mdexists and the same framing keeps getting relitigated. - An existing
STRATEGY.mdhas gone stale, or a section reads as a slogan. planorideateneed upstream grounding and find no anchor.
When NOT to Apply
- The user wants an implementation design →
plan. Strategy says what the product is; plan says how to build a slice. - The user wants directions or options generated →
ideate. Strategy pins one intent; ideate diverges. - The ask is a feature spec, backlog priority, or schedule. Those live in the tracker, not the anchor.
- No human is available to answer and be pushed back on. An interview with no interviewee produces fabrication. Exit.
Reject-by-default gate
A section earns its place in STRATEGY.md only if it clears, in order:
- Specific, not vague. Names a concrete situation or choice, and is falsifiable. Reject "better tools for X" and "be the market leader". They survive any product.
- Connected. Approach answers the target problem; tracks serve the approach; metrics could plausibly regress. A disconnected section is a slogan, not strategy.
- The user's, not yours. Captured in the user's own language after pushback, not auto-completed by the agent. A fabricated strategy is worse than none.
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.
Support files: read on demand
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.
Workflow
Phase 0: Pin intent, then route by file state
- VS preamble. Before the interview, run a short Verbalized Sampling preamble (the
askmeskill) 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. - Route by file state. Resolve the operating repo root once with
git rev-parse --show-toplevel; the anchor is exactly$root/STRATEGY.mdand nothing nested or recursively discovered. Read that one path with the native file-read tool. A not-found result is the existence signal:- Absent → first run. Announce "No STRATEGY.md. Let's write it." Go to Phase 1.
- Present, argument names a section → targeted update. Go to Phase 2.
- Present, no argument → ask which section(s) to revisit, then Phase 2.
Phase 1: First-run interview
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.
Phase 2: Resume-in-place update
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.
Phase 3: Write, read back, commit
- Gate check. Required sections cleared → proceed. Not cleared → write nothing, commit nothing, say so in one line, exit.
- Read
assets/strategy-template.md; fill it with captured answers in the user's language. Delete unused optional sections. No empty headers. Setlast_updatedto today's ISO date. - Present the full draft in chat; offer one edit round.
- Write
$root/STRATEGY.md(the path resolved in Phase 0). - Read the file back to confirm it landed as intended.
- Commit. Stage only the resolved anchor:
git -C "$root" add STRATEGY.md. Nevergit add -A. Publish by the operating repo's normal flow. - Note in one line that
planandideateread it as optional grounding on their next run.
Constitutional Rules (Non-Negotiable)
- Anchor, not plan. Strategy is what the product is and why. Features →
ideate/plan; schedules → the tracker. Reject creep. - Rigor in the questions, not the headings. Headers stay plain English; the interview carries the discipline.
- Pushback is the skill. Transcribing a weak answer is the failure mode. Reject vague answers, quote the user back, cap at two rounds.
- Short is a feature. The template is locked. Adding a section costs more than it looks. Don't.
- No interviewee, no doc. The gate fails closed: a trigger grants evaluation, never fabrication. Gate fails → no write, no commit.
Validation Gates
| 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 |
Commits
One anchor per commit.
Anti-patterns
- Transcribing weak answers. Capturing "we want to be the market leader" verbatim. The gate exists to reject it.
- Fabricating to look productive. Auto-firing on a trigger and inventing a strategy the user never gave.
git add -A. Sweeping unrelated dirty files into the strategy commit. StageSTRATEGY.mdalone.- Clobbering on resume. Regenerating the whole doc when one section was stale. Update in place.
- Section creep. Adding headings the template lacks because a section "felt thin." Push the rigor into the question instead.
Disambiguation
- vs
plan:plandesigns implementation: decisions and units for building a slice, read-only over the codebase.strategyanchors what the product is and why.planreadsSTRATEGY.mdas optional grounding. - vs
ideate:ideategenerates many directions and filters them.strategypins one intent. Diverge withideate; converge and anchor withstrategy.ideatereadsSTRATEGY.mdas optional grounding. - vs
askme:askmeruns the Verbalized Sampling protocol to explore intent.strategyinvokes it as the Phase 0 preamble, then writes the durable doc.askmeasks;strategyrecords.
Intellectual grounding
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.