proguha/pstack-pi/skill-development
- community
Checking that the SKILL.md file is still in the repository.
Create, edit, or tune a Pi skill (a SKILL.md directory). Covers where skills live, frontmatter rules, bundled scripts and references, and the draft, test, and iterate loop, including the description-optimization loop for a skill that did not trigger when it should have.
Install
npx vskill@latest install proguha/pstack-pi/skill-developmentSKILL.md
Skill development
A skill is a directory holding SKILL.md plus optional scripts/, references/, and assets/. Pi lists each skill's name, description, and path in the system prompt, and the model reads SKILL.md when a task matches the description. The description is the only part always in context; everything else loads on demand.
For the writing itself (pointers, information hierarchy, completion criteria, leading words, pruning), read the writing-for-agents skill when it is installed, and write every line through unslop. This skill covers Pi's mechanics and the loops.
Pi mechanics
- Where it goes. Project:
.agents/skills/<name>/(Pi searches from the working directory up to the repository root) or.pi/skills/<name>/. Personal:~/.agents/skills/<name>/or~/.pi/agent/skills/<name>/. Shared: a Pi package'sskillsdirectory, such as pstack-pi'sskills/. Keep a pstack skill edit in pstack-pi'sport.jsonoroverlay/, sincescripts/sync-pstack.mjsregenerates the skills tree. - Name collisions. Pi keeps the first skill it finds under a name and warns about the rest.
~/.agents/skills/is read before package skills, so a copy there shadows a package's skill of the same name. - Frontmatter.
nameis lowercase letters, digits, and single hyphens, at most 64 characters, and should equal the directory name.descriptionis required, at most 1024 characters, one YAML scalar; quote it or usedescription: >-when it holds a colon or wraps.disable-model-invocation: truehides the skill from the model so only/skill:<name>runs it. Pi ignores other runtimes' keys, such as Claude Code'suser-invocable. - Paths. Write links and script paths relative to the skill directory; Pi tells the model where the skill lives. Put deterministic work in
scripts/rather than prose the model reinterprets each run. - Reload. After an edit, run
/reloador start a new session. Startup diagnostics report malformed skills and collisions.
Draft, test, iterate
- Collect concrete cases. Write three to five real requests the skill must handle and two or three near misses it must leave alone. Each case names what a correct run produces.
- Plan the contents. For each case, decide what the model needs every run (steps in
SKILL.md), what only some runs need (areferences/file behind a pointer), and what should be a script. - Draft. Write the description first: what the skill does and the distinct situations that should trigger it, front-loaded with the words users actually say. Then write the body as steps with completion criteria, plus the reference each step consults.
- Check. Run
node scripts/check-skill.mjs <skill-dir>from this skill's directory. It checks the frontmatter rules above, relative links, and length. Fix every FAIL. - Test triggering. Put the cases in a file, one per line,
+ <prompt>for must-load and- <prompt>for must-skip, and runnode scripts/trigger-test.mjs <skill-dir> <cases-file>. Each case is one real model request with only this skill, only thereadtool, and no extensions, so pass--modelto test the model the skill will run under. Tell the user before running it, since it spends tokens. - Test behavior. Run each must-load case in a fresh session (
pi -p "<prompt>"or a scratch interactive session) and compare the result against the case's expected output. Watch where the model skipped a step, reached for the wrong reference, or ended early. - Iterate. Fix the cause each failure shows: sharpen a vague completion criterion, move a buried step up, disclose reference that crowds the steps, or add a script for work the model keeps doing by hand. Rerun steps 4 to 6 until every case passes.
Description optimization
Use this when a skill exists but did not trigger when it should have (tune description: <skill path>), or triggered when it should not have.
- Add the missed or wrong request to the cases file as
+or-, plus one or two paraphrases of it. - Run
trigger-test.mjsand confirm the new cases fail. A case that already passes is not the bug. - Edit only the description. Add the missing trigger situation in the user's words, merge synonyms that name one situation, and cut identity the body already carries. Keep it short, since it costs context in every session.
- Rerun the full cases file. Every earlier case must still pass. Repeat from step 3 until all pass.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/skill-development/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/proguha/pstack-pi/skill-development)