Solo founder / full-stack starter
Ship a whole product alone
Install
Run in your project root. Existing files are never overwritten (unzip -n / [ -e … ] skip them). Review AGENTS.md and fill in the <placeholders>.
$ curl -fsSL https://agentrigs.dev/starters/agentrigs-solo-founder.zip -o agentrigs-starter.zip && unzip -n agentrigs-starter.zip && chmod +x .claude/hooks/guard.sh && rm agentrigs-starter.zip $ npx degit obra/superpowers/skills/brainstorming .claude/skills/brainstorming $ npx degit obra/superpowers/skills/writing-plans .claude/skills/writing-plans $ npx degit obra/superpowers/skills/test-driven-development .claude/skills/test-driven-development $ npx degit anthropics/skills/skills/frontend-design .claude/skills/frontend-design
Or download agentrigs-solo-founder.zip (6 files). Skills are fetched from their source repos with npx degit.
mkdir -p .claude/hooks
[ -e AGENTS.md ] && echo "skip AGENTS.md (exists)" || cat > AGENTS.md <<'AGENTRIGS_EOF'
# Product
<one paragraph: who it's for, the core job it does, the paid plan>
## Commands
- Dev: `pnpm dev` · Test: `pnpm test` · Typecheck: `pnpm typecheck` · Deploy: via CI only (never deploy from the agent)
## How we work
- Plan first for anything bigger than one file: write a short plan, wait for "go".
- Ship the smallest end-to-end slice (UI → API → DB) behind a flag, then iterate.
- Boring stack over clever stack; no new services without asking (cost matters).
- Payments, auth and data deletion changes always get a test and a human review.
- Keep a `docs/decisions.md` log: one line per decision with the date and why.
## Checks before done
`pnpm typecheck && pnpm test`; list anything the user must do manually (env vars, dashboard settings).
## Workflow
1. Restate the task in one line and list the files you expect to touch.
2. Make the smallest change that works; keep diffs reviewable.
3. Run the checks below before saying you're done, and show the output.
4. If something is ambiguous, ask one precise question instead of guessing.
## Safety
- Never read or print secrets (.env, keys, ~/.ssh). Ask for values instead.
- No destructive commands (rm -rf, force-push, reset --hard) without explicit approval; the guard hook blocks them anyway.
- Don't add dependencies, services or paid APIs without asking.
AGENTRIGS_EOF
[ -e CLAUDE.md ] && echo "skip CLAUDE.md (exists)" || cat > CLAUDE.md <<'AGENTRIGS_EOF'
@AGENTS.md
# Claude Code notes
- Use plan mode for multi-file changes. Prefer the installed skills over ad-hoc procedures.
AGENTRIGS_EOF
[ -e .claude/settings.json ] && echo "skip .claude/settings.json (exists)" || cat > .claude/settings.json <<'AGENTRIGS_EOF'
{
"permissions": {
"deny": [
"Bash(rm -rf:*)",
"Bash(rm -fr:*)",
"Bash(sudo:*)",
"Bash(git push --force:*)",
"Bash(git push -f:*)",
"Bash(git reset --hard:*)",
"Bash(git clean -fd:*)",
"Read(./.env)",
"Read(./.env.*)",
"Read(./**/.env)",
"Read(./secrets/**)",
"Read(~/.ssh/**)",
"Read(~/.aws/**)",
"Read(./**/*.pem)"
],
"ask": [
"Bash(git push:*)",
"Bash(npm publish:*)",
"Bash(docker:*)",
"Bash(curl:*)"
],
"defaultMode": "default"
},
"hooks": {
"PreToolUse": [
{
"matcher": "Bash|Read|Edit|Write",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/guard.sh"
}
]
}
]
}
}
AGENTRIGS_EOF
[ -e .claude/hooks/guard.sh ] && echo "skip .claude/hooks/guard.sh (exists)" || cat > .claude/hooks/guard.sh <<'AGENTRIGS_EOF'
#!/usr/bin/env bash
# .claude/hooks/guard.sh: PreToolUse guard. Exit code 2 blocks the tool call and shows the reason to the model.
# Requires jq. Make executable: chmod +x .claude/hooks/guard.sh
input=$(cat)
tool=$(printf '%s' "$input" | jq -r '.tool_name // empty')
cmd=$(printf '%s' "$input" | jq -r '.tool_input.command // empty')
path=$(printf '%s' "$input" | jq -r '.tool_input.file_path // .tool_input.path // empty')
if [ "$tool" = "Bash" ]; then
if printf '%s' "$cmd" | grep -Eq '(^|[;&| ])(sudo|mkfs|dd if=)|rm -[a-zA-Z]*r[a-zA-Z]*f|rm -[a-zA-Z]*f[a-zA-Z]*r|git push .*(--force|-f( |$))|git reset --hard|git clean -[a-z]*f|curl[^|]*\|[[:space:]]*(ba)?sh|chmod 777'; then
echo "Blocked by guard.sh: destructive command ($cmd). Ask the user to run it manually." >&2; exit 2
fi
fi
if printf '%s %s' "$path" "$cmd" | grep -Eq '(^|/|[[:space:]])\.env($|\.|[[:space:]])|id_rsa|\.pem($|[[:space:]])|\.ssh/|\.aws/credentials'; then
echo "Blocked by guard.sh: secrets file ($path$cmd)." >&2; exit 2
fi
exit 0
AGENTRIGS_EOF
[ -e .mcp.json ] && echo "skip .mcp.json (exists)" || cat > .mcp.json <<'AGENTRIGS_EOF'
{
"mcpServers": {
"context7": {
"type": "http",
"url": "https://mcp.context7.com/mcp"
}
}
}
AGENTRIGS_EOF
[ -e AGENTRIGS-STARTER.md ] && echo "skip AGENTRIGS-STARTER.md (exists)" || cat > AGENTRIGS-STARTER.md <<'AGENTRIGS_EOF'
# AgentRigs starter: Solo founder / full-stack
Generated by https://agentrigs.dev/starters/solo-founder from real, well-guarded public rigs:
- https://github.com/mnzralee/claude-multi-agent-architecture
- https://github.com/stranma/claude-code-python-template
- https://github.com/babushkai/claude-code-config
## Install
1. Unzip into your repo root (`unzip -n` won't overwrite existing files).
2. `chmod +x .claude/hooks/guard.sh` (needs `jq`).
3. Fill in the <placeholders> in AGENTS.md.
4. Install the recommended skills (third-party code, so review first):
```bash
npx degit obra/superpowers/skills/brainstorming .claude/skills/brainstorming
npx degit obra/superpowers/skills/writing-plans .claude/skills/writing-plans
npx degit obra/superpowers/skills/test-driven-development .claude/skills/test-driven-development
npx degit anthropics/skills/skills/frontend-design .claude/skills/frontend-design
```
Optional MCP servers (each adds context tax every turn):
```bash
claude mcp add playwright -- npx -y @playwright/mcp@latest
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
```
Codex / Cursor / other harnesses read AGENTS.md directly; Claude Code reads CLAUDE.md, which imports AGENTS.md.
AGENTRIGS_EOF
chmod +x .claude/hooks/guard.sh
npx degit obra/superpowers/skills/brainstorming .claude/skills/brainstorming # skill: brainstorming
npx degit obra/superpowers/skills/writing-plans .claude/skills/writing-plans # skill: writing-plans
npx degit obra/superpowers/skills/test-driven-development .claude/skills/test-driven-development # skill: test-driven-development
npx degit anthropics/skills/skills/frontend-design .claude/skills/frontend-design # skill: frontend-design Optional MCP servers (add only if you use them; each adds tool schemas to every turn):
$ claude mcp add playwright -- npx -y @playwright/mcp@latest $ claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
Context tax
Claude Code pays for CLAUDE.md plus the imported AGENTS.md (~363 tok of instructions); Codex reads AGENTS.md alone (~332 tok). Index median: 2.2k tok. How we measure.
Guardrails
Files
# Product <one paragraph: who it's for, the core job it does, the paid plan> ## Commands - Dev: `pnpm dev` · Test: `pnpm test` · Typecheck: `pnpm typecheck` · Deploy: via CI only (never deploy from the agent) ## How we work - Plan first for anything bigger than one file: write a short plan, wait for "go". - Ship the smallest end-to-end slice (UI → API → DB) behind a flag, then iterate. - Boring stack over clever stack; no new services without asking (cost matters). - Payments, auth and data deletion changes always get a test and a human review. - Keep a `docs/decisions.md` log: one line per decision with the date and why. ## Checks before done `pnpm typecheck && pnpm test`; list anything the user must do manually (env vars, dashboard settings). ## Workflow 1. Restate the task in one line and list the files you expect to touch. 2. Make the smallest change that works; keep diffs reviewable. 3. Run the checks below before saying you're done, and show the output. 4. If something is ambiguous, ask one precise question instead of guessing. ## Safety - Never read or print secrets (.env, keys, ~/.ssh). Ask for values instead. - No destructive commands (rm -rf, force-push, reset --hard) without explicit approval; the guard hook blocks them anyway. - Don't add dependencies, services or paid APIs without asking.
@AGENTS.md # Claude Code notes - Use plan mode for multi-file changes. Prefer the installed skills over ad-hoc procedures.
{
"permissions": {
"deny": [
"Bash(rm -rf:*)",
"Bash(rm -fr:*)",
"Bash(sudo:*)",
"Bash(git push --force:*)",
"Bash(git push -f:*)",
"Bash(git reset --hard:*)",
"Bash(git clean -fd:*)",
"Read(./.env)",
"Read(./.env.*)",
"Read(./**/.env)",
"Read(./secrets/**)",
"Read(~/.ssh/**)",
"Read(~/.aws/**)",
"Read(./**/*.pem)"
],
"ask": [
"Bash(git push:*)",
"Bash(npm publish:*)",
"Bash(docker:*)",
"Bash(curl:*)"
],
"defaultMode": "default"
},
"hooks": {
"PreToolUse": [
{
"matcher": "Bash|Read|Edit|Write",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/guard.sh"
}
]
}
]
}
}
#!/usr/bin/env bash
# .claude/hooks/guard.sh: PreToolUse guard. Exit code 2 blocks the tool call and shows the reason to the model.
# Requires jq. Make executable: chmod +x .claude/hooks/guard.sh
input=$(cat)
tool=$(printf '%s' "$input" | jq -r '.tool_name // empty')
cmd=$(printf '%s' "$input" | jq -r '.tool_input.command // empty')
path=$(printf '%s' "$input" | jq -r '.tool_input.file_path // .tool_input.path // empty')
if [ "$tool" = "Bash" ]; then
if printf '%s' "$cmd" | grep -Eq '(^|[;&| ])(sudo|mkfs|dd if=)|rm -[a-zA-Z]*r[a-zA-Z]*f|rm -[a-zA-Z]*f[a-zA-Z]*r|git push .*(--force|-f( |$))|git reset --hard|git clean -[a-z]*f|curl[^|]*\|[[:space:]]*(ba)?sh|chmod 777'; then
echo "Blocked by guard.sh: destructive command ($cmd). Ask the user to run it manually." >&2; exit 2
fi
fi
if printf '%s %s' "$path" "$cmd" | grep -Eq '(^|/|[[:space:]])\.env($|\.|[[:space:]])|id_rsa|\.pem($|[[:space:]])|\.ssh/|\.aws/credentials'; then
echo "Blocked by guard.sh: secrets file ($path$cmd)." >&2; exit 2
fi
exit 0
{
"mcpServers": {
"context7": {
"type": "http",
"url": "https://mcp.context7.com/mcp"
}
}
}
# AgentRigs starter: Solo founder / full-stack Generated by https://agentrigs.dev/starters/solo-founder from real, well-guarded public rigs: - https://github.com/mnzralee/claude-multi-agent-architecture - https://github.com/stranma/claude-code-python-template - https://github.com/babushkai/claude-code-config ## Install 1. Unzip into your repo root (`unzip -n` won't overwrite existing files). 2. `chmod +x .claude/hooks/guard.sh` (needs `jq`). 3. Fill in the <placeholders> in AGENTS.md. 4. Install the recommended skills (third-party code, so review first): ```bash npx degit obra/superpowers/skills/brainstorming .claude/skills/brainstorming npx degit obra/superpowers/skills/writing-plans .claude/skills/writing-plans npx degit obra/superpowers/skills/test-driven-development .claude/skills/test-driven-development npx degit anthropics/skills/skills/frontend-design .claude/skills/frontend-design ``` Optional MCP servers (each adds context tax every turn): ```bash claude mcp add playwright -- npx -y @playwright/mcp@latest claude mcp add --transport http sentry https://mcp.sentry.dev/mcp ``` Codex / Cursor / other harnesses read AGENTS.md directly; Claude Code reads CLAUDE.md, which imports AGENTS.md.
Recommended skills
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
Use when you have a spec or requirements for a multi-step task, before touching code
Use when implementing any feature or bugfix, before writing implementation code
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples inclu
Built from these rigs
The rules, permissions and hook pattern were distilled from well-guarded public rigs that match this use case (guardrail score ≥ 3, lean context):