Paths that open: the Cursor export

A command wrapper is written to plugins/ork/.cursor-plugin/commands/<skill>.md, one directory away from the skill whose body it carries. Every way that body has ever spelled a same-skill reference therefore failed from there, in two different ways, and neither raised an error. Pick a spelling below and see where it points. Measured on the branch base 7b6f27893 and on cursor-agent 2026.09.02-c22c1a3, 2026-09-08.

1. Pick a reference spelling

Lines carrying this spelling before the fix:


      

2. What the 36 wrappers carried

Counted by running the rewriter's own matchers over git show 7b6f27893:<file>, so the before column is the tree this PR branched from, not a recollection. A bare reference is counted only when the file it names really exists under that skill: prose about this repo's own scripts/build-plugins.sh is not a defect and is never rewritten.

SpellingBeforeAfterWhy it could not resolve

3. Cursor's rule router

rules is a first-class key in Cursor's plugin manifest, next to skills, agents, commands and hooks. Its loader routes each rule by frontmatter alone. Set the frontmatter and watch the class change.


      

All 14 exported rules land in agentFetched. Pinning them global would put every rule in every session's context whether or not it is relevant; manually attached would mean nobody ever loads them. The description is the whole retrieval surface, so where a source carries a hand-written impactDescription (9 of the 14) that is what ships.

4. The gate, and proof it bites

A grep for CLAUDE_ returning zero is the wrong gate: 24 lines in the export are prose about real Claude Code environment variables, and rewriting documentation is not a fix. The gate keys on the trailing slash that turns a variable into a path, and then checks the harder direction: every rewritten path is stat'd against the plugin, so a rewriter that invents targets fails even when the placeholder grep is clean. Each row below was injected into a wrapper and run.

Injected into a wrapperResultCheck that fired

5. Reproduce it