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)

Author: Imbad0202Created Sep 13, 2026Updated Sep 13, 2026

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:

  1. Skill academic-research-skills:ars-citation-check → "Launching skill"
  2. Glob **/academic-paper/SKILL.md → No files found
  3. Glob **/MODE_REGISTRY.md → No files found
  4. Glob /**/academic-paper/SKILL.md → permission denied (outside cwd, dontAsk mode)
  5. 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-paper skill" 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