[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-jetbrains-blast-radius":3,"mdc-2ickfb-key":33,"related-repo-jetbrains-blast-radius":1061,"related-org-jetbrains-blast-radius":1134},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":26,"topics":27,"repo":28,"sourceUrl":31,"mdContent":32},"blast-radius","analyze blast radius of code changes","Experimental jbcontext org-wide blast-radius analysis across multiple repositories. Use when Codex needs to estimate the impact of changing an API, endpoint, schema, event, shared library, config, feature flag, data model, behavior, or dependency by finding producers, consumers, owners, tests, and related repos.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"jetbrains","JetBrains","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fjetbrains.png",[12,16,19],{"name":13,"slug":14,"type":15},"Architecture","architecture","tag",{"name":17,"slug":18,"type":15},"Engineering","engineering",{"name":20,"slug":21,"type":15},"Code Analysis","code-analysis",4,"https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fcontext","2026-07-13T06:43:52.366136",null,0,[],{"repoUrl":23,"stars":22,"forks":26,"topics":29,"description":30},[],"context agent plugin: skills, mcp, hooks","https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fcontext\u002Ftree\u002FHEAD\u002Fskills\u002Fblast-radius","---\nname: blast-radius\ncontext: fork\nagent: Explore\nargument-hint: change or contract query\ndescription: \"Experimental jbcontext org-wide blast-radius analysis across multiple repositories. Use when Codex needs to estimate the impact of changing an API, endpoint, schema, event, shared library, config, feature flag, data model, behavior, or dependency by finding producers, consumers, owners, tests, and related repos.\"\n---\n\nUse this skill to research `$ARGUMENTS` across all available repositories when the question is about impact analysis, consumers, producers, compatibility risk, migration scope, rollout planning, or cross-repo ownership.\n\n## Use cases for blast-radius analysis\n\n- **Find consumers before changing a contract.** Given an endpoint, RPC, topic, event, protobuf, schema, enum, table, config key, or shared type, locate repos that publish, consume, validate, transform, or test it.\n- **Scope API and behavior changes.** Identify services, clients, SDKs, generated code, docs, tests, and compatibility layers that depend on the current behavior.\n- **Plan migrations and deprecations.** Find remaining users of old flags, versions, endpoints, event names, schemas, or dependency APIs before removal.\n- **Trace ownership across systems.** Locate the owning repo, adjacent services, deployment config, runbooks, and callers when a request mentions an unfamiliar system.\n- **Estimate rollout risk.** Search for feature flag wiring, config defaults, environment overrides, CI workflows, dashboards, or alerts that may need coordinated changes.\n- **Find copied logic and duplicate implementations.** Search for similar validation, parsing, retry, auth, serialization, pagination, or error-handling code that might need the same fix.\n- **Audit tests and safety nets.** Locate unit, integration, contract, fixture, golden-file, and end-to-end tests that cover the changed behavior.\n- **Correlate incidents or bugs across repos.** Find shared error strings, log messages, metrics, spans, alerts, or fallback paths that reveal affected services.\n- **Prepare stakeholder notes.** Identify repos searched, concrete matches, owners, likely impacted surfaces, and unknowns that need human confirmation.\n\n## Workflow\n\n0. **Gather possible dependencies, make a discovery about the current project how it can be consumed**\n\n1. **Read the project's curated repo list first.** Each project may pin a hand-maintained list of external repositories in its agent instruction file. Read it before anything else and treat it as the **primary** source of candidate repos. Look in the current project, in this order, and use the first one that contains the list section:\n\n- `CLAUDE.md`\n- `AGENTS.md`\n\n   The list lives in a section delimited by these markers (anywhere in the file):\n\n```markdown\n\u003C!-- blast-radius-repos-start -->\n## Blast-radius external repositories\n| Name | git-remote-url | owner\u002Frepo | When relevant |\n|------|----------------|------------|---------------|\n| payments-api | github.com\u002Facme\u002Fpayments-api | acme\u002Fpayments-api | Owns `\u002Fpayments` REST + payment events; pick for any payment contract\u002Fschema change |\n\u003C!-- blast-radius-repos-end -->\n```\n\n   When the section exists:\n\n- Match rows by their `When relevant` trigger against the change being analyzed.\n- Use the exact `git-remote-url` from the matching rows for `jbcontext search` (step 4) — do not look these values up again or infer them from names.\n\n   **Fall back to `jbcontext repos` discovery only when the project has no such section, or it has no row relevant to the change** (and to sanity-check that the list is not missing an obvious candidate). The experimental repo discovery command:\n\n```bash\njbcontext repos \"\u003Crepo or system terms>\" --limit 30\n```\n\nUse short, discriminative terms from the request: service names, endpoint names, schema names, event\u002Ftopic names, package names, team names, product names, or explicit repository names. The shorter the better.\n\nYou can omit query completely.\n\n```\njbcontext repos\n```\n\nNote: `jbcontext repos` matches **repository names by substring** and returns each repo's `repository` git-remote-url (e.g. `github.com\u002Fjetbrains\u002Fcontext`) — this is the exact value `jbcontext search --git-remote-url` expects. To populate the curated list, find a repo with `jbcontext repos \"\u003Cterms>\" --json-output` and copy its `repository` value into a new row.\n\n2. **Handle prefixed repository families carefully.** If the request mentions a prefix or wildcard such as `jcp-*`, treat it as a repository-family constraint.\n\n- Query the prefix literally, for example `jcp` and `jcp-`.\n- Keep all suitable repos whose names start with that prefix.\n- Do not replace a prefixed repo family with a similar unprefixed repo unless the repo results clearly show it is the right target.\n- Preserve the exact `repository` git-remote-url returned by `jbcontext repos`; do not infer it from names.\n\n```\njbcontext repos \"jcp-\" # Example: show all repos started with jcp- prefix\n```\n\n3. **Select suitable repos.** Start from the rows whose `When relevant` triggers matched in the project's curated list, then add any exact owner\u002Fconsumer\u002Fproducer repos, prefix-family matches, and repos whose description\u002Fpath\u002Flanguage\u002Fdomain matches the changed surface (from the fallback `jbcontext repos` discovery). If there are many candidates, search the most likely 5-10 first, then expand if results are weak.\n\n4. **Search selected repos in parallel.** Invoke `jbcontext search` once per selected repository, passing the repo's git-remote-url (the exact `git-remote-url` from the project's curated list, or the `repository` value from `jbcontext repos` for fallback candidates) via the `--git-remote-url` option:\n\n```bash\njbcontext search --git-remote-url \"\u003Crepo-git-remote-url>\" --json-output --limit 10 \"\u003Csemantic blast-radius search query>\"\n```\n\nRun `jbcontext search --help` to confirm the flag for the installed experimental CLI if `--git-remote-url` is rejected, but still pass the exact git-remote-url from the project's curated list or `jbcontext repos`. Run independent repo searches in parallel when the agent environment supports parallel tool calls; otherwise keep results grouped by repository.\n\n5. **Resolve snippets and repo information with `gh`.** When `jbcontext search` returns promising snippets, use the GitHub CLI to fetch full source files, surrounding code, default branch, repo metadata, owners, recent commits, or related PRs\u002Fissues before relying on the match. Use the GitHub owner\u002Fname or URL from `jbcontext repos` when available.\n\n```bash\ngh repo view \"\u003Cowner>\u002F\u003Crepo>\" --json nameWithOwner,description,defaultBranchRef,url\ngh api \"repos\u002F\u003Cowner>\u002F\u003Crepo>\u002Fcontents\u002F\u003Cpath>?ref=\u003Cref>\" -H \"Accept: application\u002Fvnd.github.raw\"\n```\n\n6. **Synthesize blast-radius findings.** Report which repos were searched, which repos had useful matches, the strongest producers\u002Fconsumers\u002Ffiles\u002Fsymbols found, likely impacted surfaces, and unresolved unknowns. Separate confirmed impacts from plausible leads. If no suitable repo is found, say whether the project's curated list (`CLAUDE.md`\u002F`AGENTS.md`) had a relevant row and which `jbcontext repos` filters were tried before stopping. If a relevant repo seems to be missing from the curated list, note it (with its `repository-id` if known) so the project's list can be updated.\n\n## Search Guidance\n\n- Use semantic, behavior-focused queries for `jbcontext search`; avoid one-word searches.\n- Search for both names and behavior: endpoint paths, message names, schema fields, event topics, config keys, feature flags, error strings, metric names, and the behavior being changed.\n- Search producers, consumers, tests, generated code, docs, and deployment\u002Fconfig paths when blast radius matters.\n- Re-run `jbcontext repos` with narrower or prefix-aware terms before broadening code search.\n- Use path filters only after repo-level matches identify likely directories.\n- Keep repository names and ids visible in notes so later searches can be reproduced.\n- Use `gh` to resolve snippets into full source context and to gather more information about matching repositories.\n",{"data":34,"body":38},{"name":4,"context":35,"agent":36,"argument-hint":37,"description":6},"fork","Explore","change or contract query",{"type":39,"children":40},"root",[41,58,65,161,167,196,223,390,395,450,498,503,508,518,576,597,650,659,732,797,824,858,948,990,996,1055],{"type":42,"tag":43,"props":44,"children":45},"element","p",{},[46,49,56],{"type":47,"value":48},"text","Use this skill to research ",{"type":42,"tag":50,"props":51,"children":53},"code",{"className":52},[],[54],{"type":47,"value":55},"$ARGUMENTS",{"type":47,"value":57}," across all available repositories when the question is about impact analysis, consumers, producers, compatibility risk, migration scope, rollout planning, or cross-repo ownership.",{"type":42,"tag":59,"props":60,"children":62},"h2",{"id":61},"use-cases-for-blast-radius-analysis",[63],{"type":47,"value":64},"Use cases for blast-radius analysis",{"type":42,"tag":66,"props":67,"children":68},"ul",{},[69,81,91,101,111,121,131,141,151],{"type":42,"tag":70,"props":71,"children":72},"li",{},[73,79],{"type":42,"tag":74,"props":75,"children":76},"strong",{},[77],{"type":47,"value":78},"Find consumers before changing a contract.",{"type":47,"value":80}," Given an endpoint, RPC, topic, event, protobuf, schema, enum, table, config key, or shared type, locate repos that publish, consume, validate, transform, or test it.",{"type":42,"tag":70,"props":82,"children":83},{},[84,89],{"type":42,"tag":74,"props":85,"children":86},{},[87],{"type":47,"value":88},"Scope API and behavior changes.",{"type":47,"value":90}," Identify services, clients, SDKs, generated code, docs, tests, and compatibility layers that depend on the current behavior.",{"type":42,"tag":70,"props":92,"children":93},{},[94,99],{"type":42,"tag":74,"props":95,"children":96},{},[97],{"type":47,"value":98},"Plan migrations and deprecations.",{"type":47,"value":100}," Find remaining users of old flags, versions, endpoints, event names, schemas, or dependency APIs before removal.",{"type":42,"tag":70,"props":102,"children":103},{},[104,109],{"type":42,"tag":74,"props":105,"children":106},{},[107],{"type":47,"value":108},"Trace ownership across systems.",{"type":47,"value":110}," Locate the owning repo, adjacent services, deployment config, runbooks, and callers when a request mentions an unfamiliar system.",{"type":42,"tag":70,"props":112,"children":113},{},[114,119],{"type":42,"tag":74,"props":115,"children":116},{},[117],{"type":47,"value":118},"Estimate rollout risk.",{"type":47,"value":120}," Search for feature flag wiring, config defaults, environment overrides, CI workflows, dashboards, or alerts that may need coordinated changes.",{"type":42,"tag":70,"props":122,"children":123},{},[124,129],{"type":42,"tag":74,"props":125,"children":126},{},[127],{"type":47,"value":128},"Find copied logic and duplicate implementations.",{"type":47,"value":130}," Search for similar validation, parsing, retry, auth, serialization, pagination, or error-handling code that might need the same fix.",{"type":42,"tag":70,"props":132,"children":133},{},[134,139],{"type":42,"tag":74,"props":135,"children":136},{},[137],{"type":47,"value":138},"Audit tests and safety nets.",{"type":47,"value":140}," Locate unit, integration, contract, fixture, golden-file, and end-to-end tests that cover the changed behavior.",{"type":42,"tag":70,"props":142,"children":143},{},[144,149],{"type":42,"tag":74,"props":145,"children":146},{},[147],{"type":47,"value":148},"Correlate incidents or bugs across repos.",{"type":47,"value":150}," Find shared error strings, log messages, metrics, spans, alerts, or fallback paths that reveal affected services.",{"type":42,"tag":70,"props":152,"children":153},{},[154,159],{"type":42,"tag":74,"props":155,"children":156},{},[157],{"type":47,"value":158},"Prepare stakeholder notes.",{"type":47,"value":160}," Identify repos searched, concrete matches, owners, likely impacted surfaces, and unknowns that need human confirmation.",{"type":42,"tag":59,"props":162,"children":164},{"id":163},"workflow",[165],{"type":47,"value":166},"Workflow",{"type":42,"tag":168,"props":169,"children":170},"ol",{"start":26},[171,179],{"type":42,"tag":70,"props":172,"children":173},{},[174],{"type":42,"tag":74,"props":175,"children":176},{},[177],{"type":47,"value":178},"Gather possible dependencies, make a discovery about the current project how it can be consumed",{"type":42,"tag":70,"props":180,"children":181},{},[182,187,189,194],{"type":42,"tag":74,"props":183,"children":184},{},[185],{"type":47,"value":186},"Read the project's curated repo list first.",{"type":47,"value":188}," Each project may pin a hand-maintained list of external repositories in its agent instruction file. Read it before anything else and treat it as the ",{"type":42,"tag":74,"props":190,"children":191},{},[192],{"type":47,"value":193},"primary",{"type":47,"value":195}," source of candidate repos. Look in the current project, in this order, and use the first one that contains the list section:",{"type":42,"tag":66,"props":197,"children":198},{},[199,208],{"type":42,"tag":70,"props":200,"children":201},{},[202],{"type":42,"tag":50,"props":203,"children":205},{"className":204},[],[206],{"type":47,"value":207},"CLAUDE.md",{"type":42,"tag":70,"props":209,"children":210},{},[211,217,221],{"type":42,"tag":50,"props":212,"children":214},{"className":213},[],[215],{"type":47,"value":216},"AGENTS.md",{"type":42,"tag":218,"props":219,"children":220},"br",{},[],{"type":47,"value":222},"The list lives in a section delimited by these markers (anywhere in the file):",{"type":42,"tag":224,"props":225,"children":230},"pre",{"className":226,"code":227,"language":228,"meta":229,"style":229},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C!-- blast-radius-repos-start -->\n## Blast-radius external repositories\n| Name | git-remote-url | owner\u002Frepo | When relevant |\n|------|----------------|------------|---------------|\n| payments-api | github.com\u002Facme\u002Fpayments-api | acme\u002Fpayments-api | Owns `\u002Fpayments` REST + payment events; pick for any payment contract\u002Fschema change |\n\u003C!-- blast-radius-repos-end -->\n","markdown","",[231],{"type":42,"tag":50,"props":232,"children":233},{"__ignoreMap":229},[234,246,262,309,317,381],{"type":42,"tag":235,"props":236,"children":239},"span",{"class":237,"line":238},"line",1,[240],{"type":42,"tag":235,"props":241,"children":243},{"style":242},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[244],{"type":47,"value":245},"\u003C!-- blast-radius-repos-start -->\n",{"type":42,"tag":235,"props":247,"children":249},{"class":237,"line":248},2,[250,256],{"type":42,"tag":235,"props":251,"children":253},{"style":252},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[254],{"type":47,"value":255},"## ",{"type":42,"tag":235,"props":257,"children":259},{"style":258},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[260],{"type":47,"value":261},"Blast-radius external repositories\n",{"type":42,"tag":235,"props":263,"children":265},{"class":237,"line":264},3,[266,271,277,281,286,290,295,299,304],{"type":42,"tag":235,"props":267,"children":268},{"style":252},[269],{"type":47,"value":270},"|",{"type":42,"tag":235,"props":272,"children":274},{"style":273},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[275],{"type":47,"value":276}," Name ",{"type":42,"tag":235,"props":278,"children":279},{"style":252},[280],{"type":47,"value":270},{"type":42,"tag":235,"props":282,"children":283},{"style":273},[284],{"type":47,"value":285}," git-remote-url ",{"type":42,"tag":235,"props":287,"children":288},{"style":252},[289],{"type":47,"value":270},{"type":42,"tag":235,"props":291,"children":292},{"style":273},[293],{"type":47,"value":294}," owner\u002Frepo ",{"type":42,"tag":235,"props":296,"children":297},{"style":252},[298],{"type":47,"value":270},{"type":42,"tag":235,"props":300,"children":301},{"style":273},[302],{"type":47,"value":303}," When relevant ",{"type":42,"tag":235,"props":305,"children":306},{"style":252},[307],{"type":47,"value":308},"|\n",{"type":42,"tag":235,"props":310,"children":311},{"class":237,"line":22},[312],{"type":42,"tag":235,"props":313,"children":314},{"style":252},[315],{"type":47,"value":316},"|------|----------------|------------|---------------|\n",{"type":42,"tag":235,"props":318,"children":320},{"class":237,"line":319},5,[321,325,330,334,339,343,348,352,357,362,368,372,377],{"type":42,"tag":235,"props":322,"children":323},{"style":252},[324],{"type":47,"value":270},{"type":42,"tag":235,"props":326,"children":327},{"style":273},[328],{"type":47,"value":329}," payments-api ",{"type":42,"tag":235,"props":331,"children":332},{"style":252},[333],{"type":47,"value":270},{"type":42,"tag":235,"props":335,"children":336},{"style":273},[337],{"type":47,"value":338}," github.com\u002Facme\u002Fpayments-api ",{"type":42,"tag":235,"props":340,"children":341},{"style":252},[342],{"type":47,"value":270},{"type":42,"tag":235,"props":344,"children":345},{"style":273},[346],{"type":47,"value":347}," acme\u002Fpayments-api ",{"type":42,"tag":235,"props":349,"children":350},{"style":252},[351],{"type":47,"value":270},{"type":42,"tag":235,"props":353,"children":354},{"style":273},[355],{"type":47,"value":356}," Owns ",{"type":42,"tag":235,"props":358,"children":359},{"style":252},[360],{"type":47,"value":361},"`",{"type":42,"tag":235,"props":363,"children":365},{"style":364},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[366],{"type":47,"value":367},"\u002Fpayments",{"type":42,"tag":235,"props":369,"children":370},{"style":252},[371],{"type":47,"value":361},{"type":42,"tag":235,"props":373,"children":374},{"style":273},[375],{"type":47,"value":376}," REST + payment events; pick for any payment contract\u002Fschema change ",{"type":42,"tag":235,"props":378,"children":379},{"style":252},[380],{"type":47,"value":308},{"type":42,"tag":235,"props":382,"children":384},{"class":237,"line":383},6,[385],{"type":42,"tag":235,"props":386,"children":387},{"style":242},[388],{"type":47,"value":389},"\u003C!-- blast-radius-repos-end -->\n",{"type":42,"tag":43,"props":391,"children":392},{},[393],{"type":47,"value":394},"When the section exists:",{"type":42,"tag":66,"props":396,"children":397},{},[398,411],{"type":42,"tag":70,"props":399,"children":400},{},[401,403,409],{"type":47,"value":402},"Match rows by their ",{"type":42,"tag":50,"props":404,"children":406},{"className":405},[],[407],{"type":47,"value":408},"When relevant",{"type":47,"value":410}," trigger against the change being analyzed.",{"type":42,"tag":70,"props":412,"children":413},{},[414,416,422,424,430,432,435,448],{"type":47,"value":415},"Use the exact ",{"type":42,"tag":50,"props":417,"children":419},{"className":418},[],[420],{"type":47,"value":421},"git-remote-url",{"type":47,"value":423}," from the matching rows for ",{"type":42,"tag":50,"props":425,"children":427},{"className":426},[],[428],{"type":47,"value":429},"jbcontext search",{"type":47,"value":431}," (step 4) — do not look these values up again or infer them from names.",{"type":42,"tag":218,"props":433,"children":434},{},[],{"type":42,"tag":74,"props":436,"children":437},{},[438,440,446],{"type":47,"value":439},"Fall back to ",{"type":42,"tag":50,"props":441,"children":443},{"className":442},[],[444],{"type":47,"value":445},"jbcontext repos",{"type":47,"value":447}," discovery only when the project has no such section, or it has no row relevant to the change",{"type":47,"value":449}," (and to sanity-check that the list is not missing an obvious candidate). The experimental repo discovery command:",{"type":42,"tag":224,"props":451,"children":455},{"className":452,"code":453,"language":454,"meta":229,"style":229},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","jbcontext repos \"\u003Crepo or system terms>\" --limit 30\n","bash",[456],{"type":42,"tag":50,"props":457,"children":458},{"__ignoreMap":229},[459],{"type":42,"tag":235,"props":460,"children":461},{"class":237,"line":238},[462,467,472,477,482,487,492],{"type":42,"tag":235,"props":463,"children":464},{"style":258},[465],{"type":47,"value":466},"jbcontext",{"type":42,"tag":235,"props":468,"children":469},{"style":364},[470],{"type":47,"value":471}," repos",{"type":42,"tag":235,"props":473,"children":474},{"style":252},[475],{"type":47,"value":476}," \"",{"type":42,"tag":235,"props":478,"children":479},{"style":364},[480],{"type":47,"value":481},"\u003Crepo or system terms>",{"type":42,"tag":235,"props":483,"children":484},{"style":252},[485],{"type":47,"value":486},"\"",{"type":42,"tag":235,"props":488,"children":489},{"style":364},[490],{"type":47,"value":491}," --limit",{"type":42,"tag":235,"props":493,"children":495},{"style":494},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[496],{"type":47,"value":497}," 30\n",{"type":42,"tag":43,"props":499,"children":500},{},[501],{"type":47,"value":502},"Use short, discriminative terms from the request: service names, endpoint names, schema names, event\u002Ftopic names, package names, team names, product names, or explicit repository names. The shorter the better.",{"type":42,"tag":43,"props":504,"children":505},{},[506],{"type":47,"value":507},"You can omit query completely.",{"type":42,"tag":224,"props":509,"children":513},{"className":510,"code":512,"language":47},[511],"language-text","jbcontext repos\n",[514],{"type":42,"tag":50,"props":515,"children":516},{"__ignoreMap":229},[517],{"type":47,"value":512},{"type":42,"tag":43,"props":519,"children":520},{},[521,523,528,530,535,537,543,545,551,553,559,561,567,569,574],{"type":47,"value":522},"Note: ",{"type":42,"tag":50,"props":524,"children":526},{"className":525},[],[527],{"type":47,"value":445},{"type":47,"value":529}," matches ",{"type":42,"tag":74,"props":531,"children":532},{},[533],{"type":47,"value":534},"repository names by substring",{"type":47,"value":536}," and returns each repo's ",{"type":42,"tag":50,"props":538,"children":540},{"className":539},[],[541],{"type":47,"value":542},"repository",{"type":47,"value":544}," git-remote-url (e.g. ",{"type":42,"tag":50,"props":546,"children":548},{"className":547},[],[549],{"type":47,"value":550},"github.com\u002Fjetbrains\u002Fcontext",{"type":47,"value":552},") — this is the exact value ",{"type":42,"tag":50,"props":554,"children":556},{"className":555},[],[557],{"type":47,"value":558},"jbcontext search --git-remote-url",{"type":47,"value":560}," expects. To populate the curated list, find a repo with ",{"type":42,"tag":50,"props":562,"children":564},{"className":563},[],[565],{"type":47,"value":566},"jbcontext repos \"\u003Cterms>\" --json-output",{"type":47,"value":568}," and copy its ",{"type":42,"tag":50,"props":570,"children":572},{"className":571},[],[573],{"type":47,"value":542},{"type":47,"value":575}," value into a new row.",{"type":42,"tag":168,"props":577,"children":578},{"start":248},[579],{"type":42,"tag":70,"props":580,"children":581},{},[582,587,589,595],{"type":42,"tag":74,"props":583,"children":584},{},[585],{"type":47,"value":586},"Handle prefixed repository families carefully.",{"type":47,"value":588}," If the request mentions a prefix or wildcard such as ",{"type":42,"tag":50,"props":590,"children":592},{"className":591},[],[593],{"type":47,"value":594},"jcp-*",{"type":47,"value":596},", treat it as a repository-family constraint.",{"type":42,"tag":66,"props":598,"children":599},{},[600,621,626,631],{"type":42,"tag":70,"props":601,"children":602},{},[603,605,611,613,619],{"type":47,"value":604},"Query the prefix literally, for example ",{"type":42,"tag":50,"props":606,"children":608},{"className":607},[],[609],{"type":47,"value":610},"jcp",{"type":47,"value":612}," and ",{"type":42,"tag":50,"props":614,"children":616},{"className":615},[],[617],{"type":47,"value":618},"jcp-",{"type":47,"value":620},".",{"type":42,"tag":70,"props":622,"children":623},{},[624],{"type":47,"value":625},"Keep all suitable repos whose names start with that prefix.",{"type":42,"tag":70,"props":627,"children":628},{},[629],{"type":47,"value":630},"Do not replace a prefixed repo family with a similar unprefixed repo unless the repo results clearly show it is the right target.",{"type":42,"tag":70,"props":632,"children":633},{},[634,636,641,643,648],{"type":47,"value":635},"Preserve the exact ",{"type":42,"tag":50,"props":637,"children":639},{"className":638},[],[640],{"type":47,"value":542},{"type":47,"value":642}," git-remote-url returned by ",{"type":42,"tag":50,"props":644,"children":646},{"className":645},[],[647],{"type":47,"value":445},{"type":47,"value":649},"; do not infer it from names.",{"type":42,"tag":224,"props":651,"children":654},{"className":652,"code":653,"language":47},[511],"jbcontext repos \"jcp-\" # Example: show all repos started with jcp- prefix\n",[655],{"type":42,"tag":50,"props":656,"children":657},{"__ignoreMap":229},[658],{"type":47,"value":653},{"type":42,"tag":168,"props":660,"children":661},{"start":264},[662,686],{"type":42,"tag":70,"props":663,"children":664},{},[665,670,672,677,679,684],{"type":42,"tag":74,"props":666,"children":667},{},[668],{"type":47,"value":669},"Select suitable repos.",{"type":47,"value":671}," Start from the rows whose ",{"type":42,"tag":50,"props":673,"children":675},{"className":674},[],[676],{"type":47,"value":408},{"type":47,"value":678}," triggers matched in the project's curated list, then add any exact owner\u002Fconsumer\u002Fproducer repos, prefix-family matches, and repos whose description\u002Fpath\u002Flanguage\u002Fdomain matches the changed surface (from the fallback ",{"type":42,"tag":50,"props":680,"children":682},{"className":681},[],[683],{"type":47,"value":445},{"type":47,"value":685}," discovery). If there are many candidates, search the most likely 5-10 first, then expand if results are weak.",{"type":42,"tag":70,"props":687,"children":688},{},[689,694,696,701,703,708,710,715,717,722,724,730],{"type":42,"tag":74,"props":690,"children":691},{},[692],{"type":47,"value":693},"Search selected repos in parallel.",{"type":47,"value":695}," Invoke ",{"type":42,"tag":50,"props":697,"children":699},{"className":698},[],[700],{"type":47,"value":429},{"type":47,"value":702}," once per selected repository, passing the repo's git-remote-url (the exact ",{"type":42,"tag":50,"props":704,"children":706},{"className":705},[],[707],{"type":47,"value":421},{"type":47,"value":709}," from the project's curated list, or the ",{"type":42,"tag":50,"props":711,"children":713},{"className":712},[],[714],{"type":47,"value":542},{"type":47,"value":716}," value from ",{"type":42,"tag":50,"props":718,"children":720},{"className":719},[],[721],{"type":47,"value":445},{"type":47,"value":723}," for fallback candidates) via the ",{"type":42,"tag":50,"props":725,"children":727},{"className":726},[],[728],{"type":47,"value":729},"--git-remote-url",{"type":47,"value":731}," option:",{"type":42,"tag":224,"props":733,"children":735},{"className":452,"code":734,"language":454,"meta":229,"style":229},"jbcontext search --git-remote-url \"\u003Crepo-git-remote-url>\" --json-output --limit 10 \"\u003Csemantic blast-radius search query>\"\n",[736],{"type":42,"tag":50,"props":737,"children":738},{"__ignoreMap":229},[739],{"type":42,"tag":235,"props":740,"children":741},{"class":237,"line":238},[742,746,751,756,760,765,769,774,778,783,787,792],{"type":42,"tag":235,"props":743,"children":744},{"style":258},[745],{"type":47,"value":466},{"type":42,"tag":235,"props":747,"children":748},{"style":364},[749],{"type":47,"value":750}," search",{"type":42,"tag":235,"props":752,"children":753},{"style":364},[754],{"type":47,"value":755}," --git-remote-url",{"type":42,"tag":235,"props":757,"children":758},{"style":252},[759],{"type":47,"value":476},{"type":42,"tag":235,"props":761,"children":762},{"style":364},[763],{"type":47,"value":764},"\u003Crepo-git-remote-url>",{"type":42,"tag":235,"props":766,"children":767},{"style":252},[768],{"type":47,"value":486},{"type":42,"tag":235,"props":770,"children":771},{"style":364},[772],{"type":47,"value":773}," --json-output",{"type":42,"tag":235,"props":775,"children":776},{"style":364},[777],{"type":47,"value":491},{"type":42,"tag":235,"props":779,"children":780},{"style":494},[781],{"type":47,"value":782}," 10",{"type":42,"tag":235,"props":784,"children":785},{"style":252},[786],{"type":47,"value":476},{"type":42,"tag":235,"props":788,"children":789},{"style":364},[790],{"type":47,"value":791},"\u003Csemantic blast-radius search query>",{"type":42,"tag":235,"props":793,"children":794},{"style":252},[795],{"type":47,"value":796},"\"\n",{"type":42,"tag":43,"props":798,"children":799},{},[800,802,808,810,815,817,822],{"type":47,"value":801},"Run ",{"type":42,"tag":50,"props":803,"children":805},{"className":804},[],[806],{"type":47,"value":807},"jbcontext search --help",{"type":47,"value":809}," to confirm the flag for the installed experimental CLI if ",{"type":42,"tag":50,"props":811,"children":813},{"className":812},[],[814],{"type":47,"value":729},{"type":47,"value":816}," is rejected, but still pass the exact git-remote-url from the project's curated list or ",{"type":42,"tag":50,"props":818,"children":820},{"className":819},[],[821],{"type":47,"value":445},{"type":47,"value":823},". Run independent repo searches in parallel when the agent environment supports parallel tool calls; otherwise keep results grouped by repository.",{"type":42,"tag":168,"props":825,"children":826},{"start":319},[827],{"type":42,"tag":70,"props":828,"children":829},{},[830,842,844,849,851,856],{"type":42,"tag":74,"props":831,"children":832},{},[833,835,841],{"type":47,"value":834},"Resolve snippets and repo information with ",{"type":42,"tag":50,"props":836,"children":838},{"className":837},[],[839],{"type":47,"value":840},"gh",{"type":47,"value":620},{"type":47,"value":843}," When ",{"type":42,"tag":50,"props":845,"children":847},{"className":846},[],[848],{"type":47,"value":429},{"type":47,"value":850}," returns promising snippets, use the GitHub CLI to fetch full source files, surrounding code, default branch, repo metadata, owners, recent commits, or related PRs\u002Fissues before relying on the match. Use the GitHub owner\u002Fname or URL from ",{"type":42,"tag":50,"props":852,"children":854},{"className":853},[],[855],{"type":47,"value":445},{"type":47,"value":857}," when available.",{"type":42,"tag":224,"props":859,"children":861},{"className":452,"code":860,"language":454,"meta":229,"style":229},"gh repo view \"\u003Cowner>\u002F\u003Crepo>\" --json nameWithOwner,description,defaultBranchRef,url\ngh api \"repos\u002F\u003Cowner>\u002F\u003Crepo>\u002Fcontents\u002F\u003Cpath>?ref=\u003Cref>\" -H \"Accept: application\u002Fvnd.github.raw\"\n",[862],{"type":42,"tag":50,"props":863,"children":864},{"__ignoreMap":229},[865,905],{"type":42,"tag":235,"props":866,"children":867},{"class":237,"line":238},[868,872,877,882,886,891,895,900],{"type":42,"tag":235,"props":869,"children":870},{"style":258},[871],{"type":47,"value":840},{"type":42,"tag":235,"props":873,"children":874},{"style":364},[875],{"type":47,"value":876}," repo",{"type":42,"tag":235,"props":878,"children":879},{"style":364},[880],{"type":47,"value":881}," view",{"type":42,"tag":235,"props":883,"children":884},{"style":252},[885],{"type":47,"value":476},{"type":42,"tag":235,"props":887,"children":888},{"style":364},[889],{"type":47,"value":890},"\u003Cowner>\u002F\u003Crepo>",{"type":42,"tag":235,"props":892,"children":893},{"style":252},[894],{"type":47,"value":486},{"type":42,"tag":235,"props":896,"children":897},{"style":364},[898],{"type":47,"value":899}," --json",{"type":42,"tag":235,"props":901,"children":902},{"style":364},[903],{"type":47,"value":904}," nameWithOwner,description,defaultBranchRef,url\n",{"type":42,"tag":235,"props":906,"children":907},{"class":237,"line":248},[908,912,917,921,926,930,935,939,944],{"type":42,"tag":235,"props":909,"children":910},{"style":258},[911],{"type":47,"value":840},{"type":42,"tag":235,"props":913,"children":914},{"style":364},[915],{"type":47,"value":916}," api",{"type":42,"tag":235,"props":918,"children":919},{"style":252},[920],{"type":47,"value":476},{"type":42,"tag":235,"props":922,"children":923},{"style":364},[924],{"type":47,"value":925},"repos\u002F\u003Cowner>\u002F\u003Crepo>\u002Fcontents\u002F\u003Cpath>?ref=\u003Cref>",{"type":42,"tag":235,"props":927,"children":928},{"style":252},[929],{"type":47,"value":486},{"type":42,"tag":235,"props":931,"children":932},{"style":364},[933],{"type":47,"value":934}," -H",{"type":42,"tag":235,"props":936,"children":937},{"style":252},[938],{"type":47,"value":476},{"type":42,"tag":235,"props":940,"children":941},{"style":364},[942],{"type":47,"value":943},"Accept: application\u002Fvnd.github.raw",{"type":42,"tag":235,"props":945,"children":946},{"style":252},[947],{"type":47,"value":796},{"type":42,"tag":168,"props":949,"children":950},{"start":383},[951],{"type":42,"tag":70,"props":952,"children":953},{},[954,959,961,966,968,973,975,980,982,988],{"type":42,"tag":74,"props":955,"children":956},{},[957],{"type":47,"value":958},"Synthesize blast-radius findings.",{"type":47,"value":960}," Report which repos were searched, which repos had useful matches, the strongest producers\u002Fconsumers\u002Ffiles\u002Fsymbols found, likely impacted surfaces, and unresolved unknowns. Separate confirmed impacts from plausible leads. If no suitable repo is found, say whether the project's curated list (",{"type":42,"tag":50,"props":962,"children":964},{"className":963},[],[965],{"type":47,"value":207},{"type":47,"value":967},"\u002F",{"type":42,"tag":50,"props":969,"children":971},{"className":970},[],[972],{"type":47,"value":216},{"type":47,"value":974},") had a relevant row and which ",{"type":42,"tag":50,"props":976,"children":978},{"className":977},[],[979],{"type":47,"value":445},{"type":47,"value":981}," filters were tried before stopping. If a relevant repo seems to be missing from the curated list, note it (with its ",{"type":42,"tag":50,"props":983,"children":985},{"className":984},[],[986],{"type":47,"value":987},"repository-id",{"type":47,"value":989}," if known) so the project's list can be updated.",{"type":42,"tag":59,"props":991,"children":993},{"id":992},"search-guidance",[994],{"type":47,"value":995},"Search Guidance",{"type":42,"tag":66,"props":997,"children":998},{},[999,1011,1016,1021,1033,1038,1043],{"type":42,"tag":70,"props":1000,"children":1001},{},[1002,1004,1009],{"type":47,"value":1003},"Use semantic, behavior-focused queries for ",{"type":42,"tag":50,"props":1005,"children":1007},{"className":1006},[],[1008],{"type":47,"value":429},{"type":47,"value":1010},"; avoid one-word searches.",{"type":42,"tag":70,"props":1012,"children":1013},{},[1014],{"type":47,"value":1015},"Search for both names and behavior: endpoint paths, message names, schema fields, event topics, config keys, feature flags, error strings, metric names, and the behavior being changed.",{"type":42,"tag":70,"props":1017,"children":1018},{},[1019],{"type":47,"value":1020},"Search producers, consumers, tests, generated code, docs, and deployment\u002Fconfig paths when blast radius matters.",{"type":42,"tag":70,"props":1022,"children":1023},{},[1024,1026,1031],{"type":47,"value":1025},"Re-run ",{"type":42,"tag":50,"props":1027,"children":1029},{"className":1028},[],[1030],{"type":47,"value":445},{"type":47,"value":1032}," with narrower or prefix-aware terms before broadening code search.",{"type":42,"tag":70,"props":1034,"children":1035},{},[1036],{"type":47,"value":1037},"Use path filters only after repo-level matches identify likely directories.",{"type":42,"tag":70,"props":1039,"children":1040},{},[1041],{"type":47,"value":1042},"Keep repository names and ids visible in notes so later searches can be reproduced.",{"type":42,"tag":70,"props":1044,"children":1045},{},[1046,1048,1053],{"type":47,"value":1047},"Use ",{"type":42,"tag":50,"props":1049,"children":1051},{"className":1050},[],[1052],{"type":47,"value":840},{"type":47,"value":1054}," to resolve snippets into full source context and to gather more information about matching repositories.",{"type":42,"tag":1056,"props":1057,"children":1058},"style",{},[1059],{"type":47,"value":1060},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1062,"total":1133},[1063,1069,1083,1094,1104,1114,1124],{"slug":4,"name":4,"fn":5,"description":6,"org":1064,"tags":1065,"stars":22,"repoUrl":23,"updatedAt":24},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1066,1067,1068],{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"slug":1070,"name":1070,"fn":1071,"description":1072,"org":1073,"tags":1074,"stars":22,"repoUrl":23,"updatedAt":1082},"context-install","install and configure jbcontext","Install jbcontext and complete first-time setup — login and configure agent integration. Use when `jbcontext` is not found or the user asks to install jbcontext.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1075,1078,1079],{"name":1076,"slug":1077,"type":15},"CLI","cli",{"name":17,"slug":18,"type":15},{"name":1080,"slug":1081,"type":15},"Onboarding","onboarding","2026-07-13T06:43:56.417787",{"slug":1084,"name":1084,"fn":1085,"description":1086,"org":1087,"tags":1088,"stars":22,"repoUrl":23,"updatedAt":1093},"context-research","research unfamiliar codebases using semantic search","Research and understand unfamiliar codebases using semantic search with `jbcontext search`",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1089,1090],{"name":20,"slug":21,"type":15},{"name":1091,"slug":1092,"type":15},"Search","search","2026-07-17T06:06:53.804135",{"slug":1095,"name":1095,"fn":1096,"description":1097,"org":1098,"tags":1099,"stars":22,"repoUrl":23,"updatedAt":1103},"context-review","review code changes with semantic search","Use this skill to review code changes using semantic search to understand context and impact",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1100,1101,1102],{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":1091,"slug":1092,"type":15},"2026-07-13T06:43:53.79735",{"slug":1105,"name":1105,"fn":1106,"description":1107,"org":1108,"tags":1109,"stars":22,"repoUrl":23,"updatedAt":1113},"context-search","explore codebases using semantic search","Semantic code search for discovering and understanding code by meaning rather than keywords.\n- Use this skill when you need to find code whose location you don't already know - e.g., when the task asks 'where is X', 'how does Y work', or describes behavior or intent without naming exact symbols.\n- When not to use: if you already know the relevant file, class, or symbol (use direct navigation or keyword search instead), or for non-code-discovery tasks such as git operations, builds, tests, or reviewing an existing diff.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1110,1111,1112],{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":1091,"slug":1092,"type":15},"2026-07-30T05:28:03.252026",{"slug":1115,"name":1115,"fn":1116,"description":1117,"org":1118,"tags":1119,"stars":22,"repoUrl":23,"updatedAt":1123},"dependency-search","search dependencies across repositories","Experimental jbcontext org-wide dependency search across multiple repositories. Use when need to find APIs in other repositories, or dependency configuration are used across repos for upgrades, removals, CVEs, migrations, or ownership discovery.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1120,1121,1122],{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":1091,"slug":1092,"type":15},"2026-07-13T06:44:02.819425",{"slug":1125,"name":1125,"fn":1126,"description":1127,"org":1128,"tags":1129,"stars":22,"repoUrl":23,"updatedAt":1132},"org-search","perform org-wide semantic code search","Experimental jbcontext org-wide semantic search across multiple repositories",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1130,1131],{"name":20,"slug":21,"type":15},{"name":1091,"slug":1092,"type":15},"2026-07-17T06:04:43.196869",7,{"items":1135,"total":1260},[1136,1150,1159,1168,1177,1187,1200,1209,1218,1228,1237,1250],{"slug":1137,"name":1137,"fn":1138,"description":1139,"org":1140,"tags":1141,"stars":1147,"repoUrl":1148,"updatedAt":1149},"mps-aspect-accessories","configure JetBrains MPS module dependencies","Wire MPS module and model dependencies, used languages, used devkits, extended languages, runtime solutions, accessory models, and language\u002Fdependency versions. Use when adding\u002Fremoving module dependencies, importing languages or devkits into a model, declaring runtime solutions, or shipping accessory content visible to consumers without explicit import.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1142,1143,1146],{"name":13,"slug":14,"type":15},{"name":1144,"slug":1145,"type":15},"Configuration","configuration",{"name":17,"slug":18,"type":15},1650,"https:\u002F\u002Fgithub.com\u002FJetBrains\u002FMPS","2026-07-17T06:06:57.311661",{"slug":1151,"name":1151,"fn":1152,"description":1153,"org":1154,"tags":1155,"stars":1147,"repoUrl":1148,"updatedAt":1158},"mps-aspect-actions","define and edit MPS node factories","Use when defining or editing MPS node factories (the \"actions\" aspect) — `NodeFactories` roots, per-concept `NodeFactory` setup functions that initialize a freshly created node and optionally copy data from a replaced `sampleNode`, plus the actions aspect's `CopyPasteHandlers` and `PasteWrappers` roots. Reach for this skill when a substitution, side transform, completion replacement, or `add new initialized(...)` should preserve fields from the node it is replacing, or when defaults set in a constructor are not enough.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1156,1157],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},"2026-07-17T06:04:48.066901",{"slug":1160,"name":1160,"fn":1161,"description":1162,"org":1163,"tags":1164,"stars":1147,"repoUrl":1148,"updatedAt":1167},"mps-aspect-behavior","define and edit MPS concept behavior","Use when defining or editing MPS `ConceptBehavior` — per-concept methods (non-virtual \u002F virtual \u002F abstract \u002F static \u002F virtual static), constructors, virtual dispatch (MRO), super and interface-default calls (`super\u003CInterface>.method`), overriding methods from `lang.core.behavior` interfaces such as `ScopeProvider.getScope` \u002F `INamedConcept.getName` \u002F `BaseConcept.getPresentation`, calling sibling methods (`LocalBehaviorMethodCall`) and behavior methods from other aspects via `node.method(...)`. Reach for this skill whenever the task involves authoring or modifying `\u003Clang>\u002FlanguageModels\u002Fbehavior.mps`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1165,1166],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},"2026-07-13T06:45:21.757084",{"slug":1169,"name":1169,"fn":1170,"description":1171,"org":1172,"tags":1173,"stars":1147,"repoUrl":1148,"updatedAt":1176},"mps-aspect-constraints","define JetBrains MPS language constraints","Use when defining or editing MPS language constraints — property validators \u002F setters \u002F getters, referent search scopes (imperative or inherited via `ScopeProvider.getScope`), `referentSetHandler` side effects, default-scope blocks, `canBeChild` \u002F `canBeParent` \u002F `canBeAncestor` \u002F `canBeRoot` placement rules, `defaultConcreteConcept` for abstract concepts, `set \u003Cread-only>` and `{name}` aliasing, and scope helpers (`SimpleRoleScope`, `ListScope`, `CompositeScope`, `HidingByNameScope`). Reach for this skill whenever the task involves authoring or modifying `\u003Clang>\u002FlanguageModels\u002Fconstraints.mps`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1174,1175],{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},"2026-07-23T05:41:33.639365",{"slug":1178,"name":1178,"fn":1179,"description":1180,"org":1181,"tags":1182,"stars":1147,"repoUrl":1148,"updatedAt":1186},"mps-aspect-dataflow","define and debug MPS dataflow builders","Use when defining or debugging MPS dataflow builders for a concept — control\u002Fdata flow declarations that drive reachability analysis and variable-use checking. Covers DataFlowBuilderDeclaration, BuilderBlock, emit instructions (code for, jump, ifjump, label, read, write, ret, mayBeUnreachable), positions (AfterPosition, BeforePosition, LabelPosition), the jetbrains.mps.lang.dataFlow language, the NodeParameter implicit, BL+smodel usage inside builder bodies, and IBuilderMode for advanced analyses such as nullable\u002Fnon-null tracking.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1183],{"name":1184,"slug":1185,"type":15},"Data Analysis","data-analysis","2026-07-13T06:45:19.114674",{"slug":1188,"name":1188,"fn":1189,"description":1190,"org":1191,"tags":1192,"stars":1147,"repoUrl":1148,"updatedAt":1199},"mps-aspect-editor","define MPS editor layouts","Use when creating or changing MPS editor definitions — the overall workflow from scaffolding a `ConceptEditorDeclaration` through componentizing reusable `EditorComponentDeclaration`s, refining cell models and cell layouts, applying style sheets and indent-layout style items, wiring smart references, leveraging inheritance via super-concepts and interfaces, inspecting (`print_node_json`, `show_node_representation`) and validating (`check_root_node_problems`). Covers `jetbrains.mps.lang.editor` cell models (`CellModel_RefNode`\u002F`CellModel_RefNodeList`\u002F`CellModel_RefCell`\u002F`CellModel_Property`\u002F`CellModel_Constant`), layout choices, and JSON blueprints for common editor shapes. For the non-layout side (action maps, keymaps, transformation\u002Fsubstitute menus) use `mps-aspect-editor-menus-and-keymaps`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1193,1196],{"name":1194,"slug":1195,"type":15},"Design","design",{"name":1197,"slug":1198,"type":15},"UI Components","ui-components","2026-07-23T05:41:56.638151",{"slug":1201,"name":1201,"fn":1202,"description":1203,"org":1204,"tags":1205,"stars":1147,"repoUrl":1148,"updatedAt":1208},"mps-aspect-editor-menus-and-keymaps","author MPS editor menus and keymaps","Use when authoring the **non-layout** parts of the MPS editor aspect — what happens when the user types, presses a key, triggers completion, pastes, or invokes a context action. Covers action maps (`CellActionMapDeclaration`), cell keymaps (`CellKeyMapDeclaration`), transformation menus (`TransformationMenu_Default` \u002F `_Named` \u002F `_Contribution`), substitute menus (`SubstituteMenu_Default` \u002F `SubstituteMenu` \u002F contributions), side transforms (LEFT\u002FRIGHT), legacy cell menus, paste wrappers and copy-paste handlers (in the actions language), completion styling, reference presentation, two-step deletion, and the editor selection API. Trigger terms: `actionMap`, `keyMap`, `delete_action_id`, `transformationMenu`, `substituteMenu`, `Ctrl+Space`, `Ctrl+Alt+B`, side transform, paste wrapper, completion styling, `PasteWrappers`, `CopyPasteHandlers`. For the **layout** side (cells, layouts, style sheets) use `mps-aspect-editor` instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1206,1207],{"name":17,"slug":18,"type":15},{"name":1197,"slug":1198,"type":15},"2026-07-23T05:41:49.666535",{"slug":1210,"name":1210,"fn":1211,"description":1212,"org":1213,"tags":1214,"stars":1147,"repoUrl":1148,"updatedAt":1217},"mps-aspect-generation-plan","modify MPS generation plans","Use when defining or modifying an MPS generation plan — explicit ordering of generators, checkpoints for cross-model reference resolution, forks for parallel branches, IncludePlan composition, conditional PlanContribution activation, ParameterEquals\u002FConceptListSelector fork selectors, and InitModelAttributes for targetFacet routing. Apply when working with @genplan models, the jetbrains.mps.lang.generator.plan language, attaching plans via DevKits or the Custom generation facet, or debugging cross-model mapping label resolution.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1215,1216],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},"2026-07-13T06:44:59.507855",{"slug":1219,"name":1219,"fn":1220,"description":1221,"org":1222,"tags":1223,"stars":1147,"repoUrl":1148,"updatedAt":1227},"mps-aspect-generator","define JetBrains MPS generator rules","Use when defining or modifying MPS generators — author a generator module, add or edit root\u002Freduction\u002Fweaving\u002Fpattern mapping rules, attach template macros ($COPY_SRC, $LOOP, $IF, $PROPERTY, $REF, $SWITCH, $MAP_SRC, $WEAVE, $INSERT, $LABEL, $TRACE, $VAR), wire mapping labels, build template switches, write pre\u002Fpost mapping scripts, navigate `genContext`, or debug \"rule didn't fire\", missing references, empty output, infinite reduction loops, and generated-Java compile failures.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1224,1225,1226],{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},"2026-07-17T06:06:58.042999",{"slug":1229,"name":1229,"fn":1230,"description":1231,"org":1232,"tags":1233,"stars":1147,"repoUrl":1148,"updatedAt":1236},"mps-aspect-intentions","define and edit MPS intentions","Use when defining or editing MPS intentions (the Alt+Enter context-action aspect) — adding `IntentionDeclaration` roots, parameterized or surround-with variants, description\u002FisApplicable\u002Fexecute blocks, child-filter functions, factory-initialized AST splicing, or debugging why an intention is not offered. Lives in the language's `intentions` model and uses `jetbrains.mps.lang.intentions`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1234,1235],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},"2026-07-23T05:41:48.692899",{"slug":1238,"name":1238,"fn":1239,"description":1240,"org":1241,"tags":1242,"stars":1147,"repoUrl":1148,"updatedAt":1249},"mps-aspect-migrations","author and debug MPS migration scripts","Use when authoring or debugging MPS migration scripts that upgrade user models after a language definition changes — covers jetbrains.mps.lang.migration (MigrationScript class-based, PureMigrationScript declarative, MoveConcept\u002FMoveContainmentLink\u002FMoveReferenceLink\u002FMoveProperty, ordering via OrderDependency, data exchange via putData\u002FgetData, RefactoringLog, ConceptMigrationReference) and jetbrains.mps.lang.script Enhancement Scripts (MigrationScript with MigrationScriptPart_Instance, ExtractInterfaceMigration, FactoryMigrationScriptPart, CommentMigrationScriptPart) — when a model needs version-gated upgrade, concept rename or removal, link or property rename, instance-level transformation, or composition of migration steps.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1243,1246],{"name":1244,"slug":1245,"type":15},"Debugging","debugging",{"name":1247,"slug":1248,"type":15},"Migration","migration","2026-07-13T06:45:20.372122",{"slug":1251,"name":1251,"fn":1252,"description":1253,"org":1254,"tags":1255,"stars":1147,"repoUrl":1148,"updatedAt":1259},"mps-aspect-structure-concepts","define concepts in MPS structure aspect","Define concepts, interface concepts, enumerations, and constrained data types in an MPS language's `structure` aspect. Covers smart-reference detection, alias rules, cardinality, INamedConcept usage, bulk creation, and the full `mps_mcp_alter_structure` \u002F `mps_mcp_query_structure` reference. Use when authoring or modifying a language's structure model.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1256],{"name":1257,"slug":1258,"type":15},"Data Modeling","data-modeling","2026-07-23T05:41:30.705975",188]