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
| Command | Description |
|---------|-------------|
| 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
| Command | Description |
|---------|-------------|
| 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
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 Type | IMMEDIATELY Query |
|-----------|-------------------|
| Model | graph-describe.sh, graph-find-serializers.sh, graph-find-associations.sh |
| Controller | graph-describe.sh, graph-find-callees.sh |
| Service | graph-describe.sh, graph-find-callers.sh |
| Function | graph-find-callers.sh, graph-find-callees.sh |
| Serializer | graph-describe.sh |
| Any class | graph-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 modelsserializer- JSON serializerscontroller- API controllersservice- Service objectsjob- Background jobsconcern- Shared modulescomponent- React/Vue componentshook- React hooks
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:
./install-graph-tools.sh
API connection fails:
- Ensure AI Maestro is running:
curl http://localhost:23000/api/agents - 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:
./install-graph-tools.sh
This installs scripts to ~/.local/bin/.