skills/compound-product/SKILL.md
Self-improving product system that reads daily reports, identifies the #1 priority, creates PRD + tasks, and autonomously implements fixes. Runs directly in your current session (no subprocess spawning). Use when you have a report and want autonomous implementation, or for overnight automation. Triggers on: compound product, auto-compound, self-improving, autonomous improvement, report to PR, run compound on, compound loop.
npx skillsauth add szoloth/skills compound-productInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A self-improving product system that reads daily reports, identifies the #1 actionable priority, and autonomously implements it. You wake up to a PR ready for review.
Based on Kieran Klaassen's Compound Engineering, Geoffrey Huntley's Ralph pattern, and Ryan Carson's implementation.
No API key needed! Uses Claude Code CLI with your Max subscription.
Structure this into a compound report: [paste messy notes]
Run compound product on reports/daily.md
Turn my daily capture into a compound report
┌─────────────────────────────────────────────────────────────────────┐
│ COMPOUND PRODUCT FLOW │
└─────────────────────────────────────────────────────────────────────┘
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ REPORTS │────▶│ ANALYZE │────▶│ CREATE PRD │
│ reports/*.md │ │ Pick #1 item │ │ prd skill │
└──────────────┘ └──────────────┘ └──────────────┘
│
▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ CREATE PR │◀────│ EXECUTE LOOP │◀────│ CREATE TASKS │
│ gh pr │ │ loop.sh │ │ tasks skill │
└──────────────┘ └──────────────┘ └──────────────┘
│
▼
┌──────────────────┐
│ Per Iteration: │
│ 1. Pick next task│
│ 2. Implement │
│ 3. Quality checks│
│ 4. Commit │
│ 5. Update prd.json│
│ 6. Log progress │
└──────────────────┘
# Clone compound-product
git clone https://github.com/snarktank/compound-product.git /tmp/compound-product
# Install into your project
/tmp/compound-product/install.sh /path/to/your/project
Or tell the agent:
Install compound-product from https://github.com/snarktank/compound-product into this repo
This creates:
scripts/compound/ - The automation scriptscompound.config.json - Configuration for your projectreports/ - Directory for your daily reportsEdit compound.config.json:
{
"reportsDir": "./reports",
"outputDir": "./scripts/compound",
"qualityChecks": ["npm run typecheck", "npm test"],
"maxIterations": 25,
"branchPrefix": "compound/",
"analyzeCommand": ""
}
| Field | Description |
|-------|-------------|
| reportsDir | Where to find report markdown files |
| outputDir | Where prd.json and progress.txt live |
| qualityChecks | Commands to run after each task |
| maxIterations | Max loop iterations before stopping |
| branchPrefix | Prefix for created branches |
| analyzeCommand | Custom analysis script (optional) |
Run directly in your current Claude Code session - no subprocess spawning:
Run compound product on reports/daily-report.md
Or step by step:
1. Analyze reports/daily-report.md and pick the #1 priority
2. Create a PRD for that priority (use prd skill)
3. Convert the PRD to prd.json (use tasks skill)
4. Implement the tasks one by one, running quality checks between each
5. Create a PR when done
Advantages of interactive mode:
For overnight/scheduled runs without supervision:
# Full pipeline
./scripts/compound/auto-compound.sh
# Dry run first
./scripts/compound/auto-compound.sh --dry-run
# Just the loop (if you already have prd.json)
./scripts/compound/loop.sh [max_iterations]
Use automated mode when:
Don't have a formal report? Just dump your observations, notes, transcripts, or questions and I'll structure them:
Structure this into a compound report:
- noticed the search is slow when typing fast
- "can we add filtering by date?" - Charles in standup
- checkout page threw an error for Maria
- why does the sidebar collapse on refresh?
- [paste meeting transcript or slack thread]
I'll transform messy inputs into a structured report with:
For ongoing capture, use templates/daily-capture.md:
## What I noticed today
Search feels slow when typing fast
## Requests I heard
"Can we add date filtering?" - Charles
## Questions that came up
Why does sidebar collapse on refresh?
## Raw notes
[paste anything relevant]
Then: "Turn my daily capture into a compound report"
When transforming raw inputs into a compound report, I:
| Input type | Maps to | |------------|---------| | Friction, bugs, slowness | Issues (with severity) | | Stakeholder quotes | User Feedback (with attribution) | | Numbers, counts, timings | Metrics | | Ideas, "what if" | Opportunities | | Questions, confusion | Issues or Open Questions |
Each item should be:
Prioritized list of what to fix, considering:
The system analyzes markdown reports to pick the #1 actionable item. Reports should contain:
# Daily Report - 2024-01-15
## Key Metrics
- Signups: 45 (down 20% from yesterday)
- Errors: 12 TypeErrors in checkout flow
- User feedback: "Can't find the save button"
## Issues
1. Checkout flow has JavaScript errors
2. Save button is below the fold on mobile
3. Email validation is too strict
## Recommendations
- Fix checkout JavaScript errors (blocking revenue)
- Move save button above fold
- Relax email validation
Constraints the analyzer applies:
When you invoke this skill, I'll run the compound loop directly in this session:
I read the report and identify the #1 actionable priority:
Using the prd skill, I create a Product Requirements Document:
tasks/prd-[feature-name].mdUsing the tasks skill, I convert the PRD to prd.json:
For each task where passes: false:
passes: trueWhen all tasks pass, I create a pull request with:
Load the prd skill. Create a PRD for [feature description]
Load the tasks skill. Convert tasks/prd-feature.md to prd.json
{
"project": "Project Name",
"branchName": "compound/feature-name",
"description": "One-line description",
"tasks": [
{
"id": "T-001",
"title": "Specific action verb + target",
"description": "What to do and why",
"acceptanceCriteria": [
"Run `npm run typecheck` - exits with code 0",
"File `src/auth.ts` contains `redirectUrl: '/dashboard'`",
"agent-browser: open /signup - page loads without errors"
],
"priority": 1,
"passes": false,
"notes": ""
}
]
}
Every criterion must be a boolean check an agent can definitively pass or fail:
| Type | Pattern | Example |
|------|---------|---------|
| Command | Run [cmd] - exits with code 0 | Run npm test - exits with code 0 |
| File check | File [path] contains [string] | File middleware.ts contains clerkMiddleware |
| Browser nav | agent-browser: open [url] - [result] | agent-browser: open /login - renders SignIn |
| Browser action | agent-browser: click [element] - [result] | agent-browser: click Submit - redirects |
| Console check | agent-browser: console shows no errors | |
Bad (vague):
Each iteration:
prd.json to find next task where passes: falseprd.json to mark task as passes: trueprogress.txtEach iteration runs with fresh context. Memory persists via:
## Codebase Patterns
- Use `sql` template for aggregations
- Always use `IF NOT EXISTS` for migrations
- Export types from actions.ts for UI components
---
## 2024-01-15 10:30 - T-001
- What was implemented
- Files changed
- **Learnings for future iterations:**
- Patterns discovered
- Gotchas encountered
---
When running in the loop, the agent should:
compound.config.json[outputDir]/prd.json[outputDir]/progress.txt (check Codebase Patterns first)branchNamepasses: falsefeat: [Task ID] - [Task Title]passes: trueprogress.txtStop condition: When ALL tasks have passes: true, respond with:
🎉 COMPLETE 🎉
No API key needed! The compound system uses Claude Code CLI, which works with your Max subscription:
# Verify Claude Code is installed
claude --version
# If not installed
brew install claude-code
# or see: https://docs.anthropic.com/claude-code
If Claude Code CLI isn't available, the system falls back to API providers:
# Option 1: Anthropic API (direct)
export ANTHROPIC_API_KEY=sk-ant-...
# Option 2: OpenAI API
export OPENAI_API_KEY=sk-...
# Option 3: OpenRouter
export OPENROUTER_API_KEY=sk-or-...
# Option 4: AI Gateway (any OpenAI-compatible endpoint)
export AI_GATEWAY_URL=https://your-gateway.com/v1
export AI_GATEWAY_API_KEY=your-key
To run automatically (e.g., every night):
# Copy the example plist
cp examples/com.compound.plist.example ~/Library/LaunchAgents/com.compound.myproject.plist
# Edit with your project path
nano ~/Library/LaunchAgents/com.compound.myproject.plist
# Load it
launchctl load ~/Library/LaunchAgents/com.compound.myproject.plist
# Check status
launchctl list | grep compound
Important: launchd runs with minimal PATH. Include directories where your tools are installed in the plist.
This tool runs AI agents with elevated permissions:
Check progress.txt for errors. Common issues:
Ensure Claude Code CLI is installed and authenticated:
claude --version
claude auth status
If using API fallback, ensure one provider is configured (see Requirements section).
Ensure the prd and tasks skills are installed:
ls ~/.claude/skills/prd/
ls ~/.claude/skills/tasks/
your-project/
├── compound.config.json # Configuration
├── scripts/
│ └── compound/
│ ├── auto-compound.sh # Full pipeline
│ ├── loop.sh # Execution loop
│ ├── analyze-report.sh # Report analysis
│ ├── prompt.md # Amp prompt template
│ └── CLAUDE.md # Claude prompt template
├── reports/ # Your reports go here
│ └── *.md
└── tasks/ # Generated PRDs
└── prd-*.md
Compound Product is based on the idea that each improvement makes future improvements easier:
prd - Create Product Requirements Documentstasks - Convert PRD to executable prd.jsonralph-loop - Similar autonomous coding patternagentic-review - Multi-agent code review for PRscontent-media
Fetch transcripts from YouTube videos for summarization and analysis.
documentation
This skill should be used when reviewing or editing written drafts to ensure they match Sam's personal style guide. It prioritizes voice preservation and anti-beige detection while catching structural gaps. Triggers on requests to review, edit, or improve written content.
tools
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
development
Web search and content extraction using Brave Search. Use when researching topics, finding documentation, extracting article content, or gathering information from the web. No browser required - works headlessly.