Use when running a systematic, self-directed skill-and-NFR audit on a website/web-app project — discovering skills from Tessl and VoltAgent, identifying non-functional-requirement gaps (performance, accessibility, security, SEO, testing, privacy, i18n, ...), and planning/implementing improvements in small, verified, committed phases. Trigger on "skill audit", "NFR audit", "audit this project for skills/gaps", "what skills am I missing", or before starting a multi-phase quality-improvement effort on a site.
72
90%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
A systematic, self-directed audit for any website/web-app project (static site, SPA, SSR, backend API, mobile, library): which skills are missing, which NFRs are relevant but uncovered, and how to fix that in small, verified steps without breaking CI.
Works on any stack — the commands below are examples ("or equivalent"), swap them for the project's actual package manager/tools.
This is a deliberate, periodic full audit, not a replacement for a reactive per-feature gap check. Many projects already have an active Tessl chain (gap-analysis + skill-search + skill-classifier + self-review) that triggers automatically on a new feature or 3+ new files — leave that reactive flow alone and reach for this skill only for an explicit, project-wide audit including NFR checklists and skill installation.
package.json/pyproject.toml/
Cargo.toml and the main documentation (README.md, AGENTS.md,
CLAUDE.md). Determine project type (static/SPA/SSR/backend/mobile/
library), framework, language, hosting, CI/CD.tessl.json (or equivalent) and
.claude/skills//.agents/skills/ — note which domains are already
covered. An installed skill ≠ correctly applied: Phase 3 tests the
application, not just the installation.Search two sources, classify results in a table (category / skill / source / relevance High-Medium-Low / install command), and install everything with relevance High and Medium (skip what's already installed):
tessl_search queries across
performance, a11y, SEO, testing, security, design system, CI, analytics,
copywriting, CRO, GDPR, i18n, error tracking, visual regression — e.g.
tessl_search "accessibility WCAG", full query set in
skill-discovery-searches.md.https://raw.githubusercontent.com/VoltAgent/awesome-agent-skills/main/README.md
for the same domain terms — the exact grep pattern is in the same
reference file.Three rules that always apply here:
tessl_search/tessl_install and any
tessl review_run consume credits. Briefly state the expected number of
skills/installs before installing a large batch.SKILL.md from a GitHub awesome-list
is a supply-chain/prompt-injection risk — scan the content first.Run build, tests, lint, CSS/HTML validation, link check, Lighthouse, axe/visual tests and security audit — skip metrics for domains marked ❌ for this project type in project-type-reference.md (e.g. no Lighthouse a11y/SEO run against a pure backend API). Concrete commands per stack (swap for the project's actual tools):
npx lighthouse <url> --output json, npx axe <url>, npm auditpip-audit, pytest --covcargo audit, cargo testDocument a baseline table before anything changes, e.g.:
| Metric | Current | Target | Status |
|---|---|---|---|
| Lighthouse Performance | 62 | ≥90 | ⚠️ |
npm audit (high+) | 3 | 0 | ❌ |
| Test coverage | 41% | ≥80% | ⚠️ |
Walk the checklist in gap-checklists.md per relevant domain (so not the domains marked ❌ for this project type): performance, accessibility, SEO, testing, security, CI/CD, analytics, design system, marketing/copy, plus automatically identified extra NFRs like i18n/PWA/error handling/monitoring/privacy/content governance/scalability. Classify each GAP by severity: Critical / High / Medium / Low.
Mark each GAP in the privacy/GDPR or legal-risk domains separately — those follow a different path in Phase 5 than a plain mechanical fix.
Where a GAP has a concrete fix, include a short code example in the
finding itself, not just the checklist item — a GAP recorded as "add
loading="lazy" to below-fold images" is more actionable than "improve
lazy loading."
Group GAPs into phases from smallest to largest risk — the default order (quick wins → security hardening → performance → testing → analytics/monitoring → design system → content/marketing) and the corresponding action templates are in improvement-plan-template.md. Every Critical-severity GAP goes first, regardless of which domain it falls in — the default order only applies after the Critical GAPs, and only among GAPs of equal severity.
Per phase, in this order, repeated each time:
feat|fix|docs|test|security|perf|refactor(domain): ...) & pushException: a GAP marked as privacy/GDPR or legal-risk (Phase 3) does not follow this mechanical loop — it requires explicit stakeholder sign-off first (legal basis, retention period, processor question) before step 1, even if the technical fix itself is small.
After each phase, briefly document: what was done, what worked well, what could be better, which new GAPs were discovered, scores before/after. Template in improvement-plan-template.md.
For a recurring audit on a project already covered by a prior full run: rerun only Phase 2 (baseline) and Phase 3 (GAP analysis) against the current state, skipping Phase 0 (discovery) and Phase 1 (skill installation) unless the tech stack or installed skills have materially changed. Compare the new baseline/GAP list against the prior report's "Baseline Scores" and "GAP Analysis" sections and report deltas — this keeps the skill usable as a lightweight pre-deploy/weekly/monthly recheck, not just a one-off.
Final report at docs/skill-audit-report.md (or the project's equivalent
of a docs/ directory): executive summary, installed skills before/after,
baseline scores, GAP analysis per domain by severity, improvement plan,
implementation results per phase, retrospectives, open non-code actions
(including unreachable discovery sources and GAPs awaiting stakeholder
sign-off), recommendations.
Update AGENTS.md/CLAUDE.md in the same commit as an architectural
change — the commit, CI, and verification rules already live in Phase 5,
don't repeat them here.