.claude/skills/skills-expert/SKILL.md
Provide expert guidance on skills architecture, YAML frontmatter, tool permissions, and debugging. Use when creating, troubleshooting, or validating skills. Trigger with "skill not loading", "frontmatter", or "allowed-tools".
npx skillsauth add intent-solutions-io/plugins-nixtla skills-expertInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Provide expert guidance on Claude Code skills development, validation, and troubleshooting.
This skill transforms Claude into a Claude Skills architecture expert. Use when:
.claude/skills/ or skills-pack/.claude/skills/| Field | Max Length | Purpose |
|-------|------------|---------|
| name | 64 chars | Identifier used as command in Skill tool invocation |
| description | 1024 chars | Primary signal Claude uses to decide when to invoke skill |
| Field | Type | Purpose |
|-------|------|---------|
| allowed-tools | CSV string | Pre-approved tools during skill execution |
| model | string | Override model ("inherit" or model ID) |
| version | string | Semantic versioning (e.g., "1.0.0") |
| license | string | License metadata |
| mode | boolean | true = appears in Mode Commands section |
| disable-model-invocation | boolean | true = requires manual /skill-name |
| Field | Behavior |
|-------|----------|
| when_to_use | Appends to description with hyphen separator |
Critical Rule: Skill MUST have description OR when_to_use or it's filtered out.
skill-name/
├── SKILL.md # Core prompt + frontmatter (required)
├── scripts/ # Python/Bash executables
├── references/ # Documentation loaded via Read tool
└── assets/ # Templates, static files (referenced by path)
Template variable resolving to skill installation directory:
## Resources
- Skill standard: `{baseDir}/references/skill-standard.md`
Never hardcode absolute paths.
Permissions in allowed-tools are scoped to skill execution only:
# Granular scoping examples
allowed-tools: "Bash(git:*),Read,Grep" # Only git commands
allowed-tools: "Bash(npm:*),Read,Write" # Only npm commands
allowed-tools: "Read,Glob,Grep" # Read-only audit
Claude decides skill invocation through pure language understanding:
<available_skills> section"skill-name": descriptioncommandNo embeddings, regex, or classifiers - pure LLM reasoning.
Skill tool with command: "skill-name"<command-message>The "skill-name" skill is loading</command-message>allowed-toolsSkills loaded in order (later overrides earlier):
~/.config/claude/skills/).claude/skills/)tools array as part of Skill meta-toolwhen_to_use is undocumented/experimental - Safer to rely on detailed description{baseDir}1. VALIDATION
- Syntax checking
- Skill existence verification
- Frontmatter parsing
2. PERMISSION EVALUATION
- Deny rules checked first (blocking patterns)
- Allow rules checked second (pre-approved)
- Default: prompt user for approval
3. LOADING & INJECTION
- SKILL.md content loaded
- Two messages injected (visible + hidden)
- Context modifier applied
- Tool permissions scoped
Skills are NOT in system prompts. They're bundled in the tools array:
tools: [
{ name: "Read", ... },
{ name: "Write", ... },
{
name: "Skill", // Meta-tool
inputSchema: { command: string },
prompt: "<available_skills>..." // Dynamic, contains all skill descriptions
}
]
This enables dynamic loading without system prompt manipulation.
description or when_to_use existsdisable-model-invocation: true blocking auto-discovery# Nixtla Standard Checklist
- [ ] name: lowercase + hyphens, matches folder name
- [ ] description: action-oriented, <1024 chars
- [ ] version: semver format
- [ ] allowed-tools: minimal necessary
- [ ] NO deprecated fields (author, priority, audience)
- [ ] mode: true ONLY for mode skills
- [ ] disable-model-invocation: true ONLY for infra/dangerous skills
| Issue | Solution | |-------|----------| | Skill not discovered | Check description/when_to_use exists | | Tools not working | Verify allowed-tools syntax | | Wrong skill invoked | Improve description specificity | | Skill filtered out | Add required frontmatter fields |
description that includes both “Use when …” and “Trigger with …”.allowed-tools and scoped Bash(...) usage.004-scripts/validate_skills_v2.py003-skills/.claude/skills/---
name: my-skill
description: Generate reports from CSV data. Use when user has CSV files and needs analysis.
allowed-tools: "Read,Write,Glob"
version: "1.0.0"
---
---
name: expert-mode
description: Transform Claude into domain expert for extended session.
mode: true
allowed-tools: "Read,Write,Glob,Grep,Edit,Bash"
version: "1.0.0"
---
---
name: deploy-skill
description: Deploy application to production. Dangerous - requires explicit invocation.
disable-model-invocation: true
allowed-tools: "Bash(deploy:*),Read,Glob"
version: "1.0.0"
---
{baseDir}/references/skill-standard.mdtesting
This skill enables Claude to manage isolated test environments using Docker Compose, Testcontainers, and environment variables. It is used to create consistent, reproducible testing environments for software projects. Claude should use this skill when the user needs to set up a test environment with specific configurations, manage Docker Compose files for test infrastructure, set up programmatic container management with Testcontainers, manage environment variables for tests, or ensure cleanup after tests. Trigger terms include "test environment", "docker compose", "testcontainers", "environment variables", "isolated environment", "env-setup", and "test setup".
tools
This skill uses the test-doubles-generator plugin to automatically create mocks, stubs, spies, and fakes for unit testing. It analyzes dependencies in the code and generates appropriate test doubles based on the chosen testing framework, such as Jest, Sinon, or others. Use this skill when you need to generate test doubles, mocks, stubs, spies, or fakes to isolate units of code during testing. Trigger this skill by requesting test double generation or using the `/gen-doubles` or `/gd` command.
tools
This skill enables Claude to generate realistic test data for software development. It uses the test-data-generator plugin to create users, products, orders, and custom schemas for comprehensive testing. Use this skill when you need to populate databases, simulate user behavior, or create fixtures for automated tests. Trigger phrases include "generate test data", "create fake users", "populate database", "generate product data", "create test orders", or "generate data based on schema". This skill is especially useful for populating testing environments or creating sample data for demonstrations.
development
This skill analyzes code coverage metrics to identify untested code and generate comprehensive coverage reports. It is triggered when the user requests analysis of code coverage, identification of coverage gaps, or generation of coverage reports. The skill is best used to improve code quality by ensuring adequate test coverage and identifying areas for improvement. Use trigger terms like "analyze coverage", "code coverage report", "untested code", or the shortcut "cov".