From tq-forge
List every forged agent across the sandbox and production with kind, current quality score, hand_off_to wiring, and a one-line capability summary. Read-only. Use when asked for "/tq-forge-agents", "show agents", "list my agents", or "what does this agent do".
How this skill is triggered — by the user, by Claude, or both
Slash command
/tq-forge:tq-forge-agentsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You want a snapshot of every forged agent — sandbox + promoted — with its kind
You want a snapshot of every forged agent — sandbox + promoted — with its kind
(researcher / coder / etc.), current quality score, the agents it can hand off
to, and a one-line capability summary from AGENT.md. This is the agent-only
counterpart of /tq-forge-list, which mixes skills + agents.
export TQ_FORGE_HOME="${TQ_FORGE_HOME:-$HOME/.tq-forge}"
source "${CLAUDE_PLUGIN_ROOT:-${TQ_FORGE_HOME:-$HOME/.tq-forge}/install}/scripts/common.sh" && tq_ensure_home
Enumerate agent directories.
find "$SANDBOX_AGENTS" "$CLAUDE_SKILLS_DIR/agents" -maxdepth 2 -name AGENT.md 2>/dev/null
For each agent, read metadata — yaml + json in one pass:
python3 - <<'PY'
import json, re, pathlib, os
roots = [pathlib.Path(os.environ['SANDBOX_AGENTS']),
pathlib.Path(os.environ['CLAUDE_SKILLS_DIR'])/'agents']
for r in roots:
if not r.exists(): continue
for d in sorted(p for p in r.iterdir() if p.is_dir()):
agm, tj = d/'AGENT.md', d/'tools.json'
if not agm.exists(): continue
text = agm.read_text(errors='replace')
kind = (re.search(r'kind:\s*(\S+)', text) or [None,'?'])[1]
tools = hand = []
if tj.exists():
try:
j = json.loads(tj.read_text())
tools, hand = j.get('tools',[]), j.get('hand_off_to',[])
except Exception: pass
loc = 'sandbox' if str(d).startswith(os.environ['SANDBOX_AGENTS']) else 'promoted'
names = [h if isinstance(h,str) else h.get('name','?') for h in hand]
print(f"{d.name}\t{kind}\t{loc}\t{len(tools)}\t{','.join(names) or '-'}")
PY
Pull current scores for each agent slug from skill-log.json:
python3 -c "import json,pathlib,os;d=json.loads((pathlib.Path(os.environ['TQ_FORGE_HOME'])/'skill-log.json').read_text() or '[]');print(json.dumps({e['slug']:e.get('score') for e in d if e.get('kind')=='agent'}))"
Render the table.
AGENT KIND LOC SCORE TOOLS HAND-OFF
market-research researcher promoted 🟢 8.7 3 business-analyst, reviewer
inbox-triage ops-manager sandbox 🟡 6.5 3 coder
Color: 🟢 >= 8, 🟡 >= 6, 🔴 < 6. Show "—" if score missing.
Print a totals footer.
<N> agents · <S> sandbox · <P> promoted · avg score <X.X>/10
Suggest follow-ups only when applicable: sandbox agents >=7 ->
/tq-forge-promote; promoted agents <7 -> /tq-forge-improve; none found ->
/tq-forge-agent <intent>.
AGENT.md yaml trips the parser. Skip it
with a warning rather than aborting the listing.hand_off_to may be a list of strings or objects ([{"name":...,"when":...}]).
Show the name field if it's an object.AGENT.md found under the two roots.find ... -name AGENT.md | wc -l.tq-forge agents registry read-only
npx claudepluginhub tanishq286/tq-forge --plugin tq-forgeGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.