Full release notes with details on each version: GitHub Releases
- Fix:
sanitize_labelwas double-encoding HTML entities in the interactive graph (&lt;instead of<) — removedhtml.escape()fromsanitize_label; callers that inject directly into HTML now callhtml.escape()themselves (#66) - Fix:
--wikiflag missing fromskill.mdusage table (#55)
- Fix: Louvain fallback hangs indefinitely on large sparse graphs — added
max_level=10, threshold=1e-4to prevent infinite loops while preserving community quality (#48)
- Fix: Windows UnicodeEncodeError during
graphify install— replaced arrow character with->in all print statements (#47) - Add: skill version staleness check — warns when installed skill is older than the current package, across all platforms (#46)
- Add:
follow_symlinksparameter todetect()andcollect_files()— opt-in symlink following with circular symlink cycle detection (#33) - Fix:
watch.pynow usescollect_files()instead of manual rglob loop for consistency - Docs: Codex uses
$graphify .not/graphify .(#36) - Test: 5 new symlink tests (367 total)
- Add: C# inheritance and interface implementation extraction —
base_listnow emitsinheritsedges for both simple (identifier) and generic (generic_name) base types (#45) - Add:
graphify query "<question>"CLI command — BFS/DFS traversal ofgraph.jsonwithout needing Claude Code skill (--dfs,--budget N,--graph <path>flags) - Test: 2 new C# inheritance tests (362 total)
- Add: Objective-C support (
.m,.mm) —@interface,@implementation,@protocol, method declarations,#importdirectives, message-expression call edges - Add:
--obsidian-dir <path>flag — write Obsidian vault to a custom directory instead ofgraphify-out/obsidian - Fix: semantic cache was only saving 4/17 files — relative paths from subagents now resolved against corpus root before existence check
- Fix: 75 validation warnings per run for
file_type: "rationale"— added"rationale"toVALID_FILE_TYPES - Test: 6 Objective-C tests;
.m/.mmadded totest_collect_files_from_dirsupported set (360 total)
- Add: multi-platform support — Codex (
skill-codex.md), OpenCode (skill-opencode.md), OpenClaw (skill-claw.md) - Add:
graphify install --platform <codex|opencode|claw>routes skill to correct config directory - Add:
graphify codex install/opencode install/claw install— writes AGENTS.md for always-on graph-first behaviour - Add:
graphify claude uninstall/codex uninstall/opencode uninstall/claw uninstall - Add: MIT license
- Fix:
build()was silently dropping hyperedges when merging multiple extractions - Refactor:
extract.py2527 → 1588 lines — replaced 12 copy-pasted language extractors withLanguageConfigdataclass +_extract_generic() - Docs: clustering is graph-topology-based (no embeddings) — explained in README
- Docs: all missing flags documented (
--cluster-only,--no-viz,--neo4j-push,query --dfs,query --budget,add --author,add --contributor)
- Add:
graphify claude install— writes graphify section to local CLAUDE.md + PreToolUse hook in.claude/settings.json - Add:
graphify claude uninstall— removes section and hook - Add:
graphify hook install— installs post-commit and post-checkout git hooks (platform-agnostic) - Add:
graphify hook uninstall/hook status - Add:
graphify benchmarkCLI command - Fix: node deduplication documented at all three layers
- Fix: follow-up questions now check for wiki first (graphify-out/wiki/index.md) before falling back to graph.json
- Fix: --update now auto-regenerates wiki if graphify-out/wiki/ exists
- Fix: community articles show truncation notice ("... and N more nodes") when > 25 nodes
- UX: pipeline completion message now lists all available flags and commands so users know what graphify can do
- Add:
--wikiflag — generates Wikipedia-style agent-crawlable wiki from the graph (index.md + community articles + god node articles) - Add:
graphify/wiki.pymodule withto_wiki()— cross-community wikilinks, cohesion scores, audit trail, navigation footer - Add: 14 wiki tests (245 total)
- Fix: follow-up question example code now correctly splits node labels by
_to extract verb prefixes (previous version useddef/fnprefix matching which always returned zero results)
- Fix: follow-up questions after pipeline now answered from graph.json, not by re-exploring the directory (was 25 tool calls / 1m30s; now instant)
- Skill: added "Answering Follow-up Questions" section with graph query patterns
- Perf: semantic extraction chunks 12-15 → 20-25 files (fewer subagent round trips)
- Perf: code-only corpora skip semantic dispatch entirely (AST handles it)
- Perf: print timing estimate before extraction so the wait feels intentional
- Fix: 5 skill gaps - --graphml in Usage table, --update manifest timing, query/path/explain graph existence check, --no-viz clarity
- Refactor: dead imports removed (shutil, sys, inline os); _node_community_map() helper replaces 8 copy-pasted dict comprehensions; to_html() split into _html_styles() + _html_script(); serve.py call_tool() if/elif chain replaced with dispatch table
- Test: end-to-end pipeline integration test (detect → extract → build → cluster → analyze → report → export)
- Replace pyvis with custom vis.js HTML renderer - node size by degree, click-to-inspect panel with clickable neighbors, search box, community filter, physics clustering
- HTML graph generated by default on every run (no flag needed)
- Token reduction benchmark auto-runs after every pipeline on corpora over 5,000 words
- Fix: 292 edge warnings per run eliminated - stdlib/external edges now silently skipped
- Fix:
build()cross-extraction edges were silently dropped - now merged before assembly - Fix:
pip install graphify→pip install graphifyyin skill Step 1 (critical install bug) - Add:
--graphmlflag implemented in skill pipeline (was documented but not wired up) - Remove: pyvis dependency, dead lib/ folder, misplaced eval reports from tests/
- Add: 5 HTML renderer tests (223 total)
- Fix:
pyproject.tomlstructure -requires-pythonanddependencieswere incorrectly placed under[project.urls] - Add: GitHub repository and issues URLs to PyPI page
- Add:
keywordsfor PyPI search discoverability - Docs: README clarifies Claude Code requirement, temporary PyPI name, worked examples footnote
- Add: CI badge to README (GitHub Actions, Python 3.10 + 3.12)
- Add: ARCHITECTURE.md - pipeline overview, module table, extraction schema, how to add a language
- Add: SECURITY.md - threat model, mitigations, vulnerability reporting
- Add:
worked/directory with eval reports (karpathy-repos 71.5x benchmark, httpx, mixed-corpus) - Fix: pytest not found in CI - added explicit
pip install pyteststep - Fix: README test count (163 → 212), language table, worked examples links
- Docs: README reframed as Claude Code skill; Karpathy problem → graphify answer framing
Initial release.
- 13-language AST extraction via tree-sitter (Python, JS, TS, Go, Rust, Java, C, C++, Ruby, C#, Kotlin, Scala, PHP)
- Leiden community detection via graspologic with oversized community splitting
- SHA256 semantic cache - warm re-runs skip unchanged files
- MCP stdio server -
query_graph,get_node,get_neighbors,shortest_path,god_nodes - Memory feedback loop - Q&A results saved to
graphify-out/memory/, extracted on--update - Obsidian vault export with wikilinks, community tags, Canvas layout
- Security module - URL validation, safe fetch with size cap, path guards, label sanitisation
graphify installCLI - copies skill to~/.claude/skills/and registers inCLAUDE.md- Parallel subagent extraction for docs, papers, and images