Claude-kit forge
dotforge configuration factory — audit, sync, status, insights across projects from any channel
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/integrations/openclaw" ~/.claude/skills/luiseiman-claude-kit-forge && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/luiseiman/dotforge "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/integrations/openclaw" ~/.openclaw/skills/luiseiman-claude-kit-forge && rm -rf "$T"
manifest:
integrations/openclaw/SKILL.mdsource content
/forge — dotforge bridge for OpenClaw
Execute dotforge configuration management commands from any OpenClaw channel (WhatsApp, Telegram, Slack, etc.).
How it works
This skill bridges OpenClaw to dotforge by running
claude CLI in the target project directory. All /forge subcommands are available.
Environment
— path to dotforge repo (required)DOTFORGE_DIR- Default project: uses
itself if no project specifiedDOTFORGE_DIR
Command format
/forge <command> [project:<name>]
If
project:<name> is provided, look up the project path from $DOTFORGE_DIR/registry/projects.yml and execute in that directory.
If no project specified, use current context or ask the user.
Available commands
Read-only (safe from any channel)
| Command | What it does |
|---|---|
| Multi-project dashboard with scores and trends |
| Show dotforge version |
| Practices lifecycle status |
| List pending practices |
Per-project (require project context)
| Command | What it does |
|---|---|
| Score project configuration 0-10 |
| Show pending changes since last sync |
| Analyze past sessions |
| Detect inert rules |
Mutation (ask for confirmation before executing)
| Command | What it does |
|---|---|
| Update project config against template |
| Initialize .claude/ in a project |
| Record a practice in inbox |
| Process practices pipeline |
| Check for upstream changes |
| Review curated repos |
| Restore .claude/ from template |
| Compare full vs minimal config |
Execution
Step 1: Parse command
Extract:
— the forge action (audit, status, sync, etc.)subcommand
— optional project name fromproject
suffixproject:<name>
— any remaining argumentsargs
Step 2: Resolve project path
If a project name is provided:
# Look up path from registry python3 -c " import yaml reg = yaml.safe_load(open('$DOTFORGE_DIR/registry/projects.yml')) for p in reg['projects']: if p['name'].lower() == '<project_name>'.lower(): print(p['path']) break "
If no project and command requires one, list available projects from registry and ask user to choose.
Step 3: Execute
For read-only commands, execute directly:
cd <project_path> claude --print "/forge <subcommand>" 2>&1
For mutation commands, show what will happen and ask for confirmation before executing.
Step 4: Format response
Keep responses concise for mobile channels:
- Tables → use compact format
- Long outputs → summarize, offer "more details?" follow-up
- Scores → include emoji indicators (🟢 ≥9, 🟡 ≥7, 🔴 <7)
- Errors → show error + suggested fix
Examples
User:
/forge status
→ Execute claude --print "/forge status" in DOTFORGE_DIR
→ Return the multi-project dashboard
User:
/forge audit project:SOMA
→ Look up SOMA path from registry
→ Execute claude --print "/forge audit" in SOMA directory
→ Return score + gaps
User:
/forge capture "hooks should validate JSON before writing settings.json"
→ Execute claude --print '/forge capture "hooks should validate JSON before writing settings.json"' in DOTFORGE_DIR
→ Confirm: "Practice captured in inbox"
Constraints
- NEVER run
,sync
, orreset
without explicit user confirmationbootstrap - NEVER expose file paths or system details in channel responses (security)
- If
CLI is not available, respond: "Claude Code CLI not found. Install from https://docs.anthropic.com/en/docs/claude-code"claude - If
is not set, respond: "Set DOTFORGE_DIR to your dotforge directory"DOTFORGE_DIR - Timeout: 60 seconds per command. If exceeded, report partial output.