by phuryn
PM Brain OS: The Second Brain for Product Managers, Made of Markdown
# Add to your Claude Code skills
git clone https://github.com/phuryn/pm-brainA second brain for product managers. Plain markdown files in a folder on your laptop. Claude reads them before answering, writes to them after, sweeps them every Friday. No vector DB. No cloud. No agent memory tricks.
You manage one product. Your context is scattered across Notion, Linear, Slack, your dashboards, and your head. You ship a feature. Six weeks later, nobody remembers why you killed the other option. PM Brain fixes that.
See it in action: A week with PM Brain: Lena's first five days is a short story of one PM using it on a real team. New here? Start there.
Research preview. The architecture has months of dogfooding behind it on a sister content brain; the product as installed by real PMs in real organizations is days old. The eval suite (404 of 406 checks pass) is the floor. Real-world install feedback is how the next version gets better. Open issues or join the conversation per the launch post.
Two stages: install the skill once, then bootstrap a brain in any folder you want.
The skill is global. It lands in and is available across every Claude Code session, in any working directory.
No comments yet. Be the first to share your thoughts!
~/.claude/skills/pm-brain/macOS / Linux / WSL / Git Bash:
mkdir -p ~/.claude/skills && \
curl -L https://github.com/phuryn/pm-brain/archive/refs/heads/main.tar.gz | \
tar xz --strip-components=3 -C ~/.claude/skills pm-brain-main/.claude/skills/pm-brain/
Windows PowerShell:
$dest = "$env:USERPROFILE\.claude\skills"
New-Item -ItemType Directory -Force -Path $dest | Out-Null
irm "https://github.com/phuryn/pm-brain/archive/refs/heads/main.zip" -OutFile "$env:TEMP\pmb.zip"
Expand-Archive "$env:TEMP\pmb.zip" "$env:TEMP\pmb" -Force
Copy-Item "$env:TEMP\pmb\pm-brain-main\.claude\skills\pm-brain" $dest -Recurse -Force
Remove-Item "$env:TEMP\pmb.zip","$env:TEMP\pmb" -Recurse -Force
Either path pulls only the skill folder (.claude/skills/pm-brain/) into your Claude Code skills directory. The rest of this repo (example-brain/, tests/, docs/) stays on GitHub for you to browse, not on your laptop.
In any folder where you want the brain to live:
cd ~/projects/my-product-brain
claude
# then in the Claude Code prompt:
/pm-brain
The skill detects what's already in the directory. An empty folder gets a fresh start (greenfield). A folder with existing PM artifacts (Notion exports, a Jira CSV, meeting notes) gets read and absorbed (migration). Either way, a short 5-batch interview captures company, role, and current priorities. The scaffold drops in, the brain commits locally. Never pushes.
Migration is for your current state. Don't backfill old artifacts retroactively. Migration mode reads your active strategy, in-flight hypotheses, recent decisions, current stakeholder list. That's the goal. Don't try to manually
/ingest200 old interview transcripts and six months of Slack threads. If a stale artifact matters, it'll come up through current work and you'll ingest it then. Forcing them in now wastes a weekend and clogs the durable layer.
Stuck? Universal fallback (any OS with
git):git clone https://github.com/phuryn/pm-brain.git && cp -R pm-brain/.claude/skills/pm-brain ~/.claude/skills/. On Windows replace thecp -RwithCopy-Item pm-brain\.claude\skills\pm-brain $env:USERPROFILE\.claude\skills\ -Recurse.
The brain has one loop. Every task runs through it.
source/ (immutable). The synthesis lands in ingestion/ with observations tagged by speaker and date.knowledge/, hypotheses/, decisions/, stakeholders/) gets updated wherever the new signal applies. One artifact often touches four to six files./review reads the whole folder, flags what's drifting, drafts what needs your call.Full list of provenance tags in the glossary. Worked end-to-end example: how it works.
| Command | What it does |
|---|---|
| /ingest <thing> | Feed an artifact into the brain: a file, a paste, a quick note in chat. The skill figures out the shape (interview, meeting, market signal, ad-hoc) and routes it. |
| /prep <stakeholder> | One-page brief before a meeting: their open asks, last unresolved concern, suggested questions. |
| /review | Weekly sweep. Six checks across the brain. Fixes small things directly, drafts the bigger ones for your call. |
| /ideate <problem> | Synthesis, not brainstorm. Loads strategy, insights, and hypotheses. Surfaces 3–7 directions, each tagged with the evidence behind it. |
| /risk <feature> | Five-area risk scan. Drafts hypothesis stubs for any area with no coverage. |
| /plan <objective> | Six-block draft plan: what we know, assumption vs evidence, who to interview, hypotheses to open, experiments to run, decision points. |
.claude/skills/pm-brain/ # The canonical skill. Install this.
example-brain/ # Pre-scaffolded instance (browseable demo)
tests/ # Eval suite. Synthetic scenarios + harness.
docs/ # Architecture, how it works, testing, prior art
The brain itself (once you install and run /pm-brain) lives in your working directory:
knowledge/: your stable picture of strategy, product, users, market, and orghypotheses/: things you're tracking the evidence for (e.g., "invite-link friction blocks team activation under 50 seats")decisions/: calls you've made, with the evidence trail and what would reopen themstakeholders/: one file per person, with their asks and concernsingestion/: synthesis of every interview, meeting, doc, or message the brain has readsource/: the untouched originals, so the audit trail stays intact17 synthetic PM scenarios. 404 of 406 individual checks pass across the snapshots (≈99.5%). The split: every structural check passes (329 / 329, 100%). Files exist, links resolve, evidence rows tagged, decision schemas valid. And 75 of 77 LLM-judge content checks pass (≈97%), with two judges missing on the two longest scenarios. Full breakdown in the scoreboard.
Each scenario is a multi-turn PM situation (a churn investigation, a stakeholder cadence flag, a contradiction arriving 60 days after a decision) with cached input artifacts and ground-truth assertions. The harness spins up a fresh brain in a temp dir, replays the inputs through claude -p, runs structural assertions after every turn, and runs LLM-judge rubrics on substance at scenario end.
python tests/harness/run_scenario.py tests/scenarios/01-b2b-churn
tests/RESULTS.md: scoreboard, per-scenario JSON snapshots, the two known residual judge failures (called out honestly, not hidden)tests/README.md: 90-second operator quickstarttests/TESTING.md: scenario format, ground-truth schema, harness internals, cost model, coverage mapdocs/testing.md: design rationale (why scenarios over per-turn unit tests, why LLM-as-judge is reserved)docs/testing-decisions.md: running log of what eval runs taught us and the skill changes that came out of themdocs/walkthrough.md: Start here. A week with PM Brain, told as a story.docs/why-this-matters.md: five failure modes that kill most AI memory systems by month three, and the five structural choices that answer them.docs/glossary.md: every term used in PM Brain, defined in plain English.docs/how-it-works.md: the technical version of the walkthrough, with files and folders.docs/architecture.md: the design choices (deterministic scaffold + adaptive prompts) and why.docs/scaling.md: how the brain stays healthy as the folder grows. Growth shapes, compression mechanisms, realistic envelope numbers.docs/testing.md: how the eval suite wor