Summary
The advertised CodeLens command count disagrees across 7 locations in the repo. The actual count (auto-registered command modules in scripts/commands/) is 60 (61 .py files in scripts/commands/ minus __init__.py). Documentation and metadata cite anywhere from 41 to 60.
Evidence
| Source |
Claimed count |
Location |
README.md L5 |
"57 CLI commands" |
Intro paragraph |
README.md L9 |
"57 CLI Commands" |
Features list |
README.md L228 |
"56 commands registered" |
File-tree comment |
README.md L286 |
"57 commands incl. graph-schema" |
File-tree comment |
SKILL-QUICK.md L146 |
"Total: 60 commands" |
Footer |
SKILL.md L4 |
"56 commands" |
Frontmatter description |
pyproject.toml L8 |
"45 commands" |
description field |
skill.json L4 |
"45 commands" |
description field |
tests/test_integration.py L2 |
"41 CodeLens commands" |
Module docstring |
tests/test_integration.py L281 |
>= 41 |
Assertion (passes trivially) |
| Actual |
60 command modules |
ls scripts/commands/*.py | grep -v __init__.py | wc -l returns 60 |
Impact
- Marketing vs reality mismatch: Users reading
README.md see "57 commands" but codelens --help lists 60. Erodes trust in docs.
- Packaging metadata lies: PyPI description (if shipped) would say "45 commands".
- Test assertion is stale:
assert len(COMMAND_REGISTRY) >= 41 passes trivially and provides no regression protection. A command could be silently dropped (see related BUG-09) and the test would still pass.
- MCP tool count mismatch:
SKILL-QUICK.md advertises "55 tools" / "51 static + 7 dynamic = 58 tools" — also inconsistent with the 60-command reality.
Suggested fix
- Single source of truth: Add a
codelens --count-commands dev subcommand (or a scripts/utils.py:get_command_count() helper) that returns len(COMMAND_REGISTRY) at runtime.
- Generate docs from source: Replace hardcoded counts in
README.md / SKILL.md / SKILL-QUICK.md with a CI step that rewrites them from the runtime value. (Or just write "60+" and stop pinning the exact number in prose.)
- Bump pyproject + skill.json: Update both
description fields to reflect 60 commands (or remove the count from the description entirely).
- Strengthen the test: Change
assert len(COMMAND_REGISTRY) >= 41 to assert len(COMMAND_REGISTRY) == EXPECTED_COUNT where EXPECTED_COUNT is loaded from a single config (or just >= 60 if you want a floor).
- Reconcile MCP tool count: Update
SKILL-QUICK.md MCP section to match the actual static+dynamic count after the command count is settled.
Files
README.md (L5, L9, L228, L286)
SKILL.md (L4)
SKILL-QUICK.md (L146, MCP section)
pyproject.toml (L8)
skill.json (L4)
tests/test_integration.py (L2, L281)
Summary
The advertised CodeLens command count disagrees across 7 locations in the repo. The actual count (auto-registered command modules in
scripts/commands/) is 60 (61 .py files inscripts/commands/minus__init__.py). Documentation and metadata cite anywhere from 41 to 60.Evidence
README.mdL5README.mdL9README.mdL228README.mdL286SKILL-QUICK.mdL146SKILL.mdL4pyproject.tomlL8descriptionfieldskill.jsonL4descriptionfieldtests/test_integration.pyL2tests/test_integration.pyL281>= 41ls scripts/commands/*.py | grep -v __init__.py | wc -lreturns 60Impact
README.mdsee "57 commands" butcodelens --helplists 60. Erodes trust in docs.assert len(COMMAND_REGISTRY) >= 41passes trivially and provides no regression protection. A command could be silently dropped (see related BUG-09) and the test would still pass.SKILL-QUICK.mdadvertises "55 tools" / "51 static + 7 dynamic = 58 tools" — also inconsistent with the 60-command reality.Suggested fix
codelens --count-commandsdev subcommand (or ascripts/utils.py:get_command_count()helper) that returnslen(COMMAND_REGISTRY)at runtime.README.md/SKILL.md/SKILL-QUICK.mdwith a CI step that rewrites them from the runtime value. (Or just write "60+" and stop pinning the exact number in prose.)descriptionfields to reflect 60 commands (or remove the count from the description entirely).assert len(COMMAND_REGISTRY) >= 41toassert len(COMMAND_REGISTRY) == EXPECTED_COUNTwhereEXPECTED_COUNTis loaded from a single config (or just>= 60if you want a floor).SKILL-QUICK.mdMCP section to match the actual static+dynamic count after the command count is settled.Files
README.md(L5, L9, L228, L286)SKILL.md(L4)SKILL-QUICK.md(L146, MCP section)pyproject.toml(L8)skill.json(L4)tests/test_integration.py(L2, L281)