Install
$ agentstack add skill-hazat-pi-config-skill-creator ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Create a New Skill
Guide the user through creating a new agent skill following the Agent Skills specification. Follow each step in order.
Step 1: Understand the Skill
Gather requirements before writing anything.
Ask the user:
- What should this skill do? (one sentence)
- When should an agent use it? (trigger phrases users would say)
- What tools does the skill need? (Read, Grep, Glob, Bash, Task, WebFetch, etc.)
- Where should the skill live? (which plugin or directory)
Determine the skill name:
- Lowercase letters, digits, and hyphens only (
a-z,0-9,-) - 1-64 characters; must not start or end with
-; no consecutive hyphens (--) - Descriptive and unique among existing skills
- Prefer action-oriented names:
processing-pdfs,fix-issue,code-review - Check the target skills directory to avoid name collisions
Choose a complexity tier:
| Tier | Structure | Use When | |------|-----------|----------| | Simple | SKILL.md only | Self-contained instructions under ~200 lines | | With references | SKILL.md + references/ | Domain knowledge that agents load conditionally | | With scripts | SKILL.md + scripts/ | Workflow automation needing Python scripts | | Full | All of the above | Complex skills with automation and domain knowledge |
Read ${CLAUDE_SKILL_ROOT}/references/design-principles.md for guidance on keeping skills focused and concise.
Step 2: Plan the Skill
Analyze how each use case would be executed from scratch. Identify what reusable resources would help when executing these tasks repeatedly.
For each concrete example, ask:
- What code would be rewritten every time? → candidate for
scripts/ - What documentation is needed to inform decisions? → candidate for
references/ - What templates or assets are used in output? → candidate for
assets/
Example analysis:
- "Rotate a PDF" → rotating requires rewriting the same code →
scripts/rotate_pdf.py - "Query BigQuery metrics" → need table schemas each time →
references/schema.md - "Build a frontend app" → same boilerplate HTML/React →
assets/hello-world/
Step 3: Study Existing Skills
Before writing, study 1-2 existing skills that match the chosen tier. Look for skills in the target repository or plugin to understand local conventions.
Read ${CLAUDE_SKILL_ROOT}/references/skill-patterns.md for concrete examples of each tier.
Also read CLAUDE.md (or AGENTS.md) at the repository root for repo-specific conventions that the skill should follow.
Step 4: Write the SKILL.md
Create //SKILL.md.
Frontmatter
The YAML frontmatter must be the first thing in the file. No comments or blank lines before ---.
---
name:
description: . Use when . .
---
Required fields:
name— must match the directory name exactlydescription— up to 1024 chars, no angle brackets (``); include trigger keywords that help agents match user intent
Optional fields:
allowed-tools— comma-separated list (e.g.,Read, Grep, Glob, Bash); omit to allow all toolslicense— license name or path (add when vendoring external content)metadata— arbitrary key-value mapping for additional metadatacompatibility— environment requirements (max 500 chars); most skills don't need this
For Claude Code-specific fields (argument-hint, disable-model-invocation, context, etc.), read ${CLAUDE_SKILL_ROOT}/references/claude-code-extensions.md.
Description Guidelines
The description is the primary trigger mechanism — it determines when agents activate the skill. All "when to use" information belongs here, not in the body.
Write in third person:
- Good: "Processes Excel files and generates reports. Use when..."
- Bad: "I can help you process Excel files" or "You can use this to..."
Include natural trigger phrases:
# Good — specific triggers users would actually say
description: Security code review for vulnerabilities. Use when asked to "security review", "find vulnerabilities", "check for security issues", "audit security".
# Bad — too vague, no trigger phrases
description: A helpful skill for code quality.
Pattern: . Use when . .
Body Guidelines
Write the body in imperative voice — these are instructions, not documentation.
| Do | Don't | |----|-------| | "Read the file and extract..." | "This skill reads the file and extracts..." | | "Report only HIGH confidence findings" | "The agent should report only HIGH confidence findings" | | "Ask the user which option to use" | "You may want to ask the user..." |
Structure:
- Start with a one-line summary of what the skill does
- Organize steps with
## Step N: Titleheadings - Use tables for decision logic and mappings
- Include concrete examples of expected output
- End with validation criteria or exit conditions
For workflow and output patterns, read:
${CLAUDE_SKILL_ROOT}/references/workflow-patterns.md— sequential workflows, feedback loops, plan-validate-execute${CLAUDE_SKILL_ROOT}/references/output-patterns.md— template, examples, and structured data patterns
Size limits:
- Keep SKILL.md under 500 lines (/
├── SKILL.md └── references/ ├── topic-a.md └── topic-b.md
Reference from SKILL.md with:
```markdown
Read `${CLAUDE_SKILL_ROOT}/references/topic-a.md` for details on [topic].
Guidelines:
- Keep each reference file focused on one topic
- Keep references one level deep from SKILL.md (no nested reference chains)
- For files over 100 lines, add a table of contents at the top
- For files over 10k words, include grep search patterns in SKILL.md
- Information should live in either SKILL.md or references, not both
Scripts (scripts/)
Use for workflow automation that benefits from structured Python.
/
├── SKILL.md
└── scripts/
└── do_thing.py
Script requirements:
- Always use
uv runto execute:uv run ${CLAUDE_SKILL_ROOT}/scripts/do_thing.py - Add PEP 723 inline metadata for dependencies:
# /// script
# requires-python = ">=3.12"
# dependencies = ["requests"]
# ///
- Output structured JSON for agent consumption
- Run from the repository root, not the skill directory
- Document the script's interface in SKILL.md (arguments, output format)
- Handle errors explicitly — don't punt to the agent
Assets (assets/)
Use for static files used in the skill's output (templates, images, boilerplate code, fonts). These are not loaded into context — they're copied or used directly.
LICENSE
Include a LICENSE file in the skill directory when vendoring content with specific licensing requirements.
Step 6: Validate the Skill
Run the validation script to catch issues early:
uv run ${CLAUDE_SKILL_ROOT}/scripts/quick_validate.py
The script checks frontmatter format, required fields, naming rules, and common mistakes. Fix any errors and re-run until validation passes.
Alternatively, use the upstream validation tool:
skills-ref validate
Step 7: Register the Skill
Registration steps vary by repository. Check the repository's CLAUDE.md or README.md for specific instructions.
- Verify directory-name match — confirm the directory name matches the
namefield in SKILL.md frontmatter exactly - Update documentation — add the skill to any skills index or table in README.md
- Update permissions — if the repo has
.claude/settings.json, addSkill(:)to thepermissions.allowarray - Check CLAUDE.md — read the repository's
CLAUDE.mdfor any additional registration steps specific to that project
Step 8: Verify
Run through this checklist before finishing:
Frontmatter
- [ ]
namematches directory name - [ ]
nameuses only lowercase letters, digits, hyphens (no leading/trailing/consecutive hyphens) - [ ]
descriptionis under 1024 characters, no angle brackets - [ ]
descriptionis in third person and includes trigger keywords - [ ] All "when to use" info is in description, not in body
- [ ] No content before the opening
---
Content
- [ ] SKILL.md is under 500 lines
- [ ] Written in imperative voice
- [ ] Steps are numbered and clear
- [ ] Examples of expected output included
- [ ] Consistent terminology throughout
- [ ] Reference files loaded conditionally (not unconditionally)
- [ ] No extraneous files (README.md, CHANGELOG.md, etc.)
Registration
- [ ] Directory name matches frontmatter
name - [ ] Skill added to repo documentation (README or equivalent)
- [ ] Permissions updated (if applicable)
- [ ] Any repo-specific registration steps completed (check CLAUDE.md)
Scripts (if applicable)
- [ ] Uses
uv run ${CLAUDE_SKILL_ROOT}/scripts/... - [ ] Has PEP 723 inline metadata
- [ ] Outputs structured JSON
- [ ] Handles errors explicitly
- [ ] Documented in SKILL.md
Validation
- [ ]
uv run ${CLAUDE_SKILL_ROOT}/scripts/quick_validate.pypasses - [ ] Tested with a real usage scenario
Report any issues found and fix them before completing.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: HazAT
- Source: HazAT/pi-config
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.