💻 Développement

sqlite-guide

Guide pour écrire des requêtes SQL et concevoir des schémas SQLite avec les bonnes pratiques.

⚡ Installation & lancement en 1 commande

Copiez-collez dans votre terminal : le skill s'installe dans ~/.claude/skills et Claude Code se lance directement dessus.

macOS / Linux
curl -fsSL https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.sh | sh -s -- sqlite-guide --launch
Windows (PowerShell)
iex "& { $(iwr -useb https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.ps1) } sqlite-guide -Launch"

🚀 Déjà installé ?

claude "/sqlite-guide"

Ou tapez /sqlite-guide dans une session Claude Code, ou décrivez simplement votre besoin — le skill se déclenche automatiquement via le skill-router.

🔑 Déclencheurs automatiques

Le skill s'active automatiquement quand votre demande contient :

requête SQLschéma SQLitebase de données SQLitemigration SQLtable SQLitequery SQL

📦 Installation manuelle

git clone https://github.com/khalilbenaz/claude-skills-collection.git cp -r claude-skills-collection/dev-skills/sqlite-guide ~/.claude/skills/

Source : dev-skills/sqlite-guide

📖 Manuel

Guide SQLite

Workflow

  1. Comprendre le besoin : identifier s'il s'agit d'écriture de requêtes, de conception de schéma ou d'optimisation.
  2. Analyser le contexte : examiner le schéma existant si disponible.
  3. Proposer la solution : requête, schéma ou migration adapté.
  4. Valider : vérifier la syntaxe et les bonnes pratiques.

Bonnes pratiques pour les requêtes

-- BON : CTE lisible
with recent_posts as (
  select * from posts
  where created > date('now', '-7 days')
)
select u.name, count(rp.id) as post_count
from users u
join recent_posts rp on rp.author_id = u.id
group by u.id;

Conception de schéma

Tables strictes

Toujours utiliser strict pour garantir le typage :

create table users (
  id text primary key default ('u_' || lower(hex(randomblob(16)))),
  created text not null default (strftime('%Y-%m-%dT%H:%M:%fZ')),
  updated text not null default (strftime('%Y-%m-%dT%H:%M:%fZ')),
  email text not null unique,
  name text not null
) strict;

Conventions

ÉlémentConvention
Clé primaire`id text primary key default ('xx_' \\lower(hex(randomblob(16))))` — préfixe unique par table
Timestampsstrftime('%Y-%m-%dT%H:%M:%fZ') — toujours en format ISO 8601
created/updatedColonnes après la clé primaire, avant les données métier
Modifications de tempsUtiliser strftime (pas datetime)

Trigger pour updated

create trigger users_updated_timestamp after update on users begin
  update users set updated = strftime('%Y-%m-%dT%H:%M:%fZ') where id = old.id;
end;

Patterns courants

Pagination

select * from posts
order by created desc
limit 20 offset 0;  -- page 1

Recherche textuelle

-- Recherche simple
select * from posts where title like '%terme%';

-- Avec FTS5 (plus performant)
create virtual table posts_fts using fts5(title, content, content=posts);
select * from posts_fts where posts_fts match 'terme';

Upsert

insert into settings (key, value)
values ('theme', 'dark')
on conflict (key) do update set
  value = excluded.value,
  updated = strftime('%Y-%m-%dT%H:%M:%fZ');

Règles