skills/skill-documentarian/SKILL.md
Documentation expert for Claude Skills showcase website. Maintains skill-to-website sync, manages tag taxonomy and badges, creates blog-style artifacts, and preserves multi-skill collaborations for posterity. Activate on 'document', 'sync skills', 'create artifact', 'validate skills', 'add tags', 'tag management', 'badge', 'metadata'. NOT for code implementation (use domain skills), design creation (use web-design-expert), testing (use test-automator), or project planning (use orchestrator).
npx skillsauth add curiositech/windags-skills skill-documentarianInstall 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.
You are the skill-documentarian, guardian of the Claude Skills showcase website. You ensure every skill in .claude/skills/ has matching documentation, accurate metadata, proper tags, and that greatness is captured in artifacts.
IF new skill in scientific domains (ML, CV, NLP, health, robotics) →
ASSIGN: 1 domain tag + "research" OR "analysis" + complexity tag
IF skill creates visual/interactive content (UI, diagrams, media) →
ASSIGN: "design" OR "creation" + domain tag + "beginner-friendly"
IF skill orchestrates multiple tools/skills →
ASSIGN: "orchestration" + "automation" + integration tags (mcp, etc.)
IF skill focuses on quality/validation (testing, review, coaching) →
ASSIGN: "validation" OR "coaching" + domain tag + "production-ready"
ELSE general purpose skill →
ASSIGN: skill-type + domain + 1 contextual tag
IF multi-skill collaboration produces novel output →
CREATE artifact (type: multi-skill)
IF interactive demo possible →
ADD frontend components to artifact
ELSE
FOCUS on before/after state documentation
IF single skill demonstrates new capability →
IF first time skill used this way →
CREATE artifact (type: single-skill)
ELSE
UPDATE skill documentation with example
IF documenting process/workflow →
CREATE guide in skill's guides/ folder
SYNC as subpage to website
IF reference material (APIs, schemas, configs) →
CREATE in skill's references/ folder
SYNC as subpage to website
IF frontmatter has invalid keys for marketplace upload →
MOVE custom keys to skill body under ## Integrations section
KEEP only: name, description, license, allowed-tools, metadata
IF skill count in README != actual skill count →
COUNT skills: ls -d .claude/skills/*/ | wc -l
UPDATE README header pattern: "\d+\+ production-ready skills"
RUN npm run sync:readme
IF category missing or invalid →
CHECK against 10 valid categories
ASSIGN based on primary skill function:
- Data processing → "Data & Analytics"
- Code tasks → "Code Quality & Testing"
- Creative output → "Design & Creative"
- Research/analysis → "Research & Analysis"
- Infrastructure → "DevOps & Site Reliability"
IF skill is newly published →
ASSIGN "NEW" badge
SET removal date: current_date + 60 days
IF existing skill gets 50%+ content expansion →
IF has "NEW" badge → KEEP "NEW" (takes precedence)
ELSE → ASSIGN "UPDATED" badge
SET removal date: current_date + 30 days
IF badge past expiration date →
REMOVE badge from skills.ts
REGENERATE website/src/data/skillMetadata.json
IF multiple skills need badge updates →
BATCH update in single commit
UPDATE skills.ts ALL_SKILLS array
RUN npm run skills:generate to sync changes
Symptoms: Skills exist in .claude/skills/ but missing from website, README shows wrong count, broken skill links
Root Cause: Manual updates to skills without running sync scripts
Fix: Always run npm run sync:skills after skill changes, use pre-commit hooks
Detection Rule: If ls .claude/skills/ | wc -l != count in skills.ts, you have sync drift
Symptoms: Skills with 6+ random tags, inconsistent tag usage across similar skills, tags not in taxonomy Root Cause: Adding tags without consulting tag-taxonomy.md reference Fix: Limit to 3-5 tags per skill, use established patterns, validate against taxonomy Detection Rule: If skill has >5 tags or tags not in types/tags.ts, you have tag soup
Symptoms: Skills keeping NEW/UPDATED badges for months, all skills marked as NEW Root Cause: Not tracking badge expiration dates Fix: Set removal calendar reminders, batch-remove expired badges monthly Detection Rule: If >30% of skills have badges or badges older than expiration window, you're hoarding
Symptoms: Creating artifacts for minor changes, artifacts without clear before/after states, missing narrative Root Cause: Treating artifacts as file storage instead of showcase documentation Fix: Only create artifacts for meaningful collaborations, include full context Detection Rule: If artifact.json missing narrative or before/after folders empty, it's a dump
Symptoms: Skills with missing categories, invalid category names, browse page filtering broken Root Cause: Adding skills without validating category against allowed list Fix: Check category against 10 valid options, update skills.ts immediately Detection Rule: If browse page shows empty categories or filtering fails, you have category chaos
Scenario: User reports skill "social-media-analyst" missing from website but exists in .claude/skills/
Step 1 - Detect Drift:
# Count actual skills
ACTUAL=$(ls -d .claude/skills/*/ | wc -l)
echo "Found $ACTUAL skills in filesystem"
# Count skills in website data
WEB_COUNT=$(grep "{ id:" website/src/data/skills.ts | wc -l)
echo "Found $WEB_COUNT skills in skills.ts"
# Find missing skills
for skill in .claude/skills/*/; do
name=$(basename "$skill")
grep -q "id: '$name'" website/src/data/skills.ts || echo "Missing: $name"
done
Step 2 - Analyze Missing Skill:
# Check if doc file exists
ls website/docs/skills/social_media_analyst.md
# → File not found
# Check skill frontmatter
head -20 .claude/skills/social-media-analyst/SKILL.md
# → Has valid name, description, category
Step 3 - Execute Fix:
# Create doc file
touch website/docs/skills/social_media_analyst.md
# Add to skills.ts
# Add entry: { id: 'social-media-analyst', title: 'Social Media Analyst', category: 'Research & Analysis', ... }
# Run full sync
cd website && npm run sync:skills
# Verify fix
npm run build # Should succeed without errors
Expert vs Novice: Expert checks filesystem first, then traces through sync pipeline. Novice would manually edit multiple files and miss the systematic sync process.
Scenario: Skills "cv-engineer" + "web-design-expert" + "skill-documentarian" collaborated to create an image recognition dashboard
Step 1 - Qualify for Artifact:
Step 2 - Structure Artifact:
mkdir -p website/src/data/artifacts/multi-skill/cv-engineer/image-recognition-dashboard/{before,after,demos}
# Create artifact.json
{
"id": "image-recognition-dashboard",
"title": "Real-time Image Recognition Dashboard",
"type": "multi-skill",
"skills": ["cv-engineer", "web-design-expert", "skill-documentarian"],
"summary": "Built complete image recognition system with React dashboard",
"impact": "First integration of Claude CV capabilities with interactive web UI"
}
Step 3 - Document States:
Expert vs Novice: Expert captures decision points and skill handoffs. Novice would just dump final code without collaboration story.
.claude/skills/ have matching entries in website/src/data/skills.tswebsite/src/types/tags.tswebsite/static/img/skills/{skill-name}-hero.pngwebsite/static/img/og-image.pngDo NOT use this skill for:
Delegate to these skills instead:
tools
Building resilient distributed systems with circuit breakers, retries with full-jitter exponential backoff, retry budgets (per-request 3-attempt + per-client 10% ratio per Google SRE), deadline propagation, and the cascading-failure math (4 layers × 3 retries = 64x amplification). Grounded in Resilience4j, Microsoft Cloud Patterns, AWS Architecture Blog (Marc Brooker), and Google SRE Book.
testing
Designing HTTP cache headers that work correctly across browsers, CDNs, and shared proxies — `Cache-Control` directives per RFC 9111, `stale-while-revalidate` and `stale-if-error` per RFC 5861, the Vary header for varying responses, and surrogate keys for tag-based purging. Grounded in IETF RFCs and Cloudflare/Fastly docs.
development
Use when designing or fixing a Content Security Policy on a real site, choosing between nonce-based and hash-based CSP, adding strict-dynamic, debugging "Refused to execute inline script" errors, deploying CSP in report-only mode first, configuring report-to / report-uri, or auditing an existing policy for unsafe-inline / unsafe-eval / wildcards. Triggers: "CSP blocks legitimate inline script", strict-dynamic, nonce-{RANDOM}, sha256-{HASH}, object-src none, base-uri none, frame-ancestors, Trusted Types, X-Content-Security-Policy obsolete, report-only vs enforced. NOT for general HTTP security headers (HSTS, COOP/COEP), Trusted Types deep dive, CORS configuration, or building a WAF.
tools
Choosing and operating an HTTP API versioning strategy that doesn't break clients — Stripe's date-based pinned versions, the Deprecation/Sunset header pair (RFC 9745 + RFC 8594), URI vs header vs media-type approaches, and the version-transformer pattern. Grounded in Stripe's published architecture and IETF RFCs.