---
page: checklist
sous-page: (aucune)
route: /checklist
statut: draft
version: 0.1
transverse-liées: [mcp-integration (TBD), auth (TBD), conventions, i18n, design-system]
date: 2026-06-03
---

# CdC — `checklist`

> **Base de connaissances** = clone (amélioré) de [specification.website](https://specification.website/), **déjà cloné** dans [`docs/specification/`](../../specification/) (128 fiches, 10 catégories, 4 statuts). Sert de **référentiel d'audit**, de **recommandations**, et est exposée via un **MCP interne (privé + public limité)**. C'est le **socle des sections « Qualité »** de toutes les autres pages.

## 1. Objectif

Centraliser « ce qu'un bon site web doit faire » comme **source unique de vérité** réutilisable dans tout SEO Insight : parcourir/chercher les standards, **auditer une URL** contre eux, générer des **checklists**, et les **exposer aux agents** via MCP.

## 2. Périmètre

- **Dans** : navigation des fiches (par **catégorie** / **statut**) ; recherche plein-texte ; fiche détail (markdown + sources + statut) ; **checklist** filtrable (style audit) ; **audit d'URL** (scan → manquements priorisés) ; **recommandations contextuelles** ; **MCP** (privé + **public limité**) ; mise à jour depuis la source.
- **Hors** : production de contenu (→ `contenu`) ; le scraping lui-même (→ Firecrawl) ; le détail du serveur MCP (→ `_transverse/mcp-integration`).

## 3. User stories

- Je parcours les standards **par catégorie / statut** et je lis une fiche.
- Je **recherche** un sujet (« CSP », « hreflang »).
- J'**audite une URL** → je reçois les **manquements** priorisés (required d'abord).
- J'obtiens une **checklist** pour un type de page.
- *(Agent)* via MCP, je récupère `get_checklist` / `audit_url` / `get_topic`.

## 4. Fonctionnalités

- F1 — **Navigation** des 128 fiches : 10 catégories × 4 statuts (`required / recommended / optional / avoid`).
- F2 — **Recherche** plein-texte.
- F3 — **Fiche détail** : markdown rendu + frontmatter (statut, sources, liens).
- F4 ⭐ — **Audit d'URL** : scan (**Firecrawl**) → confronte aux fiches → **rapport des manquements** trié par statut.
- F5 ⭐ — **Checklist générée** (catégorie / statut / type de page), exportable.
- F6 ⭐ — **Recommandations contextuelles** : pour une page de l'app (ex. fiche produit), surface les fiches pertinentes (`structured-data`, `image-optimization`…).
- F7 — **MCP interne** : `get_categories`, `list_topics`, `get_topic`, `search`, `get_checklist`, `audit_url` — **privé + public limité** (rate-limited).
- F8 — **Mise à jour** de la KB depuis la source (versionnée).

## 5. UI / écrans

- Liste catégories + filtres statut ; recherche ; **lecteur de fiche** (markdown) ; **écran d'audit** (URL → rapport) ; checklist exportable. Tokens `design.md`. Responsive. Conventions R1/R2.

## 6. Données & actions

- **Affiché** : catégories/fiches, fiche détail, rapport d'audit, checklist.
- **Actions** : naviguer/filtrer, rechercher, **auditer une URL**, générer/exporter une checklist, (admin) mettre à jour la KB.

## 7. Modèle de données

```
spec_topic(slug, title, category, status, url, markdown, sources[], related[], updated)   -- depuis docs/specification/
audit(id, url, site_id?, run_at, results[])   -- results: { slug, status, ok, detail }
```

- Alimenté par le clone `docs/specification/` (source de vérité du contenu).
- L'audit peut être **rattaché à un site** (`site_id?`) ou autonome (n'importe quelle URL).

## 8. API Hono

- `GET /checklist/categories` · `GET /checklist/topics` *(filtres catégorie/statut)* · `GET /checklist/topics/:slug`
- `GET /checklist/search?q=`
- `GET /checklist/checklist` *(style audit, filtrable)*
- `POST /checklist/audit` *(body: url, site_id?)* → rapport
- **MCP** : mêmes capacités exposées comme tools (voir §10 + `_transverse/mcp-integration`).

## 9. Capacités requises *(fonctionnel — mapping modules TBD)*

Stockage/recherche des fiches · **audit d'URL** (Firecrawl + règles par fiche) · recommandations contextuelles · **exposition MCP** · mise à jour depuis la source.

## 10. Tools / capacités MCP

- `get_categories` · `list_topics` · `get_topic` · `search` · `get_checklist` · `audit_url`
- **Visibilité** : **privé** (toutes capacités) **+ public limité** (lecture/recherche rate-limited). ⚠️ C'est **le** cas explicite « public limité » de l'app — voir `_transverse/mcp-integration` et `_transverse/auth`.

## 11. i18n

- Fiches **en anglais** (source). UI localisée. **Traduction des fiches** = option future.

## 12. Qualité *(réf. fiches des 128 par slug)*

- **Dogfooding** : SEO Insight doit **s'auto-auditer** contre sa propre KB.
- **Agent-readiness** : l'app expose un MCP → `mcp-and-tool-discovery`, `link-headers`, `structured-data-for-agents`.
- **Sécu** : rate-limit du **public limité** ; auth pour le privé ; `cookie-attributes`.
- **Indexation** : l'app est privée (noindex) ; le **MCP public limité** expose la KB de façon contrôlée.

## 13. Critères d'acceptation

- [ ] Navigation par catégorie/statut + recherche renvoient les bonnes fiches.
- [ ] `audit_url` sur une page renvoie les **manquements triés par statut** (required d'abord).
- [ ] `get_checklist` renvoie une checklist filtrable.
- [ ] Les tools MCP répondent en **privé** ; le **public limité** est **rate-limited**.
- [ ] La KB se met à jour depuis `docs/specification/` sans casser les liens (slugs stables).

## 14. Dépendances & risques · questions ouvertes

- **Dépend de** : [`docs/specification/`](../../specification/) (contenu KB), **Firecrawl** (audit), `_transverse/mcp-integration` (serveur MCP), `_transverse/auth` (privé/public).
- **Risques** : règles d'audit par fiche (toutes ne sont pas auto-vérifiables) ; périmètre exact du **public limité**.
- **Questions ouvertes** : quelles fiches sont **auto-auditables** (vs informatives) ? quota/rate-limit du public limité ? fréquence de re-sync de la KB.
