Command stubs reference plugin files by relative path and never invoke the skill: the mode prompt is unreachable when cwd is not the plugin root (13 of 16 commands)
Summary
13 of the 16 commands/ars-*.md stubs end with:
Mode reference: `MODE_REGISTRY.md` § academic-paper.
Skill entry: `academic-paper/SKILL.md`.Both are relative paths with no ${CLAUDE_PLUGIN_ROOT} prefix, and the stub tells the model to "trigger the academic-paper skill" in prose rather than instructing it to invoke the skill. When the session cwd is not the plugin root, the model tries to Glob/Read those files, fails, and proceeds on the stub text alone. The mode's agent prompt (for example citation_compliance_agent.md for /ars-citation-check) never loads.
Evidence
Observed while calibrating a claude plugin eval suite for the citation-check flow (plugin-evals-citation-check/, PR to follow). In the with-plugin arm the trace shows:
Skill academic-research-skills:ars-citation-check→ "Launching skill"Glob **/academic-paper/SKILL.md→ No files foundGlob **/MODE_REGISTRY.md→ No files foundGlob /**/academic-paper/SKILL.md→ permission denied (outside cwd,dontAskmode)- the model writes the report from the stub text and the base model
The with-plugin arm never calls Skill academic-research-skills:academic-paper. Granting --allow-tools 'Read(<plugin root>/**)' does not help because the model does not know the plugin's absolute path. Result across the suite: with-plugin score ≈ without-plugin score (Δ ≈ 0 on 7 of 8 cases), which is a measurement of the stub, not of the mode.
The same failure shape applies to any user whose working directory is a paper project rather than the plugin checkout, which is the normal case for a marketplace install.
Proposed fix (either is enough; both is better)
- Replace the prose "Trigger the
academic-paperskill" with an explicit instruction to invoke the skill via the Skill tool (academic-research-skills:academic-paper) with the mode named, so the SKILL.md body loads without a file read. - Prefix every file reference in the stubs with
${CLAUDE_PLUGIN_ROOT}/so a read works from any cwd.
Add a lint that fails when a commands/*.md file contains a bare MODE_REGISTRY.md or */SKILL.md path without the root variable, so it cannot regress.
Scope
Affects all 13 stubs that carry the two lines; ars-full, ars-reviewer, ars-revision-coach should be checked for the same pattern. No change to skill content.
Source: Imbad0202/academic-research-skills