Claude-kit forge-behavior

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.

install
source · Clone the upstream repo
git clone https://github.com/luiseiman/dotforge
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/luiseiman/dotforge "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/forge-behavior" ~/.claude/skills/luiseiman-claude-kit-forge-behavior && rm -rf "$T"
manifest: skills/forge-behavior/SKILL.md
source content

/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): 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
statusalways shownfilters to one session
on / offmutates index.yamlwrites to state.json
strictmutates yaml(not implemented v1)
relaxedmutates 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
    .