fix: make spanish the canonical CLI name; re-init CLAUDE.md#1
Conversation
The agent-first rubric gate (`teken cli doctor . --strict`, run by CI's lint job) failed `explain_self` at 25/26: it probes `explain <console-script-name>` — `explain spanish` — but the explain catalog only registered `spanish-cli`. Every PR opened red regardless of content. Resolve the underlying three-way name split rather than papering over it. `spanish` is now canonical for everything user- and agent-facing: argparse `prog`, the `learn` command map and `tool` field, all explain-catalog bodies, and every `hint:` remediation (which previously suggested `spanish-cli explain spanish-cli` — not a runnable command). `spanish-cli` survives only where it is genuinely the right name: the PyPI distribution, the issues URL, and the mesh nick from `culture.yaml`. `explain spanish-cli` is kept as an alias. Also in this change: - CLAUDE.md: replace the self-initializing seed with a runtime prompt (output/error contract, the `register(sub)` extension path, the backend/prompt-file coupling, version-bump-every-PR). The seed also claimed `backend: claude`; culture.yaml declares `colleague`, so AGENTS.colleague.md — not CLAUDE.md — is this agent's prompt file. - README: the quickstart advertised `uv run spanish-cli whoami`, which exits 2 with "Failed to spawn". "Make it your own" cited a rename procedure that lived in the replaced seed. - uv.lock: pinned the workspace package at 0.3.4 while pyproject.toml declared 0.4.0. Gate 26/26, 23 tests pass, black/isort/flake8/bandit/markdownlint clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WxL2eM5pC6qC4SwSgVZBRo
|
/agentic_review |
PR Summary by QodoFix CLI self-name: make
AI Description
Diagram
High-Level Assessment
Files changed (16)
|
Code Review by Qodo
1.
|
Addresses qodo-code-review inline comment 3556306455 (PR #1). CLAUDE.md hard-coded "22 tests" while this PR's new test_explain_dist_name_alias brought the suite to 23. Per Qodo's preferred remedy, remove the number rather than correct it — an exact count re-drifts on every test-adding PR. The same defect was present a second time and unflagged: both CLAUDE.md and README claimed "11 skills" under .claude/skills/, which holds 14. The 0.4.0 release vendored `remember` and `recall` from eidetic-cli without updating either count (or docs/skill-sources.md, whose table still lists 12). Dropped both counts; named the non-guildmaster origins instead, since that is the fact worth stating. docs/skill-sources.md's missing ledger rows are pre-existing and left for a follow-up. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WxL2eM5pC6qC4SwSgVZBRo
|



Why
CI's
lintjob runsuv run teken cli doctor . --strict— the agent-first rubric gate. It fails onmaintoday, 25/26, so any PR opened against this repo starts red regardless of what it changes:The rubric probes
explain <console-script-name>. The console script isspanish([project.scripts]), but the explain catalog only registeredspanish-cli.That mismatch was one symptom of a three-way name split left over from the template scaffold: script
spanish, distributionspanish-cli, argparseprogspanish-cli. It also meant every error hint suggestedspanish-cli explain spanish-cli— not a runnable command — and the README quickstart'suv run spanish-cli whoamiexited 2 withFailed to spawn.What changed
spanishbecomes canonical for everything user- and agent-facing: argparseprog, thelearncommand map and itstoolfield, every explain-catalog body, and allhint:remediations.spanish-cliis retained only where it is genuinely the right name:spanishprog;learn;explain;hint:linesspanish-cliimportlib.metadata), issues URL, mesh nick (culture.yamlsuffix)explain spanish-cliis kept as an alias to the root entry, so no documented path breaks.Rolled in, because each was either caused by or blocking on the above:
CLAUDE.md— replaced the self-initializing seed with a real runtime prompt: the stdout/stderr +CliErrorcontract, theregister(sub)extension path, the_CliArgumentParser._json_hintpre-parse mechanism, and the backend/prompt-file coupling. The seed assertedbackend: claude;culture.yamldeclarescolleague, which makesAGENTS.colleague.md— notCLAUDE.md— this agent's resident prompt file.README.md— fixed the quickstart; replacedMake it your own, which cited a rename procedure that lived in the seed I replaced.uv.lock— pinned the workspace package at0.3.4whilepyproject.tomldeclared0.4.0. Re-locked at0.5.0.I deliberately did not rewrite the template prose (
"a clonable template for AgentCulture mesh agents") thatlearnandexplainstill print. It is pre-existing, orthogonal to the naming fix, and belongs with the first real tutor feature.CLAUDE.mdand the README now flag it explicitly.Verification
Exercised end-to-end, not just via tests:
New test
test_explain_dist_name_aliaspins the alias;test_explain_selfnow probes the console-script name the rubric actually uses.test_learn_textwas tightened from"spanish" in out(trivially true after the rename) to"spanish whoami" in out.Notes for review
devex pr lintreports one violation —user-dotfile-referenceonCHANGELOG.md:32, the~/.eidetic/memoryprose in the shipped 0.4.0 entry. It is pre-existing (line 14 onmain), shifted down by the entry this PR prepends; none of my 19 added changelog lines mention it. The rule targets code referencing user dotfiles, not a historical changelog, anddevex pr lintis not part of CI. Not fixing — rewriting a released changelog entry to satisfy it would be worse.Alignment delta: this PR touches
CLAUDE.md, sodevex pr deltawas run. No sibling follow-up needed — the vendored.claude/skills/tree is untouched and the changes are spanish-cli-local.Version bumped
0.4.0 → 0.5.0(minor: the CLI surface changes).spanish-cli (Claude)