graphify — « Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store. »
Fiche de Skill : graphify de Safi Shamsi (Graphify Labs, Y Combinator S26) transforme un projet entier — code, docs, PDF, images, vidéos — en graphe de connaissance interrogeable, invocable par /graphify depuis Claude Code, Cursor, Codex, Gemini CLI, GitHub Copilot et une quinzaine d'autres clients.
Par **Safi Shamsi** — créateur et mainteneur de graphify// Source github.com ↗/Lecture 2 min/.md/
graphify (Safi Shamsi, Graphify Labs, Y Combinator S26) transforme un projet entier en graphe de connaissance interrogeable, invocable par /graphify depuis Claude Code, Cursor, Codex, Gemini CLI et une quinzaine d'autres clients. Observé le 6 août 2026 : 103 187 étoiles pour un dépôt créé le 3 avril, Apache-2.0, Python.
Trois partis pris fondent le projet. Le code est parsé localement en AST tree-sitter, sans LLM : déterministe, rien ne quitte la machine, aucune clé d'API requise pour un corpus purement code. Chaque arête porte sa provenance — EXTRACTED si elle est explicite dans la source, INFERRED si graphify l'a résolue —, « so you can tell what was read directly from what was inferred ». Et le projet se définit contre le RAG vectoriel : « Not a vector index. No embeddings, no vector store: a real graph you traverse. »
Not a vector index. No embeddings, no vector store: a real graph you traverse.
— **Safi Shamsi** — créateur et mainteneur de graphify , github.com
L'usage remplace le grep.query rend un sous-graphe pour une question en langue naturelle, path A B trace le chemin entre deux entités, explain déplie un concept. Trois sorties : un graphe interactif, un rapport lisible (god nodes, connexions surprenantes, questions suggérées) et un graph.json persistant, interrogeable des semaines plus tard.
La couverture dépasse le code : 36 grammaires tree-sitter, mais aussi SQL, Terraform, Apex, les configurations MCP, les manifestes de paquets, Office, PDF, images, et la vidéo transcrite localement. Les commentaires # WHY: et le raisonnement de conception deviennent des nœuds à part entière reliés au code qu'ils expliquent.
Les benchmarks méritent une lecture précise. Sur LOCOMO, graphify domine le rappel (0,497 contre 0,149 et 0,048) mais perd en exactitude QA (45,3 % contre 49,7 %) ; sur LongMemEval-S il égale un RAG dense à 76 %. La ligne qui compte est ailleurs : « Graph build — LLM credits: 0 ». Le différenciateur défendable est le coût et la traçabilité, pas la qualité de réponse.
Trois précautions. La branche main porte un README périmé de l'ère v1 décrivant un autre produit : lire v8. Le paquet PyPI s'appelle graphifyy, le temps de récupérer le nom. Et un journal de requêtes local est actif par défaut, désactivable par variable d'environnement.
La skill sert par ailleurs de porte d'entrée à une plateforme commerciale en liste d'attente sur graphify.com, qui applique la même approche en continu à l'ensemble du contexte de travail.
À retenir
Nature. skill /graphify + CLI Python, Apache-2.0, distribuée en PyPI sous le nom graphifyy (deux y, le temps de récupérer graphify). uv tool install graphifyy && graphify install. Fonctionne dans Claude Code, Cursor, Codex, Gemini CLI, GitHub Copilot et une quinzaine d'autres clients.
Cadrage clé. le graphe remplace le grep — on demande une relation, pas une occurrence de chaîne. ### Les trois partis pris, et pourquoi ils se tiennent 1. Le code est parsé localement, sans LLM — AST tree-sitter, déterministe, « nothing leaves your machine ». Un corpus purement code ne demande aucune clé d'API et tourne hors ligne ; documents, PDF et images passent en revanche par un modèle. 2. Chaque arête porte sa provenance — EXTRACTED (explicite dans la source), INFERRED (résolue par graphify), AMBIGUOUS dans le rapport : « You always know what was found vs guessed. » 3. Pas d'index vectoriel — ni embeddings ni magasin de vecteurs, un graphe qu'on traverse. Les trois se renforcent : le déterminisme rend le coût nul, le coût nul rend la reconstruction fréquente possible, et l'étiquetage des arêtes rend le résultat auditable. ### Les benchmarks, lus correctement | Benchmark | Métrique | graphify | Champ | |---|---|---|---| | LOCOMO (n=300) | recall@10 | 0,497 | supermemory 0,149 · mem0 0,048 | | LOCOMO (n=300) | exactitude QA | 45,3 % | supermemory 49,7 % · mem0 27,3 % | | LongMemEval-S (n=50) | exactitude QA | 76 % | à égalité avec un RAG dense | | Construction du graphe | crédits LLM | 0 | facturé au token ailleurs | graphify domine largement le rappel, perd en exactitude QA, égale le RAG dense sur le second benchmark, et construit son graphe gratuitement. Le différenciateur défendable est donc le coût et la traçabilité, non la qualité de réponse : présenter graphify comme « meilleur que le RAG » serait démenti par ses propres chiffres. Protocole crédité : même harnais, même modèle, mêmes budgets, juge validé en aveugle contre un second juge (90,6 % d'accord, kappa de Cohen 0,81). À rapprocher du seul chiffre comparable du corpus : Compare the Market mesurait un graphe AST à ~70 % contre ~58 % pour un RAG vectoriel sur 79 merge requests, le RAG faisant pire que pas de contexte du tout — voir [[comparethemarket-context-retrieval-ai-code-review-gkg-rag-2026-03-06]]. Deux mesures indépendantes convergent sur la supériorité du graphe structuré pour le code. ### Interrogation et couverture query "<question>" rend un sous-graphe pour une question en langue naturelle, path A B trace le chemin entre deux entités, explain X déplie le voisinage d'un concept. L'exemple du README : path "FastAPI" "ModelField" rend un chemin en trois sauts avec le type de chaque arête. Même bénéfice que celui attribué à GitNexus dans [[lassiege-usine-logicielle-heure-ia-2026-07-28]]. Couverture plus large que « du code » : 36 grammaires tree-sitter (~40 langages, jusqu'à CUDA, Metal, Zig, Elixir, Julia, Dart, SystemVerilog, Fortran), plus SQL, Terraform/HCL, Apex Salesforce, les configurations MCP (.mcp.json, claude_desktop_config.json — serveurs, paquets et variables d'environnement requises), les manifestes de paquets (pyproject.toml, go.mod, pom.xml, un nœud canonique par paquet), Office, Google Workspace, PDF, images, vidéo et audio. Graphifier ses propres configurations MCP est un usage inattendu et immédiatement utile pour cartographier sa surface d'outillage. ### Le « pourquoi » comme objet de première classe Les commentaires # NOTE:, # WHY:, # HACK:, les docstrings et le raisonnement de conception présent dans la documentation deviennent des nœuds séparés reliés au code qu'ils expliquent. L'intention est traitée comme une entité du graphe : on peut demander pourquoi, non seulement quoi. ### Fraîcheur et sorties Trois mécanismes de fraîcheur : cache SHA256 (seuls les fichiers changés sont retraités), --watch (reconstruction instantanée sur sauvegarde, AST seul, sans LLM ; documents et images notifient qu'un --update est nécessaire), et graphify hook install (hook post-commit, sans processus d'arrière-plan). Le mode --watch est justifié pour les flux multi-agents : « the graph stays current between waves automatically ». Sorties pour agents : --wiki produit des articles par communauté avec un index.md — « point any agent at index.md and it can navigate the knowledge base by reading files instead of parsing JSON » — et --mcp démarre un serveur MCP stdio. Exports Obsidian, GraphML, Neo4j (cypher), SVG. ### Vie privée, frontière fine | Traitement | Où | |---|---| | Code (tree-sitter), vidéo et audio (faster-whisper) | local ; --code-only force ce mode sur un dépôt mixte | | Documents, PDF, images | envoyés au modèle ; chaîne de priorité automatique Gemini → Kimi → Claude → OpenAI → DeepSeek → Azure → Bedrock → Ollama | Kimi route vers des serveurs Moonshot AI en Chine — le README le signale, et --backend ollama donne le mode entièrement local. Pas de télémétrie ni de suivi d'usage, mais un journal de requêtes écrit par défaut dans ~/.cache/graphify-queries.log (horodatage, question, corpus, nœuds rendus, durée ; les sous-graphes ne sont pas stockés). Désactivation par GRAPHIFY_QUERY_LOG_DISABLE=1. Local, mais actif sans opt-in : à connaître avant un déploiement en contexte sensible. ### Deux pièges documentaires du dépôt 1. La branche main est périmée : elle porte un README de l'ère v1 (7 Ko) décrivant « a Claude Code skill » mono-client, met en avant l'argument « 71,5× moins de tokens » sur un corpus de 52 fichiers, et pointe encore safishamsi/graphify. La branche par défaut est v8 (57 Ko). Lire v8, jamais main. 2. Le nom du paquet : pip install graphifyy avec deux y ; la CLI et la commande de skill restent graphify. ### Modèle économique et traction La skill open source est la porte d'entrée d'une plateforme commerciale sur graphify.com — « the always-on layer… applies the same graph approach to your entire working context: meetings, files, docs, and code, updating continuously in the background », en liste d'attente. Open source local d'un côté, service continu hébergé de l'autre. 103 187 étoiles en quatre mois est un rythme exceptionnel, mais le chiffre ne dit rien de l'usage réel, et le site officiel du projet en affiche encore 3 700 — signe que la communication n'a pas suivi. Citer l'étoile comme signal d'attention, jamais comme mesure d'adoption. Désambiguïsation : le site graphify.net est une propriété distincte de graphify.com, la plateforme commerciale.
Le graphe de connaissance extrait de cette fiche — 9 entités, 24 relations.
Dans ce graphe :graphify · Safi Shamsi · Graphify Labs · provenance d'arête · extraction hybride par type de fichier · tree-sitter · algorithme de Leiden · LOCOMO · LongMemEval