skills/agent-cost/SKILL.md is built entirely around bin/agents/cost:
bin/agents/cost # every project, YAML
bin/agents/cost --repo 2dph # only sessions whose cwd matches
bin/agents/cost --json | jq .cursor.by_tool
bin/agents/cost --snapshot after-x --repo 2dph
There is no bin/agents/ in this repo on main. The skill's frontmatter
description also names the tool, so an agent loading it is told to measure
session cost with something it cannot run.
PLAN D2 says skills are integrated in this project and brain-dependent ones
are skipped, so this looks like a skill that came along without its tool.
The decision
Either:
- Vendor
bin/agents/cost into bin/ — it reads local OpenCode/Cursor
session storage, so it would follow the same bin/{subject}/{method}
convention as the rest, or
- Drop
skills/agent-cost/ — the skill is not usable here without it.
Why this is filed rather than decided
#2 adds a check to bin/facts/audit self that every bin/… command shown in
a doc code block exists and accepts the flags it is shown with. This skill is
the one finding that PR does not fix, because deleting a skill is a
maintainer's call, not a drive-by cleanup.
So it is declared as a known exception with a reason, printed on every
audit self run:
exceptions:
- "bin/agents/cost: skills/agent-cost documents the upstream tool; not
vendored into this repo (PLAN D2). Vendor it or drop the skill."
The exception is deliberately loud rather than silent — an invisible
suppression is exactly how --hop stayed documented in six files while being
implemented in none. Whichever way this goes, the EXTERNAL_TOOLS entry in
bin/facts/audit should be removed afterwards so the gate has nothing left to
excuse.
🤖 Generated with Claude Code
skills/agent-cost/SKILL.mdis built entirely aroundbin/agents/cost:There is no
bin/agents/in this repo onmain. The skill's frontmatterdescription also names the tool, so an agent loading it is told to measure
session cost with something it cannot run.
PLAN D2 says skills are integrated in this project and brain-dependent ones
are skipped, so this looks like a skill that came along without its tool.
The decision
Either:
bin/agents/costintobin/— it reads local OpenCode/Cursorsession storage, so it would follow the same
bin/{subject}/{method}convention as the rest, or
skills/agent-cost/— the skill is not usable here without it.Why this is filed rather than decided
#2 adds a check to
bin/facts/audit selfthat everybin/…command shown ina doc code block exists and accepts the flags it is shown with. This skill is
the one finding that PR does not fix, because deleting a skill is a
maintainer's call, not a drive-by cleanup.
So it is declared as a known exception with a reason, printed on every
audit selfrun:The exception is deliberately loud rather than silent — an invisible
suppression is exactly how
--hopstayed documented in six files while beingimplemented in none. Whichever way this goes, the
EXTERNAL_TOOLSentry inbin/facts/auditshould be removed afterwards so the gate has nothing left toexcuse.
🤖 Generated with Claude Code