A multi-agent decision-partner system for founders and product managers building new products.
KStack v2 turns Claude Code into a team of 9 named specialists who help you figure out who your product is for, what it should be, and how to take it to market. Each agent operates as a rigorous thought partner, not a passive assistant. They challenge your assumptions, force decisions at named moments, and produce final deliverables in markdown and HTML you can ship straight to a deck or paste into a memo.
Built for the founder or PM who has more decisions than time and is tired of generic AI output.
Most AI tools are assistants. You ask, they answer. The output looks polished but the thinking underneath is shallow. They agree too easily, generate too many options, never push back, never end in a decision.
KStack v2 inverts that. It is built around a different stance: decision-partner over assistant. Every interaction has to move you closer to a defensible decision, not just a polished artifact. The agents calibrate to the quality of your thinking, confirm sound reasoning cleanly, and challenge weak premises with a named reason. They label confidence, pull cascades, end in action.
The voice is direct, not harsh. Direct, not contrarian. Clarity is the goal. Push back when ideas deserve better, not to perform rigor.
Nine principles govern every agent in the system.
1. Specialists, not a generalist. Nine named roles, each with a kit, a personality, a point of view. The Brand Strategist talks like a brand strategist. The GTM Lead talks like a GTM lead. They argue with each other in the recommendation block when the work demands it.
2. Decision-partner stance. Each agent runs at least three explicit Decision Moments per engagement. The user makes the call before the agent proceeds. No silent drift. No "here are five things to consider."
3. Refusal is a feature. Agents refuse to produce work from thin inputs. The Brand Strategist won't build a brand without a defined ICP. The Positioning Lead won't position to "everyone." The Launch & Growth Operator won't write launch assets without locked positioning. They name what's missing instead of fabricating.
4. Files over messages. Every engagement lives at ~/kstack-engagements/<slug>/ with a manifest, intermediate work, and final deliverables. State is on disk, not in chat memory. Pause and resume any time. Invoke any specialist from inside an engagement folder and it picks up where you left off.
5. Hard caps. Subagents capped at 3 parallel. Sub-skill invocations capped at 4 per engagement. Tool calls capped at 8 per subagent. Line counts capped at 500 per skill. Discipline keeps the system fast and reliable.
6. Self-contained. No paid APIs, no MCP servers, no auth flows, no signups. Runs on Claude Code built-ins (WebFetch, WebSearch, Read, Write, Bash, Agent). 35 of 42 candidate global skills audited as clean; 5 ported inline; 2 dropped. Optional global skills enhance specific agents if you have them; nothing is required.
7. Mandatory gates. Three named confirmation gates govern every engagement. Brief Synthesis Confirmation (after intake). Specialist Re-Confirmation (on hand-off). Structural Gate (before going deep on any structural decision). The user gets a chance to redirect before depth work begins.
8. Outputs that ship. Final deliverables are produced as markdown source AND self-contained styled HTML. The HTML uses a portable single-file wrapper with brand styling embedded. Copy the file, open in a browser, screenshot, present.
9. Open architecture. The protocols, templates, and recipes that govern every agent live in templates/ and are readable. The methodology is the product.
| Slash command | Role | Canonical kit (final deliverables, MD + HTML) |
|---|---|---|
/start |
The Orchestrator | Engagement Brief + Routing Recommendation |
/researcher |
The Researcher | Market Intelligence Pack, Competitive Landscape, Trend Radar |
/icp-strategist |
The ICP Strategist | ICP Profile, Persona Pack, Validated Problem Statement, Light Journey Map |
/product-strategist |
The Product Strategist | Product Vision, Wedge Statement, MVP Plan, Roadmap |
/brand-strategist |
The Brand Strategist | Building Blocks, Territories, Brand Platform, Voice Profile |
/positioning-lead |
The Positioning Lead | Positioning Doc, Messaging House, Narrative Arc, Battlecard |
/gtm-lead |
The GTM Lead | Motion Classifier, Channel-Fit Diagnosis, Pricing & Packaging, GTM Plan |
/launch-growth |
The Launch & Growth Operator | Launch Plan, Asset Kit, PMF Signal Tracker, VoC Synthesis |
/strategy-director |
The Strategy Director | Insight Synthesis, Prioritized Roadmap, Investment Memo, Decision Record |
Requires Claude Code.
git clone https://github.com/kenanali/Kstack.git
cd Kstack
./setupThe setup script symlinks all 9 agents into ~/.claude/skills/, creates the engagement workspace root at ~/kstack-engagements/, and runs a preflight check. Restart Claude Code and the slash commands appear.
To verify your installation:
./scripts/lint-agents.sh # all 9 should passOpen Claude Code in any directory and type:
/start
The Orchestrator greets you and asks two things: what you're working on, and what you have. Drop briefs, decks, transcripts, PRDs, customer interviews, or competitor URLs into the chat. Or describe verbally if you have nothing.
What happens next:
- Brief synthesis. The Orchestrator reads what you shared, names what's clear, what's inferred, what's missing, and what's worth noticing. Produces a 1-page synthesis.
- Gate 1 — Confirm the synthesis. "Right product, right stage, right person? Anything I got wrong?" You confirm or correct. The agent waits.
- Diagnostic interview. 4-8 questions tuned to what's missing from the brief. Stage, stated ask, real ask, existing assets, constraints, decision deadline.
- Decision Moment — Frame the engagement. "Stated vs underlying problem. Which are we solving?" You decide before routing.
- Engagement Brief produced. Saved as MD + HTML in
~/kstack-engagements/<slug>/engagement-brief.mdand.html. - Runbook check. If your situation matches a known pattern (idea-to-validated, ICP discovery, positioning refresh, pre-launch sprint), the Orchestrator offers it. Otherwise, default routing.
- Routing recommendation. One specialist named, with reasoning. Plus a copy-paste invocation line:
**To continue:** Run /icp-strategist from this engagement folder. - You explicitly invoke the next agent. No magic auto-routing.
The whole intake usually takes 10 to 15 minutes. The actual specialist work happens in the next session.
For recognizable scenarios, KStack ships runbooks that sequence multiple agents into a coordinated path. The Orchestrator offers them when your diagnostic matches.
| Runbook | When | Sequence |
|---|---|---|
| Idea to Validated | Idea, no validated problem | Researcher → ICP Strategist → Product Strategist |
| ICP Discovery | Customer signal but vague ICP | Researcher → ICP Strategist → Strategy Director |
| Positioning Refresh | Product exists, positioning isn't landing | Researcher → Positioning Lead → Brand Strategist |
| Pre-Launch Sprint | 30 days from launch, multiple things unlocked | Positioning Lead → GTM Lead → Brand Strategist → Launch & Growth |
If your situation doesn't match a runbook, the Orchestrator falls back to single-agent routing. Runbooks are optional convenience, not required ceremony.
You Claude Code Engagement Workspace
│ │ │
│ /start │ │
│─────────────────────►│ │
│ │ intake + synthesis │
│ │ │
│ confirm Gate 1 │ │
│─────────────────────►│ │
│ │ create workspace │
│ │─────────────────────────►│
│ │ write engagement brief │
│ │─────────────────────────►│
│ │ │
│ decide framing │ │
│─────────────────────►│ │
│ │ route + handoff primer │
│ │ │
│ /icp-strategist │ │
│─────────────────────►│ │
│ │ resume from workspace │
│ │◄─────────────────────────│
│ │ produce ICP deliverables│
│ │─────────────────────────►│
│ │ │
│ /positioning-lead │ (later, maybe next day) │
│─────────────────────►│ │
│ │ resume; reads ICP │
│ │◄─────────────────────────│
│ │ produce positioning │
│ │─────────────────────────►│
Every specialist's first response shows the State Preamble: where the engagement is, what's been decided, what's open, what was last produced. You never have to remember.
KStack v2 was audited before release. The audit report is in planning/global-skills-audit.md. It verified:
- Every agent's primary flow uses only Claude Code built-ins
- 5 deprecated skills with unshipped Python script dependencies were ported inline (HN search via the public Algolia API, Wayback Machine via the public CDX API, customer discovery via WebFetch, landing-page intel via WebFetch, ICP definition Phase 0-2)
- All references to paid services (Apify, Firecrawl, Apollo, Crustdata, Bright Data) were removed
- The one skill (
early-access-email-sequence) that hard-required the Notion MCP server was dropped entirely
You can clone this repo on a fresh machine, run ./setup, and have the full system working. No signups, no API keys.
KStack v2 is built on six shared protocols, all in templates/:
| Protocol | What it governs |
|---|---|
| Thought Partner Protocol | Voice, decision-partner stance, citation discipline (derived from SOUL.md) |
| Delegation Protocol | When to spawn subagents, hard caps, the 4-part subagent prompt template |
| Sub-skill Trigger Protocol | When an agent reaches for a sub-skill (deliverable / gap-detected / user-opted) |
| Engagement State Protocol | Resume logic, the three confirmation gates, minimum-input refusal |
| Recommendation Block | Cross-agent handoff structure |
| Deliverable Output Rules | Markdown for intermediate, MD + HTML for final deliverables |
Plus an HTML deliverable wrapper at templates/html-deliverable-wrapper.html, styled with brand tokens extracted from www.kenanali.com and inlined for portability.
A static lint script at scripts/lint-agents.sh enforces structure across all 9 agents (required sections, line cap, em-dash prohibition, protocol references).
KStack/
├── README.md ← this file
├── CLAUDE.md ← project instructions for Claude
├── setup ← install script
├── .gitignore
│
├── agents/ ← 9 v2 agents (the public surface)
│ ├── orchestrator/SKILL.md → installs as /start
│ ├── researcher/SKILL.md
│ ├── icp-strategist/SKILL.md
│ ├── product-strategist/SKILL.md
│ ├── brand-strategist/SKILL.md
│ ├── positioning-lead/SKILL.md
│ ├── gtm-lead/SKILL.md
│ ├── launch-growth/SKILL.md
│ └── strategy-director/SKILL.md
│
├── templates/ ← shared protocols every agent references
│ ├── thought-partner-protocol.md
│ ├── delegation-protocol.md
│ ├── sub-skill-trigger-protocol.md
│ ├── engagement-state-protocol.md
│ ├── recommendation-block.md
│ ├── deliverable-output-rules.md
│ ├── engagement-manifest.yaml
│ ├── html-deliverable-wrapper.html
│ ├── brand-style.md
│ └── brand-style.css
│
├── runbooks/ ← multi-agent recipes for recognizable scenarios
│ ├── README.md
│ ├── idea-to-validated.md
│ ├── icp-discovery.md
│ ├── positioning-refresh.md
│ └── pre-launch-sprint.md
│
├── scripts/
│ └── lint-agents.sh
│
├── planning/ ← architecture decisions, audits, research
│ ├── kstack-v2-agent-architecture.md
│ ├── global-skills-audit.md
│ ├── multi-agent-best-practices.md
│ ├── agency-agents-comparison.md
│ ├── skill-creator-rubric.md
│ ├── stratpartner-skill-diff.md
│ └── kstack-decision-engine-requirements.md
│
└── (legacy v1 sub-skills that v2 agents reach for as deliverable triggers:)
├── trend-scan/
├── biz-context/
├── persona-build/
├── journey-map/
├── synthesize/
├── prioritize/
├── biz-case/
├── brand-building-blocks/
└── brand-territories/
The original KStack, a CX transformation toolkit for senior consultants and service designers, lives at git tag v1.0-cx and branch kstack-cx. If you're doing CX transformation, journey mapping, service design, or organizational blocker analysis on existing enterprises rather than building a new product:
git checkout v1.0-cx
./setupYou'll get the original 11 CX skills (/trend-scan, /biz-context, /scan-blockers, /persona-build, /journey-map, /service-map, /synthesize, /biz-case, /prioritize, /brand-building-blocks, /brand-territories) without the v2 agent layer.
- No em-dashes. Use commas, periods, or restructure.
- No LLM phrases ("delve into", "leverage" as verb, "it's worth noting").
- Lead with the answer, then support with evidence.
- Numbers beat adjectives. "40% reduction" beats "significant improvement".
- Tag claims evidenced, inferred, or speculation.
- End in action. Every meaningful insight translates to a decision or directed next move.
MIT.
KStack v2 is in active development. The agents will improve with real usage. If you use KStack on a project and find a flow that's off, a gap in a recipe, or a sub-skill trigger that misfires, open an issue or send a PR. The highest-leverage contributions are evidence of where the agents fail in real engagements.
- The decision-partner stance is derived from Kenan Ali's SOUL.md thought-partner framework
- The Decision Engine architecture (Frame + Record subset shipped in v2; Debate + Tradeoffs deferred to v2.1) draws on Bezos's Type-1/Type-2 framing, the Cynefin framework, Jennifer Riel's integrative thinking, Gary Klein's pre-mortem, and Shane Parrish's second-order thinking
- The brand voice extraction (
/brand-strategist) and journey-map lifecycle framing (/icp-strategist) borrow from work on the StratPartner.ai project - The runbook concept and the agent lint script are borrowed from msitarzewski/agency-agents
- The
/startorchestrator pattern, hard caps on subagent fan-out, and the file-based engagement workspace are influenced by Anthropic's How we built our multi-agent research system and the Claude Code subagent guidance