161 lines
4.0 KiB
Markdown
161 lines
4.0 KiB
Markdown
---
|
|
name: generate-skill-rules
|
|
description: Generate skill-rules.json entries from SKILL.md YAML frontmatter (for maintainers)
|
|
version: 1.0.0
|
|
---
|
|
|
|
# Generate Skill Rules
|
|
|
|
This command parses YAML frontmatter from SKILL.md files and generates `skill-rules.json` entries for the auto-activation system.
|
|
|
|
## Usage
|
|
|
|
```sh
|
|
/generate-skill-rules [options]
|
|
```
|
|
|
|
## What It Does
|
|
|
|
1. Scans for SKILL.md files in the specified directory
|
|
2. Parses YAML frontmatter to extract trigger information
|
|
3. Converts to skill-rules.json format
|
|
4. Outputs generated JSON to stdout or writes to file
|
|
|
|
## Options
|
|
|
|
- **--plugin** - Plugin directory to scan (default: current directory)
|
|
- **--namespace** - Plugin namespace (required if --write)
|
|
- **--write** - Write directly to skill-rules.json
|
|
- **--dry-run** - Output to stdout without writing (default)
|
|
|
|
## Examples
|
|
|
|
### Preview Generated Rules
|
|
|
|
```sh
|
|
/generate-skill-rules --plugin plugins/tanstack-tools --namespace tanstack
|
|
```
|
|
|
|
### Write to skill-rules.json
|
|
|
|
```sh
|
|
/generate-skill-rules --plugin plugins/api-tools --namespace api --write
|
|
```
|
|
|
|
## Instructions for Claude
|
|
|
|
When this command is invoked:
|
|
|
|
1. **Locate SKILL.md Files**
|
|
|
|
```sh
|
|
find {plugin-dir}/skills -name "SKILL.md" -type f
|
|
```
|
|
|
|
2. **Parse Each SKILL.md**
|
|
- Read YAML frontmatter (between `---` delimiters)
|
|
- Extract these fields:
|
|
- `name` → skill ID
|
|
- `description` → skill description
|
|
- `category` → determines skill type
|
|
- `triggers.keywords` → promptTriggers.keywords
|
|
- `triggers.patterns` → promptTriggers.intentPatterns
|
|
- `priority` (if present) → priority field
|
|
|
|
3. **Map Fields to skill-rules.json Schema**
|
|
|
|
```json
|
|
{
|
|
"plugin": {
|
|
"name": "{extracted-from-plugin-json}",
|
|
"version": "{extracted-from-plugin-json}",
|
|
"namespace": "{from-cli-arg-or-plugin-json}"
|
|
},
|
|
"skills": {
|
|
"{skill-name}": {
|
|
"type": "domain",
|
|
"enforcement": "suggest",
|
|
"priority": "{from-yaml-or-default-high}",
|
|
"description": "{from-yaml}",
|
|
"promptTriggers": {
|
|
"keywords": ["{from-yaml-triggers-keywords}"],
|
|
"intentPatterns": ["{from-yaml-triggers-patterns}"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
4. **Handle Edge Cases**
|
|
- Skills without triggers → create empty arrays
|
|
- Skills without priority → default to "high"
|
|
- Skills with category "guardrail" → type: "guardrail"
|
|
- All other categories → type: "domain"
|
|
|
|
5. **Validation**
|
|
- Check namespace is valid (lowercase, no spaces)
|
|
- Ensure skill names are kebab-case
|
|
- Validate regex patterns are valid
|
|
- Warn about missing required fields
|
|
|
|
6. **Output Format**
|
|
- **Dry run**: Print formatted JSON to stdout with guidance
|
|
- **Write mode**: Create/update `{plugin-dir}/skills/skill-rules.json`
|
|
- Include success message with file location
|
|
|
|
## Example YAML → JSON Conversion
|
|
|
|
**SKILL.md frontmatter:**
|
|
|
|
```yaml
|
|
---
|
|
name: skill-creator
|
|
description: Generate new Claude Code skills
|
|
category: workflow-automation
|
|
priority: high
|
|
triggers:
|
|
keywords:
|
|
- create skill
|
|
- new skill
|
|
- skill template
|
|
patterns:
|
|
- (create|add|generate).*?skill
|
|
- how to.*?create.*?skill
|
|
---
|
|
```
|
|
|
|
**Generated skill-rules.json entry:**
|
|
|
|
```json
|
|
{
|
|
"skill-creator": {
|
|
"type": "domain",
|
|
"enforcement": "suggest",
|
|
"priority": "high",
|
|
"description": "Generate new Claude Code skills",
|
|
"promptTriggers": {
|
|
"keywords": ["create skill", "new skill", "skill template"],
|
|
"intentPatterns": [
|
|
"(create|add|generate).*?skill",
|
|
"how to.*?create.*?skill"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Success Criteria
|
|
|
|
- Successfully parses all SKILL.md files
|
|
- Generates valid JSON matching schema
|
|
- Handles skills without triggers gracefully
|
|
- Provides clear output and error messages
|
|
- Works for both dry-run and write modes
|
|
|
|
## Notes
|
|
|
|
- This is a maintainer tool for initial migration
|
|
- After migration, maintain skill-rules.json directly
|
|
- YAML triggers in SKILL.md can be removed after migration
|
|
- Always validate generated JSON with `/workflow:configure`
|