From breeze
Search the functional, design, code, and architecture graphs to answer questions about the system. Smart-routes to one graph, a subset, or all of them based on query intent. Use for: feature discovery, "how does X work", "who handles Y", finding code or UI implementations, schema lookups, and cross-layer questions. Default entry point for any question about the project.
How this skill is triggered — by the user, by Claude, or both
Slash command
/breeze:searchThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill needs a `projectUuid` — follow CLAUDE.md's project-resolution rules (`--project` override → `.breeze.json` fallback → announce active project header). Auth handling on Breeze MCP failures is also covered in CLAUDE.md.
This skill needs a projectUuid — follow CLAUDE.md's project-resolution rules (--project override → .breeze.json fallback → announce active project header). Auth handling on Breeze MCP failures is also covered in CLAUDE.md.
All tools below are read-only. Pass projectUuid (or project_uuid / uuid, per each tool's schema) on every call.
Functional_Graph_Search — semantic search across Persona / Outcome / Scenario / Step / Action.Get_all_personas — list every Persona with its ID.Get_all_outcomes_for_a_persona_id — outcomes under a Persona.Get_all_scenarios_for_a_outcome_id — scenarios under an Outcome.Get_all_steps_actions_for_a_scenario_id — full Step → Action tree under a Scenario.Call_List_Repositories_ — list every indexed repository in the project (name, id, file/class/function counts, language, repo URL, commit, branch). Use first for "which codebases are indexed" questions, and to enable per-repo scoping on subsequent Code_Graph_Search calls.Code_Graph_Search — semantic search across File / Function / Class. Supports repository_name= to scope a search to one repo when the question clearly maps to a single subsystem (e.g., a frontend-only change → the frontendweb_* repo). When the touched code spans multiple repos, anchor each hit back to its parent repo from the inventory.Get_Code_File_Details — full hierarchical structure of a single file (classes, methods, decorators, statements).Design_Graph_Search — semantic search across design nodes (journeys, flows, pages, components).Get_all_Design_By_Label — list design nodes filtered by label type.Get_Design_Nodes_by_Ids — fetch specific design nodes by ID.Architecture_Graph_Search — semantic search across architecture-layer nodes (UserExperience, ApiGateway, ObservabilityMonitoring, Agents, Services, EventQueue, DataLake, Infrastructure) AND DDL nodes attached to each DataLake (DDLTable, DDLColumn, DDLConstraint, DDLIndex, DDLView, DDLSequence, DDLProcedure). Filter via include_labels=[...] and tune threshold (default ~0.4). Embedding-filtered — silently drops nodes whose name/description doesn't match the query. For enumeration questions ("list every service", "every table in DataLake X"), fall back to the by-label tools below — those don't filter.Get_Architecture_Nodes_By_Label — enumerate every architecture node in one layer (no semantic filter, no silent drops). Use for "list all services / queues / data stores".Get_DB_Schema_Nodes_By_Label — list DDL entities under one DataLake by label (table, column, constraint, index, view, sequence, procedure). Supports pagination, sort, equality/regex filters (e.g. {"tableId": {"$eq": "<uuid>"}}), parent/child tree walks. Use for "all tables in DataLake X", "FKs referencing table Y", "columns of table Z".Architecture_Graph_SearchPick include_labels by query intent — narrow when you can, omit when truly ambiguous:
| Query shape | include_labels |
|---|---|
| "which service handles X" | ["Services"] |
| "what queue/topic carries X" | ["EventQueue"] |
| "what data stores hold X" (store-level) | ["DataLake"] |
| "what alerts on X" / "where do X logs go" | ["ObservabilityMonitoring"] |
| "what compute / VPC / region runs X" | ["Infrastructure"] |
| "which frontend / app exposes X" | ["UserExperience"] |
| "which API / route / gateway handles X" | ["ApiGateway"] |
| "which agent / LLM workflow runs X" | ["Agents"] |
| "find tables for X" / "which tables store Y" | ["DDLTable"] |
| "find columns named X" | ["DDLColumn"] |
| "FKs referencing X" / "unique constraint on Y" | ["DDLConstraint"] |
| "indexes on X" | ["DDLIndex"] |
| "views / materialized views including X" | ["DDLView"] |
| "stored procs / triggers doing X" | ["DDLProcedure"] |
| "sequences for X" | ["DDLSequence"] |
| "everything related to the auth schema" | ["DDLTable","DDLColumn","DDLConstraint","DDLView","DDLProcedure"] |
| "what stores AND schema back X" | ["DataLake","DDLTable","DDLView"] |
| Truly ambiguous one-word queries | omit include_labels |
When a question demands completeness ("are these ALL the services / tables?"), don't rely on this tool — use Get_Architecture_Nodes_By_Label or Get_DB_Schema_Nodes_By_Label.
Inspect $ARGUMENTS. Decide which graphs to search. You can pick one, a subset, or all. The goal is to cover the layers the user's question actually touches — no more, no less.
Stop at the first match:
| Query shape | Route to |
|---|---|
| Pure code lookup — "where is X implemented", "find function/class/file Y", "show me the route handler for Z" | Code_Graph_Search → then Get_Code_File_Details on top hits. If the query names or implies a single repo, list repos via Call_List_Repositories_ first and scope the search via repository_name=. |
| Repo inventory — "which codebases", "list the repos", "what languages does this project use", "what's the repo for X" | Call_List_Repositories_ |
| Pure UI — "what page shows X", "which component", "what does the settings screen look like" | Design_Graph_Search → optionally Get_Design_Nodes_by_Ids for detail |
| Personas / roles only — "who manages X", "what roles exist" | Get_all_personas → drill down (see Phase 3) |
| Targeted deployment question — "which service handles X", "what queue carries Y", "what data store holds Z" | Architecture_Graph_Search with matching include_labels (see routing table above) |
| Enumerate one architecture layer — "list every service / queue / data store / topic" | Get_Architecture_Nodes_By_Label |
| Targeted DDL question — "find tables for X", "columns named Y", "FKs to Z", "views including W" | Architecture_Graph_Search with DDL include_labels |
| Enumerate schema under one DataLake — "all tables in DataLake X", "every view in Y" | Get_DB_Schema_Nodes_By_Label (find the DataLake's id first via Architecture_Graph_Search or Get_Architecture_Nodes_By_Label) |
If the query doesn't fit a single-graph fast-path, pick the layers it implies and run them in parallel.
Trigger words that add a layer:
Call_List_Repositories_)Shape-based routing:
/breeze:impact-analysisDefault when truly ambiguous → Functional + Code.
Running all graphs is fine when the question is genuinely cross-cutting. Don't over-narrow out of caution, but don't fan out for a question that's obviously single-layer.
Run every chosen semantic search / enumeration call simultaneously. Do not sequentialize.
Typical parallel batch:
Functional_Graph_SearchDesign_Graph_SearchCode_Graph_Search (optionally per-repo splits if the query maps to ≤2 repos from the Call_List_Repositories_ inventory)Architecture_Graph_Search (with include_labels per the routing table — for cross-cutting queries you may issue 2 parallel calls, e.g. one architecture-layer set and one DDL-label set)If a graph returns no results, note "No matches in {graph}" internally and continue — don't fail the whole search.
After the parallel reads, drill into top hits to build a complete picture. No magic relevance thresholds — just shape-based rules.
The functional graph is Persona → Outcome → Scenario → Step → Action. Drill along this chain as far as the question requires:
Get_all_outcomes_for_a_persona_id to list its outcomes.Get_all_scenarios_for_a_outcome_id to list its scenarios.Get_all_steps_actions_for_a_scenario_id to get the full Step → Action tree.scenarioId in the result) and run Get_all_steps_actions_for_a_scenario_id on it to get the full flow.For "how does X work" questions, drill all the way to Steps/Actions. For "who does X" or "what outcomes exist", stopping at Outcomes or Scenarios is usually enough.
Call_List_Repositories_ inventory. When the touched code spans multiple repos, prefix file paths with the repo name (e.g., frontendweb_react_tnlm: src/utils/posthog.ts) so cross-repo coordination is visible at a glance.Get_Code_File_Details on each to see classes, methods, decorators, statements.Get_Design_Nodes_by_Ids on the top IDs for full detail, or Get_all_Design_By_Label to widen within a label type.ddlText (for tables) or definition (for views/procs) is typically in the search payload. For a complete schema picture under one DataLake — every column of a table, every FK pointing at it, every view that references it — call Get_DB_Schema_Nodes_By_Label with the matching data_lake_id and the appropriate label + filters.Get_Architecture_Nodes_By_Label (one architecture layer) or Get_DB_Schema_Nodes_By_Label (schema-side, one DataLake).When drilling into a functional Outcome, check if the same Outcome name exists under other Personas (common for features that span UI and backend). After finding an Outcome under a User persona, also fetch it under the System persona (and vice versa) via Get_all_outcomes_for_a_persona_id, then Get_all_scenarios_for_a_outcome_id on the matching outcome. Merge both into the narrative.
Present a single coherent answer, not a per-graph ranked list.
Build a sequential flow:
Provide a ranked list including:
Weave them: functional flow → code file/function (with repo) → deployed service/queue/data store → underlying table/view. Show the connection; don't just list per layer.
For any question shaped like "what happens when…", "explain the flow of…", "how does X process work":
A single search returns an incomplete picture for process questions — always fan out.
Architecture_Graph_Search result for an enumeration question. Embedding-filtered search silently drops nodes — if the user asked to enumerate (all services, all tables), use Get_Architecture_Nodes_By_Label / Get_DB_Schema_Nodes_By_Label instead./breeze:impact-analysis. search reads and synthesizes across layers. It does not do scenario-ID → architecture-node anchoring, blast-radius scoring, risk levels, tier classification, or templated Context blocks. If the user asks for impact assessment, blast radius, or a detailed analysis doc, point them at /breeze:impact-analysis.backend_nodejs_global_tnlm: src/project/.../search-result-project.dsl.ts, Service node "global_tnlm", DDLTable RESEARCH_PROJECT_VERSION) rather than vague references.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub accionlabs/breezeai-hubexo-plugin