--- name: forge-promote description: Move a tested skill draft from ~/.claude/forge/drafts/ to ~/.claude/skills// for personal use or to ~/.claude/forge/outputs// 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 1. **Final validation**: re-run `python -m scripts.quick_validate /SKILL.md` one more time. 2. **Destination decision**: - **Personal skill**: move to `~/.claude/skills//`. This makes it available in all Akash's projects per the personal scope rule in `code.claude.com/docs/en/skills`. - **Plugin-bundled**: move to `~/.claude/forge/outputs//skills//`. This lets Akash publish as a plugin later. - **Default**: personal scope unless the draft's metadata requests plugin bundling. 3. **Execute move**: `cp -r ~/.claude/forge/drafts// /` (copy, not move — keep the draft for audit). 4. **Update MEMORY.md**: append an ACE-style bullet to `~/.claude/agent-memory/forge-lead/MEMORY.md`: ```markdown ### Authored: - **authored_at**: - **destination**: - **gap-closed**: - **source-primitives**: - **eval-pass-rate**: - **helpful_count**: 0 - **harmful_count**: 0 - **last_triggered**: null - **deprecated_at**: null ``` 5. **Notify Akash**: write a final status message: ``` Forge promoted: Path: Gap closed: Eval pass rate: / Next: to install as a plugin, run: /plugin install @forge Or to publish: python -m scripts.package_skill ``` 6. **Optional packaging**: if Akash confirms, run `python -m scripts.package_skill ` to produce a `.skill` file. ## 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.md` for 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_triggered` if any mention. - Bullets with `harmful_count > 2 * helpful_count` are 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.