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 (et non d'article) : 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). Installation uv tool install graphifyy && graphify install. Fonctionne dans Claude Code, Cursor, Codex, Gemini CLI, GitHub Copilot et une quinzaine d'autres clients.
⭐⭐ Les trois partis pris, et 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. C'est la même famille de raisonnement que l'exécutable qui bat la consigne dans [[lassiege-usine-logicielle-heure-ia-2026-07-28]].
⭐ Le graphe remplace le grep, et c'est l'argument d'usage.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 est parlant : path "FastAPI" "ModelField" rend un chemin en trois sauts avec le type de chaque arête. On demande une relation, pas une occurrence de chaîne. C'est exactement le bénéfice que Hugo Lassiège attribue à GitNexus dans [[lassiege-usine-logicielle-heure-ia-2026-07-28]] — « chercher un flux d'exécution plutôt que grepper un nom de fonction », et « le vrai sujet c'est pas la vitesse, c'est de détecter tous les effets de bord ».
⭐⭐ Le tableau de benchmarks, lu correctement — la ligne qui compte n'est pas une victoire. | 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é, pas la qualité de réponse. Présenter graphify comme « meilleur que le RAG » serait une surinterprétation que ses propres chiffres démentent. 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 (cf. [[comparethemarket-context-retrieval-ai-code-review-gkg-rag-2026-03-06]], repris dans [[sfeir-code-review-anneau-contraintes-2026-07-30]]). Deux mesures indépendantes convergent sur la supériorité du graphe structuré pour le code — et graphify ajoute que la construction ne coûte rien.
Couverture des sources — plus large que « du code ». 36 grammaires tree-sitter couvrant ~40 langages (jusqu'à CUDA, Metal, Zig, Elixir, Julia, Dart, SystemVerilog, Delphi, Fortran), plus SQL, Terraform/HCL, Apex Salesforce, les configurations MCP (.mcp.json, claude_desktop_config.json — extrait serveurs, paquets et variables d'environnement requises), les manifestes de paquets (pyproject.toml, go.mod, pom.xml — un nœud canonique par paquet, donc un hub unique), 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 » extrait 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, ce qui répond directement à la dette de compréhension : on peut demander pourquoi et non seulement quoi.
Fraîcheur du graphe, trois mécanismes. cache SHA256 (seuls les fichiers changés sont retraités), --watch (reconstruction instantanée sur sauvegarde d'un fichier de code, AST seul, sans LLM ; les 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 explicitement justifié pour les flux multi-agents : « the graph stays current between waves automatically ».
Sorties pour agents.--wiki produit des articles de style encyclopédique 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 (Gephi, yEd), Neo4j (cypher), SVG. → Le graphe est fait pour être lu par une machine, avec plusieurs portes d'entrée selon l'outil. Même intention que le markdown servi aux agents dans [[martinho-allen-cloudflare-markdown-for-agents-2026-02-12]].
⚠️ Vie privée — la frontière est fine, il faut la connaître.
Local. code (tree-sitter), vidéo et audio (faster-whisper). Un corpus code seul tourne hors ligne, et --code-only force ce mode sur un dépôt mixte.
Envoyé au modèle. documents, PDF, images. En mode headless, une clé d'API est requise, avec une 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. , pas de suivi d'usage.
⚠️ Mais un journal de requêtes est é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 lui-même. 1. La branche main est périmée. Elle porte un README de l'ère v1 (7 Ko) qui décrit « a Claude Code skill » mono-client, met en avant l'argument « 71,5× moins de tokens » sur un corpus Karpathy de 52 fichiers, et pointe encore safishamsi/graphify. La branche par défaut est v8 (57 Ko), qui décrit un produit multi-client et met en avant les benchmarks LOCOMO/LongMemEval. Lire v8, jamais main. 2. Le nom du paquet : pip install graphifyy (deux y). La CLI et la commande de skill restent graphify.
Modèle économique, à voir venir. 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, essai gratuit annoncé. Open source local d'un côté, service continu hébergé de l'autre : schéma classique, à intégrer dans toute décision d'adoption.
⚠️ La traction demande une lecture prudente.103 187 étoiles en quatre mois est un rythme exceptionnel, même pour un outil viral. Le chiffre est celui que rend l'API GitHub le 6 août 2026 ; il ne dit rien de l'usage réel, et le site officiel du projet en affiche encore 3 700 (cf. [[graphify-net-annuaire-ia-coding-2026-08-06]]), signe que la communication n'a pas suivi. Citer l'étoile comme signal d'attention, jamais comme mesure d'adoption.
Méta / à relier. même famille que [[skill-gibbs-hyperresearch-2026-08-03]] (magasin persistant, provenance, sortie lisible par un agent), mais sur le code plutôt que sur la recherche documentaire ; réalise en produit ce que Hugo Lassiège obtient de GitNexus dans [[lassiege-usine-logicielle-heure-ia-2026-07-28]] ; convergence chiffrée avec [[comparethemarket-context-retrieval-ai-code-review-gkg-rag-2026-03-06]] et [[sfeir-code-review-anneau-contraintes-2026-07-30]] sur graphe AST contre RAG vectoriel ; s'inscrit dans le contexte codifié de [[vasilopoulos-codified-context-infrastructure-ai-agents-2026-02-24]] et les plateformes de contexte de [[memodb-acontext-context-data-platform-agents-2025-12-11]] ; parenté de forme avec les autres fiches de skill, [[skill-pocock-grill-with-docs-2026-06]] ; mécanique des skills dans [[agent-skills-anthropic-2025-10-16]], [[shihipar-claude-code-lessons-building-skills-2026-06-03]] et [[vincent-superpowers-agentic-skills-framework-github-2026-04-02]]. ⚠️ Désambiguïsation : le site graphify.net est une propriété distincte de graphify.com (la plateforme commerciale) — voir la fiche dédiée.
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