tq-forge-promotelisted
Install: claude install-skill tanishq286/tq-forge
# /tq-forge-promote — sandbox -> production
## When to use
A skill or agent in `$TQ_FORGE_HOME/sandbox/forged-{skills,agents}/<slug>/` has
passed scoring (>=7) and is ready to ship. This is the only path that writes
into `$CLAUDE_SKILLS_DIR` (default `~/.claude/skills`).
## Procedure
```bash
export TQ_FORGE_HOME="${TQ_FORGE_HOME:-$HOME/.tq-forge}"
S="${CLAUDE_PLUGIN_ROOT:-${TQ_FORGE_HOME:-$HOME/.tq-forge}/install}/scripts"
source "$S/common.sh" && tq_ensure_home
```
1. **Check the halt flag.** If `$TQ_FORGE_HOME/halt.flag` exists, queue and exit:
```bash
test -f "$TQ_FORGE_HOME/halt.flag" && bash "$S/forge-checkpoint.sh" queue "promote <slug>" && exit 0
```
2. **Resolve the slug.**
```bash
for d in "$SANDBOX_SKILLS/<slug>" "$SANDBOX_AGENTS/<slug>"; do
test -e "$d" && echo "FOUND: $d"
done
```
If neither exists, abort and list what's available:
```bash
ls "$SANDBOX_SKILLS" "$SANDBOX_AGENTS"
```
3. **Re-score before promoting.** Never trust a stale score:
```bash
bash "$S/quality-score.sh" --auto-detect "<slug>"
bash "$S/dry-test.sh" "$SANDBOX_SKILLS/<slug>" # or $SANDBOX_AGENTS
```
If avg < 7 OR dry-test verdict != `pass`, refuse: "Score is X/10 — run
/tq-forge-improve <slug> first."
4. **Copy into production.**
```bash
# Skill
mkdir -p "$CLAUDE_SKILLS_DIR"
cp -r "$SANDBOX_SKILLS/<slug>" "$CLAUDE_SKILLS_DIR/<slug>"
# Agent
mkdir -p "$CLAUDE_SKILLS_DIR/agents"
cp -r "$SANDBOX_AGENTS/<slug>"