agentic/code/addons/skill-factory/skills/skill-builder/SKILL.md
Build Claude skills from extracted documentation. Use after doc-scraper/pdf-extractor to generate uploadable skill packages.
npx skillsauth add jmagly/aiwg skill-builderInstall 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.
Single responsibility: Transform extracted documentation into properly structured Claude skill packages ready for upload. (BP-4)
Before executing, VERIFY:
DO NOT build without verifying input data quality.
ASK USER instead of guessing when:
NEVER generate placeholder content without user guidance.
| Context Type | Included | Excluded | |--------------|----------|----------| | RELEVANT | Input data, skill config, output path | Other skills | | PERIPHERAL | Similar skill examples | Unrelated documentation | | DISTRACTOR | Previous build attempts | Source scraping details |
# Check input data exists
ls -la output/<skill-name>_data/
# Verify page count
find output/<skill-name>_data/pages -name "*.json" | wc -l
# Check summary
cat output/<skill-name>_data/summary.json
Standard Claude skill structure:
output/<skill-name>/
├── SKILL.md # Main skill file (required)
├── references/ # Reference documentation
│ ├── index.md # Category index
│ ├── getting_started.md
│ ├── api_reference.md
│ └── guides.md
├── scripts/ # Optional automation scripts
└── assets/ # Optional images, diagrams
Template for SKILL.md:
# <Skill Name>
## Description
<When to use this skill - clear, specific>
## Key Features
- Feature 1
- Feature 2
- Feature 3
## Quick Reference
### Common Patterns
<Most frequently used patterns with code examples>
### API Overview
<Key API methods/functions>
## Navigation
| Topic | File | Description |
|-------|------|-------------|
| Getting Started | references/getting_started.md | Installation and setup |
| API Reference | references/api_reference.md | Complete API documentation |
| Guides | references/guides.md | How-to guides and tutorials |
## Code Examples
<3-5 practical code examples from documentation>
## Common Questions
<FAQ section based on documentation>
## Version Information
- Documentation version: <version>
- Last updated: <date>
- Source: <url>
Categorize extracted content:
# Categories and their keywords
categories = {
"getting_started": ["intro", "install", "setup", "quickstart"],
"api_reference": ["api", "reference", "method", "function", "class"],
"guides": ["guide", "tutorial", "how-to", "example"],
"concepts": ["concept", "overview", "architecture"],
"advanced": ["advanced", "internals", "extend", "customize"]
}
# Check required files exist
test -f output/<skill-name>/SKILL.md || echo "Missing SKILL.md"
test -d output/<skill-name>/references || echo "Missing references/"
# Verify SKILL.md structure
grep "^# " output/<skill-name>/SKILL.md
grep "^## " output/<skill-name>/SKILL.md
# Check reference files
ls -la output/<skill-name>/references/
On error:
Missing input data → Re-run extractionInvalid content format → Check parser compatibilityCategorization failed → Manual category mappingTemplate error → Check SKILL.md syntaxState saved to: .aiwg/working/checkpoints/skill-builder/
checkpoints/skill-builder/
├── build_config.json # Build configuration
├── categorization.json # Category assignments
├── skill_md_draft.md # SKILL.md draft
└── progress.json # Build progress
| Criterion | Requirement | Validation | |-----------|-------------|------------| | SKILL.md present | Required | File exists check | | Description clear | Required | Non-empty, specific | | References organized | Required | At least 2 categories | | Code examples | Recommended | 3+ examples in SKILL.md | | Navigation table | Recommended | Links to all references |
Run quality check after build:
# Use quality-checker skill
# Or manual validation:
# 1. SKILL.md structure
grep -E "^#{1,2} " output/<skill-name>/SKILL.md
# 2. Code examples present
grep -c '```' output/<skill-name>/SKILL.md
# 3. References populated
for f in output/<skill-name>/references/*.md; do
echo "$f: $(wc -l < $f) lines"
done
# 4. No broken links
grep -oE '\[.*\]\(.*\)' output/<skill-name>/SKILL.md | head -10
{
"name": "myskill",
"description": "When to use this skill",
"input_dir": "output/myskill_data/",
"output_dir": "output/myskill/",
"template": "standard",
"options": {
"extract_examples": true,
"max_examples": 10,
"generate_faq": true,
"include_navigation": true,
"min_category_pages": 5
}
}
Full-featured skill with all sections.
Just SKILL.md and one reference file.
Optimized for API documentation.
Optimized for learning content.
| Issue | Diagnosis | Solution | |-------|-----------|----------| | Missing input data | Data directory not found | Run doc-scraper or pdf-extractor first | | Empty SKILL.md | Template failed | Check input format, verify JSON structure | | No categories | Keywords not matched | Provide custom category mapping | | Build hangs | Large dataset | Use doc-splitter first for 10K+ pages | | Invalid structure | Wrong template | Verify template compatibility with content |
data-ai
Report which research-corpus radar sidecars are overdue for refresh. Computes staleness (days since last refresh vs the cadence window) for every radar, sorted most-overdue-first. Runs via `aiwg corpus radar-status`.
data-ai
Aggregate research-corpus radar sidecars into a corpus or per-cluster freshness report — totals, overdue count, per-cluster / per-GRADE / per-trajectory breakdowns, an overdue table, and per-radar rationale snippets. Runs via `aiwg corpus radar-report`.
testing
Scaffold radar/freshness sidecars for research-corpus REFs. Pulls title/authors from the citation sidecar and GRADE from the analysis doc, defaults the refresh cadence from GRADE and the cluster from a corpus-local map, and stamps documentation/radar/REF-XXX-radar.md. Runs via `aiwg corpus radar-init`.
data-ai
Compute an entity's publication trajectory — per-year paper counts, topic drift, hot-streak detection (≥3 consecutive A-grade years), and career phase. Runs via `aiwg corpus profile-temporal`.