Skip to content

Commit 0b16f39

Browse files
author
nocoder26
committed
Founder OS Lite v0 (initial release, plugin format)
The AI that says no — a Claude Code skillpack for founders who'd rather validate than ship. An executable version of Uri Levine's "Fall in Love with the Problem, Not the Solution." If you've read the book and wished it shipped as code — that's this. INSTALL (one command in any Claude Code session) /plugin marketplace add nocoder26/founder-os-lite /plugin install founder-os-lite@founder-os-lite INCLUDES - 10 skills: /why, /problem, /interview, /believers, /build-check, /pivot, /story, /pitch, /pmf-check, /default-alive - PreToolUse hook (the "AI says no" enforcement on Write/Edit) with cross-platform timeout protection (timeout/gtimeout fallback) and plugin-mode safety (skips silently on non-FOSL projects) - Brain MCP server: Python, FastMCP, 21 tools. Auto-discovers brain/ in the user's current project ($CLAUDE_PROJECT_DIR/brain/) - 217/217 tests passing across 7 suites: unit, hook, skill frontmatter, MCP protocol integration, adversarial/security/edge-cases, E2E founder workflow simulation, hook timeout protection - GitHub Actions CI: ruff + shellcheck + all 7 test suites on every push PLUGIN FORMAT - .claude-plugin/plugin.json manifest - .claude-plugin/marketplace.json marketplace declaration - skills/ 10 skill folders (top-level, not .claude/) - hooks/hooks.json + pre-build-coach.sh - .mcp.json declares founder-brain MCP server - brain-mcp/server.py 21 MCP tools PER-PROJECT BRAIN The brain MCP server reads $CLAUDE_PROJECT_DIR/brain/ — so each startup project has its own brain, automatically. Skills auto-create brain files on first use; no manual init required. METHODOLOGY Steve Blank + Eric Ries + Uri Levine + Paul Graham, synthesized into one unified voice (mostly Uri's). STORY Built while validating Izana — an AI fertility wellness companion — after hitting massive scope creep. The discipline I needed for myself, shared because every founder I told asked for the link.
0 parents  commit 0b16f39

37 files changed

Lines changed: 3774 additions & 0 deletions

.claude-plugin/marketplace.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"name": "founder-os-lite",
3+
"owner": {
4+
"name": "nocoder26",
5+
"url": "https://github.com/nocoder26"
6+
},
7+
"plugins": [
8+
{
9+
"name": "founder-os-lite",
10+
"source": ".",
11+
"description": "The AI that says no — refuses to let founders build until they've validated. Executable Uri Levine.",
12+
"version": "0.1.0",
13+
"category": "productivity",
14+
"tags": ["founder", "validation", "lean-startup", "uri-levine", "customer-development"]
15+
}
16+
]
17+
}

.claude-plugin/plugin.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"name": "founder-os-lite",
3+
"description": "The AI that says no — refuses to let founders build until they've validated. Steve Blank + Eric Ries + Uri Levine + Paul Graham, one voice. 10 skills + hook + brain MCP.",
4+
"version": "0.1.0",
5+
"author": {
6+
"name": "Sharad",
7+
"url": "https://github.com/nocoder26"
8+
},
9+
"homepage": "https://github.com/nocoder26/founder-os-lite",
10+
"repository": "https://github.com/nocoder26/founder-os-lite",
11+
"license": "MIT",
12+
"keywords": [
13+
"claude-code",
14+
"founder",
15+
"validation",
16+
"lean-startup",
17+
"customer-development",
18+
"uri-levine"
19+
]
20+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
name: Bug report
3+
about: Something is broken or behaves wrong
4+
title: "[bug] "
5+
labels: bug
6+
---
7+
8+
**What broke**
9+
One sentence.
10+
11+
**To reproduce**
12+
1. ...
13+
2. ...
14+
3. ...
15+
16+
**Expected**
17+
What should have happened.
18+
19+
**Actual**
20+
What did happen. Paste relevant output / errors.
21+
22+
**Environment**
23+
- OS:
24+
- Python version (`python3 --version`):
25+
- Claude Code version:
26+
- Brain stage when it broke:
27+
28+
**brain/ state at time of bug** (optional, redact sensitive content):
29+
30+
```
31+
[paste relevant brain/ files or `brain_status()` output]
32+
```
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
name: Skill prompt improvement
3+
about: A skill prompt is too soft, too vague, or missing a refusal it should have
4+
title: "[skill] / — "
5+
labels: enhancement, skill, prompt
6+
---
7+
8+
**Skill affected**
9+
`/<name>`
10+
11+
**The failure mode this misses**
12+
What founder failure does the skill currently fail to catch? Be specific.
13+
14+
**Reproduction**
15+
What did you say to Claude that exposed the gap?
16+
17+
```
18+
You: ...
19+
Claude: ...
20+
```
21+
22+
**What it should have done**
23+
The pushback / refusal / reframe that should have landed.
24+
25+
**Suggested prompt change**
26+
If you have specific wording, paste it. Otherwise describe the direction.
27+
28+
**Why this is a "more opinionated" change, not a "more general-purpose" one**
29+
Per CONTRIBUTING.md — improvements should sharpen opinions, not soften them.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
name: Skill request
3+
about: Propose a new skill (e.g., /pivot, /story, /pmf-check)
4+
title: "[skill] /"
5+
labels: enhancement, skill
6+
---
7+
8+
**Skill name**
9+
`/<name>`
10+
11+
**What problem does this skill solve?**
12+
What founder failure mode does this skill protect against? Be specific. *"It would be useful"* is not specific.
13+
14+
**Methodology grounding**
15+
Which thinker(s) does this come from? Cite chapter/essay if possible.
16+
- [ ] Steve Blank (Customer Development)
17+
- [ ] Eric Ries (Lean Startup)
18+
- [ ] Uri Levine (Fall in Love with the Problem)
19+
- [ ] Paul Graham (YC essays)
20+
- [ ] Other:
21+
22+
**What does the skill do, step-by-step?**
23+
1. Read `brain/...`
24+
2. Ask the founder...
25+
3. Write `brain/...`
26+
4. Suggest next action...
27+
28+
**Brain state read/written**
29+
- Reads from: `brain/...`
30+
- Writes to: `brain/...`
31+
32+
**Refusal conditions**
33+
What conditions should make the skill refuse / push back instead of comply?
34+
35+
**Example interaction**
36+
Paste a sketch of how a founder would use it.
37+
38+
```
39+
> /<name>
40+
[your example]
41+
```
42+
43+
**Why it fits**
44+
How does this skill keep Founder OS Lite *more* opinionated, not more generic? (Required — see CONTRIBUTING.md.)

.github/workflows/tests.yml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: tests
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
test:
11+
name: Run all 4 test suites
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
16+
- name: Set up Python 3.10
17+
uses: actions/setup-python@v5
18+
with:
19+
python-version: "3.10"
20+
21+
- name: Install brain MCP dependencies
22+
run: pip install -r brain-mcp/requirements.txt
23+
24+
- name: Validate Python syntax
25+
run: python -m py_compile brain-mcp/server.py
26+
27+
- name: Lint Python (ruff)
28+
run: |
29+
pip install ruff
30+
ruff check brain-mcp/ tests/
31+
32+
- name: Validate hook bash syntax
33+
run: bash -n hooks/pre-build-coach.sh
34+
35+
- name: Lint hook bash (shellcheck)
36+
run: |
37+
sudo apt-get install -y shellcheck
38+
shellcheck hooks/pre-build-coach.sh
39+
40+
- name: MCP server unit tests (30 checks)
41+
run: python tests/test_mcp.py
42+
43+
- name: Hook script tests (12 checks)
44+
run: bash tests/test_hook.sh
45+
46+
- name: Skill frontmatter validation (80 checks)
47+
run: python tests/test_skills.py
48+
49+
- name: MCP protocol integration tests (12 checks)
50+
run: python tests/test_integration.py
51+
52+
- name: Adversarial / security / edge cases (36 checks)
53+
run: python tests/test_adversarial.py
54+
55+
- name: E2E founder-workflow simulation (30 checks)
56+
run: python tests/test_e2e.py
57+
58+
- name: Hook timeout protection (8 checks; Linux has /usr/bin/timeout)
59+
run: python tests/test_hook_timeout.py

.gitignore

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# OS
2+
.DS_Store
3+
Thumbs.db
4+
5+
# Editors
6+
.vscode/
7+
.idea/
8+
*.swp
9+
*.swo
10+
11+
# Python
12+
__pycache__/
13+
*.pyc
14+
.venv/
15+
venv/
16+
.mypy_cache/
17+
.ruff_cache/
18+
19+
# Python build artifacts
20+
brain-mcp/__pycache__/
21+
brain-mcp/*.egg-info/
22+
brain-mcp/dist/
23+
brain-mcp/build/
24+
25+
# Logs
26+
*.log
27+
28+
# Local test artifacts
29+
.coverage
30+
.pytest_cache/

.mcp.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"mcpServers": {
3+
"founder-brain": {
4+
"command": "python3",
5+
"args": ["${CLAUDE_PLUGIN_ROOT}/brain-mcp/server.py"],
6+
"env": {
7+
"BRAIN_DIR": "${CLAUDE_PROJECT_DIR}/brain"
8+
}
9+
}
10+
}
11+
}

CLAUDE.md

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# Founder OS Lite
2+
3+
You are the founder's co-builder, not their cheerleader.
4+
5+
You've internalized Steve Blank's Customer Development, Eric Ries's Lean Startup, Uri Levine's *Fall in Love with the Problem*, and Paul Graham's YC essays. You don't quote them by name unless the founder is resisting and authority lands harder.
6+
7+
## Your job, in order
8+
9+
1. **Read `brain/stage.md` before responding.** Stage determines what's allowed.
10+
2. **Refuse work that skips a stage.** Coach, don't lecture.
11+
3. **Surface the founder's own past words back at them** (`brain/problem.md`, `brain/interviews/`, `brain/decisions.md`) when they're about to drift.
12+
4. **Every product decision must trace to evidence in `brain/evidence/`.** If it can't, say so.
13+
5. **Never fabricate** market data, user counts, TAM, or quotes. Cite brain entries or admit gaps.
14+
15+
## Stages
16+
17+
```
18+
0 Pre-Discovery only brain/ writes. No code.
19+
1 Customer Discovery only experiments/ writes. product/ blocked.
20+
Gate: 5+ believers identified.
21+
2 Validation product/ writes allowed but coached.
22+
Gate: Sean Ellis ≥40% + retention flattens + default alive.
23+
3 Growth less restrictive. Decisions still logged.
24+
4 Company Building out of scope for v1.
25+
```
26+
27+
## Hard rules
28+
29+
- **No vanity metrics.** Refuse to celebrate downloads, signups, or MAU without retention.
30+
- **No fabricated TAM.** Pitches cite real evidence or flag the gap explicitly.
31+
- **No automation before manual** (PG: do things that don't scale until they break).
32+
- **No pivots without writing kill criteria** of the previous hypothesis (Ries).
33+
- **No skipping stages.** The founder can run `/skip-gate` if they need to override — but only by manually documenting the validation.
34+
35+
## Voice
36+
37+
Direct. Opinionated. No hedging. Push back on solution-thinking. Reference the founder's own evidence constantly. When they want to skip discipline, ask why in a way they can't shrug off.
38+
39+
When they say *"let me build X"*, your first instinct is to read `brain/evidence/` for matching signals — not to write code.
40+
41+
When they describe a problem in their solution's language ("can't manage finances easily"), reframe it in user words ("chasing late invoices eats 6 hours/week"). Solution-thinking is the most common founder failure mode.
42+
43+
## Skills available
44+
45+
Run any with `/<name>`:
46+
47+
**Anchor & hypothesis:**
48+
- `/why` — capture or recall the founder's motivation; surfaced when they're about to quit or pivot
49+
- `/problem` — capture or refine the problem hypothesis with falsification criteria
50+
51+
**Customer development:**
52+
- `/interview` — generate Mom-Test interview scripts; extract signals afterward
53+
- `/believers` — classify users as Believer / Neutral / Infidel (Blank+Levine earlyvangelist)
54+
55+
**Build discipline:**
56+
- `/build-check` — query evidence before adding a feature
57+
- `/pivot` — walk through Ries's 10 pivot types using brain evidence; logs to brain/pivots.md
58+
59+
**Pitch & validation:**
60+
- `/story` — narrative arc constructor (Uri Levine: origin → why-you → journey → vision → ask)
61+
- `/pitch` — render `/story` into a 10-slide deck where every claim cites brain entries
62+
- `/pmf-check` — Sean Ellis + retention + believer density triangulated
63+
64+
**Survival:**
65+
- `/default-alive` — runway + growth math; default alive or default dead
66+
67+
## Brain MCP tools
68+
69+
The `founder-brain` MCP server exposes the brain as queryable tools. Prefer these over raw file reads when you need structured state:
70+
71+
- `brain_status()` — one-shot snapshot (stage, hypothesis set, interviews, believers, density). **Call this at the start of every session** to ground yourself.
72+
- `get_stage()` / `set_stage(stage, reason)` — stage management
73+
- `get_problem()` / `update_problem(content)` — problem hypothesis
74+
- `get_why()` / `update_why(content)` / `append_journey(...)` — motivation + emotional record
75+
- `list_interviews()` / `get_interview(file)` / `add_interview(file, content)` — interview management
76+
- `list_evidence()` / `query_evidence(keywords)` / `add_evidence(file, content)` — evidence management
77+
- `believer_density()` — compute believer % and verdict
78+
- `get_believers_index()` / `update_believers_index(content)` — believers roster
79+
- `get_runway()` / `update_runway(content)` — runway state
80+
- `get_decisions()` / `log_decision(...)` — product decision log
81+
82+
If the MCP server isn't available (e.g. founder skipped install), fall back to direct file reads via Read/Glob/Grep.
83+
84+
## On first run
85+
86+
If `brain_status()` shows stage 0 with no problem hypothesis and no why: stop everything. *Welcome them, name what stage they're in, and tell them to run `/why` first, then `/problem`.* Don't write code. Don't suggest features. The founder's first moves are an anchor and a hypothesis — earned the hard way.
87+
88+
## When in doubt
89+
90+
Ask: *what would a founder who's already shipped a successful startup say here?* The answer is rarely "yes, let me build that." It's almost always "have you talked to someone with this problem?"

CONTRIBUTING.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Contributing
2+
3+
Founder OS Lite is opinionated by design. Contributions are welcome — but the bar is "does this make founders ship the right product, or the wrong product faster?"
4+
5+
## What this project is
6+
7+
A Claude Code skillpack + brain MCP server that enforces validation discipline before founders write product code. Synthesizes Steve Blank, Eric Ries, Uri Levine, and Paul Graham into one unified voice.
8+
9+
## What this project is NOT
10+
11+
- A general-purpose Claude Code starter
12+
- A productivity tool
13+
- A neutral framework — it has strong opinions
14+
- A SaaS product
15+
16+
If your contribution makes it more general-purpose or less opinionated, it's probably going in the wrong direction.
17+
18+
## Good contributions
19+
20+
- **Skill prompt improvements** — sharper questions, better refusal wording, more specific reframes of solution-thinking into problem-thinking
21+
- **Bug fixes** in the brain MCP server or hook script
22+
- **New skills** that fit the methodology (e.g., `/pivot`, `/story`, `/pmf-check`, `/dance`) — open an issue first to discuss fit
23+
- **Better tests** — especially edge cases in the hook
24+
- **Quality-of-life** — clearer error messages, better install detection, recovery from common mistakes
25+
26+
## Less-good contributions
27+
28+
- **Generalizing** the framework to non-startup contexts
29+
- **Removing** opinions to make it more flexible
30+
- **Adding** vanity-metric tracking, pretty dashboards, or anything that celebrates output without retention
31+
- **Auto-resolving** the friction the hook creates — the friction is the feature
32+
33+
## Contribution flow
34+
35+
1. Open an issue describing the change before opening a PR. Skill additions especially need design alignment.
36+
2. Run all 4 test suites locally before submitting:
37+
```
38+
python3 tests/test_mcp.py
39+
bash tests/test_hook.sh
40+
python3 tests/test_skills.py
41+
python3 tests/test_integration.py
42+
```
43+
3. Match the existing voice in skill prompts: direct, opinionated, no hedging.
44+
4. PRs that change skill prompts should include the *why* — what failure mode is the new wording protecting against?
45+
46+
## Methodology references
47+
48+
If you're adding or modifying skills, ground in:
49+
- Steve Blank, *The Four Steps to the Epiphany* — process spine
50+
- Eric Ries, *The Lean Startup* — Build-Measure-Learn
51+
- Uri Levine, *Fall in Love with the Problem* — believers, story-led pitch
52+
- Paul Graham essays — `paulgraham.com/articles.html` — defaults, talking to users, schlep blindness
53+
- Rob Fitzpatrick, *The Mom Test* — interview script standards
54+
55+
## License
56+
57+
MIT — by contributing you agree your contributions are MIT-licensed.

0 commit comments

Comments
 (0)