
Ce Strategy
- 1 installs
- 23.9k repo stars
- Updated August 5, 2026
- everyinc/compounding-engineering-plugin
This is a copy of ce-strategy by everyinc - installs and ranking accrue to the original listing.
Helps with ai & agent building tasks.
About
ce-strategy is a Claude Code skill for ai & agent building. It helps you ship faster with AI-assisted development.
- ce-strategy
- AI & Agent Building
- AI-coding skill
Ce Strategy by the numbers
- 1 all-time installs (skills.sh)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/everyinc/compounding-engineering-plugin --skill ce-strategyAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 23.9k |
| Last updated | August 5, 2026 |
| Repository | everyinc/compounding-engineering-plugin ↗ |
What it does
Helps with ai & agent building tasks.
Files
Product Strategy
Note: The current year is 2026. Use this when dating the strategy document.
ce-strategy produces and maintains STRATEGY.md - a short, durable anchor document that captures what the product is, who it serves, how it succeeds, and where the team is investing. It lives at the repo root as a canonical, well-known file (peer of README.md). Downstream skills (ce-ideate, ce-brainstorm, ce-plan) read it as grounding when it exists.
The document is short and structured on purpose. Good answers to a handful of sharp questions produce a better strategy than any amount of prose. This skill asks those questions, pushes back on weak answers, and writes the doc.
Interaction Method
Default to the platform's blocking question tool: AskUserQuestion in Claude Code (call ToolSearch with select:AskUserQuestion first if its schema isn't loaded), request_user_input in Codex, ask_user in Gemini, ask_user in Pi (requires the pi-ask-user extension). Fall back to numbered options in chat only when no blocking tool exists in the harness or the call errors (e.g., Codex edit modes) — not because a schema load is required. Never silently skip the question.
Ask one question at a time. Prefer free-form responses for the substantive sections (problem, approach, persona); reserve single-select for routing decisions (which section to revisit). Each option label must be self-contained.
Focus Hint
<focus_hint> #$ARGUMENTS </focus_hint>
Interpret any argument as an optional focus: a section name to revisit (metrics, approach, tracks) or a scope hint. With no argument, proceed open-ended and let the file state decide the path.
Core Principles
1. Anchor, not plan. Strategy is what the product is and why. Features belong in ce-brainstorm; schedules belong in the issue tracker. Do not let either creep into the doc. 2. Rigor in the questions, not the headings. The section headers are plain English. The interview questions enforce strategy discipline. 3. Short is a feature. The template is constrained. Adding sections costs more than it looks like. Push back on expansion. 4. Durable across runs. This skill is rerunnable. On a second run it updates in place, preserves what is working, and only challenges sections that look stale or weak.
Execution Flow
Phase 0: Route by File State
Read STRATEGY.md using the native file-read tool.
- File does not exist -> First run. Go to Phase 1.
- File exists and argument names a specific section -> Targeted update. Go to Phase 2.
- File exists, no argument -> Ask which section(s) to revisit, then Phase 2.
Announce the path in one line: "Strategy doc not found - let's write it." or "Found existing strategy - let's review and update."
Phase 1: First-Run Interview
Read references/interview.md. This load is non-optional - the pushback rules, anti-pattern examples, and quality bar for each section live there. Improvising from memory produces a passive transcription instead of a strategy doc.
Run the interview in the section order of the final document:
1. Target problem 2. Our approach 3. Who it's for 4. Key metrics 5. Tracks 6. Milestones (optional) 7. Not working on (optional) 8. Marketing (optional)
For each section, ask the opening question, apply the pushback rules, and capture the final answer in the user's own language. Do not skip the pushback step - it is the core of the skill. Two rounds of pushback per section maximum; capture what the user has given after that and note the section is worth revisiting on the next run.
When all required sections (1-5) are captured, read references/strategy-template.md, fill it in, and present the full draft in chat before writing. Offer one round of edits. Then write to STRATEGY.md.
Phase 2: Update Run
Read the existing STRATEGY.md thoroughly. Summarize current state in 3-5 lines so the user sees what is on file.
If the argument named a specific section, jump to that section in references/interview.md. Preserve all other sections exactly. Apply pushback as if this were a first run - do not rubber-stamp existing weak content just because it is already written.
If no specific target, ask the user which section to revisit using the blocking question tool. Options:
- "Target problem"
- "Our approach"
- "Who it's for"
- "Metrics, tracks, or other"
For each revisited section, re-interview with full pushback. For sections the user confirms are still accurate, leave them untouched. Update the last_updated value in the YAML frontmatter to today's ISO date.
Write the updated doc back to STRATEGY.md.
Phase 3: Downstream Handoff
After writing, note in one line where the file lives and that ce-ideate, ce-brainstorm, and ce-plan will pick it up as grounding on their next run.
If no downstream skill has run yet on this repo, suggest ce-ideate or ce-brainstorm skills as a next step.
What This Skill Does Not Do
- Does not update the issue tracker or reconcile in-flight work. Strategy is the doc; execution lives elsewhere.
- Does not prioritize the backlog. Prioritization is a separate workflow.
- Does not write product requirements or implementation plans - those are
ce-brainstormandce-plan. - Does not compute metric values. It records which metrics matter and where they live, not what they read today.
Learn More
The "Target problem / Our approach / Tracks" structure is informed by Richard Rumelt's Good Strategy Bad Strategy - specifically his kernel of diagnosis, guiding policy, and coherent action. The interview questions in references/interview.md are designed to push past the patterns he 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 if the distinction between a slogan and a strategy is not yet sharp.
Strategy Interview
Loaded by SKILL.md at the start of Phase 1 and revisited per-section in Phase 2. Every section below maps one-to-one to a section in strategy-template.md.
For each section: ask the opening question, evaluate the answer against the quality bar, push back when it falls into a named anti-pattern, and capture the final answer in the user's own language.
Overall Rules
1. Ask, don't prescribe. Do not offer menu options for open answers (problem, approach, persona). Use free-form responses. Reserve multi-select for routing decisions. 2. Push back once, maybe twice. If the first answer is weak, name the specific issue and ask a sharper question. If the second answer is still weak, capture what the user has given and note in the draft that the section is worth revisiting. Do not let the interview spiral. 3. Quote the user back at them. When challenging an answer, use the user's own words verbatim. Paraphrasing softens the challenge and is easier to dismiss. 4. Keep each answer to 1-3 sentences. Longer answers are usually hiding something vague. If the user writes a paragraph, ask them to pick the sentence that matters most. 5. Don't leak the anti-pattern names. The user does not need to hear "that's a vanity metric" - just ask the sharper question that follows.
---
1. Target Problem
Opening question: "What's the core problem this product solves - and what makes that problem hard?"
Strong answers name a specific situation the target user is in, identify what makes the situation hard right now (a crux, a constraint, something that isn't easy to route around), and are falsifiable - you could imagine the problem being absent and know the difference.
Anti-patterns and pushback:
- Goal stated as problem ("the problem is we need to grow revenue") -> "That's a goal, not a problem. What's in the world that's making that goal hard to achieve? Whose situation are you changing?"
- Vague wish ("people need better tools for X") -> "Whose situation specifically? 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? What's the underlying condition?"
- Too broad ("communication at work is broken") -> "That's a civilization-scale problem. Narrow it to a situation you can actually affect - which users, doing what, when does it hurt most?"
- Feature-shaped ("there's no good way to do [specific workflow] with AI") -> "That's a missing feature, not the underlying problem. What outcome do users want that the feature would give them?"
Capture: One or two sentences naming the user's situation and the crux. No solution language.
---
2. Our Approach
Opening question: "Given that problem, what's your approach - the commitment or principle that makes it tractable?"
This is the guiding choice: how the product competes or operates, so that many downstream decisions become easier. It is not the product and it is not a feature list.
Strong answers are a choice (implying alternatives explicitly not pursued), are general enough to direct many decisions but specific enough to rule things out, and sound more like "we win by [doing X differently]" than "we do [a list of things]".
Anti-patterns and pushback:
- Fluff / values ("we're customer-obsessed and move fast") -> "Those are values, not an approach. What are you doing differently from the other products users could pick? If the answer applies to any company, it's not your approach."
- Feature list ("we're building AI-powered X, Y, and Z") -> "That's a feature list. What's the underlying bet that makes you pick those features over others? What principle is guiding what you ship?"
- Product description as approach ("we use AI to draft replies") -> "That's what the product does, but what's the choice inside it? Every competitor will say the same thing. Your approach should name what you're doing that the obvious alternative isn't - is it a grounding choice, a trust-building commitment, a workflow bet? What are you betting on that they're not?"
- Goal restated ("our approach is to be the market leader") -> "That's still the goal. How does the product win? What choice are you making that competitors aren't?"
- Multiple approaches at once ("we're going deep on enterprise, self-serve, and a consumer app") -> "Pick one as the guiding approach. The others may still get work, but one of them organizes the rest. Which is it?"
- Doesn't connect to the problem (problem: "users can't trust AI output"; approach: "build a fast, beautiful UI") -> "How does that approach solve the problem you named? If there's no line between them, one of the two is wrong."
Capture: One or two sentences. Ideally ends with or implies "...so that [outcome tied to the problem]".
---
3. Who It's For
Opening question: "Who is the primary user, and what job are they hiring this product to do?"
Jobs-to-be-done framing - the user isn't a demographic, they're someone in a situation trying to make progress.
Strong answers name one primary persona (additional personas allowed but secondary), identify them by role or situation rather than demographic, and state a concrete job as a verb phrase.
Anti-patterns and pushback:
- Too many primary personas ("it's for founders, PMs, engineers, and 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 framing ("25-45 year old 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? Running a roadmap review? Writing a spec at midnight? Convincing a skeptical eng lead? The situation is where the product matters."
- Generic job ("they want to be more productive") -> "Productive at what specifically? They're hiring this product to do what? The more specific, the better the product decisions downstream."
Capture: Persona name plus JTBD sentence. Example: "Solo founders running their own roadmap. They're hiring the product to keep strategy and execution aligned without a PM on staff."
---
4. Key Metrics
Opening question: "What 3-5 metrics will tell you whether the approach is working?"
Metrics are the feedback loop. Bad metrics create the illusion of progress while the product gets worse.
Strong answers stay at 3-5 (not 10), mix leading and lagging (something that moves weekly and something that moves quarterly), and could plausibly regress if the product got worse.
Anti-patterns and pushback:
- Vanity metrics ("total signups, total pageviews, cumulative users") -> "Those can all go up while the product gets worse. What moves when users actually get value?"
- Too many ("here are 12 metrics we watch") -> "A dashboard isn't a strategy. Pick the 3-5 you'd stake the quarter on. What are the others telling you that those don't?"
- Outputs, not outcomes ("ship velocity, deploys per week") -> "Those measure the team, not the product. If the team doubled velocity but users didn't care, would you call it a win?"
- Can only go up ("cumulative hours saved") -> "A metric that can only go up doesn't tell you much. What's the rate, the ratio, or the thing that can regress?"
- Unmeasurable ("user delight") -> "How specifically? If you can't define how you'd check it on a Tuesday, it's aspirational, not a metric."
Capture: A list of 3-5. Each with a one-line definition. Note where each is measured (analytics, DB, qualitative, etc.) if known. If measurement is undefined, ask: "Where does this metric live today? If nowhere, is this something you can start measuring?"
---
5. Tracks
Opening question: "What are the 2-4 tracks of work you're investing in to execute the approach?"
Tracks are the coherent-actions half of the strategy kernel - concrete areas of investment that flow from the approach. They are not feature lists and not personal todo items. Each track is a named domain of work.
Strong answers stay at 2-4 (not 8, not 1), connect clearly back to the approach, and are broad enough that multiple features live inside each one.
Anti-patterns and pushback:
- Feature list in disguise ("track 1: Slack integration; track 2: mobile app; track 3: 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 tracks ("we have 7 tracks this quarter") -> "With 7 tracks, every track is starved for attention. Which 3 are load-bearing? The others either fold in or drop."
- Doesn't connect to 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. For each: a name, a one-line purpose, and a short note on why this serves the approach.
---
6. Milestones (optional)
Opening question: "Are there any dated milestones worth anchoring - a launch, a fundraise, a conference, a renewal? Skip if none apply."
Only capture externally visible, real milestones. Avoid turning this into an internal schedule.
Default is to skip. Do not push the user to invent milestones. If they name some, capture them verbatim with dates.
---
7. Not Working On (optional)
Opening question: "Is there anything you've explicitly decided not to do right now that's worth naming? This is for things the team keeps being tempted by."
Clarity tool, not a blocker list. Skip by default. If the user names items, one sentence each. Do not encourage a long list.
---
8. Marketing (optional)
Opening question: "Any positioning or narrative language you want the doc to carry - a one-liner, a tagline, a key message? Skip if not yet."
Skip by default. Keep to 2-3 lines if present.
---
After the Interview
Once sections 1-5 are captured (and any optional sections the user engaged with), read strategy-template.md and fill it in. Present the full draft in chat before writing. Offer one edit round. Then write to STRATEGY.md.
Strategy Template
Loaded by SKILL.md after the interview is complete. Fill it in using the captured answers and write to STRATEGY.md.
Rules for filling in
- Use the user's own language where possible. Do not paraphrase into generic PM-speak.
- Each section stays compact. The whole doc should read in under 5 minutes.
- Section order is locked. Do not add new top-level sections.
- Optional sections: delete entirely if unused. Do not leave empty headers.
- Set
last_updatedin the YAML frontmatter to today's ISO date (YYYY-MM-DD). Do not duplicate the date in prose. - Set
namein the frontmatter to the product or initiative name (the same value used in the H1 title).
Template
The block below is the literal file to write (minus this line and the fences). Replace every {{placeholder}} with the captured answer. 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 that the target problem becomes tractable.}}
Who it's for
Primary: {{Persona name}} - {{one-sentence JTBD, e.g. "They're hiring {{product_name}} to..."}}
<!-- Duplicate the block above for additional personas only if truly necessary. Fewer is better. -->
Key metrics
- {{metric 1 name}} - {{one-line definition; where it's measured}}
- {{metric 2 name}} - {{...}}
- {{metric 3 name}} - {{...}}
<!-- 3-5 total. Stop at 5. -->
Tracks
{{Track 1 name}}
{{One line: what this track is - the investment area, not a feature list.}}
_Why it serves the approach:_ {{one line}}
<!-- Duplicate the block above for 2-4 tracks total. If you can't keep it to 4, something is wrong - fold related tracks together. -->
Milestones
- {{YYYY-MM-DD}} - {{milestone}}
<!-- Optional. Delete the section if unused. Only externally visible milestones: launches, fundraises, conferences, renewals. -->
Not working on
- {{one line per item}}
<!-- Optional. Delete the section if unused. Use only for 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 present at the top with
nameandlast_updatedkeys. - [ ]
last_updatedcarries today's date in ISO format (YYYY-MM-DD). - [ ] No section has more than 4 sentences except Tracks (where each track has its own short block).
- [ ] No placeholders remain (
{{...}}). - [ ] Optional sections with no content have been deleted, not left empty.
- [ ] Metric count is between 3 and 5. Track count is between 2 and 4.
- [ ] Target problem and Our approach are connected - one clearly responds to the other.