~ / rigs / jordimarsal / harness-standard

jordimarsal/harness-standard

A standardized multi-agent harness for Opencode and Claude Code. Installs into any project with a single command.

↗ GitHub ★ 0 MIT updated today personal setup Claude CodeCodex
share on X
ARCHETYPE
Pragmatist
A balanced, no-drama setup: some rules, some tools, nothing extreme.
CONTEXT TAX · EVERY TURN
~2.2k tokens
Moderate · median rig: 2.3k · breakdown
GUARDRAILS
1/5
No YOLO mode · details

Copy this rig

# review before running: this installs third-party code
$ npx degit jordimarsal/harness-standard/templates/.claude ./rig-harness-standard  # 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/implementer.md https://raw.githubusercontent.com/jordimarsal/harness-standard/main/templates/.claude/agents/implementer.md
$ curl -fsSL --create-dirs -o .claude/agents/leader.md https://raw.githubusercontent.com/jordimarsal/harness-standard/main/templates/.claude/agents/leader.md
$ curl -fsSL --create-dirs -o .claude/agents/reviewer.md https://raw.githubusercontent.com/jordimarsal/harness-standard/main/templates/.claude/agents/reviewer.md
$ curl -fsSL --create-dirs -o .claude/agents/spec-author.md https://raw.githubusercontent.com/jordimarsal/harness-standard/main/templates/.claude/agents/spec-author.md

This rig commits no guardrails. Here is the community baseline instead — the deny/ask rules most often found across all 7,204 rigs:

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(**/.env)",
      "Read(~/.ssh/**)",
      "Bash(rm -rf *)",
      "Read(**/*.pem)",
      "Bash(rm -rf /)",
      "Bash(git push --force:*)",
      "Bash(sudo *)",
      "Read(.env)",
      "Bash(rm -rf /*)",
      "Read(./.env.*)",
      "Read(~/.aws/**)",
      "Bash(git push --force*)",
      "Bash(rm -rf:*)",
      "Read(**/*.key)",
      "Read(**/.env.*)",
      "Bash(sudo:*)",
      "Bash(git reset --hard*)",
      "Bash(git reset --hard:*)",
      "Read(.env.*)"
    ],
    "ask": [
      "Bash(git push:*)",
      "Bash(git push *)",
      "Bash(git commit:*)",
      "Bash(rm *)",
      "Bash(rm:*)",
      "Bash(git rebase *)",
      "Bash(wget *)",
      "Bash(npm publish:*)",
      "Bash(git commit *)",
      "Bash(gh pr merge *)"
    ]
  }
}

Subagents (4)

implementerWorker. Implements exactly ONE feature from its approved spec. Writes code, writes tests, self-verifies.
leaderOrchestrator. Decomposes work and dispatches subagents. NEVER writes application code directly.
reviewerAutomated reviewer. Approves or rejects work against docs/, harness/specs/<name>/, and harness/CHECKPOINTS.md.
spec-authorWrites Kiro-style specs (requirements/design/tasks) for a pending feature. NEVER writes application code or tests.

Hooks (2)

eventmatcherruns
PostToolUseEdit|Write{{TEST_CMD}} 2>&1 | tail -3
Stop*LOG=$(mktemp "${TMPDIR:-/tmp}/harness_init.XXXXXX") && harness/init.sh > "$LOG" 2>&1 && echo "[harness] init.sh OK ($LOG)" || (echo "[harness] init.sh FAILED - check $LOG before closing" && tail -20 "$LOG")

Permissions

deny (0)
—
ask (0)
—
allow (3)
Bash(harness/init.sh)
Bash({{TEST_CMD}})
Bash({{BUILD_CMD}})

Similar rigs

copied ✓