Audit and improve skill collections with a 9-dimension scoring framework (Knowledge Delta, Mindset, Anti-Patterns, Specification Compliance, Progressive Disclosure, Freedom Calibration, Pattern Recognition, Practical Usability, Eval Validation), duplication detection, remediation planning, baseline comparison, and CI quality gates; use when evaluating skill quality, generating remediation plans, detecting duplicates, validating artifact conventions, or enforcing publication thresholds.
93
89%
Does it follow best practices?
Impact
99%
1.26xAverage score across 5 eval scenarios
Passed
No known issues
Complete workflow for running automated skill quality audits. Covers setup, execution, and maintenance of audit processes.
Purpose: Automate skill quality evaluation on schedule and on-demand
Outputs: Quality reports, duplication analysis, aggregation recommendations
Schedule: Weekly automated + on-demand for new skills
.context/audits/ directoryBuild the binary once from the repo root:
bun run build:skill-auditorskill-auditor evaluate <domain/skill-name> --jsonOptions:
--json - Machine-readable JSON output--store - Write results to .context/audits/<skill>/YYYY-MM-DD/--repo-root - Explicit repo root (auto-detected if omitted)Output: JSON score report
skill-auditor batch <skill1> <skill2> [skill3...]Options:
--json - Machine-readable JSON array output--store - Write each result to .context/audits/<skill>/YYYY-MM-DD/--fail-below <grade> - Exit 1 if any skill scores below this grade (e.g. B+)Features:
.context/audits/<skill-name>/YYYY-MM-DD/Output: Summary table or JSON array
Use when: Auditing multiple skills in phases or batches with consolidated tracking
./scripts/detect-duplication.sh [skills-dir]Arguments:
skills-dir - Skills directory (default: skills)Output: duplication-report-YYYY-MM-DD.md
bun run scripts/plan-aggregation.ts --family <prefix>Options:
--family - Skill family prefix (e.g., bdd, typescript)Output: Aggregation plan with recommendations
# Count skills
find skills -name "SKILL.md" -not -path "*/.deprecated/*" | wc -l
# List by category
ls -1 skills/ | cut -d- -f1 | sort | uniq -c | sort -rn
# Identify families
ls -1 skills/ | grep -E "^[a-z]+-" | cut -d- -f1 | sort -u# Run full batch audit
skill-auditor batch $(find skills -name "SKILL.md" | sed 's|skills/||;s|/SKILL.md||') --store
# Review stored results
cat .context/audits/*/$(date +%Y-%m-%d)/audit.json | jq '.grade'# Detect duplication
./scripts/detect-duplication.sh
# Review high-priority pairs
grep -A5 "High-Priority" .context/analysis/duplication-report-*.md# Plan aggregation for each family
bun run scripts/plan-aggregation.ts --family bdd
bun run scripts/plan-aggregation.ts --family typescript
bun run scripts/plan-aggregation.ts --family bun# Create summary report
cat > .context/analysis/audit-summary-$(date +%Y-%m-%d).md <<EOF
# Audit Summary - $(date +%Y-%m-%d)
## Statistics
- Total skills: $(find skills -name "SKILL.md" -not -path "*/.deprecated/*" | wc -l)
- A-grade: X
- B-grade: Y
- C-grade: Z
## Duplication
- High-priority pairs: X
- Critical (>35%): Y
## Recommendations
1. [From aggregation plans]
2. [From duplication report]
EOFAdd to CI/CD pipeline:
# .github/workflows/skill-audit.yml
name: Skill Audit
on:
schedule:
- cron: '0 0 * * 0' # Weekly on Sunday
workflow_dispatch:
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
- name: Build skill-auditor
run: bun run build:skill-auditor
- name: Run full batch audit
run: |
skills=$(find skills -name "SKILL.md" | sed 's|skills/||;s|/SKILL.md||' | tr '\n' ' ')
skill-auditor batch $skills --store
- run: ./scripts/detect-duplication.sh
- uses: actions/upload-artifact@v4
with:
name: audit-reports
path: .context/audits/Block PRs with C-grade skills:
# .github/workflows/skill-quality-gate.yml
name: Skill Quality Gate
on: pull_request
jobs:
quality-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
- name: Build skill-auditor
run: bun run build:skill-auditor
- name: Check changed skills
run: |
for skill in $(git diff --name-only origin/main | grep "skills/.*/SKILL.md" | sed 's|skills/||;s|/SKILL.md||'); do
skill-auditor evaluate "$skill" --json --store
done
skill-auditor batch $(git diff --name-only origin/main | grep "skills/.*/SKILL.md" | sed 's|skills/||;s|/SKILL.md||' | tr '\n' ' ') --fail-below BAudit reports in .context/audits/*.md must follow the frontmatter-first format:
review_date: YYYY-MM-DD
reviewer: automated audit
skill_location: `skills/<skill-name>/SKILL.md`Use templates/review-report-template.yaml as the canonical format source, then validate generated reports with:
././scripts/validate-review-format.sh .context/audits/<skill>-YYYY-MM-DD.md| Skill | Score | Grade | Lines |
|-------|-------|-------|-------|
| bdd-testing | 98/120 | A | 64 |Actions:
| Skill Pair | Similarity | Action |
|------------|------------|--------|
| bdd-gherkin ↔ cucumber | 42% | Aggregate |Actions:
35%: Immediate aggregation
scripts-ci-integration.md - CI/CD setupreporting-analysis.md - Interpreting resultsreporting-dashboards.md - Visualizationassets
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
references
scripts