~ / rigs / PontusNyberg / Graybark-workflow

PontusNyberg/Graybark-workflow

Structured AI development workflow template for Claude Code. Multi-agent orchestration with specialist coding agents, parallel review, quality gates, and compound learning.

↗ GitHub ★ 4 no license updated 22d ago project Claude Code
share on X
ARCHETYPE
Orchestrator
A bench of specialised subagents. The main agent mostly delegates.
CONTEXT TAX · EVERY TURN
~4.5k tokens
Moderate · median rig: 2.3k · breakdown
GUARDRAILS
3/5
Blocks destructive commands · Pre-tool screening hook · No YOLO mode · details

Copy this rig

# review before running: this installs third-party code
$ npx degit PontusNyberg/Graybark-workflow/.claude ./rig-graybark-workflow  # inspect, then merge into .claude/

MCP servers are added to Claude Code at local scope; env vars are shown as YOUR_… placeholders — we never store values. Files are fetched with degit into a separate folder so you can review before merging.

$ curl -fsSL --create-dirs -o .claude/agents/TEAM.md https://raw.githubusercontent.com/PontusNyberg/Graybark-workflow/master/.claude/agents/TEAM.md
$ curl -fsSL --create-dirs -o .claude/agents/backend-developer.md https://raw.githubusercontent.com/PontusNyberg/Graybark-workflow/master/.claude/agents/backend-developer.md
$ curl -fsSL --create-dirs -o .claude/agents/frontend-developer.md https://raw.githubusercontent.com/PontusNyberg/Graybark-workflow/master/.claude/agents/frontend-developer.md
$ curl -fsSL --create-dirs -o .claude/agents/product-designer.md https://raw.githubusercontent.com/PontusNyberg/Graybark-workflow/master/.claude/agents/product-designer.md
$ curl -fsSL --create-dirs -o .claude/agents/product-skeptic.md https://raw.githubusercontent.com/PontusNyberg/Graybark-workflow/master/.claude/agents/product-skeptic.md
$ curl -fsSL --create-dirs -o .claude/agents/tech-lead.md https://raw.githubusercontent.com/PontusNyberg/Graybark-workflow/master/.claude/agents/tech-lead.md

Merge into .claude/settings.json (project) or ~/.claude/settings.json (user). Hook commands reference scripts in the source repo — copy those too.

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "command -v jq >/dev/null 2>&1 || { echo 'This Graybark hook requires jq — install jq or remove the hook from .claude/settings.json'; exit 1; }; CMD=$(cat | jq -r '.tool_input.command // empty') && bash .claude/hooks/safety-check.sh \"$CMD\" \""
          },
          {
            "type": "command",
            "command": "command -v jq >/dev/null 2>&1 || { echo 'This Graybark hook requires jq — install jq or remove the hook from .claude/settings.json'; exit 1; }; CMD=$(cat | jq -r '.tool_input.command // empty') && if echo \"$CMD\" | grep -qE 'git add -A|git a"
          },
          {
            "type": "command",
            "command": "command -v jq >/dev/null 2>&1 || { echo 'This Graybark hook requires jq — install jq or remove the hook from .claude/settings.json'; exit 1; }; CMD=$(cat | jq -r '.tool_input.command // empty') && if echo \"$CMD\" | grep -q 'git commit'; then"
          }
        ]
      },
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "command -v jq >/dev/null 2>&1 || { echo 'This Graybark hook requires jq — install jq or remove the hook from .claude/settings.json'; exit 1; }; FILE=$(cat | jq -r '.tool_input.file_path // empty') && case \"$FILE\" in *.md|*settings.json|*set"
          }
        ]
      }
    ]
  }
}

Subagents (6)

TEAM—
TODO Backend specialist name
model: opus
Backend developer / API and database specialist
TODO Frontend specialist name
model: sonnet
Frontend developer / UI and component specialist
TODO UX-advisor name
model: haiku
Product designer / UX advisor (does not code)
TODO Scope-skeptic name
model: haiku
Product skeptic / scope guardian (advisor, does not code)
TODO Tech-lead name
model: sonnet
Tech Lead / system architect

Hooks (5)

eventmatcherruns
SessionStart*printf '{"hookSpecificOutput":{"hookEventName":"SessionStart","additionalContext":"STOP — WORKFLOW REQUIRED. Before writing any code you MUST: (1) Read .ai/rules/always.md (2) Read .ai/workflows/implement-issue.md and follow steps 1-4 inclu
PreToolUseBashcommand -v jq >/dev/null 2>&1 || { echo 'This Graybark hook requires jq — install jq or remove the hook from .claude/settings.json'; exit 1; }; CMD=$(cat | jq -r '.tool_input.command // empty') && bash .claude/hooks/safety-check.sh "$CMD" "
PreToolUseEdit|Writecommand -v jq >/dev/null 2>&1 || { echo 'This Graybark hook requires jq — install jq or remove the hook from .claude/settings.json'; exit 1; }; FILE=$(cat | jq -r '.tool_input.file_path // empty') && case "$FILE" in *.md|*settings.json|*set
PreToolUseBashcommand -v jq >/dev/null 2>&1 || { echo 'This Graybark hook requires jq — install jq or remove the hook from .claude/settings.json'; exit 1; }; CMD=$(cat | jq -r '.tool_input.command // empty') && if echo "$CMD" | grep -qE 'git add -A|git a
PreToolUseBashcommand -v jq >/dev/null 2>&1 || { echo 'This Graybark hook requires jq — install jq or remove the hook from .claude/settings.json'; exit 1; }; CMD=$(cat | jq -r '.tool_input.command // empty') && if echo "$CMD" | grep -q 'git commit'; then

Slash commands (2)

/fresh-review/ship-and-watch

Similar rigs

copied ✓