@rch4com/agent-setup 1.28.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +31 -20
  2. package/install.mjs +25 -8
  3. package/lib/activation.mjs +31 -0
  4. package/lib/args.mjs +5 -2
  5. package/lib/bootstrap/manifest.mjs +21 -47
  6. package/lib/bootstrap/templates.mjs +7 -60
  7. package/lib/catalog.mjs +22 -241
  8. package/lib/clis.mjs +11 -118
  9. package/lib/commands.mjs +47 -0
  10. package/lib/engine.mjs +16 -11
  11. package/lib/i18n/catalog/en.mjs +58 -49
  12. package/lib/i18n/catalog/ko.mjs +58 -49
  13. package/lib/items/mcp.codebase-memory.mjs +6 -4
  14. package/lib/items/mcp.graft.mjs +6 -4
  15. package/lib/items/mcp.graphify.mjs +6 -4
  16. package/lib/items/mcp.headroom.mjs +6 -4
  17. package/lib/items/mcp.notion.mjs +7 -4
  18. package/lib/items/mcp.supabase.mjs +7 -4
  19. package/lib/items/mcp.vercel.mjs +7 -4
  20. package/lib/items/plugin.ai-memory.mjs +29 -0
  21. package/lib/items/plugin.cli-anything.mjs +18 -15
  22. package/lib/items/plugin.ecc.mjs +22 -20
  23. package/lib/items/plugin.hyperframes.mjs +17 -13
  24. package/lib/items/plugin.impeccable.mjs +19 -22
  25. package/lib/items/plugin.mattpocock-skills.mjs +23 -17
  26. package/lib/items/plugin.ponytail.mjs +24 -106
  27. package/lib/items/plugin.superpowers.mjs +20 -24
  28. package/lib/items/plugin.understand-anything.mjs +21 -19
  29. package/lib/items/skill.agent-browser.mjs +6 -6
  30. package/lib/items/skill.agent-handoff-manager.mjs +14 -0
  31. package/lib/items/skill.archify.mjs +5 -5
  32. package/lib/items/skill.caveman.mjs +5 -5
  33. package/lib/items/skill.diagram-design.mjs +5 -5
  34. package/lib/items/skill.eli5.mjs +6 -6
  35. package/lib/items/skill.find-skills.mjs +5 -5
  36. package/lib/items/skill.gsd.mjs +28 -89
  37. package/lib/items/skill.gstack.mjs +58 -65
  38. package/lib/items/skill.hallmark.mjs +5 -5
  39. package/lib/items/skill.html-plan.mjs +15 -0
  40. package/lib/items/skill.i-have-adhd.mjs +6 -6
  41. package/lib/items/skill.im-not-ai.mjs +5 -6
  42. package/lib/items/skill.impeccable.mjs +6 -6
  43. package/lib/items/skill.karpathy.mjs +5 -5
  44. package/lib/items/skill.mattpocock-skills.mjs +5 -6
  45. package/lib/items/skill.mcp-builder.mjs +5 -5
  46. package/lib/items/skill.officecli.mjs +5 -5
  47. package/lib/items/skill.prompt-master.mjs +5 -5
  48. package/lib/items/skill.remotion.mjs +5 -5
  49. package/lib/items/skill.strix.mjs +5 -6
  50. package/lib/items/skill.superpowers.mjs +6 -7
  51. package/lib/items/skill.taste.mjs +5 -5
  52. package/lib/items/skill.unslop.mjs +12 -0
  53. package/lib/probe.mjs +136 -0
  54. package/lib/recipe-helpers.mjs +281 -0
  55. package/lib/recipe.mjs +181 -0
  56. package/lib/skills-registry.mjs +93 -0
  57. package/lib/status.mjs +7 -3
  58. package/lib/tui/detail.mjs +5 -25
  59. package/lib/tui/rows.mjs +25 -14
  60. package/lib/tui/run.mjs +35 -8
  61. package/package.json +4 -3
  62. package/lib/claude-plugins.mjs +0 -64
  63. package/lib/global-plugin.mjs +0 -239
  64. package/lib/items/global.ponytail.mjs +0 -56
  65. package/lib/items/global.superpowers.mjs +0 -58
  66. package/lib/tomlfile.mjs +0 -67
@@ -56,8 +56,10 @@ export default {
56
56
  ' screen wires up skills. (default: auto)',
57
57
  ' --design-dir <path> Add a design.md source. Accepts <source-id>=<path>',
58
58
  ' and may be repeated.',
59
+ ' --global Install user-globally instead of into this repository.',
60
+ ' --print Print the CLI commands instead of running them.',
61
+ ' (--dry-run is an alias.)',
59
62
  ' --lang en|ko Display language for this run.',
60
- ' --dry-run Change nothing; print what would happen.',
61
63
  ' -h, --help Print this help and exit.',
62
64
  '',
63
65
  '--list and --set both choose an action, so they cannot be combined.',
@@ -230,40 +232,44 @@ export default {
230
232
  // 항목 카탈로그 — note·unsupported 사유·detect()의 detail은 만들어지는 시점에
231
233
  // 로케일을 모른다. catalog.mjs·lib/items/*가 여기 키를 담아 두고, 표시하는
232
234
  // 쪽이 렌더 시점에 t나 toText로 푼다.
233
- 'item.unsupported.claudePlugin': 'Claude Code plugin only',
234
- 'item.unsupported.claudeSkill': 'Claude Code skill install',
235
- 'item.unsupported.ponytailUser': 'upstream installs it per user (codex/copilot/grok plugin, gemini extension)',
236
- 'item.unsupported.ponytailRules': 'no plugin mechanism — copy an upstream rules file by hand (.kiro/steering/ for Kiro, .github/copilot-instructions.md for VS Code Copilot, AGENTS.md otherwise)',
237
- 'item.unsupported.eccCodexHome': 'upstream ships a native Codex plugin, but it installs into the single active CODEX_HOME — there is no project scope',
238
- 'item.unsupported.eccScale': 'upstream also supports OpenCode, Gemini and Kimi project-locally, but its skills/ holds 284 entries that would swamp the shared directory — only the plugin route is wired',
239
- 'item.unsupported.uaUser': 'upstream install.sh clones into ~/.understand-anything and links from the home directory (user scope); the copilot plugin install offers no scope choice either',
240
- 'item.unsupported.cliAnythingCodex': 'upstream codex-skill installer writes to $CODEX_HOME/skills (or ~/.codex/skills) — user scope',
235
+ 'item.unsupported.eccScale': 'upstream supports OpenCode, Antigravity and Copilot CLI through ./install.sh --target, but its skills/ holds 284 entries that would swamp the shared directory — only the plugin route is wired',
236
+ 'item.unsupported.uaUser': 'upstream install.sh clones into ~/.understand-anything and links from the home directory — a script, not a CLI command, so this installer cannot detect or remove it',
237
+ 'item.unsupported.cliAnythingCodex': 'upstream\'s codex-skill installer is a script that writes to $CODEX_HOME/skills (or ~/.codex/skills), not a Codex command',
241
238
  'item.unsupported.cliAnythingManual': 'upstream gives OpenCode no installer, only a manual copy of the commands files',
242
- 'item.unsupported.mattpocockRegistry': 'upstream also documents npx skills add (the shared .agents/skills), but this item wires the Claude Code plugin only',
239
+ 'item.unsupported.mattpocockRegistry': 'upstream documents npx skills add — the shared-skill edition skill.mattpocock-skills covers this CLI',
243
240
  'item.unsupported.unmeasuredUpstream': 'upstream has an install command, but the detect/remove path has not been verified, so it is not wired yet — you can install it by hand with the command in the upstream README',
244
- 'item.unsupported.noProjectMcp': 'no project-scoped MCP file — MCP is configured only in the home global (~/.gemini/config/mcp_config.json), so register it there by hand if needed',
245
241
  'item.unsupported.upstreamNone': 'no official install path upstream',
242
+ 'item.unsupported.vscodePlugin': 'VS Code Copilot has no command that installs plugins (only the Chat: Install Plugin From Source action in the UI)',
243
+ 'item.unsupported.cliAnythingCopilot': 'upstream documents Copilot CLI only as an install from a local clone, labeled community',
244
+ 'item.unsupported.userOnly': 'this CLI installs it only user-globally — switch the scope to Global',
245
+ 'item.unsupported.projectOnly': 'this CLI installs it only per repository — switch the scope to Repo',
246
+ 'item.probeFailed': 'could not read install state: {list}',
247
+ 'error.recipeInvalid': 'Invalid recipe in item {id}: {why}',
248
+ 'error.stepsFailed': ['Some commands failed:', '{details}'],
249
+ 'error.codexMcpVerify': 'Codex did not register MCP server {name} — check codex mcp list and run the printed command by hand',
250
+ 'error.opencodeVerify': 'OpenCode did not apply the change to {file} — check the file and run the printed command by hand',
246
251
  'item.unsupported.superpowersSeparate': 'upstream supports it via a separate per-harness install — this item wires the Claude Code plugin only',
247
- 'item.unsupported.superpowersGlobalClaude': 'covered by the repo-scope item superpowers (repo)',
248
- 'item.unsupported.superpowersGlobalKimi': 'upstream installs only via the interactive /plugins command — no headless path',
249
- 'item.unsupported.globalProjectItem': 'covered by the repo-scope item {item}',
250
252
  'item.unsupported.impeccableSkill': 'upstream supports it — the shared-skill edition skill.impeccable covers this CLI, and this plugin item wires Claude Code only',
251
- 'item.unsupported.gstackHost': 'upstream supports it via ./setup --host — this item installs for Claude Code only',
252
253
  'item.unsupported.gstackShared': 'the upstream --host route is user-scoped, so it is not used. In a bootstrapped repository the shared .agents/skills junction reaches this CLI instead, and it scans recursively, so it sees the individual skills too (measured 2026-08-15)',
253
- 'item.unsupported.gstackSharedShallow': 'in a bootstrapped repository the shared .agents/skills junction reaches this CLI, but it scans only one level, so just the router skill shows up (measured 2026-08-15)',
254
- 'item.unsupported.gsdKimiLocal': 'upstream still blocks project-scope installs — --kimi --local refuses with "Project-level Kimi install semantics remain deferred" (measured 2026-08-15)',
255
- 'item.unsupported.gsdGemini': 'upstream dropped Gemini CLI (sunset 2026-06) — Antigravity succeeds it via --antigravity',
256
- 'item.mcp.partial': 'registered: {present} / missing: {missing}',
257
254
  'item.plugin.partial': 'wired: {present} / missing: {missing}',
258
255
  'item.global.noCli': 'CLI not on this machine: {list} — excluded from the target set',
259
256
  'run.keepUserScope': '· {id} is a user-global item and is not removed by omission from --set — uncheck it in the TUI to remove it',
260
- 'item.global.skipped': 'skipped (no CLI): {list}',
261
- 'item.plugin.deferred': 'recorded in config — it downloads on the next Claude Code run',
262
257
  'item.scanFailed': 'detection failed: {message}',
263
- 'log.mcp.add': ' [dry-run] register {name} in the {cli} config',
264
- 'log.mcp.remove': ' [dry-run] remove {name} from the {cli} config',
265
- 'log.plugin.add': ' [dry-run] add plugin {name} to the {cli} config',
266
- 'log.plugin.remove': ' [dry-run] remove plugin {name} from the {cli} config',
258
+ 'scope.project': 'repo',
259
+ 'scope.user': 'user-global',
260
+ 'print.title': 'Commands for these changes (nothing was run):',
261
+ 'print.shared': 'Shared skills',
262
+ 'print.files': 'File items',
263
+ 'print.fileItem': '{label}: the installer writes these files itself — run without --print to apply',
264
+ 'print.none': 'No commands — nothing to change.',
265
+ 'activation.title': 'After installing:',
266
+ 'activation.cli.claude': 'start a new session (check /plugin if something looks inactive)',
267
+ 'activation.cli.codex': 'run codex and start a new session',
268
+ 'activation.cli.opencode': 'restart OpenCode',
269
+ 'activation.cli.antigravity': 'restart Antigravity',
270
+ 'activation.cli.copilot': 'start copilot fresh (an open copilot session can make the install fail with "os error 5" — close it and retry)',
271
+ 'activation.cli.vscode': 'reload the VS Code window (Developer: Reload Window) — MCP servers start only after you trust them once',
272
+ 'activation.hooks.codex': 'hooks ({items}): in codex type /hooks, trust the new lifecycle hooks, then start a new session',
267
273
 
268
274
  'item.mcp.notion.note': 'auth: OAuth on first use in each CLI',
269
275
  'item.mcp.vercel.note': 'auth: OAuth on first use (only approved clients can connect)',
@@ -272,37 +278,42 @@ export default {
272
278
  'item.mcp.graft.note': 'serves a codebase knowledge graph as six MCP tools (find_code, trace_calls, file_api and more). Runs as npx -y @nanonets/graft mcp, so nothing to install, but build the graph (graft/) first with graft build (the structural graph needs no LLM key). On Windows the tree-sitter-kotlin dependency needs a C++ toolchain to compile and Node 24 cannot compile it at all (upstream #400) — use Node 22 plus the VS C++ workload. The upstream graft init edits AGENTS.md, GEMINI.md and hooks directly, so it is not used',
273
279
  'item.mcp.graphify.note': 'needs the graphify-mcp binary on PATH. Install: uv tool install "graphifyy[mcp]". Reads graphify-out/graph.json — build it first with /graphify .',
274
280
  'item.mcp.headroom.note': 'needs the headroom binary on PATH. Install: uv tool install --python 3.13 "headroom-ai[proxy,mcp]". The proxy (headroom wrap) is a way of launching, not repo config',
275
- 'item.plugin.superpowers.note': 'official marketplace plugin. Upstream supports 14 harnesses (Codex, Grok Build, …) via per-harness installs',
276
- 'item.global.superpowers.note': 'installs superpowers user-globally with each harness\'s official command — marketplace for codex/copilot, extensions for gemini, the global opencode.json for OpenCode, grok plugin install superpowers@xai-official for grok. CLIs missing from this machine are skipped. Removing from grok leaves the name in ~/.grok/config.toml [plugins].enabled (upstream behavior). With skill.superpowers also on, overlapping CLIs see the same skills twice',
277
- 'item.global.ponytail.note': 'installs Ponytail user-globally with each harness\'s official command — the DietrichGebert/ponytail marketplace for codex/copilot, extensions for gemini, grok plugin install DietrichGebert/ponytail for grok. After the codex install, check hook registration once via /hooks. Upstream recommends scripts/uninstall.js to clean ~/.config/ponytail before removal — this item removes the plugin only',
281
+ 'item.plugin.superpowers.note': 'official marketplace plugin for Claude Code. Codex, OpenCode, Antigravity and Copilot CLI use the install command upstream documents for each',
278
282
  'item.plugin.mattpocock-skills.note': '35 engineering and productivity skills (code-review, diagnosing-bugs, domain-modeling, …)',
279
- 'item.plugin.ponytail.note': 'lean-code ruleset. Wires the Claude Code plugin and the OpenCode plugin entry, both repo-scoped',
283
+ 'item.plugin.ponytail.note': 'lean-code ruleset. Installs with each CLI\'s own command — Claude and OpenCode per repository or user-globally, Codex, Antigravity and Copilot CLI user-globally. Upstream recommends scripts/uninstall.js to clean ~/.config/ponytail before removal',
284
+ 'item.mcp.oauth.post': 'sign in once with OAuth — in Codex run codex mcp login <server name>; Claude Code, OpenCode, Antigravity, Copilot CLI and VS Code Copilot ask on first use',
285
+ 'item.plugin.ponytail.post': 'Node.js must be on PATH for the always-on hook to run',
286
+ 'item.plugin.ai-memory.note': 'long-term memory shared across agents, backed by your own ai-memory server. Claude Code and Codex get the upstream marketplace plugin (hooks and skills); OpenCode, Antigravity, Copilot CLI and VS Code Copilot get the stdio bridge (ai-memory mcp-bridge --no-session-id) as an MCP server (no hooks) — the bridge reads its token from the data directory, so it never lands in a config file',
287
+ 'item.plugin.ai-memory.post': 'install the ai-memory binary first (install.sh / install.ps1 from the upstream release), run ai-memory setup once, and resume a session with ai-memory run <agent>',
280
288
  'item.plugin.ecc.note': 'skills, instincts, memory and security for agent harnesses. Installed as a plugin — its skills/ holds 284 entries, too many to copy into the shared skills directory',
281
289
  'item.plugin.impeccable.note': 'design language for AI harnesses. This is the Claude Code plugin edition — pick the shared-skill edition skill.impeccable to reach the other CLIs too (only one of the two can be chosen)',
282
- 'item.skill.impeccable.note': 'design language for AI harnesses, copied into the shared .agents/skills so all 11 CLIs see it (62 files, 2.3MB). Only one of this and the plugin edition can be chosen. The engine binary is not included — on first run the bundled scripts/impeccable downloads it and caches it in ~/.impeccable, which writes outside the repository',
290
+ 'item.skill.impeccable.note': 'design language for AI harnesses, copied into the shared .agents/skills so all four CLIs see it (62 files, 2.3MB). Only one of this and the plugin edition can be chosen. The engine binary is not included — on first run the bundled scripts/impeccable downloads it and caches it in ~/.impeccable, which writes outside the repository',
283
291
  'item.plugin.cli-anything.note': 'harness plugin that turns GUI/desktop software into a Python CLI agents can drive. Generate with /cli-anything <source path or repo>, followed by the refine, test, validate and list commands. Fetching already-built CLIs from the hub is a separate thing, the cli-hub-meta-skill',
284
292
  'item.plugin.hyperframes.note': 'HyperFrames (HeyGen) bundle of 21 skills for writing video in HTML/CSS and rendering deterministic MP4. The /hyperframes router loads the promo, explainer, caption and motion-graphics workflows on demand. Rendering needs Node.js 22+ and FFmpeg. Other CLIs install it separately upstream, so only the plugin is wired',
285
- 'item.plugin.understand-anything.note': 'turns the codebase into an explorable knowledge graph. The script for other CLIs clones into ~/.understand-anything (user scope), so only the plugin is wired',
286
- 'item.skill.eli5.note': 'eli5 from the Anthropic community marketplace — turns /eli5 <topic> into an HTML picture explainer with big visuals and few words. Upstream ships it as a Claude plugin, but it is a single skill with no hooks or commands, so it is installed as the shared skill all 11 CLIs see',
287
- 'item.skill.i-have-adhd.note': 'output shaping for an ADHD reader — next action first, numbered steps, no tangents, restated progress, no preamble or closers. Turn on with /i-have-adhd, off with "stop adhd mode". Always-on is what the upstream Claude plugin edition adds through its hook; this item instead installs the shared skill that all 11 CLIs see',
293
+ 'item.plugin.understand-anything.note': 'turns the codebase into an explorable knowledge graph. The script for other CLIs clones into ~/.understand-anything (user scope), so only the Claude plugin and the Copilot CLI plugin are wired',
294
+ 'item.skill.eli5.note': 'eli5 from the Anthropic community marketplace — turns /eli5 <topic> into an HTML picture explainer with big visuals and few words. Upstream ships it as a Claude plugin, but it is a single skill with no hooks or commands, so it is installed as the shared skill all four CLIs see',
295
+ 'item.skill.html-plan.note': 'html-plan from the Anthropic community marketplace — turns /html-plan <what to build> into one interactive HTML plan page with a claim tree, mockups and decision points. A single skill with no hooks or commands, so it is installed as a shared skill',
296
+ 'item.skill.unslop.note': 'redesigns vibecoded, AI-looking UI (purple gradients, glows, emoji labels and the like) in a direction drawn from the product. Licensed CC-BY-4.0 (attribution required)',
297
+ 'item.skill.agent-handoff-manager.note': 'experimental skill that saves and resumes work handoffs between agents. Its core is scripts/handoff.py, so Python 3.10+ must be on PATH; records go to .handoffs/ in the target repo',
298
+ 'item.skill.i-have-adhd.note': 'output shaping for an ADHD reader — next action first, numbered steps, no tangents, restated progress, no preamble or closers. Turn on with /i-have-adhd, off with "stop adhd mode". Always-on is what the upstream Claude plugin edition adds through its hook; this item instead installs the shared skill that all four CLIs see',
288
299
  'item.skill.caveman.note': 'cuts output tokens by answering in caveman-speak; code and errors stay byte-exact. Toggle with /caveman',
289
300
  'item.skill.taste.note': 'anti-slop frontend skill for landing pages, portfolios and redesigns (skill name: design-taste-frontend)',
290
- 'item.skill.hallmark.note': 'anti-AI-slop design skill with four verbs (build, audit, redesign, study). 21 themes and 57 slop-test gates. Upstream also documents Cursor and Codex paths; the shared skills directory covers all 11 CLIs at once',
301
+ 'item.skill.hallmark.note': 'anti-AI-slop design skill with four verbs (build, audit, redesign, study). 21 themes and 57 slop-test gates. Upstream also documents Cursor and Codex paths; the shared skills directory covers all four CLIs at once',
291
302
  'item.skill.archify.note': 'architecture, workflow, sequence, data-flow and lifecycle diagrams as validated standalone HTML with inline SVG, dark/light themes and PNG/SVG/WebM export; also redraws pasted Mermaid. Needs Node 18+ to run its bundled validator (no npm install). After the first diagram it checks the upstream release manifest once — set ARCHIFY_UPDATE_CHECK_DISABLED=1 to turn that off',
292
303
  'item.skill.remotion.note': 'official skills for Remotion, which makes video with React. remotion-best-practices alone holds the other 11 (create, markup, studio, render, captions, maps…), so only it is copied (141 files, 1.1MB). The individual /remotion-* slash commands do not appear. License note: free for individuals, for-profit organizations up to 3 employees, and non-profits; larger for-profit organizations need a Remotion company license',
293
304
  'item.skill.diagram-design.note': 'draws 27 diagram types in HTML/SVG using your brand colors and fonts; also redraws Mermaid and draw.io sources. The default fonts (Instrument Serif, Geist) carry no CJK glyphs — swap them in style-guide.md — and PNG export needs Playwright and Chromium separately. The three upstream slash commands are left out, but the references/ they delegate to come along',
294
- 'item.skill.superpowers.note': 'copies 14 skills into the shared .agents/skills so all 11 CLIs see them. Only one of this and the plugin edition can be chosen — this route has no session-start hook, so nothing is injected at the start of a conversation and skills are invoked on demand',
295
- 'item.skill.agent-browser.note': 'a skill that drives the browser-automation CLI. Requires the agent-browser binary on PATH — npm i -g agent-browser, then agent-browser install once (downloads Chrome for Testing). The SKILL.md is a discovery stub; the real workflow guidance is served by the installed CLI. The body is harness-neutral, so all 11 CLIs share it (only the allowed-tools line is Claude syntax)',
296
- 'item.skill.find-skills.note': 'a skill that searches the public skills registry and guides installs. It only instructs npx skills commands — harness-neutral, shared by all 11 CLIs',
297
- 'item.skill.mcp-builder.note': 'a guide for building MCP servers (Python FastMCP, Node MCP SDK). Its four reference/ documents and the Apache-2.0 LICENSE.txt are copied along inside the skill directory. Harness-neutral content shared by all 11 CLIs',
298
- 'item.skill.mattpocock-skills.note': 'copies 35 skills into the shared .agents/skills so all 11 CLIs see them. Upstream documents this route itself, and with no hooks involved nothing is lost against the plugin edition. Only one of the two can be chosen',
305
+ 'item.skill.superpowers.note': 'copies 14 skills into the shared .agents/skills so all four CLIs see them. Only one of this and the plugin edition can be chosen — this route has no session-start hook, so nothing is injected at the start of a conversation and skills are invoked on demand',
306
+ 'item.skill.agent-browser.note': 'a skill that drives the browser-automation CLI. Requires the agent-browser binary on PATH — npm i -g agent-browser, then agent-browser install once (downloads Chrome for Testing). The SKILL.md is a discovery stub; the real workflow guidance is served by the installed CLI. The body is harness-neutral, so all four CLIs share it (only the allowed-tools line is Claude syntax)',
307
+ 'item.skill.find-skills.note': 'a skill that searches the public skills registry and guides installs. It only instructs npx skills commands — harness-neutral, shared by all four CLIs',
308
+ 'item.skill.mcp-builder.note': 'a guide for building MCP servers (Python FastMCP, Node MCP SDK). Its four reference/ documents and the Apache-2.0 LICENSE.txt are copied along inside the skill directory. Harness-neutral content shared by all four CLIs',
309
+ 'item.skill.mattpocock-skills.note': 'copies 35 skills into the shared .agents/skills so all four CLIs see them. Upstream documents this route itself, and with no hooks involved nothing is lost against the plugin edition. Only one of the two can be chosen',
299
310
  'item.skill.karpathy.note': 'behavioral guidelines that curb overbuilding and vague success criteria',
300
- 'item.skill.prompt-master.note': 'a skill that writes and refines prompts for AI tools. Activates only when explicitly asked to write or fix a prompt. Harness-neutral body shared by all 11 CLIs',
311
+ 'item.skill.prompt-master.note': 'a skill that writes and refines prompts for AI tools. Activates only when explicitly asked to write or fix a prompt. Harness-neutral body shared by all four CLIs',
301
312
  'item.skill.strix.note': 'copies 9 security-testing skills (pentesting, OWASP Top 10, vulnerability discovery and fix flows) into the shared .agents/skills. The skills drive the Strix agent, so the strix binary is required on PATH — self-hosted needs pipx install strix-agent plus Docker and STRIX_LLM/LLM_API_KEY, managed needs strix cloud login. Use only against targets you are authorized to test',
302
- 'item.skill.im-not-ai.note': 'copies 4 skills (humanize-korean plus the humanize, humanize-scan and humanize-redo entry points; 22 files, 420KB) that rewrite AI-written Korean text so it reads human, into the shared .agents/skills for all 11 CLIs. Only the skills come along — upstream\'s 9 subagents live outside the skill folders, so the multi-call heavy route runs only where the CLI can run subagents itself or via the upstream Claude plugin',
313
+ 'item.skill.im-not-ai.note': 'copies 4 skills (humanize-korean plus the humanize, humanize-scan and humanize-redo entry points; 22 files, 420KB) that rewrite AI-written Korean text so it reads human, into the shared .agents/skills for all four CLIs. Only the skills come along — upstream\'s 9 subagents live outside the skill folders, so the multi-call heavy route runs only where the CLI can run subagents itself or via the upstream Claude plugin',
303
314
  'item.skill.officecli.note': 'copies a skill for reading, editing and creating Word, Excel and PowerPoint documents (.docx, .xlsx, .pptx) into the shared .agents/skills. The skill drives the officecli binary, so officecli is required on PATH — npm install -g @officecli/officecli or the upstream install.sh/install.ps1. No Office installation needed',
304
315
  'item.skill.gstack.note': 'repo-local clone + setup (needs bash; Git Bash on Windows). Runtime state (~/.gstack) may be created globally. In a bootstrapped repository .claude/skills is a junction, so the files land in the shared .agents/skills — codex and opencode scan recursively and see the individual skills too',
305
- 'item.skill.gsd.note': 'npx @opengsd/gsd-core, installed per project — wires five runtimes in one run: claude, codex, opencode, copilot, kilo (.claude/commands, .codex/skills, .opencode/skills, .github/skills, .kilo/skills). Each runtime writes roughly 700 files. gemini was dropped upstream and kimi still blocks project installs',
316
+ 'item.skill.gsd.note': 'npx @opengsd/gsd-core, installed per project — one command per runtime for claude, codex, opencode and copilot (.claude/commands, .codex/skills, .opencode/skills, .github/skills). Each runtime writes roughly 700 files. Antigravity has an upstream flag, but its install path is not measured yet',
306
317
  // 커밋 템플릿은 CLI 배선이 아니라 저장소 규약이다 — note가 "무엇이 놓이고
307
318
  // 무엇이 설정되는가"를 대신 말한다(상세 패널에 배선표가 없다).
308
319
  'item.config.gitmessage.en.note': 'commit messages in English. Writes the template and points git commit.template at it, so it opens in every editor and every tool in this repository. Also sets VS Code to open the commit editor and to apply the template to Copilot message generation (.vscode/settings.json, only keys not already set)',
@@ -316,14 +327,8 @@ export default {
316
327
  'error.gitmessageForeign': '{path} already exists and was not written by this tool. A hand-written template is never overwritten — move or delete it first.',
317
328
  'error.gitmessageConfig': 'git config commit.template failed: {output}',
318
329
  'error.exclusiveItems': 'These items compete for the same slot, so only one can be chosen: {ids}',
319
- 'error.gstackClone': 'gstack clone failed: {output}',
320
- 'error.gstackSetup': 'gstack setup failed: {output}',
321
- 'error.gsdInstall': 'GSD install failed: {output}',
322
- 'error.gsdUninstall': 'GSD uninstall failed: {output}',
323
- 'error.ponytailOpencodePlugin': '{file}: the plugin key is not an array. Leaving it alone — add "@dietrichgebert/ponytail" by hand.',
324
330
  'error.globalExec': 'a harness command failed — {detail}',
325
331
  'error.globalOpencodePlugin': '{file}: the plugin key is not an array. Leaving it alone — add "{entry}" by hand.',
326
- 'error.registrySkillInstall': 'skill registry install failed ({skill}): {output}',
327
332
  'error.registrySkillAnchor': "{id}: when skill is '*', an anchor skill must be named for detect to look at",
328
333
  'error.itemFieldMissing': '{file}: {field} missing',
329
334
  'error.itemReasonMissing': '{id}: needs a reason for unsupported CLI \'{cli}\' (unsupported.{cli})',
@@ -357,7 +362,7 @@ export default {
357
362
  'tui.hint.quit': 'Ctrl+Q quit',
358
363
  'tui.review.title': 'Review — {count} change(s)',
359
364
  'tui.review.more': ' …and {count} more',
360
- 'tui.review.hint': 'Enter apply Esc cancel Ctrl+Q quit',
365
+ 'tui.review.hint': 'Enter apply p print commands Esc cancel Ctrl+Q quit',
361
366
  'tui.review.globalWarning': '{count} machine-global change(s) — settings outside this repo (~/.codex etc.) will change',
362
367
  'tui.notItemRow': 'Press Enter to run this row.',
363
368
  'tui.noPreview': 'This item has no preview.',
@@ -384,6 +389,7 @@ export default {
384
389
  ' Space select/deselect — [+] to install · [-] to remove · [×] installed',
385
390
  ' Tab · Shift+Tab · ←→ switch tabs (selections accumulate across tabs)',
386
391
  ' Enter run a [▶] action row; otherwise submit (review → apply all)',
392
+ ' p (review) print the CLI commands instead of running them',
387
393
  ' Ctrl+A select/deselect every visible item in this tab',
388
394
  ' Ctrl+O preview the item under the cursor (design.md opens a browser)',
389
395
  ' Ctrl+F · Ctrl+B cycle the CLI filter forward / backward (All → one CLI)',
@@ -444,6 +450,9 @@ export default {
444
450
  // 상주 언어 행 — 작업 탭 맨 위. hint는 현재 로케일의 자기 이름을 담는다.
445
451
  'action.language.label': 'Language',
446
452
  'action.language.hint': '{current} · Enter to change',
453
+ 'action.scope.label': 'Install scope',
454
+ 'action.scope.hint': 'now: {current} · Enter switches repo ↔ user-global',
455
+ 'tui.scope.switched': 'Scope: {current}',
447
456
  'action.bootstrap.label': 'Run bootstrap',
448
457
  'action.bootstrap.hint': 'guides · skills · per-tool config · {present} of {total} files exist',
449
458
  'action.sync.installed.label': 'Update installed',
@@ -50,8 +50,10 @@ export default {
50
50
  ' 연결 방식입니다. (기본값: auto)',
51
51
  ' --design-dir <경로> design.md 소스를 더합니다. <소스id>=<경로>',
52
52
  ' 형식도 받으며 반복 지정할 수 있습니다.',
53
+ ' --global 이 저장소 대신 사용자 전역에 설치합니다.',
54
+ ' --print CLI 명령을 실행하지 않고 출력만 합니다.',
55
+ ' (--dry-run과 같습니다.)',
53
56
  ' --lang en|ko 이번 실행에 쓸 표시 언어입니다.',
54
- ' --dry-run 아무것도 바꾸지 않고 예정된 동작만 출력합니다.',
55
57
  ' -h, --help 이 도움말을 출력하고 종료합니다.',
56
58
  '',
57
59
  '--list와 --set은 동작을 고르는 플래그라 함께 쓸 수 없습니다.',
@@ -223,40 +225,44 @@ export default {
223
225
  'error.noRecordForUpdate': '{path}이 없습니다. 이 저장소를 기록 체계로 끌어오려면 먼저 `bootstrap --adopt`를 실행하세요 — 파일을 만들지 않고 기록만 만듭니다.',
224
226
 
225
227
  // 항목 카탈로그 — 기존 원문을 그대로 옮긴다. en.mjs 쪽 주석 참고.
226
- 'item.unsupported.claudePlugin': 'Claude Code 전용 플러그인',
227
- 'item.unsupported.claudeSkill': 'Claude Code 스킬 설치본',
228
- 'item.unsupported.ponytailUser': '상류 설치 경로가 사용자 스코프입니다 (codex·copilot·grok 플러그인, gemini 확장)',
229
- 'item.unsupported.ponytailRules': '플러그인 기구가 없습니다 — 상류의 규칙 파일을 손으로 옮겨야 합니다 (kiro는 .kiro/steering/, VS Code Copilot은 .github/copilot-instructions.md, 나머지는 AGENTS.md)',
230
- 'item.unsupported.eccCodexHome': '상류가 Codex 네이티브 플러그인을 지원하지만 활성 CODEX_HOME 하나에만 설치됩니다 — 프로젝트 스코프가 없습니다',
231
- 'item.unsupported.eccScale': '상류는 OpenCode·Gemini·Kimi 등을 프로젝트 로컬로도 지원하지만 skills/에 284개가 들어 있어 공유 디렉터리를 덮습니다 — 플러그인 경로만 배선합니다',
232
- 'item.unsupported.uaUser': '상류 install.sh가 ~/.understand-anything에 클론하고 홈에 링크를 겁니다(사용자 스코프). copilot 플러그인 설치도 스코프 선택이 없습니다',
233
- 'item.unsupported.cliAnythingCodex': '상류 codex-skill 설치기가 $CODEX_HOME/skills(없으면 ~/.codex/skills)에 설치합니다 — 사용자 스코프입니다',
228
+ 'item.unsupported.eccScale': '상류는 OpenCode·Antigravity·Copilot CLI를 ./install.sh --target으로 지원하지만 skills/에 284개가 들어 있어 공유 디렉터리를 덮습니다 — 플러그인 경로만 배선합니다',
229
+ 'item.unsupported.uaUser': '상류 install.sh가 ~/.understand-anything에 클론하고 홈에 링크를 겁니다 — CLI 명령이 아닌 스크립트라 이 설치기가 감지·제거할 수 없습니다',
230
+ 'item.unsupported.cliAnythingCodex': '상류 codex-skill 설치기는 Codex 명령이 아니라 $CODEX_HOME/skills(없으면 ~/.codex/skills)에 쓰는 스크립트입니다',
234
231
  'item.unsupported.cliAnythingManual': '상류가 OpenCode에는 설치기 없이 commands 파일을 직접 복사하라고만 안내합니다',
235
- 'item.unsupported.mattpocockRegistry': '상류가 npx skills add(공유 .agents/skills)도 안내하지만 이 항목은 Claude Code 플러그인만 배선합니다',
232
+ 'item.unsupported.mattpocockRegistry': '상류는 npx skills add를 안내합니다 — 공유 스킬 판 skill.mattpocock-skills가 이 CLI를 맡습니다',
236
233
  'item.unsupported.upstreamNone': '상류에 공식 설치 경로가 없습니다',
234
+ 'item.unsupported.vscodePlugin': 'VS Code Copilot에는 플러그인을 설치하는 명령이 없습니다(화면에서 Chat: Install Plugin From Source만 있음)',
235
+ 'item.unsupported.cliAnythingCopilot': '상류가 Copilot CLI에는 커뮤니티 표기와 함께 로컬 클론을 설치하는 방법만 안내합니다',
236
+ 'item.unsupported.userOnly': '이 CLI는 사용자 전역으로만 설치합니다 — 범위를 전역으로 바꾸세요',
237
+ 'item.unsupported.projectOnly': '이 CLI는 저장소 단위로만 설치합니다 — 범위를 저장소로 바꾸세요',
238
+ 'item.probeFailed': '설치 상태를 읽지 못했습니다: {list}',
239
+ 'error.recipeInvalid': '항목 {id}의 레시피가 잘못됐습니다: {why}',
240
+ 'error.stepsFailed': ['일부 명령이 실패했습니다:', '{details}'],
241
+ 'error.codexMcpVerify': 'Codex에 MCP 서버 {name}가 등록되지 않았습니다 — codex mcp list를 확인하고 출력된 명령을 직접 실행하세요',
242
+ 'error.opencodeVerify': 'OpenCode가 {file}에 변경을 반영하지 않았습니다 — 파일을 확인하고 출력된 명령을 직접 실행하세요',
237
243
  'item.unsupported.unmeasuredUpstream': '상류에 설치 명령이 있지만 감지·제거 경로를 실측하지 못해 아직 배선하지 않습니다 — 상류 README의 명령으로 직접 설치할 수 있습니다',
238
- 'item.unsupported.noProjectMcp': '프로젝트 스코프 MCP 파일이 없습니다 — 홈 글로벌(~/.gemini/config/mcp_config.json)에서만 설정하므로 필요하면 그 파일에 직접 등록하세요',
239
244
  'item.unsupported.superpowersSeparate': '상류가 하니스별 별도 설치로 지원합니다 — 이 항목은 Claude Code 플러그인만 배선합니다',
240
- 'item.unsupported.superpowersGlobalClaude': '저장소 범위 항목 superpowers (저장소)가 담당합니다',
241
- 'item.unsupported.superpowersGlobalKimi': '상류 설치가 대화형 /plugins 명령뿐이라 헤드리스 경로가 없습니다',
242
- 'item.unsupported.globalProjectItem': '저장소 범위 항목 {item}이 담당합니다',
243
245
  'item.unsupported.impeccableSkill': '상류는 지원합니다 — 공유 스킬 판 skill.impeccable이 이 CLI를 맡고, 이 플러그인 항목은 Claude Code만 배선합니다',
244
- 'item.unsupported.gstackHost': '상류는 ./setup --host로 지원합니다 — 이 항목은 Claude Code에만 설치합니다',
245
246
  'item.unsupported.gstackShared': '상류 --host 경로는 사용자 스코프라 쓰지 않습니다. 대신 부트스트랩 저장소에서는 공유 .agents/skills Junction으로 닿고, 이 CLI는 재귀 스캔이라 개별 스킬까지 봅니다(2026-08-15 실측)',
246
- 'item.unsupported.gstackSharedShallow': '부트스트랩 저장소에서는 공유 .agents/skills Junction으로 닿지만, 이 CLI는 1단계만 훑어 라우터 스킬 하나만 보입니다(2026-08-15 실측)',
247
- 'item.unsupported.gsdKimiLocal': '상류가 프로젝트 스코프 설치를 아직 막습니다 — --kimi --local이 "Project-level Kimi install semantics remain deferred"로 거부합니다(2026-08-15 실측)',
248
- 'item.unsupported.gsdGemini': '상류가 Gemini CLI 지원을 제거했습니다(2026-06 종료) — Antigravity가 --antigravity로 승계합니다',
249
- 'item.mcp.partial': '등록됨: {present} / 누락: {missing}',
250
247
  'item.plugin.partial': '배선됨: {present} / 누락: {missing}',
251
248
  'item.global.noCli': 'CLI 없음: {list} — 이 머신 대상에서 제외',
252
249
  'run.keepUserScope': '· {id}는 사용자 전역 항목이라 --set 생략으로는 제거하지 않습니다 — 제거하려면 TUI에서 해제하세요',
253
- 'item.global.skipped': 'CLI가 없어 건너뜀: {list}',
254
- 'item.plugin.deferred': '설정 기록됨 — 다음 Claude Code 실행 시 다운로드됩니다',
255
250
  'item.scanFailed': '감지 실패: {message}',
256
- 'log.mcp.add': ' [dry-run] {cli} 설정에 {name} 등록',
257
- 'log.mcp.remove': ' [dry-run] {cli} 설정에서 {name} 제거',
258
- 'log.plugin.add': ' [dry-run] {cli} 설정에 플러그인 {name} 추가',
259
- 'log.plugin.remove': ' [dry-run] {cli} 설정에서 플러그인 {name} 제거',
251
+ 'scope.project': '저장소',
252
+ 'scope.user': '사용자 전역',
253
+ 'print.title': '이번 변경에 필요한 명령입니다 (아무것도 실행하지 않았습니다):',
254
+ 'print.shared': '공유 스킬',
255
+ 'print.files': '파일 항목',
256
+ 'print.fileItem': '{label}: 설치기가 파일을 직접 쓰는 항목입니다 — --print 없이 실행해 적용하세요',
257
+ 'print.none': '명령 없음 — 바꿀 것이 없습니다.',
258
+ 'activation.title': '설치 후 할 일:',
259
+ 'activation.cli.claude': '새 세션을 시작하세요 (비활성으로 보이면 /plugin에서 확인)',
260
+ 'activation.cli.codex': 'codex를 실행해 새 세션을 시작하세요',
261
+ 'activation.cli.opencode': 'OpenCode를 재시작하세요',
262
+ 'activation.cli.antigravity': 'Antigravity를 재시작하세요',
263
+ 'activation.cli.copilot': 'copilot을 새로 실행하세요 (다른 copilot 세션이 열려 있으면 설치가 "os error 5"로 실패할 수 있으니 닫고 다시 시도)',
264
+ 'activation.cli.vscode': 'VS Code 창을 다시 로드하세요 (Developer: Reload Window) — MCP 서버는 신뢰를 한 번 승인해야 시작합니다',
265
+ 'activation.hooks.codex': '훅({items}): codex에서 /hooks를 입력해 새 라이프사이클 훅을 Trust한 뒤 새 세션을 시작하세요',
260
266
 
261
267
  'item.mcp.notion.note': '인증: 각 CLI 첫 사용 시 OAuth',
262
268
  'item.mcp.vercel.note': '인증: 첫 사용 시 OAuth (승인된 클라이언트만 연결 가능)',
@@ -265,37 +271,42 @@ export default {
265
271
  'item.mcp.graft.note': '코드베이스 지식 그래프를 MCP 도구 6종(find_code·trace_calls·file_api 등)으로 냅니다. npx -y @nanonets/graft mcp로 실행하므로 별도 설치는 없지만, graft build로 그래프(graft/)를 먼저 만드세요(구조 그래프는 LLM 키 불필요). Windows는 의존성 tree-sitter-kotlin이 C++ 툴체인 컴파일을 요구하고 Node 24는 컴파일이 안 됩니다(상류 #400) — Node 22 + VS C++ 워크로드가 필요합니다. 상류 graft init은 AGENTS.md·GEMINI.md·훅을 직접 고치므로 쓰지 않습니다',
266
272
  'item.mcp.graphify.note': 'PATH에 graphify-mcp 바이너리 필요. 설치: uv tool install "graphifyy[mcp]". graphify-out/graph.json을 읽으므로 /graphify .로 그래프를 먼저 만드세요',
267
273
  'item.mcp.headroom.note': 'PATH에 headroom 바이너리 필요. 설치: uv tool install --python 3.13 "headroom-ai[proxy,mcp]". 프록시(headroom wrap)는 실행 방식이라 저장소 설정 대상이 아닙니다',
268
- 'item.plugin.superpowers.note': '공식 마켓플레이스 플러그인. 상류는 Codex·Grok Build 등 14개 하니스를 하니스별 설치로 지원합니다',
269
- 'item.global.superpowers.note': 'superpowers를 하니스별 공식 명령으로 사용자 전역에 설치합니다 — codex·copilot은 마켓플레이스, gemini는 extensions, opencode는 전역 opencode.json, grok은 grok plugin install superpowers@xai-official. 이 머신에 없는 CLI는 건너뜁니다. grok 제거는 ~/.grok/config.toml [plugins].enabled의 이름을 남깁니다(상류 동작). skill.superpowers와 함께 켜면 겹치는 CLI는 같은 스킬을 두 곳에서 봅니다',
270
- 'item.global.ponytail.note': 'Ponytail을 하니스별 공식 명령으로 사용자 전역에 설치합니다 — codex·copilot은 마켓플레이스(DietrichGebert/ponytail), gemini는 extensions, grok은 grok plugin install DietrichGebert/ponytail. codex는 설치 후 /hooks에서 훅 등록을 한 번 확인해야 합니다. 상류는 제거 전 scripts/uninstall.js로 ~/.config/ponytail 정리를 안내합니다 — 이 항목은 플러그인만 제거합니다',
274
+ 'item.plugin.superpowers.note': '공식 마켓플레이스 플러그인. Codex·OpenCode·Antigravity·Copilot CLI는 상류가 안내하는 각자의 설치 명령을 씁니다',
271
275
  'item.plugin.mattpocock-skills.note': '엔지니어링·생산성 스킬 35종 (code-review, diagnosing-bugs, domain-modeling 등)',
272
- 'item.plugin.ponytail.note': '군더더기 없는 코드 규칙 묶음. Claude Code 플러그인과 OpenCode plugin 항목을 저장소 범위로 배선합니다',
276
+ 'item.plugin.ponytail.note': '군더더기 없는 코드 규칙 묶음. 각 CLI의 명령으로 설치합니다 — Claude·OpenCode는 저장소 또는 사용자 전역, Codex·Antigravity·Copilot CLI는 사용자 전역입니다. 상류는 제거 전에 scripts/uninstall.js로 ~/.config/ponytail을 정리하라고 안내합니다',
277
+ 'item.mcp.oauth.post': 'OAuth 로그인을 한 번 해야 합니다 — Codex는 codex mcp login <서버 이름>을 실행하고, Claude Code·OpenCode·Antigravity·Copilot CLI·VS Code Copilot은 처음 쓸 때 묻습니다',
278
+ 'item.plugin.ponytail.post': '상시 활성화 훅이 돌려면 Node.js가 PATH에 있어야 합니다',
279
+ 'item.plugin.ai-memory.note': '에이전트 사이에 공유하는 장기 기억 — 직접 띄운 ai-memory 서버를 씁니다. Claude Code·Codex는 상류 마켓플레이스 플러그인(훅·스킬)을, OpenCode·Antigravity·Copilot CLI·VS Code Copilot은 stdio 브리지(ai-memory mcp-bridge --no-session-id)를 MCP로 겁니다(훅은 없음) — 토큰은 브리지가 데이터 디렉터리에서 읽어 설정 파일에 남지 않습니다',
280
+ 'item.plugin.ai-memory.post': 'ai-memory 바이너리를 먼저 설치하고(상류 릴리스의 install.sh / install.ps1) ai-memory setup을 한 번 실행하세요. 세션 이어받기는 ai-memory run <agent>입니다',
273
281
  'item.plugin.ecc.note': '에이전트 하네스용 스킬·본능·메모리·보안 묶음. skills/에 284개가 들어 있어 공유 스킬 디렉터리에 복사하지 않고 플러그인으로 설치합니다',
274
282
  'item.plugin.impeccable.note': 'AI 하네스용 디자인 언어. Claude Code 플러그인 판입니다 — 다른 CLI까지 함께 보려면 공유 스킬 판 skill.impeccable을 고르세요(둘 중 하나만 고를 수 있습니다)',
275
- 'item.skill.impeccable.note': 'AI 하네스용 디자인 언어를 공유 .agents/skills에 복사해 11개 CLI가 함께 봅니다(62개 파일, 2.3MB). 플러그인 판과 하나만 고를 수 있습니다. 엔진 바이너리는 포함되지 않아 첫 실행 때 스킬의 scripts/impeccable이 네트워크로 받아 홈의 ~/.impeccable에 캐시합니다 — 저장소 밖에 쓰는 동작입니다',
283
+ 'item.skill.impeccable.note': 'AI 하네스용 디자인 언어를 공유 .agents/skills에 복사해 네 CLI가 함께 봅니다(62개 파일, 2.3MB). 플러그인 판과 하나만 고를 수 있습니다. 엔진 바이너리는 포함되지 않아 첫 실행 때 스킬의 scripts/impeccable이 네트워크로 받아 홈의 ~/.impeccable에 캐시합니다 — 저장소 밖에 쓰는 동작입니다',
276
284
  'item.plugin.cli-anything.note': 'GUI·데스크톱 소프트웨어를 에이전트가 쓸 수 있는 Python CLI로 만들어 주는 하네스 플러그인입니다. /cli-anything <소스 경로 또는 저장소> 로 생성하고 refine·test·validate·list 명령이 따릅니다. 이미 만들어진 CLI를 허브에서 받는 것은 별개의 cli-hub-meta-skill입니다',
277
285
  'item.plugin.hyperframes.note': 'HTML·CSS로 영상을 쓰고 결정적 MP4로 렌더하는 HyperFrames(HeyGen) 스킬 21종 번들입니다. /hyperframes 라우터가 홍보·설명·자막·모션 그래픽 워크플로를 필요할 때 불러옵니다. 렌더에는 Node.js 22+와 FFmpeg가 필요합니다. 다른 CLI는 상류가 CLI별 별도 설치로 안내해 플러그인만 배선합니다',
278
- 'item.plugin.understand-anything.note': '코드베이스를 탐색 가능한 지식 그래프로 만듭니다. 다른 CLI용 스크립트는 ~/.understand-anything에 클론하는 사용자 스코프라 플러그인만 배선합니다',
279
- 'item.skill.eli5.note': 'Anthropic 커뮤니티 마켓플레이스의 eli5 — /eli5 <주제>를 큰 그림과 짧은 글의 HTML 설명서로 만듭니다. 상류는 Claude 플러그인이지만 훅·명령 없이 스킬 하나라, 11개 CLI가 함께 보는 공유 스킬로 넣습니다',
280
- 'item.skill.i-have-adhd.note': 'ADHD 독자를 위한 출력 형식 — 다음 행동부터, 단계는 번호로, 곁길 억제, 진행 상태 재진술, 서두·맺음말 없음. /i-have-adhd로 켜고 "stop adhd mode"로 끕니다. 상시 적용은 상류 Claude 플러그인 판의 훅이 담당하는데, 이 항목은 그 대신 11개 CLI가 함께 보는 공유 스킬로 넣습니다',
286
+ 'item.plugin.understand-anything.note': '코드베이스를 탐색 가능한 지식 그래프로 만듭니다. 다른 CLI용 스크립트는 ~/.understand-anything에 클론하는 사용자 스코프라 Claude 플러그인과 Copilot CLI 플러그인만 배선합니다',
287
+ 'item.skill.eli5.note': 'Anthropic 커뮤니티 마켓플레이스의 eli5 — /eli5 <주제>를 큰 그림과 짧은 글의 HTML 설명서로 만듭니다. 상류는 Claude 플러그인이지만 훅·명령 없이 스킬 하나라, 네 CLI가 함께 보는 공유 스킬로 넣습니다',
288
+ 'item.skill.html-plan.note': 'Anthropic 커뮤니티 마켓플레이스의 html-plan — /html-plan <만들 것>을 주장 트리·목업·결정 지점이 담긴 대화형 HTML 계획서 한 장으로 만듭니다. 훅·명령 없이 스킬 하나라 공유 스킬로 넣습니다',
289
+ 'item.skill.unslop.note': 'AI가 만든 티가 나는 UI(보라 그라데이션·글로·이모지 라벨 등)를 제품에 맞는 방향으로 다시 디자인하는 스킬. 라이선스는 CC-BY-4.0(저작자 표시)입니다',
290
+ 'item.skill.agent-handoff-manager.note': '에이전트 사이 작업 인계를 저장하고 이어받는 실험적 스킬. 본체가 scripts/handoff.py라 Python 3.10 이상이 PATH에 있어야 하고, 기록은 대상 저장소의 .handoffs/에 쌓입니다',
291
+ 'item.skill.i-have-adhd.note': 'ADHD 독자를 위한 출력 형식 — 다음 행동부터, 단계는 번호로, 곁길 억제, 진행 상태 재진술, 서두·맺음말 없음. /i-have-adhd로 켜고 "stop adhd mode"로 끕니다. 상시 적용은 상류 Claude 플러그인 판의 훅이 담당하는데, 이 항목은 그 대신 네 CLI가 함께 보는 공유 스킬로 넣습니다',
281
292
  'item.skill.caveman.note': '원시인 말투로 답해 출력 토큰을 줄입니다. 코드와 오류는 그대로 둡니다. /caveman으로 켜고 끕니다',
282
293
  'item.skill.taste.note': '랜딩 페이지·포트폴리오·리디자인용 안티슬롭 프런트엔드 스킬 (스킬 이름: design-taste-frontend)',
283
- 'item.skill.hallmark.note': '네 가지 동사(신규 제작·audit·redesign·study)를 갖춘 안티 AI슬롭 디자인 스킬. 테마 21종과 슬롭 테스트 57종. 상류는 Cursor·Codex 경로도 안내하지만 공유 스킬 디렉터리 하나로 11개 CLI가 함께 봅니다',
294
+ 'item.skill.hallmark.note': '네 가지 동사(신규 제작·audit·redesign·study)를 갖춘 안티 AI슬롭 디자인 스킬. 테마 21종과 슬롭 테스트 57종. 상류는 Cursor·Codex 경로도 안내하지만 공유 스킬 디렉터리 하나로 네 CLI가 함께 봅니다',
284
295
  'item.skill.archify.note': '아키텍처·워크플로·시퀀스·데이터 흐름·라이프사이클 다이어그램을 검증을 거친 단독 HTML(인라인 SVG, 다크/라이트, PNG·SVG·WebM 내보내기)로 만듭니다. 붙여 넣은 Mermaid도 다시 그립니다. 동봉된 검증기를 돌리려면 Node 18+가 필요합니다(npm install 불필요). 첫 다이어그램 뒤 상류 릴리스 매니페스트를 한 번 확인하며, ARCHIFY_UPDATE_CHECK_DISABLED=1로 끕니다',
285
296
  'item.skill.remotion.note': 'React로 영상을 만드는 Remotion의 공식 스킬입니다. remotion-best-practices 하나가 create·markup·studio·render·captions·maps 등 나머지 11개를 품고 있어 이것만 복사합니다(141개 파일, 1.1MB). 개별 /remotion-* 슬래시 명령은 생기지 않습니다. 라이선스 주의: 개인·직원 3명 이하 영리 조직·비영리는 무료지만 그보다 큰 영리 조직은 Remotion 회사 라이선스가 필요합니다',
286
297
  'item.skill.diagram-design.note': '브랜드 색·폰트로 다이어그램 27종을 그리는 HTML/SVG 스킬. Mermaid·draw.io 원본도 다시 그립니다. 기본 폰트(Instrument Serif·Geist)에 한글 글리프가 없어 style-guide.md에서 바꿔야 하고, PNG 내보내기는 Playwright·Chromium이 따로 필요합니다. 상류 플러그인의 명령 3개는 빠지지만 그 본문인 references/는 그대로 옵니다',
287
- 'item.skill.superpowers.note': '공유 .agents/skills에 스킬 14종을 복사해 11개 CLI가 함께 봅니다. 플러그인 판과 하나만 고를 수 있습니다 — 이쪽은 session-start 훅이 없어 대화 시작 시 자동 주입이 되지 않고, 스킬을 불러서 씁니다',
288
- 'item.skill.agent-browser.note': '브라우저 자동화 CLI를 쓰게 하는 스킬. PATH에 agent-browser 바이너리 필요 — npm i -g agent-browser 후 최초 1회 agent-browser install(Chrome for Testing 다운로드). SKILL.md는 안내 스텁이라 실제 지침은 설치된 CLI가 제공합니다. 본문이 하네스 중립이라 11개 CLI가 함께 씁니다(allowed-tools 줄만 Claude 문법)',
289
- 'item.skill.find-skills.note': '공개 스킬 레지스트리를 검색해 설치를 안내하는 스킬. npx skills 명령만 지시하는 하네스 중립 문서라 11개 CLI가 함께 씁니다',
290
- 'item.skill.mcp-builder.note': 'MCP 서버 제작 가이드(Python FastMCP·Node MCP SDK). reference/ 문서 4종과 Apache-2.0 LICENSE.txt가 스킬 디렉터리에 함께 복사됩니다. 내용이 하네스 중립이라 11개 CLI가 함께 씁니다',
291
- 'item.skill.mattpocock-skills.note': '공유 .agents/skills에 스킬 35종을 복사해 11개 CLI가 함께 봅니다. 상류가 직접 안내하는 경로이며 훅이 없어 플러그인 판에 견줘 잃는 것이 없습니다. 둘 중 하나만 고를 수 있습니다',
298
+ 'item.skill.superpowers.note': '공유 .agents/skills에 스킬 14종을 복사해 네 CLI가 함께 봅니다. 플러그인 판과 하나만 고를 수 있습니다 — 이쪽은 session-start 훅이 없어 대화 시작 시 자동 주입이 되지 않고, 스킬을 불러서 씁니다',
299
+ 'item.skill.agent-browser.note': '브라우저 자동화 CLI를 쓰게 하는 스킬. PATH에 agent-browser 바이너리 필요 — npm i -g agent-browser 후 최초 1회 agent-browser install(Chrome for Testing 다운로드). SKILL.md는 안내 스텁이라 실제 지침은 설치된 CLI가 제공합니다. 본문이 하네스 중립이라 네 CLI가 함께 씁니다(allowed-tools 줄만 Claude 문법)',
300
+ 'item.skill.find-skills.note': '공개 스킬 레지스트리를 검색해 설치를 안내하는 스킬. npx skills 명령만 지시하는 하네스 중립 문서라 네 CLI가 함께 씁니다',
301
+ 'item.skill.mcp-builder.note': 'MCP 서버 제작 가이드(Python FastMCP·Node MCP SDK). reference/ 문서 4종과 Apache-2.0 LICENSE.txt가 스킬 디렉터리에 함께 복사됩니다. 내용이 하네스 중립이라 네 CLI가 함께 씁니다',
302
+ 'item.skill.mattpocock-skills.note': '공유 .agents/skills에 스킬 35종을 복사해 네 CLI가 함께 봅니다. 상류가 직접 안내하는 경로이며 훅이 없어 플러그인 판에 견줘 잃는 것이 없습니다. 둘 중 하나만 고를 수 있습니다',
292
303
  'item.skill.karpathy.note': '과설계와 모호한 완료 기준을 줄이는 행동 지침',
293
- 'item.skill.prompt-master.note': 'AI 도구용 프롬프트를 만들고 다듬는 스킬. 프롬프트 작성·수정을 명시적으로 요청할 때만 활성화됩니다. 본문이 하네스 중립이라 11개 CLI가 함께 씁니다',
304
+ 'item.skill.prompt-master.note': 'AI 도구용 프롬프트를 만들고 다듬는 스킬. 프롬프트 작성·수정을 명시적으로 요청할 때만 활성화됩니다. 본문이 하네스 중립이라 네 CLI가 함께 씁니다',
294
305
  'item.skill.strix.note': '보안 테스트 스킬 9종(침투 테스트·OWASP Top 10·취약점 탐지와 수정 흐름)을 공유 .agents/skills에 복사합니다. 스킬이 Strix 에이전트를 구동하므로 PATH에 strix 바이너리가 필요합니다 — 자체 호스팅은 pipx install strix-agent에 Docker와 STRIX_LLM·LLM_API_KEY, 관리형은 strix cloud login. 승인된 대상에만 쓰세요',
295
- 'item.skill.im-not-ai.note': 'AI가 쓴 한글을 사람 글처럼 윤문하는 스킬 4종(humanize-korean 본체와 humanize·humanize-scan·humanize-redo 진입점, 22개 파일 420KB)을 공유 .agents/skills에 복사해 11개 CLI가 함께 봅니다. 스킬만 들어옵니다 — 상류 서브에이전트 9종은 스킬 폴더 밖에 있어, 다중 호출 heavy 경로는 CLI가 서브에이전트를 직접 돌릴 수 있거나 상류 Claude 플러그인을 쓸 때만 동작합니다',
306
+ 'item.skill.im-not-ai.note': 'AI가 쓴 한글을 사람 글처럼 윤문하는 스킬 4종(humanize-korean 본체와 humanize·humanize-scan·humanize-redo 진입점, 22개 파일 420KB)을 공유 .agents/skills에 복사해 네 CLI가 함께 봅니다. 스킬만 들어옵니다 — 상류 서브에이전트 9종은 스킬 폴더 밖에 있어, 다중 호출 heavy 경로는 CLI가 서브에이전트를 직접 돌릴 수 있거나 상류 Claude 플러그인을 쓸 때만 동작합니다',
296
307
  'item.skill.officecli.note': 'Word·Excel·PowerPoint(.docx·.xlsx·.pptx) 문서를 읽고 고치고 만드는 스킬을 공유 .agents/skills에 복사합니다. 스킬이 officecli 바이너리를 구동하므로 PATH에 officecli가 필요합니다 — npm install -g @officecli/officecli 또는 상류 install.sh·install.ps1. Office 설치는 필요 없습니다',
297
308
  'item.skill.gstack.note': '저장소 로컬 clone + setup (bash 필요, Windows는 Git Bash). 런타임 상태(~/.gstack)는 전역에 생길 수 있음. 부트스트랩 저장소에서는 .claude/skills가 Junction이라 실물이 공유 .agents/skills에 앉습니다 — codex·opencode는 재귀 스캔이라 개별 스킬까지 함께 봅니다',
298
- 'item.skill.gsd.note': 'npx @opengsd/gsd-core 프로젝트 로컬 설치 — claude·codex·opencode·copilot·kilo 다섯 런타임을 한 번에 배선합니다(.claude/commands, .codex/skills, .opencode/skills, .github/skills, .kilo/skills). 런타임마다 700개 안팎의 파일이 생깁니다. gemini는 상류가 제거했고 kimi는 프로젝트 설치를 아직 막습니다',
309
+ 'item.skill.gsd.note': 'npx @opengsd/gsd-core 프로젝트 로컬 설치 — claude·codex·opencode·copilot 런타임마다 명령 한 줄로 배선합니다(.claude/commands, .codex/skills, .opencode/skills, .github/skills). 런타임마다 700개 안팎의 파일이 생깁니다. Antigravity는 상류 플래그가 있지만 설치 경로를 아직 실측하지 못했습니다',
299
310
  // 커밋 템플릿은 CLI 배선이 아니라 저장소 규약이다 — en.mjs 쪽 주석 참고.
300
311
  'item.config.gitmessage.en.note': '커밋 메시지를 영어로 씁니다. 템플릿을 놓고 git commit.template이 그것을 가리키게 하므로, 저장소의 모든 편집기와 도구에서 함께 열립니다. VS Code가 커밋 에디터를 열고 Copilot 생성에도 템플릿을 쓰도록 .vscode/settings.json에 키도 더합니다(이미 있는 키는 그대로)',
301
312
  'item.config.gitmessage.ko.note': '커밋 메시지를 한국어로 씁니다. 템플릿을 놓고 git commit.template이 그것을 가리키게 하므로, 저장소의 모든 편집기와 도구에서 함께 열립니다. VS Code가 커밋 에디터를 열고 Copilot 생성에도 템플릿을 쓰도록 .vscode/settings.json에 키도 더합니다(이미 있는 키는 그대로)',
@@ -308,14 +319,8 @@ export default {
308
319
  'error.gitmessageForeign': '{path}가 이미 있고 이 도구가 쓴 내용이 아닙니다. 손으로 쓴 템플릿은 덮어쓰지 않습니다 — 먼저 옮기거나 지우세요.',
309
320
  'error.gitmessageConfig': 'git config commit.template 실패: {output}',
310
321
  'error.exclusiveItems': '한 자리를 두고 다투는 항목이라 하나만 고를 수 있습니다: {ids}',
311
- 'error.gstackClone': 'gstack clone 실패: {output}',
312
- 'error.gstackSetup': 'gstack setup 실패: {output}',
313
- 'error.gsdInstall': 'GSD 설치 실패: {output}',
314
- 'error.gsdUninstall': 'GSD 제거 실패: {output}',
315
- 'error.ponytailOpencodePlugin': '{file}: plugin 키가 배열이 아닙니다. 덮어쓰지 않고 그대로 둡니다 — "@dietrichgebert/ponytail"을 직접 추가하세요.',
316
322
  'error.globalExec': '하니스 명령이 실패했습니다 — {detail}',
317
323
  'error.globalOpencodePlugin': '{file}: plugin 키가 배열이 아닙니다. 덮어쓰지 않고 그대로 둡니다 — "{entry}"을 직접 추가하세요.',
318
- 'error.registrySkillInstall': '스킬 레지스트리 설치 실패 ({skill}): {output}',
319
324
  'error.registrySkillAnchor': "{id}: skill이 '*'이면 detect가 볼 대표 스킬을 anchor로 지정해야 합니다",
320
325
  'error.itemFieldMissing': '{file}: {field} 누락',
321
326
  'error.itemReasonMissing': '{id}: 미지원 CLI \'{cli}\'의 사유(unsupported.{cli})가 필요합니다',
@@ -347,7 +352,7 @@ export default {
347
352
  'tui.hint.quit': 'Ctrl+Q 종료',
348
353
  'tui.review.title': '제출 검토 — 변경 {count}건',
349
354
  'tui.review.more': ' …외 {count}건',
350
- 'tui.review.hint': 'Enter 적용 Esc 취소 Ctrl+Q 종료',
355
+ 'tui.review.hint': 'Enter 적용 p 명령 보기 Esc 취소 Ctrl+Q 종료',
351
356
  'tui.review.globalWarning': '머신 전역 변경 {count}건 — 이 저장소 밖 설정(~/.codex 등)이 바뀝니다',
352
357
  'tui.notItemRow': '이 행은 Enter로 실행합니다.',
353
358
  'tui.noPreview': '이 항목은 미리보기를 제공하지 않습니다.',
@@ -374,6 +379,7 @@ export default {
374
379
  ' Space 선택/해제 — [+] 설치 예정 · [-] 제거 예정 · [×] 설치됨',
375
380
  ' Tab · Shift+Tab · ←→ 탭 이동 (선택은 탭을 넘나들며 누적)',
376
381
  ' Enter [▶] 작업 행은 실행, 그 밖에는 제출(검토 → 일괄 적용)',
382
+ ' p (검토 화면) 실행하지 않고 CLI 명령만 보기',
377
383
  ' Ctrl+A 지금 탭에서 보이는 항목 전체 선택/해제',
378
384
  ' Ctrl+O 커서 항목 미리보기 (design.md는 브라우저)',
379
385
  ' Ctrl+F · Ctrl+B CLI 필터 앞 / 뒤로 (전체 → CLI 하나씩)',
@@ -431,6 +437,9 @@ export default {
431
437
  // 상주 언어 행 — en.mjs 쪽 주석 참고.
432
438
  'action.language.label': '언어',
433
439
  'action.language.hint': '{current} · Enter로 변경',
440
+ 'action.scope.label': '설치 범위',
441
+ 'action.scope.hint': '현재: {current} · Enter로 저장소 ↔ 사용자 전역 전환',
442
+ 'tui.scope.switched': '범위: {current}',
434
443
  'action.bootstrap.label': '부트스트랩 실행',
435
444
  'action.bootstrap.hint': '지침 · 스킬 · 도구별 설정 · 파일 {total}개 중 {present}개 존재',
436
445
  'action.sync.installed.label': '설치본 업데이트',
@@ -1,6 +1,8 @@
1
- import { defineMcp } from '../catalog.mjs'
2
- export default defineMcp({
3
- id: 'mcp.codebase-memory', label: 'Codebase Memory MCP', group: '__context',
4
- server: { kind: 'stdio', command: 'codebase-memory-mcp', args: [] },
1
+ import { defineRecipe } from '../recipe.mjs'
2
+ import { mcpServer } from '../recipe-helpers.mjs'
3
+
4
+ export default defineRecipe({
5
+ id: 'mcp.codebase-memory', category: 'mcp', label: 'Codebase Memory MCP', group: '__context',
5
6
  note: 'item.mcp.codebase-memory.note',
7
+ ...mcpServer({ name: 'codebase-memory', server: { kind: 'stdio', command: 'codebase-memory-mcp', args: [] } }),
6
8
  })
@@ -1,4 +1,5 @@
1
- import { defineMcp } from '../catalog.mjs'
1
+ import { defineRecipe } from '../recipe.mjs'
2
+ import { mcpServer } from '../recipe-helpers.mjs'
2
3
  // 상류 README가 "직접 등록할 때"의 계약으로 적은 명령 그대로다: npx -y
3
4
  // @nanonets/graft mcp (stdio). `graft mcp [dir]`은 dir 기본값이 실행 디렉터리라
4
5
  // 그래프(graft/, 상류가 .gitignore에 넣는 로컬 캐시)도 저장소 안에 있고,
@@ -14,8 +15,9 @@ import { defineMcp } from '../catalog.mjs'
14
15
  // win32-x64 prebuild가 있다), Node 24는 헤더가 C++20을 요구해 컴파일 자체가
15
16
  // 안 된다(상류 #400). C++ 워크로드가 없는 이 머신에서는 서버를 띄우지
16
17
  // 못했으므로 배선(설정 파일 쓰기)만 왕복 검증했다 — note가 알린다.
17
- export default defineMcp({
18
- id: 'mcp.graft', label: 'Graft MCP', group: '__context',
19
- server: { kind: 'stdio', command: 'npx', args: ['-y', '@nanonets/graft', 'mcp'] },
18
+
19
+ export default defineRecipe({
20
+ id: 'mcp.graft', category: 'mcp', label: 'Graft MCP', group: '__context',
20
21
  note: 'item.mcp.graft.note',
22
+ ...mcpServer({ name: 'graft', server: { kind: 'stdio', command: 'npx', args: ['-y', '@nanonets/graft', 'mcp'] } }),
21
23
  })
@@ -1,8 +1,10 @@
1
- import { defineMcp } from '../catalog.mjs'
1
+ import { defineRecipe } from '../recipe.mjs'
2
+ import { mcpServer } from '../recipe-helpers.mjs'
2
3
  // graphify-mcp는 인자가 없으면 실행 디렉터리의 graphify-out/graph.json을 읽는다.
3
4
  // 즉 그래프가 저장소 안에 있으므로 등록도 프로젝트 설정에만 하면 된다.
4
- export default defineMcp({
5
- id: 'mcp.graphify', label: 'Graphify MCP', group: '__context',
6
- server: { kind: 'stdio', command: 'graphify-mcp', args: [] },
5
+
6
+ export default defineRecipe({
7
+ id: 'mcp.graphify', category: 'mcp', label: 'Graphify MCP', group: '__context',
7
8
  note: 'item.mcp.graphify.note',
9
+ ...mcpServer({ name: 'graphify', server: { kind: 'stdio', command: 'graphify-mcp', args: [] } }),
8
10
  })
@@ -1,8 +1,10 @@
1
- import { defineMcp } from '../catalog.mjs'
1
+ import { defineRecipe } from '../recipe.mjs'
2
+ import { mcpServer } from '../recipe-helpers.mjs'
2
3
  // 상류가 배포하는 server.json의 계약과 같은 명령이다: headroom mcp serve (stdio).
3
4
  // 프록시(headroom wrap)는 실행 방식이라 저장소 설정에 담을 것이 없고, MCP만 배선한다.
4
- export default defineMcp({
5
- id: 'mcp.headroom', label: 'Headroom MCP', group: '__token',
6
- server: { kind: 'stdio', command: 'headroom', args: ['mcp', 'serve'] },
5
+
6
+ export default defineRecipe({
7
+ id: 'mcp.headroom', category: 'mcp', label: 'Headroom MCP', group: '__token',
7
8
  note: 'item.mcp.headroom.note',
9
+ ...mcpServer({ name: 'headroom', server: { kind: 'stdio', command: 'headroom', args: ['mcp', 'serve'] } }),
8
10
  })
@@ -1,6 +1,9 @@
1
- import { defineMcp } from '../catalog.mjs'
2
- export default defineMcp({
3
- id: 'mcp.notion', label: 'Notion MCP', group: '__service',
4
- server: { kind: 'http', url: 'https://mcp.notion.com/mcp' },
1
+ import { defineRecipe } from '../recipe.mjs'
2
+ import { mcpServer } from '../recipe-helpers.mjs'
3
+
4
+ export default defineRecipe({
5
+ id: 'mcp.notion', category: 'mcp', label: 'Notion MCP', group: '__service',
5
6
  note: 'item.mcp.notion.note',
7
+ postInstall: 'item.mcp.oauth.post',
8
+ ...mcpServer({ name: 'notion', server: { kind: 'http', url: 'https://mcp.notion.com/mcp' } }),
6
9
  })
@@ -1,6 +1,9 @@
1
- import { defineMcp } from '../catalog.mjs'
2
- export default defineMcp({
3
- id: 'mcp.supabase', label: 'Supabase MCP', group: '__service',
4
- server: { kind: 'http', url: 'https://mcp.supabase.com/mcp' },
1
+ import { defineRecipe } from '../recipe.mjs'
2
+ import { mcpServer } from '../recipe-helpers.mjs'
3
+
4
+ export default defineRecipe({
5
+ id: 'mcp.supabase', category: 'mcp', label: 'Supabase MCP', group: '__service',
5
6
  note: 'item.mcp.supabase.note',
7
+ postInstall: 'item.mcp.oauth.post',
8
+ ...mcpServer({ name: 'supabase', server: { kind: 'http', url: 'https://mcp.supabase.com/mcp' } }),
6
9
  })
@@ -1,6 +1,9 @@
1
- import { defineMcp } from '../catalog.mjs'
2
- export default defineMcp({
3
- id: 'mcp.vercel', label: 'Vercel MCP', group: '__service',
4
- server: { kind: 'http', url: 'https://mcp.vercel.com' },
1
+ import { defineRecipe } from '../recipe.mjs'
2
+ import { mcpServer } from '../recipe-helpers.mjs'
3
+
4
+ export default defineRecipe({
5
+ id: 'mcp.vercel', category: 'mcp', label: 'Vercel MCP', group: '__service',
5
6
  note: 'item.mcp.vercel.note',
7
+ postInstall: 'item.mcp.oauth.post',
8
+ ...mcpServer({ name: 'vercel', server: { kind: 'http', url: 'https://mcp.vercel.com' } }),
6
9
  })
@@ -0,0 +1,29 @@
1
+ import { defineRecipe } from '../recipe.mjs'
2
+ import { marketplacePlugin, mcpServer } from '../recipe-helpers.mjs'
3
+
4
+ // akitaonrails/ai-memory(MIT). Claude·Codex는 상류 마켓플레이스 플러그인(훅·스킬
5
+ // 포함, README "Claude Code and Codex users can wire their agent as a
6
+ // marketplace plugin"), OpenCode·Antigravity·Copilot CLI·VS Code Copilot은 상류 docs/install.md가
7
+ // 다른 클라이언트에 쓰는 stdio 브리지(`ai-memory mcp-bridge --no-session-id`)를
8
+ // MCP로 건다 — 브리지가 데이터 디렉터리의 토큰 파일을 실행 때 읽으므로 토큰이
9
+ // 설정에 닿지 않는다. 어느 쪽이든 ai-memory 바이너리와 서버가 먼저 있어야
10
+ // 한다(postInstall 안내). `ai-memory setup`의 전역 배선은 대신하지 않는다.
11
+ const plugin = marketplacePlugin({
12
+ claude: { marketplace: 'akitaonrails/ai-memory', id: 'ai-memory@ai-memory' },
13
+ codex: { marketplace: 'akitaonrails/ai-memory', id: 'ai-memory@ai-memory' },
14
+ })
15
+ const bridge = mcpServer({
16
+ name: 'ai-memory',
17
+ server: { kind: 'stdio', command: 'ai-memory', args: ['mcp-bridge', '--no-session-id'] },
18
+ clis: ['opencode', 'antigravity', 'copilot', 'vscode'],
19
+ })
20
+
21
+ export default defineRecipe({
22
+ id: 'plugin.ai-memory', category: 'plugin', label: 'ai-memory', group: '__context',
23
+ note: 'item.plugin.ai-memory.note',
24
+ verified: '2026-11-06',
25
+ hooks: true,
26
+ postInstall: 'item.plugin.ai-memory.post',
27
+ recipes: { ...plugin.recipes, ...bridge.recipes },
28
+ detect: { ...plugin.detect, ...bridge.detect },
29
+ })