Forge behavior
Configuration governance for Claude Code. Bootstrap, audit, sync, and evolve .claude/ across projects.
npx -y skills add luiseiman/dotforge --skill forge-behaviorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Manage dotforge v3 behavior governance — view status, toggle behaviors, adjust strictness. Use when the user asks about active behaviors, wants to disable one for the current session, or adjust escalation thresholds.
SKILL.md
3.7 KB, as published. Nobody here has run it
/forge behavior
Thin wrapper around scripts/forge-behavior/cli.sh. Dispatches behavior
governance actions. This skill is part of dotforge v3 (Phase 1 of behavior
governance) and should only be used inside dotforge itself or projects that
have adopted v3 — not on v2.9 projects.
When to use
Invoke this skill when the user asks any of:
- "What behaviors are active?"
- "What's the counter on search-first?"
- "Disable search-first for this session"
- "Turn off the nudge on writes"
- "Make search-first stricter / more relaxed"
Do NOT invoke this skill for v2.9 configuration tasks (use /forge audit,
/forge sync, etc.) or for behaviors that have not yet been catalogued
(Phase 1 only ships search-first).
Actions
scripts/forge-behavior/cli.sh status [--session SESSION_ID]
scripts/forge-behavior/cli.sh on <behavior_id> [--project | --session SESSION_ID]
scripts/forge-behavior/cli.sh off <behavior_id> [--project | --session SESSION_ID]
scripts/forge-behavior/cli.sh strict <behavior_id>
scripts/forge-behavior/cli.sh relaxed <behavior_id>
status — Print the current catalogue (behaviors/index.yaml) plus a
per-session summary from .forge/runtime/state.json: counters, effective
levels, override counts, pending_block status, and any session-scope
overrides.
on / off — Toggle a behavior's active state.
--project(default): mutatesbehaviors/index.yaml. Persistent. After changing, recompile the behavior withscripts/compiler/compile.sh behaviors/<id>/behavior.yaml <output_dir>and restart Claude Code so the new hook registration takes effect.--session SESSION_ID: mutates only.forge/runtime/state.json'sbehavior_overrides[]for that session. The compiled hook short-circuits silently when disabled. No recompile needed. Effect lasts until the session is purged by TTL.
strict / relaxed — Mutate behaviors/<id>/behavior.yaml escalation:
strict: halves eachafterthreshold, minimum 1. Makes violations escalate sooner.relaxed: doubles eachafterthreshold. Makes violations escalate later.- Both project-scope only in v1. Session-scope strictness deferred to
Phase 2 — the runtime would need to pass a strictness multiplier into
forge_resolve_level, which v1 does not support.
Preconditions
jqmust be installed (runtime requirement).python3withpyyamlmust be installed (YAML reading/writing).- The project must already have
behaviors/index.yaml. If missing, create one withbehaviors: []and populate viaon <id>.
Scope matrix
| Action | --project | --session |
|---|---|---|
| status | always shown | filters to one session |
| on / off | mutates index.yaml | writes to state.json |
| strict | mutates yaml | (not implemented v1) |
| relaxed | mutates yaml | (not implemented v1) |
Example flows
Check what is active right now:
/forge behavior status
Silence search-first for a noisy debugging session:
/forge behavior off search-first --session <session_id>
Tighten up for strict development mode:
/forge behavior strict search-first
# then recompile and restart
Notes
- The CLI honors
FORGE_BEHAVIORS_DIRas an override ofbehaviors/location — useful for tests and isolated environments. - Direct tool result for tests:
scripts/forge-behavior/tests/run_all.sh.