forge-behavior · git:20260413.75952f8 · 2026-04-13 · sha256 536f51e475626025
forge-behavior git:20260413.75952f8A
Immutable. This exact content never changes and is served at /api/v1/blob/536f51e475626025.
--- name: forge-behavior description: 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. --- # /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 ```bash 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): mutates `behaviors/index.yaml`. Persistent. After changing, recompile the behavior with `scripts/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`'s `behavior_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 each `after` threshold, minimum 1. Makes violations escalate sooner. - `relaxed`: doubles each `after` threshold. 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 - `jq` must be installed (runtime requirement). - `python3` with `pyyaml` must be installed (YAML reading/writing). - The project must already have `behaviors/index.yaml`. If missing, create one with `behaviors: []` and populate via `on <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_DIR` as an override of `behaviors/` location — useful for tests and isolated environments. - Direct tool result for tests: `scripts/forge-behavior/tests/run_all.sh`.