name: forge-promote description: Move a tested skill draft from ~/.claude/forge/drafts/ to ~/.claude/skills/<name>/ for personal use or to ~/.claude/forge/outputs/<plugin>/ for plugin packaging. Updates the Forge's MEMORY.md catalog with a bullet entry (authored_at, helpful_count=0, harmful_count=0), notifies the user, and optionally offers to publish via skill-creator's package_skill.py. Use when forge-test has returned PASS on a draft. disable-model-invocation: true allowed-tools: Read Write Edit Bash(cp *) Bash(mv *) Bash(python *)
Forge promoter
Method
- Final validation: re-run
python -m scripts.quick_validate <draft-path>/SKILL.mdone more time. - Destination decision:
- Personal skill: move to
~/.claude/skills/<name>/. This makes it available in all Akash's projects per the personal scope rule incode.claude.com/docs/en/skills. - Plugin-bundled: move to
~/.claude/forge/outputs/<plugin>/skills/<name>/. This lets Akash publish as a plugin later. - Default: personal scope unless the draft's metadata requests plugin bundling.
- Personal skill: move to
- Execute move:
cp -r ~/.claude/forge/drafts/<name>/ <destination>/(copy, not move — keep the draft for audit). - Update MEMORY.md: append an ACE-style bullet to
~/.claude/agent-memory/forge-lead/MEMORY.md:
### Authored: <name>
- **authored_at**: <ISO8601>
- **destination**: <path>
- **gap-closed**: <what capability>
- **source-primitives**: <skill-creator | mcp-builder | etc.>
- **eval-pass-rate**: <decimal>
- **helpful_count**: 0
- **harmful_count**: 0
- **last_triggered**: null
- **deprecated_at**: null
- Notify Akash: write a final status message:
Forge promoted: <name>
Path: <destination>
Gap closed: <description>
Eval pass rate: <N>/<M>
Next: to install as a plugin, run:
/plugin install <name>@forge
Or to publish:
python -m scripts.package_skill <destination>
- Optional packaging: if Akash confirms, run
python -m scripts.package_skill <destination>to produce a.skillfile.
Counter reconciliation (session-start, not promotion)
At the start of every Forge session, forge-lead reads MEMORY.md and runs the reconciliation algorithm:
- For each authored bullet with
authored_at > 7 days ago:- Grep
~/.claude/projects/*/memory/MEMORY.mdfor the skill's name in recent sessions. - If found as a successful invocation:
helpful_count += 1. - If found as an error/rollback:
harmful_count += 1. - Update
last_triggeredif any mention.
- Grep
- Bullets with
harmful_count > 2 * helpful_countare flagged for deprecation review.
This is NOT part of promotion (promotion is author-time); it's a start-of-session hook per EVIDENCE/skeptic.md attack #2.
Hard rules
- Never promote without the final validation pass.
- Never overwrite an existing skill at the destination — if a skill with that name exists, rename with a suffix or report a collision.
- Never delete the draft (keep for audit).
- Never silently update counters — always log the reconciliation delta in LOG.md-equivalent.