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
Search the Tessl registry for skills that fill identified gaps, then install and read them.
Always use the CLI via Bash for searching, not MCP tools. The MCP search tool only returns tiles and misses community skills.
tessl search --type skills "<query>" # Find skills
tessl install <workspace/tile-name> --yes # Install tile
tessl install github:<user>/<repo> --skill <skill-name> --yes # Install community skillSkills in the registry come in two flavours:
You need both. The generic skill tells you what to do; the specific skill tells you how to do it in your stack.
Read .skill-discovery-state.json and look at the gaps array. Each entry is a domain that needs skills.
For every gap domain, search for general best practice skills first. These apply to any project.
Search for every Core domain from the gap report — do not skip any:
| Domain | Query |
|---|---|
| Error handling | "error handling best practices" |
| Security | "security best practices" |
| Testing | "testing best practices" |
| Database | "database design best practices" |
| Structured logging | "structured logging best practices" |
| Accessibility | "accessibility best practices" |
| Health checks | "health check best practices" |
| Input validation | "input validation best practices" |
Now search again using the project's actual stack. Read package.json, requirements.txt, go.mod, or equivalent to identify the technologies in use, then search with the technology name included.
Include the framework/library name in every query:
| Stack detected | Query |
|---|---|
| Express | "Express security", "Express error handling", "Express testing" |
| React | "React best practices", "React testing", "React accessibility" |
| SQLite | "SQLite best practices", "SQLite Node" |
| Flask | "Flask security", "Flask testing" |
| PostgreSQL | "PostgreSQL best practices" |
| Any framework | "<framework> best practices", "<framework> testing" |
Why two passes? A search for "security best practices API" may return Flask-specific results when you're using Express. A search for "Express security" finds the Express-specific skill directly. The generic search catches universal patterns; the specific search catches framework implementations.
For each search result, decide whether to install. Install a skill if:
Prefer higher-scored results. Results with uplift scores (e.g., ↑6.18x) have been measured to improve code quality.
Skip a skill if:
Install every relevant skill found. Read each SKILL.md in full before writing any code. Do not skim.
tessl install <workspace/tile-name> --yesThen read the installed SKILL.md:
cat .tessl/tiles/<workspace>/<tile-name>/skills/<skill-name>/SKILL.mdUpdate .skill-discovery-state.json:
{
"done": true,
"skillsInstalled": true,
"summary": "Pass 1: searched 6 domains, installed error-handling-patterns, security-basics. Pass 2: searched Express+SQLite, installed express-security-basics, sqlite-node-best-practices. No relevant skills found for: structured logging, health checks."
}Set skillsInstalled to true if you installed any skills (keeps gap-analysis checks frequent) or false if not (gap-analysis checks become less frequent via adaptive backoff).
Run the skill-classifier skill to classify your installed skills as proactive or reactive.