Skip to main content
The Davenporter
Essays Builds Now About
Theme
Palette

All builds

Freight Floor Multiplayer forklift game ast-graph TypeScript cosm / topocosm Go / Python SmartRouter Python Electric Sheep Python / SQL
  1. Home
  2. Builds
  3. ast-graph
TypeScript

ast-graph: a code graph so coding agents read less

Coding agents waste time paging through whole files to find one function. ast-graph indexes your repo so the agent asks for exact line ranges, callers, and covering tests instead.

GitHub: ast-graph ↗ Read the essay →
Illustration of an engineer buried in printed code pages beside an engineer using a glowing graph to open one exact drawer.
ast-graph: the agent asks the graph where to look, then reads only those lines.
What it does

ast-graph in plain terms

ast-graph is a plugin for Antigravity and Claude Code. It parses your repo into a local SQLite graph of symbols, line ranges, calls, field reads and writes, routes, and tests. The agent queries the graph through MCP tools before it opens a file, so it reads the lines it needs and runs the tests that cover the change.

How it works

Three things to know

  • The index lives in the repo under .ast-graph and is excluded from git automatically, one database per repo.
  • Every tool answer puts a short summary first and stays under a fixed size, so one query can't flood the context window.
  • Blast radius and test lookup follow calls and imports across packages, then return a single test command to run.
Results

What it changes on a real repo

Measured on FreightFloor (161 TypeScript files, indexed in 14 seconds) on November 6, 2026.
TaskWithout ast-graphWith ast-graph
Find what a shared schema change breaksgrep -rn: 32.6 MB of output. rg: 5 files, 259 KB to read3.7 KB: 72 symbols in 4 packages and the 6 test files to run
Find one function in a 3,126 line fileRead the whole file, 110 KB3.7 KB outline: 150 symbols with line ranges
Find who writes a field (maxDrivers)rg: 65 lines, reads and writes mixed18 writes, 16 reads, 4 declarations, each with its function
Pick tests after a lobby change53 test files4 test files and one vitest command
Learn more

Related essays

100% of your developers should be building things to improve the workflow. Are they? → WIBTM: Demos should be fun, why I built FreightFloor (and how the AI works) →
About · Subscribe on Substack · RSS · Privacy ·
Ask

Social card and structured data

The share image, feeds and Schema.org JSON-LD that search engines and AI tools read for this page.

Social card

Title card for ast-graph
Card URL: /og/builds.svg

Machine feeds

/llms.txt /llms-full.txt /sitemap.xml /api/agent/spec

Structured data

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Person",
      "@id": "https://davenporter.com/#jason-davenport",
      "name": "Jason Davenport",
      "alternateName": "@davenportjw",
      "jobTitle": "AI & Distributed Systems Architect",
      "description": "Exploring agent-first source control (cosm), trajectory-to-lineage observability, Spanner-backed agent memory consolidation (Electric Sheep), hybrid local/cloud LLM routing, and real-time multiplayer browser simulations on Google Cloud Run.",
      "url": "https://davenporter.com",
      "sameAs": [
        "https://davenporter.substack.com",
        "https://www.linkedin.com/in/davenportjw",
        "https://github.com/davenportjw",
        "https://x.com/davenportjw",
        "https://medium.com/@davenportjw"
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://davenporter.com/#website",
      "url": "https://davenporter.com",
      "name": "The Davenporter",
      "description": "Learnings about software, technology, agentic systems, and occasionally home renovation.",
      "publisher": {
        "@id": "https://davenporter.com/#jason-davenport"
      },
      "inLanguage": "en-US"
    },
    {
      "@type": "ImageObject",
      "@id": "https://davenporter.com/builds/ast-graph#primaryimage",
      "url": "https://davenporter.com/og/builds.png",
      "contentUrl": "https://davenporter.com/og/builds.png",
      "width": 1200,
      "height": 630,
      "caption": "Title card for ast-graph",
      "representativeOfPage": true,
      "creator": {
        "@id": "https://davenporter.com/#jason-davenport"
      },
      "license": "https://creativecommons.org/licenses/by/4.0/",
      "acquireLicensePage": "https://davenporter.com/writings"
    },
    {
      "@type": "WebPage",
      "@id": "https://davenporter.com/builds/ast-graph#webpage",
      "url": "https://davenporter.com/builds/ast-graph",
      "name": "ast-graph | Builds | The Davenporter",
      "description": "ast-graph is a plugin for Antigravity and Claude Code. It parses your repo into a local SQLite graph of symbols, line ranges, calls, field reads and writes, routes, and tests. The agent queries the graph through MCP tools before it opens a file, so it reads the lines it needs and runs the tests that cover the change.",
      "isPartOf": {
        "@id": "https://davenporter.com/#website"
      },
      "about": {
        "@id": "https://davenporter.com/#jason-davenport"
      },
      "primaryImageOfPage": {
        "@id": "https://davenporter.com/builds/ast-graph#primaryimage"
      },
      "inLanguage": "en-US"
    },
    {
      "@type": "FAQPage",
      "@id": "https://davenporter.com/builds/ast-graph#faq",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "What is ast-graph?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "ast-graph is a plugin for Antigravity and Claude Code. It parses your repo into a local SQLite graph of symbols, line ranges, calls, field reads and writes, routes, and tests. The agent queries the graph through MCP tools before it opens a file, so it reads the lines it needs and runs the tests that cover the change."
          }
        }
      ]
    },
    {
      "@type": "SoftwareSourceCode",
      "@id": "https://davenporter.com/builds#ast-graph",
      "name": "ast-graph",
      "description": "ast-graph is a plugin for Antigravity and Claude Code. It parses your repo into a local SQLite graph of symbols, line ranges, calls, field reads and writes, routes, and tests. The agent queries the graph through MCP tools before it opens a file, so it reads the lines it needs and runs the tests that cover the change.",
      "codeRepository": "https://github.com/davenportjw/agent-skills/tree/main/plugins/ast-graph",
      "programmingLanguage": "TypeScript",
      "author": {
        "@id": "https://davenporter.com/#jason-davenport"
      }
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://davenporter.com/builds/ast-graph#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://davenporter.com/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Builds",
          "item": "https://davenporter.com/builds"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "ast-graph",
          "item": "https://davenporter.com/builds/ast-graph"
        }
      ]
    }
  ]
}

Ask The Davenporter

Ask anything about the essays and builds on this site.