ecp

Query a symbol-level code graph to find definitions, callers, blast radius, and routes.

Updated Sep 17, 2026
One-click install
npx skills add https://github.com/coseto6125/claude-setup --skill ecp-coseto6125
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: ecp
Source: https://github.com/coseto6125/claude-setup/tree/main/skills/ecp
Command: npx skills add https://github.com/coseto6125/claude-setup --skill ecp-coseto6125

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Understanding code structure by grepping text is slow and error-prone: you cannot tell who calls a function, what breaks if it changes, or which routes and contracts exist. This Skill answers structural questions against a pre-built code graph in sub-30ms queries, replacing manual file fan-out with deterministic graph lookups. ## Core Features & Use Cases - Symbol lookup and inspection: ecp find locates definitions (exact, fuzzy, or BM25-ranked), and ecp inspect returns a symbol's signature, body, edges, and callers in one shot. - Impact and blast radius: ecp impact lists upstream callers before a refactor or rename, supports git-baseline diff mode, and classifies path-literal read/write sites to catch filename split-brain bugs. - Architecture queries: ecp routes, ecp contracts, ecp tool-map, and ecp processes surface HTTP routes, cross-repo API contracts, external egress calls, and ordered execution flows; ecp cypher handles arbitrary graph questions. - Use Case: Before renaming a shared utility function, run ecp impact <name> to see every caller with file:line, cross-check a suspiciously low count with grep, then apply ecp rename for an AST-aware multi-file rename. ## Quick Start Ask the assistant to use ecp to find who calls a specific function and what breaks if it changes before refactoring it.

Frequently Asked Questions about ecp

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I find all callers of a function before refactoring?▼

Run `ecp impact <name>` to list every upstream caller with file:line and counts. Caller counts are a lower bound because ambiguous bare calls are suppressed, so grep the call sites to cross-check before trusting a low count.

When should I use a code graph query instead of grep?▼

Use ecp for structural questions: definitions, callers, blast radius, routes, contracts, and execution flows. Use grep only for non-code text such as string literals, config keys, log messages, and filesystem layout.

Why does ecp report found:false for a symbol that exists?▼

A `found:false` with a `result` caveat field means the graph is stale, not a real miss. Rerun the query or run `ecp admin index --force --repo .`, then retry; a miss with no caveat is trustworthy.

Can ecp analyze impact across multiple repositories?▼

Yes. Run `ecp group sync <name>` to build cross-links and contracts, then `ecp group impact <name> --target <sym> --repo <provider>` to see which repos call a symbol. Without a group, use `ecp contracts --repo @all`.

What are the limitations of static call-graph analysis?▼

Function-body locals, Java records, PHP trait use, and C# operators/events/indexers are not captured by design. Unresolvable dynamic calls become BlindSpot records instead of guessed edges; check `ecp summary` or `ecp schema blindspots` for coverage.