fix(pstack): tell agents where bundled leaf skills live
Summary
Every leaf skill sets disable-model-invocation: true, so an agent never sees its path. poteto-mode names leaves only by bare name (unslop, how, principle-laziness-protocol). A spawned poteto-agent also has no path to poteto-mode itself. It has to search, and a failed search ends with it working without the rules.
After this change, poteto-mode says where bundled skills live relative to its own file, and tells the parent to pass that file's absolute path to every poteto-agent. poteto-agent reads poteto-mode from that path.
This is #532 by @sunxiuguo, cut down and rebased onto current main. The poteto-agent.md sentence is the first sentence of #569 by @darkhan-nace. Both are credited in Co-authored-by trailers.
Changes
skills/poteto-mode/SKILL.md: one line under the title. Bundled skills live at../<name>/SKILL.mdfrom this file, so put this file's absolute path in everypoteto-agentprompt.agents/poteto-agent.md: one sentence. Use the absolute path your parent gave you.
Differences from #532
- The router guidance is one sentence, not a 5-sentence section.
- #532's
poteto-agent.mdtext resolves paths from the directory that contains the agent file. A spawned subagent gets the agent body as its prompt and does not know that directory, so that lookup cannot work. Here the parent passes the absolutepoteto-modepath in the spawn prompt, and the agent resolves leaves from it. - No version bump.
This does not add #569's find fallback, which hardcodes the install layout.
Test plan
- Copied the plugin into a directory laid out like an installed plugin cache. Spawned
poteto-agentwith the hub's absolute path as the only location hint. The task required theunslopskill and the Laziness Protocol principle. The subagent readpoteto-mode, then../unslop/SKILL.mdand../principle-laziness-protocol/SKILL.md, and ran no searches. File access times on the copy match its report. Two runs passed: one used the installed agent type, the other used this branch's agent body as the prompt. - Control: main's text, with the hub path passed by hand. The subagent also found the leaves. So the path in the spawn prompt is what matters, and main never tells the parent to pass it. The
../<name>clause makes the layout explicit instead of inferred. node scripts/validate-plugins.mjspasses.- The diff is plain ASCII.

