Skip to main content

Unified code + documentation knowledge graph from Sphinx builds and Python AST analysis

Project description

sphinxcontrib-nexus

A unified code + documentation knowledge graph extracted from Sphinx builds and Python AST analysis. Queryable via MCP, CLI, and Python API.

What makes it unique: Nexus is the only tool that puts code structure (call graphs, imports, inheritance, type annotations) and documentation structure (equations, cross-references, citations, theory pages) in the same graph. This enables queries that are impossible with code-only or doc-only tools — like tracing from a literature citation through an equation to the function that implements it.

Quick Start

pip install sphinxcontrib-nexus

As a Sphinx Extension

Add to your docs/conf.py:

extensions = ['sphinxcontrib.nexus']

After sphinx-build, find the graph at <outdir>/_nexus/graph.db (SQLite) and <outdir>/_nexus/graph.json.

Standalone AST Analysis (no Sphinx needed)

nexus analyze src/ --db graph.db

MCP Server (for Claude Code / AI agents)

nexus serve --db graph.db --project-root /path/to/project

Install Skills for Claude Code

nexus setup           # project-local: .claude/skills/
nexus setup --global  # global: ~/.claude/skills/

Configuration

Config value Default Description
nexus_output _nexus Output directory relative to build output
nexus_ast_analyze True Run AST analysis during Sphinx build

What the Graph Contains

Node Types (16)

Type Source Example
file Sphinx RST/doc pages
section Sphinx Labeled sections (:ref: targets)
equation Sphinx Labeled math equations (:eq: targets)
term Sphinx Glossary terms
function Sphinx + AST Python functions
class Sphinx + AST Python classes
method Sphinx + AST Python methods
attribute Sphinx + AST Class attributes
module Sphinx + AST Python modules
data Sphinx Module-level data
exception Sphinx Exception classes
type Sphinx Type aliases
external Auto-detected stdlib, builtins, installed packages (numpy, scipy, ...)
unresolved Auto-detected Referenced but not documented symbols

Edge Types (13)

Edge Meaning Source
contains Parent → child (toctree, module→function, class→method) Sphinx + AST
references Cross-reference (:ref:, :term:) Sphinx
documents Doc page → code symbol (:func:, :class:) Sphinx
equation_ref Doc → equation (:eq:) Sphinx
cites Doc → citation Sphinx
implements Code → equation (inferred from co-occurrence in docs) Merge
calls Function → function AST
imports Module → module AST
inherits Class → parent class AST
type_uses Function → type (from annotations) AST
tests Test → tested function AST
derives Derivation → equation AST

MCP Tools (16)

Exploration

  • query — keyword search across node names
  • context — 360-degree view of a symbol (all connections grouped by type)
  • neighbors — direct connections with direction and type filtering
  • shortest_path — how two concepts connect
  • god_nodes — most connected nodes (entry points)
  • stats — graph-level statistics

Safety & Refactoring

  • impact — blast radius analysis (what breaks if you change X)
  • detect_changes — map git diff to affected symbols
  • rename — safe multi-file rename with confidence tagging
  • retest — minimum set of tests to re-run after changes
  • communities — detect functional groupings

Code + Doc Fusion (unique to Nexus)

  • provenance_chain — citation → equation → code traceability
  • verification_coverage — equation → code → test coverage map
  • staleness — detect docs that drifted from code
  • session_briefing — AI agent context restoration
  • trace_error — trace from failing test to equations on call path
  • migration_plan — plan dependency migration with phased blast radius

MCP Resources (4)

Resource Content
nexus://graph/stats Node/edge counts by type
nexus://graph/communities Functional area summaries
nexus://graph/schema Node types, edge types, ID format
nexus://briefing Session briefing for AI agents

Skills (8)

Installed via nexus setup. Each skill triggers on natural language:

Skill Triggers on
nexus-exploring "How does X work?", "What calls this?"
nexus-impact "Is it safe to change X?", "What tests to re-run?"
nexus-debugging "Why is X failing?", "Which equation is wrong?"
nexus-refactoring "Rename this", "Extract this into a module"
nexus-verification "What's verified?", "Which docs are stale?"
nexus-migration "Plan numpy→jax migration"
nexus-guide "What Nexus tools are available?"
nexus-cli "Analyze the codebase", "Start the server"

Storage

The graph is stored in two formats:

  • SQLite (primary) — indexed queries, FTS5 full-text search, 0.05ms neighbor lookups
  • JSON (secondary) — human-readable, NetworkX node-link format

Python API

from sphinxcontrib.nexus.export import load_sqlite
from sphinxcontrib.nexus.query import GraphQuery

kg = load_sqlite("_nexus/graph.db")
q = GraphQuery(kg)

# What uses numpy.ndarray?
q.query("ndarray", node_types=["external"])

# Blast radius of changing a function
q.impact("py:function:sn_solver.solve_sn", direction="upstream")

# Citation → equation → code chain
q.provenance_chain("py:function:sn_sweep.sweep_spherical")

# Migration plan
q.migration_plan("numpy", "jax")

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sphinxcontrib_nexus-0.4.0.tar.gz (58.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sphinxcontrib_nexus-0.4.0-py3-none-any.whl (67.5 kB view details)

Uploaded Python 3

File details

Details for the file sphinxcontrib_nexus-0.4.0.tar.gz.

File metadata

  • Download URL: sphinxcontrib_nexus-0.4.0.tar.gz
  • Upload date:
  • Size: 58.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sphinxcontrib_nexus-0.4.0.tar.gz
Algorithm Hash digest
SHA256 a41102cba963a193eb7f9ceee862d4d1bc96402f525ca818afcffc7c248aa17f
MD5 7a24603e2172b181300322187159f527
BLAKE2b-256 800f26981047f26f7c027b157fb18afe3243cf960dc4447f2ecaae8115ed6d34

See more details on using hashes here.

Provenance

The following attestation bundles were made for sphinxcontrib_nexus-0.4.0.tar.gz:

Publisher: publish.yml on deOliveira-R/sphinxcontrib-nexus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sphinxcontrib_nexus-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for sphinxcontrib_nexus-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7a7d95e6b33f641b2336aee2dad0130efa8e0ce75e9669317add36df0e101e06
MD5 61a36cce51a7f5f59846cc16961897f5
BLAKE2b-256 c041391b1d2a80244147a489a9e7e9e4790cdd266d0d7235f176e15dd3d3a04f

See more details on using hashes here.

Provenance

The following attestation bundles were made for sphinxcontrib_nexus-0.4.0-py3-none-any.whl:

Publisher: publish.yml on deOliveira-R/sphinxcontrib-nexus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page