fmm
npx machina-cli add skill srobinson/helioy-plugins/fmm --openclawFMM — MCP-First Code Navigation
This codebase has FMM metadata available via MCP tools. Use them for instant, structured lookups instead of grep/read.
MCP Tools (ALWAYS USE THESE FIRST)
| Tool | Use Case | Example |
|---|---|---|
fmm_read_symbol | "Show me the code for X" | fmm_read_symbol(name: "createPipeline") |
fmm_lookup_export | "Where is X defined?" | fmm_lookup_export(name: "createPipeline") |
fmm_file_outline | "What's in this file?" | fmm_file_outline(file: "src/core/index.ts") |
fmm_list_exports | "Find exports matching X" | fmm_list_exports(pattern: "swarm") |
fmm_dependency_graph | "What depends on this file?" | fmm_dependency_graph(file: "src/core/index.ts") |
fmm_file_info | "Quick file summary" | fmm_file_info(file: "src/utils/helpers.ts") |
fmm_search | Multi-criteria search | fmm_search(imports: "lodash", min_loc: 100) |
Navigation Protocol
"Show me the code for X"
1. fmm_read_symbol(name: "X") → exact source + file path + line range — DONE
Replaces 3+ tool calls (search → find file → read file → locate symbol) with ONE.
"Where is X defined?"
1. fmm_lookup_export(name: "X") → file path + line range — DONE
2. Not found? → fmm_list_exports(pattern: "X") for fuzzy match
3. Still nothing? → fall back to Grep
"What's in this file?"
1. fmm_file_outline(file: "src/foo.ts") → every export with line ranges and sizes
2. Decide WHAT to read before reading anything
"What depends on this file?"
1. fmm_dependency_graph(file: "src/foo.ts") → upstream + downstream deps — DONE
Sidecar Fallback
If MCP tools are unavailable, .fmm sidecar files exist alongside source files:
file: src/core/pipeline.ts
fmm: v0.3
exports:
createPipeline: [10, 45]
PipelineConfig: [47, 52]
imports: [zod, lodash]
dependencies: [./engine, ./validators]
loc: 142
Line ranges enable surgical reads: Read(file, offset=10, limit=36).
Rules
- MCP tools are primary — always call
fmm_*before grep/read fmm_read_symbolis your default — need to see code? One call, exact linesfmm_file_outlinebefore reading — see the shape before deciding what to read- Read source only when editing — MCP/sidecars tell you what you need for navigation
- Saves 88-97% of tokens compared to reading full source files
Source
git clone https://github.com/srobinson/helioy-plugins/blob/main/plugins/helioy-tools/skills/fmm/SKILL.mdView on GitHub Overview
FMM provides MCP metadata for code navigation via tools like fmm_read_symbol and fmm_lookup_export. It enables instant, structured lookups that replace grep/read with O(1) access. When MCP tools are unavailable, a .fmm sidecar offers the same navigation cues.
How This Skill Works
These tools query MCP metadata to locate exact code ranges, file outlines, and dependency graphs. You typically call fmm_read_symbol for exact code, fmm_lookup_export for symbol definitions, and fmm_file_outline to understand a file's exports and sizes. The protocol returns file paths and line ranges to minimize full file reads.
When to Use It
- When you need exact code for a symbol, use fmm_read_symbol
- When you want to know where a symbol is defined, use fmm_lookup_export
- Before opening a file, skim its contents with fmm_file_outline
- To find exports matching a pattern, use fmm_list_exports
- To map dependencies, run fmm_dependency_graph
Quick Start
- Step 1: fmm_read_symbol(name: 'createPipeline')
- Step 2: If not found, fmm_lookup_export(name: 'createPipeline')
- Step 3: Before editing, fmm_file_outline(file: 'src/core/index.ts')
Best Practices
- Always invoke fmm_* tools before grep or read
- Use fmm_read_symbol for exact lines instead of opening files
- Use fmm_file_outline to decide what to read first
- If MCP tools are down, rely on the .fmm sidecar or file info
- Check dependencies with fmm_dependency_graph to understand relationships
Example Use Cases
- Navigate to createPipeline quickly via fmm_lookup_export
- Read the exact lines for PipelineConfig using fmm_read_symbol
- List exports matching swarm with fmm_list_exports(pattern: 'swarm')
- View a file outline before editing via fmm_file_outline(file: 'src/core/index.ts')
- Map upstream/downstream with fmm_dependency_graph(file: 'src/core/index.ts')