From 9cd5c424c0c76fd0dd898b9a832a6e99f54dea8c Mon Sep 17 00:00:00 2001 From: Myke Matos <123015330+shishiv@users.noreply.github.com> Date: Wed, 26 Aug 2026 12:06:33 -0300 Subject: [PATCH] fix(pstack): drop create-skill from mode-skill authoring automate-me and pstack-reflect now point at the host authoring playbook. The resource denylist fails CI if that leftover token returns. Co-authored-by: Cursor --- skills/automate-me/SKILL.md | 10 +++++----- skills/pstack-reflect/SKILL.md | 4 ++-- skills/pstack-reflect/references/synthesizer.md | 4 ++-- test/resources/resources.test.mjs | 1 + 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/skills/automate-me/SKILL.md b/skills/automate-me/SKILL.md index 420c971..301e0b3 100644 --- a/skills/automate-me/SKILL.md +++ b/skills/automate-me/SKILL.md @@ -1,6 +1,6 @@ --- name: automate-me -description: "Use for \"automate me\", \"create/update/refresh my -mode skill\", \"turn/capture my preferences or working style into a skill\", or wanting agents to follow how the user works. Drafts or revises a personal -mode skill via create-skill + unslop, optionally pulling fresh evidence from recent transcripts." +description: "Use for \"automate me\", \"create/update/refresh my -mode skill\", \"turn/capture my preferences or working style into a skill\", or wanting agents to follow how the user works. Drafts or revises a personal -mode skill via the host's skill-authoring workflow and unslop, optionally pulling fresh evidence from recent transcripts." disable-model-invocation: true --- @@ -69,12 +69,12 @@ Use the host's skill-authoring workflow to author the skill. Placement: - Path: preserve an existing mode skill's category. For a new mode, use `.pi/skills//-mode/SKILL.md` when the repo has an established personal category for that handle; otherwise default to `.pi/skills/-mode/SKILL.md` in the project (or `~/.pi/agent/skills/-mode/` if the user prefers a personal skill). - Handle: the user's first name or chosen identifier. - Frontmatter `description`: trigger on their name + `/-mode` + "work in their style", not on generic keywords like "write code" or "review PR". -- Frontmatter formatting: follow `create-skill`'s YAML rules. Keep `description` as one YAML scalar; quote it or use `description: >-` with indented continuation lines when punctuation or wrapping requires it. +- Frontmatter formatting follows the Pi Agent Skills contract and `playbooks/authoring-a-skill.md`. Keep `description` as one YAML scalar. Quote it or use `description: >-` with indented continuation lines when punctuation or wrapping requires it. - Frontmatter `disable-model-invocation: true` by default. Mode skills are heavy and opinionated; they should only apply when the user explicitly invokes them (by name or slash command), not auto-trigger on description matching. Opt out only if the user explicitly wants their mode to apply on every turn. ### 5. Iterate on prose -Apply the **unslop** skill and `create-skill`'s writing guidelines to every line. Both apply to any agent-read prose, not just skills. +Apply the **unslop** skill and the host's skill-authoring workflow to every line. Agent-read prose follows both. Show the draft to the user and take feedback. Expect multiple iterations. Cut ruthlessly; a mode skill is not a manual. @@ -93,13 +93,13 @@ Work in a worktree off main. Commit and open a PR so the user can review it. Don ## Evaluation -A `-mode` skill is subjective output. A `create-skill`-style test/iterate benchmark loop isn't useful here. Vibe-check with the user: does it read like them? Did it miss anything? Then ship. +A `-mode` skill is subjective output. A test/iterate benchmark loop isn't useful here. Vibe-check with the user. Does it read like them? Did it miss anything? Then ship. Run a description-optimization loop only if the skill's trigger accuracy turns out to be a problem in practice. ## When not to use -- User wants a task-specific skill (not working conventions): `create-skill` alone, no mining required. +- User wants a task-specific skill (not working conventions). Follow `playbooks/authoring-a-skill.md`. No mining required. - User wants to capture one narrow workflow (e.g. "how I write commit messages"): that's a regular skill, not a mode skill. ## Reference files diff --git a/skills/pstack-reflect/SKILL.md b/skills/pstack-reflect/SKILL.md index 349d151..f26db0d 100644 --- a/skills/pstack-reflect/SKILL.md +++ b/skills/pstack-reflect/SKILL.md @@ -62,8 +62,8 @@ For each approved Accepted item, follow the Routing field exactly: - Trivial existing-skill edit (a one-line bullet, a tightened sentence, a stale fact corrected): parent does directly. - Substantive existing-skill edit (a new section, a new pattern table, more than ~10 lines): hand to the host's skill-authoring workflow and run its draft / test / iterate loop. -- `tune description: ` (the skill exists but didn't trigger when it should have): hand to `create-skill` and run its description-optimization loop. -- `new skill via create-skill: `: hand creation to `create-skill`. Do not invent the shape ad hoc. +- `tune description: ` (the skill exists but didn't trigger when it should have). Hand to `playbooks/authoring-a-skill.md` and run that playbook's description-optimization loop. +- `new skill via playbooks/authoring-a-skill.md: `. Hand creation to `playbooks/authoring-a-skill.md`. Do not invent the shape ad hoc. If your environment ships a SKILL.md validator, run it on every touched skill before declaring done. Skip this step if it doesn't. diff --git a/skills/pstack-reflect/references/synthesizer.md b/skills/pstack-reflect/references/synthesizer.md index 11040b0..d8765b3 100644 --- a/skills/pstack-reflect/references/synthesizer.md +++ b/skills/pstack-reflect/references/synthesizer.md @@ -14,7 +14,7 @@ Apply each criterion to every finding: - Durability: still true in 6 months once paths, SHAs, tool versions, and code shapes have changed. - Specificity: broad enough to apply across tasks, precise enough that a future agent recognizes when to use it. Reject vague platitudes ("write good code") and hyper-specific facts ("`` has 175 tokens at limit 80"). -- Existing-skill-first: propose `new skill via create-skill:` only when no existing skill is a real home, the pattern recurs, and the topic deserves its own skill. +- Existing-skill-first: propose `new skill via playbooks/authoring-a-skill.md:` only when no existing skill is a real home, the pattern recurs, and the topic deserves its own skill. - Convergence: findings echoed by 2+ reviewers carry higher confidence. Singletons must clear a higher bar on the other criteria. - Decision-changing: a future agent does something different because of the edit, not just reads more text. - Structural-mechanism check: route to Backlog when a lint rule, script, metadata flag, or runtime check already enforces the rule or could enforce it cheaply. Skill prose is for things mechanisms cannot enforce. @@ -41,7 +41,7 @@ Output exactly the format below. No preamble, no narration. One sentence per cel |---|---|---| | | | | | | | > | -| | | > | +| | | > | One row per finding. The user approves row by row. diff --git a/test/resources/resources.test.mjs b/test/resources/resources.test.mjs index 393684e..e2a9216 100644 --- a/test/resources/resources.test.mjs +++ b/test/resources/resources.test.mjs @@ -122,6 +122,7 @@ test("active resources use Pi runtime contracts", async () => { ["unsupported read-write acceptance role", /acceptanceRole:\s*read-write/], ["Comment Sicko spawn", /agent: "Comment Sicko"/], ["doubled subagent", /subagent subagent/], + ["create-skill", /create-skill/], ]) { assert.doesNotMatch(corpus, pattern, `${token} remains in active resources`); }