Get the FREE Ultimate OpenClaw Setup Guide →

graph-query

Scanned
npx machina-cli add skill 23blocks-OS/ai-maestro-plugins/graph-query --openclaw
Files (1)
SKILL.md
6.1 KB

AI Maestro Code Graph Query

CRITICAL: AUTOMATIC BEHAVIOR - READ THIS FIRST

THIS IS NOT OPTIONAL. THIS IS YOUR DEFAULT BEHAVIOR.

Every time you use the Read tool on a code file, you MUST IMMEDIATELY query the graph to understand:

  • What is this component/function?
  • What depends on it? (callers, serializers, child classes)
  • What does it depend on? (callees, parent classes, associations)

DO NOT:

  • Wait for the user to ask you to query the graph
  • Skip the graph query because "it seems simple"
  • Assume you understand the impact without checking
  • Make changes before understanding dependencies

ALWAYS:

  • Query the graph IMMEDIATELY after reading any code file
  • Query BEFORE making any modifications
  • Query when you find files via search (grep/glob)
  • Include graph findings in your analysis to the user

The Rule: Read File → Query Graph → Then Proceed

1. You read a file with Read tool
2. IMMEDIATELY run graph queries (describe, find-callers, find-serializers, etc.)
3. NOW you understand the full context
4. NOW you can analyze, modify, or discuss the code

Example - Reading a Model:

# After reading app/models/user.rb, IMMEDIATELY run:
graph-describe.sh User
graph-find-serializers.sh User
graph-find-associations.sh User

Example - Reading a Function:

# After reading a file with process_payment function, IMMEDIATELY run:
graph-find-callers.sh process_payment
graph-find-callees.sh process_payment

Available Commands

All commands auto-detect your agent ID from the tmux session. Just run them:

Query Commands

CommandDescription
graph-describe.sh <name>Describe a component or function
graph-find-callers.sh <function>Find all functions that call this function
graph-find-callees.sh <function>Find all functions called by this function
graph-find-related.sh <component>Find related components (extends, includes, etc.)
graph-find-by-type.sh <type>Find all components of a type (model, controller, etc.)
graph-find-serializers.sh <model>Find serializers for a model
graph-find-associations.sh <model>Find model associations (belongs_to, has_many)
graph-find-path.sh <from> <to>Find call path between two functions

Indexing Commands

CommandDescription
graph-index-delta.sh [project-path]Delta index - only re-index changed files

Delta Indexing (New)

When files change in your codebase, use delta indexing to quickly update the graph:

# Delta index - only process changed files
graph-index-delta.sh

# Delta index a specific project
graph-index-delta.sh /path/to/project

First Run Behavior:

  • First time: Does a full index + initializes file tracking metadata
  • Subsequent runs: Only indexes new/modified/deleted files

Note: There is no separate graph-index.sh script. graph-index-delta.sh handles both full indexing (on first run) and incremental updates (on subsequent runs).

Output shows:

  • New files added
  • Modified files re-indexed
  • Deleted files removed
  • Unchanged files skipped

Performance:

  • Full index: 30-120 seconds (1000+ files)
  • Delta index: 1-5 seconds (5-10 changed files)

What to Query Based on What You Read

File TypeIMMEDIATELY Query
Modelgraph-describe.sh, graph-find-serializers.sh, graph-find-associations.sh
Controllergraph-describe.sh, graph-find-callees.sh
Servicegraph-describe.sh, graph-find-callers.sh
Functiongraph-find-callers.sh, graph-find-callees.sh
Serializergraph-describe.sh
Any classgraph-find-related.sh

Why This Matters

Without querying the graph, you will:

  • Miss serializers that need updating when you change a model
  • Break callers when you change a function signature
  • Miss child classes that inherit your changes
  • Overlook associations that depend on this model

The graph query takes 1 second. A broken deployment takes hours to fix.

Component Types

Use with graph-find-by-type.sh:

  • model - Database models
  • serializer - JSON serializers
  • controller - API controllers
  • service - Service objects
  • job - Background jobs
  • concern - Shared modules
  • component - React/Vue components
  • hook - React hooks

Helper Scripts

This skill relies on an internal helper script that provides shared utility functions:

  • graph-helper.sh - Sourced by the graph-*.sh tool scripts. Provides graph-specific API functions (graph_query, init_graph) and initialization logic. Located alongside the tool scripts in ~/.local/bin/ (installed) or plugin/src/scripts/ (source). If tool scripts fail with "common.sh not found", re-run the installer (~/ai-maestro/install-graph-tools.sh).

Error Handling

Script not found:

  • Check PATH: which graph-describe.sh
  • Verify scripts installed: ls -la ~/.local/bin/graph-*.sh
  • Scripts are installed to ~/.local/bin/ which should be in your PATH
  • If not found, run the installer from the AI Maestro project root: ~/ai-maestro/install-graph-tools.sh

API connection fails:

  • Ensure AI Maestro is running: curl http://127.0.0.1:23000/api/hosts/identity
  • Ensure your agent is registered (scripts auto-detect from tmux session)
  • Check exact component names (case-sensitive)

Graph is unavailable:

  • Inform the user: "Graph unavailable, proceeding with manual analysis - increased risk of missing dependencies."

Installation

If commands are not found, run the installer from the AI Maestro project root:

~/ai-maestro/install-graph-tools.sh

This installs scripts to ~/.local/bin/.

Source

git clone https://github.com/23blocks-OS/ai-maestro-plugins/blob/main/src/skills/graph-query/SKILL.mdView on GitHub

Overview

graph-query proactively interrogates the code graph after reading files to reveal component relationships and impact paths. It helps you understand context, identify callers and callees, and avoid breaking changes while exploring or modifying the codebase.

How This Skill Works

Whenever you read a file with the Read tool, graph-query triggers a suite of graph commands (describe, callers, callees, serializers, and associations) to map how the component fits in. You then use these findings to assess impact, plan changes, and ensure your edits respect existing dependencies before proceeding.

When to Use It

  • Reading any file to understand context
  • Searching for files or references across the codebase
  • Exploring the codebase to map structure and relationships
  • Understanding what depends on a component (callers, serializers, child classes)
  • Avoiding breaking changes by validating dependencies before modification

Quick Start

  1. Step 1: Read the target file with the Read tool
  2. Step 2: Immediately run graph-describe.sh <Name>, graph-find-callers.sh <function>, graph-find-callees.sh <function>, graph-find-serializers.sh <model>, and graph-find-associations.sh <model>
  3. Step 3: Use the findings to plan edits or further exploration

Best Practices

  • Always run graph queries immediately after reading a file
  • Query before making any modifications to understand impact
  • Use graph-find-callers and graph-find-callees to map dependence paths
  • Include graph findings in your analysis notes and change plans
  • Leverage serializers and associations queries to understand data flow and relationships

Example Use Cases

  • After opening a model file, run graph-describe.sh, graph-find-serializers.sh, and graph-find-associations.sh to see how it relates to serializers and relationships
  • Before adding a method to a function, run graph-find-callers.sh and graph-find-callees.sh to gauge impact
  • While locating a component across the repo, use graph-find-related.sh and graph-find-by-type.sh to discover related pieces
  • When evaluating a potential refactor, run graph-find-path.sh to map the call path between two functions
  • After a delta index, verify that newly indexed components preserve correct relationships with existing ones

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers