~ / rigs / artyhoo / getff

artyhoo/getff

Compiles your conventions into native toolchain gates (ESLint, clippy) — deterministic, local-first, $0 LLM in CI. Its own AGENTS.md is executable. Docs lie; tests don't.

↗ GitHub ★ 1 NOASSERTION updated 1d ago project Claude CodeCodex Claude plugin
share on X
ARCHETYPE
Fort Knox
Deny lists, pre-tool hooks, sandboxing. Nothing touches prod without a signature.
CONTEXT TAX · EVERY TURN
~14.0k tokens
Heavy · median rig: 2.3k · breakdown
GUARDRAILS
4/5
Blocks destructive commands · Protects secrets · Pre-tool screening hook · No YOLO mode · details

Copy this rig

# review before running: this installs third-party code
$ claude mcp add --transport http context7 https://mcp.context7.com/mcp
$ claude mcp add --transport http deepwiki https://mcp.deepwiki.com/mcp
$ npx degit artyhoo/getff/.claude ./rig-getff  # 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.

$ claude mcp add --transport http context7 https://mcp.context7.com/mcp
$ claude mcp add --transport http deepwiki https://mcp.deepwiki.com/mcp
$ npx degit artyhoo/getff/.agents/skills/adapter-jig-reviewer .claude/skills/adapter-jig-reviewer
$ npx degit artyhoo/getff/.agents/skills/ai-doc .claude/skills/ai-doc
$ npx degit artyhoo/getff/.agents/skills/aif-doctor .claude/skills/aif-doctor
$ npx degit artyhoo/getff/.agents/skills/aif-init .claude/skills/aif-init
$ npx degit artyhoo/getff/.agents/skills/arch .claude/skills/arch
$ npx degit artyhoo/getff/.agents/skills/backward-sweep-auditor .claude/skills/backward-sweep-auditor
$ npx degit artyhoo/getff/.agents/skills/capability-reuse-auditor .claude/skills/capability-reuse-auditor
$ npx degit artyhoo/getff/.agents/skills/claims-conformance-auditor .claude/skills/claims-conformance-auditor
$ npx degit artyhoo/getff/.agents/skills/claude-glm-executor-handoff .claude/skills/claude-glm-executor-handoff
$ npx degit artyhoo/getff/.agents/skills/compliance-verifier .claude/skills/compliance-verifier
$ npx degit artyhoo/getff/.agents/skills/dispatch-input-checker .claude/skills/dispatch-input-checker
$ npx degit artyhoo/getff/.agents/skills/dispatcher .claude/skills/dispatcher
$ npx degit artyhoo/getff/.agents/skills/docplan-auditor .claude/skills/docplan-auditor
$ npx degit artyhoo/getff/.agents/skills/docs-author .claude/skills/docs-author
$ npx degit artyhoo/getff/.agents/skills/docs-form-auditor .claude/skills/docs-form-auditor
$ npx degit artyhoo/getff/.agents/skills/dual-channel-drift-auditor .claude/skills/dual-channel-drift-auditor
$ npx degit artyhoo/getff/.agents/skills/fidelity-auditor .claude/skills/fidelity-auditor
$ npx degit artyhoo/getff/.agents/skills/getff-cold-run-prober .claude/skills/getff-cold-run-prober
$ npx degit artyhoo/getff/.agents/skills/getff .claude/skills/getff
$ npx degit artyhoo/getff/.agents/skills/harvest .claude/skills/harvest
$ npx degit artyhoo/getff/.agents/skills/installing-enforcement .claude/skills/installing-enforcement
$ npx degit artyhoo/getff/.agents/skills/living-docs-auditor .claude/skills/living-docs-auditor
$ npx degit artyhoo/getff/.agents/skills/manual-rule-liveness-prober .claude/skills/manual-rule-liveness-prober
$ npx degit artyhoo/getff/.agents/skills/memory-codification-auditor .claude/skills/memory-codification-auditor
$ npx degit artyhoo/getff/.agents/skills/night-mode .claude/skills/night-mode
$ npx degit artyhoo/getff/.agents/skills/orchestrator-worker-discipline .claude/skills/orchestrator-worker-discipline
$ npx degit artyhoo/getff/.agents/skills/orchestrator .claude/skills/orchestrator
$ npx degit artyhoo/getff/.agents/skills/pipeline .claude/skills/pipeline
$ npx degit artyhoo/getff/.agents/skills/review-sidecar .claude/skills/review-sidecar
$ npx degit artyhoo/getff/.agents/skills/reviewer-discipline .claude/skills/reviewer-discipline
$ npx degit artyhoo/getff/.agents/skills/reviewer .claude/skills/reviewer
$ npx degit artyhoo/getff/.agents/skills/rule-research .claude/skills/rule-research
$ npx degit artyhoo/getff/.agents/skills/rule-researcher .claude/skills/rule-researcher
$ npx degit artyhoo/getff/.agents/skills/rule-test-author .claude/skills/rule-test-author
$ npx degit artyhoo/getff/.agents/skills/rule-tests .claude/skills/rule-tests
$ npx degit artyhoo/getff/.agents/skills/self-reflection .claude/skills/self-reflection
$ npx degit artyhoo/getff/.agents/skills/shipped-agent-liveness-prober .claude/skills/shipped-agent-liveness-prober
$ npx degit artyhoo/getff/.agents/skills/story .claude/skills/story
$ npx degit artyhoo/getff/.agents/skills/template-audit .claude/skills/template-audit
$ npx degit artyhoo/getff/.agents/skills/tool-bootstrapping .claude/skills/tool-bootstrapping
$ curl -fsSL --create-dirs -o .claude/agents/adapter-jig-reviewer.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/adapter-jig-reviewer.md
$ curl -fsSL --create-dirs -o .claude/agents/aif-init.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/aif-init.md
$ curl -fsSL --create-dirs -o .claude/agents/backward-sweep-auditor.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/backward-sweep-auditor.md
$ curl -fsSL --create-dirs -o .claude/agents/capability-reuse-auditor.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/capability-reuse-auditor.md
$ curl -fsSL --create-dirs -o .claude/agents/claims-conformance-auditor.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/claims-conformance-auditor.md
$ curl -fsSL --create-dirs -o .claude/agents/compliance-verifier.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/compliance-verifier.md
$ curl -fsSL --create-dirs -o .claude/agents/dispatch-input-checker.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/dispatch-input-checker.md
$ curl -fsSL --create-dirs -o .claude/agents/docplan-auditor.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/docplan-auditor.md
$ curl -fsSL --create-dirs -o .claude/agents/docs-form-auditor.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/docs-form-auditor.md
$ curl -fsSL --create-dirs -o .claude/agents/dual-channel-drift-auditor.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/dual-channel-drift-auditor.md
$ curl -fsSL --create-dirs -o .claude/agents/fidelity-auditor.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/fidelity-auditor.md
$ curl -fsSL --create-dirs -o .claude/agents/getff-cold-run-prober.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/getff-cold-run-prober.md
$ curl -fsSL --create-dirs -o .claude/agents/living-docs-auditor.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/living-docs-auditor.md
$ curl -fsSL --create-dirs -o .claude/agents/manual-rule-liveness-prober.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/manual-rule-liveness-prober.md
$ curl -fsSL --create-dirs -o .claude/agents/memory-codification-auditor.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/memory-codification-auditor.md
$ curl -fsSL --create-dirs -o .claude/agents/orchestrator-worker-discipline.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/orchestrator-worker-discipline.md
$ curl -fsSL --create-dirs -o .claude/agents/review-sidecar.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/review-sidecar.md
$ curl -fsSL --create-dirs -o .claude/agents/reviewer-discipline.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/reviewer-discipline.md
$ curl -fsSL --create-dirs -o .claude/agents/rule-researcher.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/rule-researcher.md
$ curl -fsSL --create-dirs -o .claude/agents/rule-test-author.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/rule-test-author.md
$ curl -fsSL --create-dirs -o .claude/agents/shipped-agent-liveness-prober.md https://raw.githubusercontent.com/artyhoo/getff/staging/agents/shipped-agent-liveness-prober.md

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

{
  "permissions": {
    "deny": [
      "Bash(git push --force*)",
      "Bash(git push -f*)",
      "Bash(git push --no-verify*)",
      "Bash(git push --mirror*)",
      "Bash(git push origin main*)",
      "Bash(git push origin master*)",
      "Bash(git push * main*)",
      "Bash(git push * master*)",
      "Bash(git commit --no-verify*)",
      "Bash(git reset --hard*)",
      "Bash(git checkout -- *)",
      "Bash(git branch -D *)",
      "Bash(git filter-branch*)",
      "Bash(git update-ref*)",
      "Bash(rm -rf *)",
      "Bash(shred *)",
      "Bash(dd if=*)",
      "Bash(mkfs*)",
      "Bash(sudo *)",
      "Bash(curl * | bash*)",
      "Bash(curl * | sh*)",
      "Bash(wget * | bash*)",
      "Bash(wget * | sh*)",
      "Bash(nc *)",
      "Bash(netcat *)",
      "Bash(socat *)",
      "Bash(gh secret set*)",
      "Bash(gh secret delete*)",
      "Bash(gh auth logout*)",
      "Read(~/.ssh/**)",
      "Read(~/.aws/**)",
      "Read(~/.gnupg/**)",
      "Read(~/.config/gh/**)",
      "Read(.env)",
      "Read(.env.*)",
      "Edit(~/.zshrc)",
      "Write(~/.zshrc)",
      "Edit(~/.bashrc)",
      "Write(~/.bashrc)",
      "Edit(~/.bash_profile)",
      "Write(~/.bash_profile)",
      "Edit(.git/hooks/**)",
      "Write(.git/hooks/**)",
      "Edit(.husky/**)",
      "Write(.husky/**)",
      "Edit(.claude/settings.json)",
      "Write(.claude/settings.json)"
    ]
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "AskUserQuestion",
        "hooks": [
          {
            "type": "command",
            "command": "bash \"$CLAUDE_PROJECT_DIR/.claude/hooks/a<redacted>.sh\""
          }
        ]
      },
      {
        "matcher": "Agent|Task",
        "hooks": [
          {
            "type": "command",
            "command": "bash \"$CLAUDE_PROJECT_DIR/.claude/hooks/inject-subagent-context.sh\""
          }
        ]
      },
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "bash \"$CLAUDE_PROJECT_DIR/.claude/hooks/inject-matching-rule.sh\""
          }
        ]
      },
      {
        "matcher": "Edit|Write|MultiEdit",
        "hooks": [
          {
            "type": "command",
            "command": "bash \"$CLAUDE_PROJECT_DIR/.claude/hooks/seal-primary-checkout.sh\""
          }
        ]
      }
    ]
  }
}

MCP servers (2)

serversourceest. tokens
Context7 remote · remote 1.2k
DeepWiki remote · remote 900

Skills (41)

Subagents (21)

adapter-jig-reviewerCold adversarial multi-dimension review of an ecosystem-adapter wiring diff. Given ONLY the diff + the eight §3 conformance groups (parsing / trust / delivery / lock / firing / CI / type-shape / tripw
aif-initGenerate a draft .ai-factory/DESCRIPTION.md and .ai-factory/ARCHITECTURE.md for a consumer repo. Reads package.json(s) and directory layout, detects the tech stack, and writes a filled draft with a DR
backward-sweep-auditorCold backward-sweep for a §1.7 Backward-check. Given ONLY a change's class/logic (never the PR diff or narrative), enumerates every parallel surface in the codebase where that class applies and report
capability-reuse-auditorAudits a proposed or just-authored new capability (a SKILL.md, an agent, or a packages/core module) for overlap with an existing own-stack or upstream capability, and checks that its Prior-art trailer
claims-conformance-auditorCold conformance audit of docs-site claims against shipped reality. Given ONLY the doc surface(s) to audit (never the authoring narrative), enumerates every factual claim the docs make about the repo/
compliance-verifierReviews PR description §1.7 Forward-check and Backward-check sections for substantive evidence — file:line citations, sweep completeness, exemption quality. Reports; does not fix.
dispatch-input-checkerCold dispatch-input reality-check at the aif-dispatch station boundary. Given ONLY the dispatch input (kickoff/scoped section) and the runtime-state probes it names — NEVER the chat, the implementatio
docplan-auditorCold semantic-grouping judgment for a DocPlan. Given ONLY the DocPlan (its sections + excluded[]) and the ConventionNodes it references — NEVER the diff, the PR body, or the rendered AGENTS.md region
docs-form-auditorCold form audit of getff.ai docs pages against the reader-comfort card (C1-C13). Given ONLY page paths, their kinds, and the card path (never the writer's dialogue), enumerates the page population, ru
dual-channel-drift-auditorCold pairwise audit of a declared @dual-pair anchor group. Given ONLY an anchor (never the PR diff or narrative), enumerates the group's members, measures their verbatim overlap and their divergence,
fidelity-auditorCold WHAT-conformance acceptance audit at a stage-PR boundary. Given ONLY the kickoff/spec (or a scoped section of it) and the 3-dot diff — NEVER the chat, the design dialogue, or the implementation l
getff-cold-run-proberOne-beat cold-run acceptance probe for the getff-any-stack-trace umbrella (spec §9.3). Hands a fresh subagent ONLY a consumer project path (no kickoff, no framework-source access, no second human prom
living-docs-auditor>-
manual-rule-liveness-proberProbes a manifest manual rule for liveness via with/without-rule fresh-subagent dispatch, capturing a RED→GREEN delta (baseline fails → rule-loaded complies). Reporting-only; never invoked from CI.
memory-codification-auditorAudits user-scope agent memory for durable conventions that live only in memory and were never codified into the repo. Flags stage-0 entries; reports candidates with a codify-or-leave verdict. Reports
orchestrator-worker-disciplineDiscipline for aif-dispatched workers — REPORT schema (incl. advisor-consult sub-form on BLOCKER), park-vs-proceed, stage-gate check. Read when you are a worker dispatched via runtime-bridge/dispatch.
review-sidecarReviews diff as an external reviewer with no memory of how the code was written. Catches tautological tests, mock-only assertions, missing edge cases, React/Next anti-patterns. Reports; does not fix.
reviewer-disciplineReview-session protocol for reviewer/orchestrator role separation — when a finding needs a project-strategy call, surface it as DECISION-NEEDED with both options described, never pick a side. Reports;
rule-researcher>-
rule-test-author>-
shipped-agent-liveness-proberProbes each shipped sub-agent for behavioural liveness via with/without-tools fresh-subagent dispatch, capturing a RED→GREEN delta (tool-less fabricates → tool-using cites real evidence). Status DORMA

Hooks (23)

eventmatcherruns
UserPromptSubmit*bash "$CLAUDE_PROJECT_DIR/.claude/hooks/deps-hash-check.sh"
PreToolUseAskUserQuestionbash "$CLAUDE_PROJECT_DIR/.claude/hooks/a<redacted>.sh"
PreToolUseAgent|Taskbash "$CLAUDE_PROJECT_DIR/.claude/hooks/inject-subagent-context.sh"
PreToolUseBashbash "$CLAUDE_PROJECT_DIR/.claude/hooks/inject-matching-rule.sh"
PreToolUseEdit|Write|MultiEditbash "$CLAUDE_PROJECT_DIR/.claude/hooks/seal-primary-checkout.sh"
PostToolUseEdit|Write|MultiEditbash "$CLAUDE_PROJECT_DIR/.claude/hooks/validate-prompt.sh"
PostToolUseEdit|Write|MultiEditbash "$CLAUDE_PROJECT_DIR/.claude/hooks/check-doc-authority.sh"
PostToolUseEdit|Write|MultiEdit|Readbash "$CLAUDE_PROJECT_DIR/.claude/hooks/inject-matching-rule.sh"
PostToolUseEdit|Write|MultiEditbash "$CLAUDE_PROJECT_DIR/.claude/hooks/check-kickoff-traps.sh"
PostToolUseEdit|Write|MultiEditbash "$CLAUDE_PROJECT_DIR/.claude/hooks/check-hook-marker.sh"
PostToolUseWrite|Edit|MultiEditbash "$CLAUDE_PROJECT_DIR/.claude/hooks/runtime-bridge-dispatch.sh"
PostToolUseEdit|Write|MultiEditbash "$CLAUDE_PROJECT_DIR/.claude/hooks/check-worker-dispatch-channel.sh"
PostToolUseWritebash "$CLAUDE_PROJECT_DIR/.claude/hooks/inject-memory-codification.sh"
PostToolUseBashbash "$CLAUDE_PROJECT_DIR/.claude/hooks/close-aif-task-on-merge.sh"
PostToolUseFailureWrite|Edit|MultiEditbash "$CLAUDE_PROJECT_DIR/.claude/hooks/runtime-bridge-dispatch.sh"
Stop*bash "$CLAUDE_PROJECT_DIR/.claude/hooks/end-of-turn-reminder.sh"
SubagentStart*bash "$CLAUDE_PROJECT_DIR/.claude/hooks/inject-subagent-digest.sh"
SubagentStop*bash "$CLAUDE_PROJECT_DIR/.claude/hooks/warn-subagent-report.sh"
SessionStart*bash "$CLAUDE_PROJECT_DIR/scripts/link-coordination.sh" >/dev/null 2>&1 || true
SessionStartcompactbash "$CLAUDE_PROJECT_DIR/.claude/hooks/inject-handoff-on-compact.sh"
SessionStartcompactbash "$CLAUDE_PROJECT_DIR/.claude/hooks/inject-matching-rule.sh"
SessionStartstartup|resume|clear|compactbash "$CLAUDE_PROJECT_DIR/.claude/hooks/inject-session-bootstrap.sh"
PreCompact*bash "$CLAUDE_PROJECT_DIR/.claude/hooks/precompact-residue.sh"

Permissions

deny (47)
Bash(git push --force*)
Bash(git push -f*)
Bash(git push --no-verify*)
Bash(git push --mirror*)
Bash(git push origin main*)
Bash(git push origin master*)
Bash(git push * main*)
Bash(git push * master*)
Bash(git commit --no-verify*)
Bash(git reset --hard*)
Bash(git checkout -- *)
Bash(git branch -D *)
Bash(git filter-branch*)
Bash(git update-ref*)
Bash(rm -rf *)
Bash(shred *)
Bash(dd if=*)
Bash(mkfs*)
Bash(sudo *)
Bash(curl * | bash*)
Bash(curl * | sh*)
Bash(wget * | bash*)
Bash(wget * | sh*)
Bash(nc *)
Bash(netcat *)
Bash(socat *)
Bash(gh secret set*)
Bash(gh secret delete*)
Bash(gh auth logout*)
Read(~/.ssh/**)
Read(~/.aws/**)
Read(~/.gnupg/**)
Read(~/.config/gh/**)
Read(.env)
Read(.env.*)
Edit(~/.zshrc)
Write(~/.zshrc)
Edit(~/.bashrc)
Write(~/.bashrc)
Edit(~/.bash_profile)
Write(~/.bash_profile)
Edit(.git/hooks/**)
Write(.git/hooks/**)
Edit(.husky/**)
Write(.husky/**)
Edit(.claude/settings.json)
Write(.claude/settings.json)
ask (0)
—
allow (4)
Bash(bash "$CLAUDE_PROJECT_DIR/.claude/hooks/end-of-turn-reminder.sh")
Bash(bash "$CLAUDE_PROJECT_DIR/.claude/hooks/a<redacted>.sh")
Task
Agent

Similar rigs

copied ✓