Claude Cursor Skill

strategy

Use when defining product strategy, starting or redirecting a product, or repairing stale STRATEGY.md. Not for project plans, roadmaps, scheduling, or work needing no interview.

LLM Mart · 0 points · 9 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download outlinedriven-odin-claude-plugin-plugins_odin-product_skills_strategy-b05a1e3.zip · 7 KB
Part of outlinedriven/odin-claude-plugin — 120 skills

Install

skills CLI npx skills add https://github.com/OutlineDriven/odin-claude-plugin/tree/main/plugins/odin-product/skills/strategy
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install outlinedriven-odin-claude-plugin@llmmart
Git git clone https://github.com/OutlineDriven/odin-claude-plugin.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole outlinedriven/odin-claude-plugin collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Strategy: interview-driven product anchor

Contract

Field Bound contract
Trigger User wants product strategy, is starting or redirecting a product, or an existing STRATEGY.md has gone stale.
Authority Reversible local: writes only the target strategy document at the operating repository root; rollback is version control. No remote mutation. No other file is touched.
Side effect Writes updates to one strategy document at the operating repository root.
Done Required sections cleared the reject-by-default gate; accepted updates written back to the document and read back to confirm.

Inputs

Required: a drafted strategy document staged for review. If no strategy document exists, the user must draft one first or ask the skill to interview toward a first draft.

Optional: a named section argument on invocation (e.g. /strategy approach) targets a specific section for update.

On-demand reads (loaded at the step that needs them):

  • references/interview.md: question bank, pushback rules, anti-pattern examples, and per-section quality bar. Read before any interview turn.
  • assets/strategy-template.md: locked section skeleton and post-write checklist. Read when assembling or repairing the draft.

Refusal

  • Required section fails the reject-by-default gate: write nothing, say so in one line. Exit.
  • No human available to interview: exit. Fabrication is worse than no strategy.
  • File write or read-back mismatch: report the mismatch. Do not claim done.
  • Intent cannot be pinned: announce the ambiguity. Ask the user to state intent explicitly before proceeding.

Procedure

  1. Confirm the document is staged. Resolve the operating repo root with git rev-parse --show-toplevel; the anchor is $root/STRATEGY.md. Read the document. If it does not exist, tell the user to draft one or ask for a first-draft interview. If a section argument was supplied, note which section to focus on. Done when: the document is read and the review scope is confirmed.

  2. Interview the user to clarify intent and constraints based on document content. Load references/interview.md for the question bank, pushback rules, and per-section quality bar. For each section in the document (target problem, approach, persona, metrics, tracks, then optional milestones, non-goals, marketing): ask the opening question, apply the reject-by-default gate, push back at most twice on a weak answer, then capture the answer in the user's own words. When a section argument was supplied, re-interview only that section and preserve every untouched section. Done when: all sections in scope are re-interviewed and the gate verdict is recorded for each.

The reject-by-default gate runs in order: (1) Specific, not vague: names a concrete situation or choice, and is falsifiable. (2) Connected: approach answers the target problem; tracks serve the approach; metrics could plausibly regress. (3) The user's strategy, not the agent's: captured in the user's own language after pushback, not auto-completed.

  1. Propose specific updates reflecting the interview outcome. For each section that failed the gate or changed during the interview, draft the updated text in the user's language. Present the proposed updates in chat and offer one edit round. Done when: the proposed updates are presented and the edit round is completed.

  2. Write accepted updates back to the document. Read assets/strategy-template.md for the section skeleton and post-write checklist when assembling the final text. Set last_updated to today's ISO date. Write the document, then read it back to confirm it landed as intended. Done when: the file is written and the read-back matches.

Failure modes

  • Partial result: if a targeted section cannot clear the gate after two rounds of pushback, the untouched sections remain intact. No clobber.
  • Non-mutation: only the target strategy document is written. The working tree is otherwise untouched.

Output

One strategy document written to the operating repository root, read back to confirm. A clean "not enough to anchor yet" is a valid terminal output when required sections cannot clear the gate.

Files (odin-claude-plugin)
  • agents
    • openai.yaml 164 B
      interface:
        display_name: "Strategy"
        short_description: "Use when defining product strategy, starting or redirecting a product, or repairing stale STRATEGY.md."
      
  • assets
    • strategy-template.md 2.8 KB
      # Strategy template: STRATEGY.md skeleton
      
      Read after the interview clears the reject-by-default gate. Fill with captured answers and write to `$root/STRATEGY.md` (the operating repo root resolved in the SKILL's step 1).
      
      ## Rules for filling in
      
      - Use the user's own language. Don't paraphrase into generic PM-speak.
      - Keep each section compact; the whole doc should read in under 5 minutes.
      - Section order is locked. Don't add top-level sections.
      - Optional sections (milestones, non-goals, marketing): delete entirely if unused. Never leave an empty header.
      - Set `last_updated` in the frontmatter to today's ISO date (YYYY-MM-DD). Don't repeat the date in prose.
      - Set `name` in the frontmatter to the product or initiative name (the same value as the H1).
      
      ## Template
      
      The block below is the literal file to write (minus this line and the fences). Replace every `{{placeholder}}`. Delete any optional section whose placeholder wasn't answered.
      
      ~~~markdown
      ---
      name: {{product_name}}
      last_updated: {{YYYY-MM-DD}}
      ---
      
      # {{product_name}} Strategy
      
      ## Target problem
      
      {{1-2 sentence diagnosis. Names the user situation and the crux that makes it hard. No solution language.}}
      
      ## Our approach
      
      {{1-2 sentence guiding policy. What this product commits to, so the target problem becomes tractable.}}
      
      ## Persona
      
      **Primary:** {{Persona name}} — {{one-sentence JTBD, e.g. "They're hiring {{product_name}} to..."}}
      
      <!-- Add a secondary persona only if truly necessary. Fewer is better. -->
      
      ## Key metrics
      
      - **{{metric 1}}** — {{one-line definition; where it's measured}}
      - **{{metric 2}}** — {{...}}
      - **{{metric 3}}** — {{...}}
      
      <!-- 3-5 total. Stop at 5. Each must be able to regress. -->
      
      ## Tracks
      
      ### {{Track 1 name}}
      
      {{One line: the investment area, not a feature list.}}
      
      _Why it serves the approach:_ {{one line}}
      
      <!-- 2-4 tracks total. If you can't hold it to 4, fold related tracks together. -->
      
      ## Milestones
      
      - **{{YYYY-MM-DD}}** — {{milestone}}
      
      <!-- Optional. Delete the section if unused. Externally visible only: launches, fundraises, conferences, renewals. -->
      
      ## Non-goals
      
      - {{one line per item}}
      
      <!-- Optional. Delete the section if unused. Only things the team keeps being tempted by. -->
      
      ## Marketing
      
      **One-liner:** {{single-sentence pitch}}
      
      **Key message:** {{2-3 lines if useful}}
      
      <!-- Optional. Delete the section if unused. -->
      ~~~
      
      ## Post-write checklist
      
      Before confirming the write, scan the draft for:
      
      - [ ] Frontmatter at the top with `name` and `last_updated`.
      - [ ] `last_updated` is today's ISO date (YYYY-MM-DD).
      - [ ] No section over 4 sentences except Tracks (each track its own short block).
      - [ ] No `{{placeholder}}` remains.
      - [ ] Unused optional sections deleted, not left empty.
      - [ ] Metric count 3–5; track count 2–4.
      - [ ] Target problem and Our approach connect; one clearly responds to the other.
      
  • references
    • interview.md 8.4 KB
      # Strategy interview: question bank and pushback flow
      
      Load this file before any interview turn. It contains the pushback rules, anti-pattern examples, and per-section quality bar; improvising them from memory produces passive transcription instead of strategy.
      
      Each section maps one-to-one to a section in `assets/strategy-template.md`. For each section, ask the opening question, judge the answer against the bar, push back when it hits a named anti-pattern, then capture the final answer in the user's own language.
      
      
      ## Overall rules
      
      1. **Ask, don't prescribe.** Free-form answers for the substantive sections (problem, approach, persona). Reserve single-select for routing (which section to revisit).
      2. **Push back once, maybe twice.** First weak answer → name the specific issue, ask a sharper question. Second still weak → capture what's given, mark the section worth revisiting. Don't spiral.
      3. **Quote the user back.** Challenge with the user's own words verbatim. Paraphrase softens the challenge and is easy to dismiss.
      4. **1–3 sentences per answer.** A paragraph is usually hiding something vague; ask for the one sentence that matters.
      5. **Don't leak the anti-pattern names.** Don't say "that's a vanity metric"; just ask the sharper question.
      
      ---
      
      ## 1. Target problem
      
      - Opening: "What's the core problem this product solves, and what makes it hard?"
      - Strong: names a specific situation the user is in, identifies what makes it hard *right now* (a crux that isn't easy to route around), and is falsifiable.
      - Anti-patterns → pushback:
        - Goal stated as problem ("we need to grow revenue") → "That's a goal. What in the world makes it hard? Whose situation are you changing?"
        - Vague wish ("people need better tools for X") → "Whose situation, doing what? What do they try today, and why doesn't it work?"
        - Symptom, not cause ("users churn after 30 days") → "That's a symptom. What's happening in their world that makes them stop caring?"
        - Too broad ("communication at work is broken") → "Civilization-scale. Narrow it: which users, doing what, when does it hurt most?"
        - Feature-shaped ("there's no good way to do X with AI") → "That's a missing feature. What outcome do they want that the feature would give them?"
      - Capture: one or two sentences naming the situation and the crux. No solution language.
      
      ---
      
      ## 2. Our approach
      
      - Opening: "Given that problem, what's your approach: the commitment that makes it tractable?"
      - Strong: a choice that implies alternatives *not* pursued; general enough to direct many decisions, specific enough to rule things out. Sounds like "we win by doing X differently," not "we do a list of things."
      - Anti-patterns → pushback:
        - Fluff / values ("customer-obsessed, move fast") → "Those apply to any company. What are you doing *differently* from the products users could pick instead of yours? If the answer applies to any company, it's not your approach."
        - Feature list ("AI-powered X, Y, Z") → "That's a feature list. What's the bet that makes you pick those over others? What principle is guiding what you ship?"
        - Product description ("we use AI to draft replies") → "That's what the product does, but what's the *choice* inside it? Every competitor says the same thing. Name what you're doing that the obvious alternative isn't: is it a grounding choice, a trust-building commitment, a workflow bet?"
        - Goal restated ("be the market leader") → "Still the goal. How does the product win? What choice are competitors not making?"
        - Many approaches at once ("enterprise, self-serve, and consumer") → "Pick the one that organizes the rest. Which is it?"
        - Disconnected from the problem → "Draw the line from this approach to the problem you named. If there's none, one of the two is wrong."
      - Capture: one or two sentences, ideally implying "...so that [outcome tied to the problem]."
      
      ---
      
      ## 3. Persona (who it's for)
      
      - Opening: "Who's the primary user, and what job are they hiring this product to do?"
      - Strong: one primary persona (secondaries allowed but subordinate), identified by role or situation not demographic, with a concrete job as a verb phrase.
      - Anti-patterns → pushback:
        - Too many primaries ("founders, PMs, engineers, designers") → "If it's for everyone, it's for no one. Who matters most? The others can still benefit, but one of them drives the product decisions."
        - Demographic ("25–45 professionals") → "That's a demographic, not a user. What are they trying to do that makes them pick up this product?"
        - Role without situation ("PMs") → "PMs doing what: a roadmap review, a midnight spec, convincing a skeptical eng lead? The situation is where the product matters."
        - Generic job ("be more productive") → "Productive at what? They're hiring this to do *what*, specifically?"
      - Capture: persona name + JTBD sentence. E.g. "Solo founders running their own roadmap, hiring the product to keep strategy and execution aligned without a PM on staff."
      
      ---
      
      ## 4. Key metrics
      
      - Opening: "What 3–5 metrics tell you whether the approach is working?"
      - Strong: 3–5 (not 10), a mix of leading and lagging, and each could plausibly regress if the product got worse.
      - Anti-patterns → pushback:
        - Vanity ("total signups, pageviews, cumulative users") → "Those rise while the product gets worse. What moves when users actually get value?"
        - Too many ("12 metrics") → "A dashboard isn't a strategy. Which 3–5 would you stake the quarter on?"
        - Outputs not outcomes ("deploys per week") → "Those measure the team, not the product. If velocity doubled but users didn't care, would you call it a win?"
        - Can only go up ("cumulative hours saved") → "What's the rate or ratio: the thing that can regress?"
        - Unmeasurable ("user delight") → "How would you check it on a Tuesday? If you can't, it's aspirational."
      - Capture: 3–5, each with a one-line definition and where it's measured. If measurement is undefined: "Where does this live today? If nowhere, can you start measuring it?"
      
      ---
      
      ## 5. Tracks
      
      - Opening: "What 2–4 tracks of work are you investing in to execute the approach?"
      - Strong: 2–4 named *domains of work* (not features, not todos), each connected to the approach and broad enough to hold multiple features.
      - Anti-patterns → pushback:
        - Feature list in disguise ("Slack integration; mobile app; dark mode") → "Those are features. What's the *investment area* each one lives inside? 'Integrations' might be one track, with Slack, Teams, and Discord as candidates inside it."
        - Too many ("7 tracks") → "With 7 tracks, every track is starved for attention. Which 3 are load-bearing? The others either fold in or drop."
        - Disconnected from approach (approach: "win by being the easiest to onboard"; track: "enterprise SSO") → "How does that track serve the approach? If it's a separate bet, name it as one. If it's load-bearing for onboarding, explain the link."
        - Too vague ("improve the product") → "Every track is 'improve the product.' What's the specific investment area that's different from the others?"
        - One track only → "With one track, there's no real choice being made. What are the 2–3 things the product needs to be good at, and how are they different?"
      - Capture: 2–4 tracks, each with a name, one-line purpose, and why it serves the approach.
      
      ---
      
      ## 6. Milestones (optional)
      
      **Opening:** "Any dated milestones worth anchoring: a launch, fundraise, conference, renewal? Skip if none."
      
      Only externally visible, real milestones. Default skip. Don't push the user to invent any. If named, capture verbatim with dates.
      
      ---
      
      ## 7. Non-goals (optional)
      
      **Opening:** "Anything you've explicitly decided *not* to do right now that's worth naming: something the team keeps being tempted by?"
      
      A clarity tool, not a blocker list. Default skip. One sentence each if named; don't encourage a long list.
      
      ---
      
      ## 8. Marketing (optional)
      
      **Opening:** "Any positioning the doc should carry: a one-liner, tagline, key message? Skip if not yet."
      
      Default skip. 2–3 lines max if present.
      
      ---
      
      ## After the interview
      
      Once sections 1–5 clear the reject-by-default gate (plus any optional sections the user engaged), read `assets/strategy-template.md`, fill it in the user's language, present the full draft in chat, offer one edit round, then hand back to the SKILL's step 4 to write accepted updates back to the document and read back. If sections 1–5 can't clear the gate after two rounds of pushback each, write nothing and say so in one line.
      
  • SKILL.md 4.3 KB
    ---
    name: strategy
    description: 'Use when defining product strategy, starting or redirecting a product, or repairing stale STRATEGY.md. Not for project plans, roadmaps, scheduling, or work needing no interview.'
    disable-model-invocation: true
    ---
    
    # Strategy: interview-driven product anchor
    
    ## Contract
    
    | Field | Bound contract |
    |---|---|
    | Trigger | User wants product strategy, is starting or redirecting a product, or an existing STRATEGY.md has gone stale. |
    | Authority | Reversible local: writes only the target strategy document at the operating repository root; rollback is version control. No remote mutation. No other file is touched. |
    | Side effect | Writes updates to one strategy document at the operating repository root. |
    | Done | Required sections cleared the reject-by-default gate; accepted updates written back to the document and read back to confirm. |
    
    ## Inputs
    
    Required: a drafted strategy document staged for review. If no strategy document exists, the user must draft one first or ask the skill to interview toward a first draft.
    
    Optional: a named section argument on invocation (e.g. `/strategy approach`) targets a specific section for update.
    
    On-demand reads (loaded at the step that needs them):
    
    - `references/interview.md`: question bank, pushback rules, anti-pattern examples, and per-section quality bar. Read before any interview turn.
    - `assets/strategy-template.md`: locked section skeleton and post-write checklist. Read when assembling or repairing the draft.
    
    ## Refusal
    
    - Required section fails the reject-by-default gate: write nothing, say so in one line. Exit.
    - No human available to interview: exit. Fabrication is worse than no strategy.
    - File write or read-back mismatch: report the mismatch. Do not claim done.
    - Intent cannot be pinned: announce the ambiguity. Ask the user to state intent explicitly before proceeding.
    
    ## Procedure
    
    1. Confirm the document is staged. Resolve the operating repo root with `git rev-parse --show-toplevel`; the anchor is `$root/STRATEGY.md`. Read the document. If it does not exist, tell the user to draft one or ask for a first-draft interview. If a section argument was supplied, note which section to focus on. Done when: the document is read and the review scope is confirmed.
    
    2. Interview the user to clarify intent and constraints based on document content. Load `references/interview.md` for the question bank, pushback rules, and per-section quality bar. For each section in the document (target problem, approach, persona, metrics, tracks, then optional milestones, non-goals, marketing): ask the opening question, apply the reject-by-default gate, push back at most twice on a weak answer, then capture the answer in the user's own words. When a section argument was supplied, re-interview only that section and preserve every untouched section. Done when: all sections in scope are re-interviewed and the gate verdict is recorded for each.
    
    The reject-by-default gate runs in order: (1) Specific, not vague: names a concrete situation or choice, and is falsifiable. (2) Connected: approach answers the target problem; tracks serve the approach; metrics could plausibly regress. (3) The user's strategy, not the agent's: captured in the user's own language after pushback, not auto-completed.
    
    3. Propose specific updates reflecting the interview outcome. For each section that failed the gate or changed during the interview, draft the updated text in the user's language. Present the proposed updates in chat and offer one edit round. Done when: the proposed updates are presented and the edit round is completed.
    
    4. Write accepted updates back to the document. Read `assets/strategy-template.md` for the section skeleton and post-write checklist when assembling the final text. Set `last_updated` to today's ISO date. Write the document, then read it back to confirm it landed as intended. Done when: the file is written and the read-back matches.
    
    ## Failure modes
    
    - Partial result: if a targeted section cannot clear the gate after two rounds of pushback, the untouched sections remain intact. No clobber.
    - Non-mutation: only the target strategy document is written. The working tree is otherwise untouched.
    
    ## Output
    
    One strategy document written to the operating repository root, read back to confirm. A clean "not enough to anchor yet" is a valid terminal output when required sections cannot clear the gate.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related