Discover and apply best practice skills automatically. Gap analysis scans the codebase, skill-search fills gaps from the registry, skill-classifier separates proactive from reactive skills, quality-standards generates CLAUDE.md guidance, self-review compares code against checklists, and verification-strategy sets up test/lint/typecheck feedback loops.
86
86%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Advisory
Suggest reviewing before use
Classify installed skills so downstream skills know which to apply universally and which to apply on demand.
Not all skills should be reviewed on every commit. Error handling patterns apply to all code. SQLite indexing patterns only apply when you're writing database code. Reviewing every skill on every commit wastes time and dilutes focus. Classification solves this.
Skills whose patterns should be applied to all code and reviewed at every commit or self-review.
Characteristics:
## Checklist section with items that apply broadlyExamples: error handling, security headers, accessibility, structured logging, testing patterns
Skills whose patterns are used only when working in that specific domain.
Characteristics:
Examples: SQLite best practices, JWT security, WebSocket patterns, file upload handling
Find all installed SKILL.md files:
find .tessl/tiles -name "SKILL.md" 2>/dev/nullFor each SKILL.md, read it and determine:
## Checklist section? Skills with checklists are candidates for proactive.| Skill topic | Likely classification | Reasoning |
|---|---|---|
| Error handling patterns | Proactive | Every codebase needs error handling |
| Security headers/CORS | Proactive | Every HTTP server needs security |
| Accessibility/ARIA | Proactive | Every UI needs accessibility |
| Structured logging | Proactive | Every app should have proper logging |
| Testing patterns | Proactive | Every feature needs tests |
| SQLite best practices | Reactive | Only when using SQLite |
| JWT authentication | Reactive | Only when implementing auth |
| WebSocket patterns | Reactive | Only when using WebSockets |
| File upload handling | Reactive | Only when handling uploads |
| React patterns | Borderline | Proactive if the project uses React for all UI |
Borderline cases: If a skill is framework-specific but the project uses that framework for everything (e.g., React patterns in an all-React frontend), classify it as proactive. If the framework is used in only part of the project, classify it as reactive.
Update .skill-discovery-state.json with the classification:
{
"proactiveSkills": [
".tessl/tiles/acme/error-handling/skills/error-handling/SKILL.md",
".tessl/tiles/acme/security-headers/skills/security-headers/SKILL.md",
".tessl/tiles/acme/web-accessibility/skills/web-accessibility/SKILL.md"
],
"reactiveSkills": [
".tessl/tiles/acme/jwt-security/skills/jwt-security/SKILL.md",
".tessl/tiles/acme/sqlite-patterns/skills/sqlite-patterns/SKILL.md"
]
}Store the full paths to the SKILL.md files so downstream skills can read them directly.
Run the quality-standards skill to generate a CLAUDE.md quality block from your proactive skills.
When new skills are installed mid-session, re-run classification for the new skills only. Add them to the appropriate list — don't reclassify skills that are already classified.