~ / starters / frontend-web

Frontend web starter

React / Next.js / Vue / Svelte UIs

1.8kcontext tax / turn · Featherweight
5/5guardrails
1 · 4MCP servers · skills
ARCHETYPEFort Knox

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-frontend-web.zip -o agentrigs-starter.zip && unzip -n agentrigs-starter.zip && chmod +x .claude/hooks/guard.sh && rm agentrigs-starter.zip
$ npx degit anthropics/skills/skills/frontend-design .claude/skills/frontend-design
$ npx degit vercel-labs/agent-skills/skills/web-design-guidelines .claude/skills/web-design-guidelines
$ npx degit vercel-labs/agent-skills/skills/react-best-practices .claude/skills/vercel-react-best-practices
$ npx degit anthropics/skills/skills/webapp-testing .claude/skills/webapp-testing

Or download agentrigs-frontend-web.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'
# Project
<one paragraph: what the app does, who uses it, the framework + styling stack>

## Commands
- Install: `pnpm install` · Dev: `pnpm dev` · Typecheck: `pnpm typecheck` · Lint: `pnpm lint` · Test: `pnpm test`

## Conventions
- TypeScript strict; no `any` without a comment explaining why.
- Components: one per file, colocate styles and tests; prefer server components / static rendering when the framework allows.
- Accessibility is part of done: labels, focus states, keyboard paths, color contrast.
- Use the design tokens in the theme; no hard-coded colors or magic spacing.
- Fetch library docs with Context7 instead of guessing APIs.

## Checks before done
`pnpm typecheck && pnpm lint && pnpm test` and, for UI changes, describe what you verified in the browser.

## 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: Frontend web

Generated by https://agentrigs.dev/starters/frontend-web from real, well-guarded public rigs:
- https://github.com/hoangsonww/Claude-Code-Agent-Monitor
- https://github.com/dcb/homeassistant-claude-kit
- https://github.com/fotografvecerek-ai/claude-code-audit-gate

## 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 anthropics/skills/skills/frontend-design .claude/skills/frontend-design
npx degit vercel-labs/agent-skills/skills/web-design-guidelines .claude/skills/web-design-guidelines
npx degit vercel-labs/agent-skills/skills/react-best-practices .claude/skills/vercel-react-best-practices
npx degit anthropics/skills/skills/webapp-testing .claude/skills/webapp-testing
```

Optional MCP servers (each adds context tax every turn):

```bash
claude mcp add playwright -- npx -y @playwright/mcp@latest
```

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 anthropics/skills/skills/frontend-design .claude/skills/frontend-design  # skill: frontend-design
npx degit vercel-labs/agent-skills/skills/web-design-guidelines .claude/skills/web-design-guidelines  # skill: web-design-guidelines
npx degit vercel-labs/agent-skills/skills/react-best-practices .claude/skills/vercel-react-best-practices  # skill: vercel-react-best-practices
npx degit anthropics/skills/skills/webapp-testing .claude/skills/webapp-testing  # skill: webapp-testing

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

Context tax

Instructions: 368MCP tool schemas (est.): 1.2kSkill metadata: 245Subagent metadata: 0

Claude Code pays for CLAUDE.md plus the imported AGENTS.md (~368 tok of instructions); Codex reads AGENTS.md alone (~337 tok). Index median: 2.2k tok. How we measure.

Guardrails

✓
Blocks destructive commands 9 deny/ask rule(s) e.g. Bash(rm -rf:*)
✓
Protects secrets Denies reads like Read(./.env)
✓
Pre-tool screening hook 1 PreToolUse hook(s)
✓
No YOLO mode Permission prompts stay on
✓
Sandbox or ask-first rules 4 ask rule(s), e.g. Bash(git push:*)

Files

# Project
<one paragraph: what the app does, who uses it, the framework + styling stack>

## Commands
- Install: `pnpm install` · Dev: `pnpm dev` · Typecheck: `pnpm typecheck` · Lint: `pnpm lint` · Test: `pnpm test`

## Conventions
- TypeScript strict; no `any` without a comment explaining why.
- Components: one per file, colocate styles and tests; prefer server components / static rendering when the framework allows.
- Accessibility is part of done: labels, focus states, keyboard paths, color contrast.
- Use the design tokens in the theme; no hard-coded colors or magic spacing.
- Fetch library docs with Context7 instead of guessing APIs.

## Checks before done
`pnpm typecheck && pnpm lint && pnpm test` and, for UI changes, describe what you verified in the browser.

## 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: Frontend web

Generated by https://agentrigs.dev/starters/frontend-web from real, well-guarded public rigs:
- https://github.com/hoangsonww/Claude-Code-Agent-Monitor
- https://github.com/dcb/homeassistant-claude-kit
- https://github.com/fotografvecerek-ai/claude-code-audit-gate

## 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 anthropics/skills/skills/frontend-design .claude/skills/frontend-design
npx degit vercel-labs/agent-skills/skills/web-design-guidelines .claude/skills/web-design-guidelines
npx degit vercel-labs/agent-skills/skills/react-best-practices .claude/skills/vercel-react-best-practices
npx degit anthropics/skills/skills/webapp-testing .claude/skills/webapp-testing
```

Optional MCP servers (each adds context tax every turn):

```bash
claude mcp add playwright -- npx -y @playwright/mcp@latest
```

Codex / Cursor / other harnesses read AGENTS.md directly; Claude Code reads CLAUDE.md, which imports AGENTS.md.

Recommended skills

frontend-design used in 185 rigs · from anthropics/skills

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

web-design-guidelines used in 55 rigs · from vercel-labs/agent-skills

Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".

vercel-react-best-practices used in 50 rigs · from vercel-labs/agent-skills

React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patter

webapp-testing used in 46 rigs · from anthropics/skills

Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser l

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):

Customised it? Paste your files into the Rig Doctor to re-check the tax and guardrails.

Other starters

copied ✓