@moreih29/nexus-core 0.17.0 → 0.18.2

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 (415) hide show
  1. package/README.md +101 -67
  2. package/dist/cli/sync.d.ts +3 -0
  3. package/dist/cli/sync.d.ts.map +1 -0
  4. package/dist/cli/sync.js +59 -0
  5. package/dist/cli/sync.js.map +1 -0
  6. package/dist/generate/index.d.ts +3 -0
  7. package/dist/generate/index.d.ts.map +1 -0
  8. package/dist/generate/index.js +2 -0
  9. package/dist/generate/index.js.map +1 -0
  10. package/dist/generate/load-data.d.ts +8 -0
  11. package/dist/generate/load-data.d.ts.map +1 -0
  12. package/dist/generate/load-data.js +45 -0
  13. package/dist/generate/load-data.js.map +1 -0
  14. package/dist/generate/load-spec.d.ts +3 -0
  15. package/dist/generate/load-spec.d.ts.map +1 -0
  16. package/dist/generate/load-spec.js +48 -0
  17. package/dist/generate/load-spec.js.map +1 -0
  18. package/dist/generate/macros/expand.d.ts +3 -0
  19. package/dist/generate/macros/expand.d.ts.map +1 -0
  20. package/dist/generate/macros/expand.js +48 -0
  21. package/dist/generate/macros/expand.js.map +1 -0
  22. package/dist/generate/macros/parse.d.ts +4 -0
  23. package/dist/generate/macros/parse.d.ts.map +1 -0
  24. package/dist/generate/macros/parse.js +142 -0
  25. package/dist/generate/macros/parse.js.map +1 -0
  26. package/dist/generate/macros/validate.d.ts +3 -0
  27. package/dist/generate/macros/validate.d.ts.map +1 -0
  28. package/dist/generate/macros/validate.js +23 -0
  29. package/dist/generate/macros/validate.js.map +1 -0
  30. package/dist/generate/renderers/claude.d.ts +3 -0
  31. package/dist/generate/renderers/claude.d.ts.map +1 -0
  32. package/dist/generate/renderers/claude.js +48 -0
  33. package/dist/generate/renderers/claude.js.map +1 -0
  34. package/dist/generate/renderers/codex.d.ts +3 -0
  35. package/dist/generate/renderers/codex.d.ts.map +1 -0
  36. package/dist/generate/renderers/codex.js +79 -0
  37. package/dist/generate/renderers/codex.js.map +1 -0
  38. package/dist/generate/renderers/markdown.d.ts +2 -0
  39. package/dist/generate/renderers/markdown.d.ts.map +1 -0
  40. package/dist/generate/renderers/markdown.js +6 -0
  41. package/dist/generate/renderers/markdown.js.map +1 -0
  42. package/dist/generate/renderers/opencode.d.ts +3 -0
  43. package/dist/generate/renderers/opencode.d.ts.map +1 -0
  44. package/dist/generate/renderers/opencode.js +69 -0
  45. package/dist/generate/renderers/opencode.js.map +1 -0
  46. package/dist/generate/sync.d.ts +4 -0
  47. package/dist/generate/sync.d.ts.map +1 -0
  48. package/dist/generate/sync.js +60 -0
  49. package/dist/generate/sync.js.map +1 -0
  50. package/dist/generate/types.d.ts +74 -0
  51. package/dist/generate/types.d.ts.map +1 -0
  52. package/dist/generate/types.js +2 -0
  53. package/dist/generate/types.js.map +1 -0
  54. package/dist/index.d.ts +4 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +2 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/mcp/definitions/artifact.d.ts +20 -0
  59. package/dist/mcp/definitions/artifact.d.ts.map +1 -0
  60. package/dist/mcp/definitions/artifact.js +14 -0
  61. package/dist/mcp/definitions/artifact.js.map +1 -0
  62. package/dist/mcp/definitions/history.d.ts +20 -0
  63. package/dist/mcp/definitions/history.d.ts.map +1 -0
  64. package/dist/mcp/definitions/history.js +18 -0
  65. package/dist/mcp/definitions/history.js.map +1 -0
  66. package/dist/mcp/definitions/index.d.ts +276 -0
  67. package/dist/mcp/definitions/index.d.ts.map +1 -0
  68. package/dist/mcp/definitions/index.js +16 -0
  69. package/dist/mcp/definitions/index.js.map +1 -0
  70. package/dist/mcp/definitions/plan.d.ts +111 -0
  71. package/dist/mcp/definitions/plan.d.ts.map +1 -0
  72. package/dist/mcp/definitions/plan.js +89 -0
  73. package/dist/mcp/definitions/plan.js.map +1 -0
  74. package/dist/mcp/definitions/task.d.ts +138 -0
  75. package/dist/mcp/definitions/task.d.ts.map +1 -0
  76. package/dist/mcp/definitions/task.js +78 -0
  77. package/dist/mcp/definitions/task.js.map +1 -0
  78. package/dist/mcp/handlers/artifact.d.ts.map +1 -0
  79. package/dist/mcp/handlers/artifact.js +42 -0
  80. package/dist/mcp/handlers/artifact.js.map +1 -0
  81. package/dist/mcp/handlers/history.d.ts.map +1 -0
  82. package/dist/mcp/handlers/history.js +35 -0
  83. package/dist/mcp/handlers/history.js.map +1 -0
  84. package/dist/mcp/handlers/plan.d.ts.map +1 -0
  85. package/dist/mcp/handlers/plan.js +324 -0
  86. package/dist/mcp/handlers/plan.js.map +1 -0
  87. package/dist/mcp/handlers/task.d.ts.map +1 -0
  88. package/dist/mcp/handlers/task.js +216 -0
  89. package/dist/mcp/handlers/task.js.map +1 -0
  90. package/dist/{src/mcp → mcp}/server.d.ts +1 -1
  91. package/dist/mcp/server.d.ts.map +1 -0
  92. package/dist/mcp/server.js +58 -0
  93. package/dist/mcp/server.js.map +1 -0
  94. package/dist/shared/json-store.d.ts.map +1 -0
  95. package/dist/{src/shared → shared}/json-store.js +5 -4
  96. package/dist/shared/json-store.js.map +1 -0
  97. package/dist/shared/mcp-utils.d.ts.map +1 -0
  98. package/dist/shared/mcp-utils.js.map +1 -0
  99. package/dist/{src/shared → shared}/paths.d.ts +0 -6
  100. package/dist/shared/paths.d.ts.map +1 -0
  101. package/dist/shared/paths.js +62 -0
  102. package/dist/shared/paths.js.map +1 -0
  103. package/dist/shared/register-tool.d.ts +20 -0
  104. package/dist/shared/register-tool.d.ts.map +1 -0
  105. package/dist/shared/register-tool.js +15 -0
  106. package/dist/shared/register-tool.js.map +1 -0
  107. package/dist/{src/types → types}/state.d.ts +65 -65
  108. package/dist/types/state.d.ts.map +1 -0
  109. package/dist/{src/types → types}/state.js +1 -1
  110. package/dist/types/state.js.map +1 -0
  111. package/harness/claude/agent-rules.yml +21 -0
  112. package/harness/claude/invocations.yml +11 -0
  113. package/harness/claude/layout.yml +3 -0
  114. package/harness/codex/agent-rules.yml +28 -0
  115. package/harness/codex/invocations.yml +13 -0
  116. package/harness/codex/layout.yml +3 -0
  117. package/harness/opencode/agent-rules.yml +18 -0
  118. package/harness/opencode/invocations.yml +12 -0
  119. package/harness/opencode/layout.yml +3 -0
  120. package/package.json +38 -43
  121. package/{assets → spec}/agents/architect/body.ko.md +92 -84
  122. package/spec/agents/architect/body.md +185 -0
  123. package/spec/agents/designer/body.ko.md +330 -0
  124. package/spec/agents/designer/body.md +330 -0
  125. package/spec/agents/engineer/body.ko.md +166 -0
  126. package/spec/agents/engineer/body.md +166 -0
  127. package/spec/agents/lead/body.ko.md +276 -0
  128. package/spec/agents/lead/body.md +276 -0
  129. package/{assets → spec}/agents/postdoc/body.ko.md +116 -46
  130. package/spec/agents/postdoc/body.md +192 -0
  131. package/{assets → spec}/agents/researcher/body.ko.md +131 -45
  132. package/spec/agents/researcher/body.md +223 -0
  133. package/spec/agents/reviewer/body.ko.md +219 -0
  134. package/spec/agents/reviewer/body.md +219 -0
  135. package/{assets → spec}/agents/strategist/body.ko.md +108 -35
  136. package/spec/agents/strategist/body.md +187 -0
  137. package/spec/agents/tester/body.ko.md +272 -0
  138. package/spec/agents/tester/body.md +272 -0
  139. package/{assets → spec}/agents/writer/body.ko.md +109 -33
  140. package/spec/agents/writer/body.md +198 -0
  141. package/spec/skills/nx-auto-plan/body.ko.md +150 -0
  142. package/spec/skills/nx-auto-plan/body.md +150 -0
  143. package/spec/skills/nx-plan/body.ko.md +159 -0
  144. package/spec/skills/nx-plan/body.md +159 -0
  145. package/spec/skills/nx-run/body.ko.md +132 -0
  146. package/spec/skills/nx-run/body.md +132 -0
  147. package/vocabulary/enums/task-register-state.yml +4 -0
  148. package/vocabulary/invocations.yml +43 -0
  149. package/assets/agents/architect/body.md +0 -177
  150. package/assets/agents/designer/body.ko.md +0 -125
  151. package/assets/agents/designer/body.md +0 -125
  152. package/assets/agents/engineer/body.ko.md +0 -106
  153. package/assets/agents/engineer/body.md +0 -106
  154. package/assets/agents/lead/body.ko.md +0 -70
  155. package/assets/agents/lead/body.md +0 -70
  156. package/assets/agents/postdoc/body.md +0 -122
  157. package/assets/agents/researcher/body.md +0 -137
  158. package/assets/agents/reviewer/body.ko.md +0 -138
  159. package/assets/agents/reviewer/body.md +0 -138
  160. package/assets/agents/strategist/body.md +0 -116
  161. package/assets/agents/tester/body.ko.md +0 -195
  162. package/assets/agents/tester/body.md +0 -195
  163. package/assets/agents/writer/body.md +0 -122
  164. package/assets/capability-matrix.yml +0 -200
  165. package/assets/hooks/agent-bootstrap/handler.test.ts +0 -369
  166. package/assets/hooks/agent-bootstrap/handler.ts +0 -132
  167. package/assets/hooks/agent-bootstrap/meta.yml +0 -10
  168. package/assets/hooks/agent-finalize/handler.test.ts +0 -368
  169. package/assets/hooks/agent-finalize/handler.ts +0 -76
  170. package/assets/hooks/agent-finalize/meta.yml +0 -10
  171. package/assets/hooks/capability-matrix.yml +0 -313
  172. package/assets/hooks/post-tool-telemetry/handler.test.ts +0 -302
  173. package/assets/hooks/post-tool-telemetry/handler.ts +0 -49
  174. package/assets/hooks/post-tool-telemetry/meta.yml +0 -10
  175. package/assets/hooks/prompt-router/handler.test.ts +0 -801
  176. package/assets/hooks/prompt-router/handler.ts +0 -272
  177. package/assets/hooks/prompt-router/meta.yml +0 -11
  178. package/assets/hooks/session-init/handler.test.ts +0 -274
  179. package/assets/hooks/session-init/handler.ts +0 -31
  180. package/assets/hooks/session-init/meta.yml +0 -9
  181. package/assets/lsp-servers.json +0 -55
  182. package/assets/schema/lsp-servers.schema.json +0 -67
  183. package/assets/skills/nx-init/body.ko.md +0 -197
  184. package/assets/skills/nx-init/body.md +0 -197
  185. package/assets/skills/nx-plan/body.ko.md +0 -361
  186. package/assets/skills/nx-plan/body.md +0 -361
  187. package/assets/skills/nx-run/body.ko.md +0 -161
  188. package/assets/skills/nx-run/body.md +0 -160
  189. package/assets/skills/nx-sync/body.ko.md +0 -92
  190. package/assets/skills/nx-sync/body.md +0 -92
  191. package/assets/tools/tool-name-map.yml +0 -353
  192. package/dist/assets/hooks/agent-bootstrap/handler.d.ts +0 -4
  193. package/dist/assets/hooks/agent-bootstrap/handler.d.ts.map +0 -1
  194. package/dist/assets/hooks/agent-bootstrap/handler.js +0 -114
  195. package/dist/assets/hooks/agent-bootstrap/handler.js.map +0 -1
  196. package/dist/assets/hooks/agent-finalize/handler.d.ts +0 -4
  197. package/dist/assets/hooks/agent-finalize/handler.d.ts.map +0 -1
  198. package/dist/assets/hooks/agent-finalize/handler.js +0 -63
  199. package/dist/assets/hooks/agent-finalize/handler.js.map +0 -1
  200. package/dist/assets/hooks/post-tool-telemetry/handler.d.ts +0 -4
  201. package/dist/assets/hooks/post-tool-telemetry/handler.d.ts.map +0 -1
  202. package/dist/assets/hooks/post-tool-telemetry/handler.js +0 -40
  203. package/dist/assets/hooks/post-tool-telemetry/handler.js.map +0 -1
  204. package/dist/assets/hooks/prompt-router/handler.d.ts +0 -4
  205. package/dist/assets/hooks/prompt-router/handler.d.ts.map +0 -1
  206. package/dist/assets/hooks/prompt-router/handler.js +0 -214
  207. package/dist/assets/hooks/prompt-router/handler.js.map +0 -1
  208. package/dist/assets/hooks/session-init/handler.d.ts +0 -4
  209. package/dist/assets/hooks/session-init/handler.d.ts.map +0 -1
  210. package/dist/assets/hooks/session-init/handler.js +0 -22
  211. package/dist/assets/hooks/session-init/handler.js.map +0 -1
  212. package/dist/claude/.claude-plugin/marketplace.json +0 -75
  213. package/dist/claude/.claude-plugin/plugin.json +0 -67
  214. package/dist/claude/agents/architect.md +0 -172
  215. package/dist/claude/agents/designer.md +0 -120
  216. package/dist/claude/agents/engineer.md +0 -98
  217. package/dist/claude/agents/lead.md +0 -59
  218. package/dist/claude/agents/postdoc.md +0 -117
  219. package/dist/claude/agents/researcher.md +0 -132
  220. package/dist/claude/agents/reviewer.md +0 -133
  221. package/dist/claude/agents/strategist.md +0 -111
  222. package/dist/claude/agents/tester.md +0 -190
  223. package/dist/claude/agents/writer.md +0 -114
  224. package/dist/claude/dist/hooks/agent-bootstrap.js +0 -238
  225. package/dist/claude/dist/hooks/agent-finalize.js +0 -180
  226. package/dist/claude/dist/hooks/post-tool-telemetry.js +0 -71
  227. package/dist/claude/dist/hooks/prompt-router.js +0 -7336
  228. package/dist/claude/dist/hooks/session-init.js +0 -50
  229. package/dist/claude/hooks/hooks.json +0 -64
  230. package/dist/claude/settings.json +0 -3
  231. package/dist/claude/skills/nx-init/SKILL.md +0 -189
  232. package/dist/claude/skills/nx-plan/SKILL.md +0 -353
  233. package/dist/claude/skills/nx-run/SKILL.md +0 -154
  234. package/dist/claude/skills/nx-sync/SKILL.md +0 -87
  235. package/dist/codex/agents/architect.toml +0 -175
  236. package/dist/codex/agents/designer.toml +0 -123
  237. package/dist/codex/agents/engineer.toml +0 -105
  238. package/dist/codex/agents/lead.toml +0 -64
  239. package/dist/codex/agents/postdoc.toml +0 -120
  240. package/dist/codex/agents/researcher.toml +0 -136
  241. package/dist/codex/agents/reviewer.toml +0 -137
  242. package/dist/codex/agents/strategist.toml +0 -114
  243. package/dist/codex/agents/tester.toml +0 -194
  244. package/dist/codex/agents/writer.toml +0 -121
  245. package/dist/codex/dist/hooks/agent-bootstrap.js +0 -238
  246. package/dist/codex/dist/hooks/agent-finalize.js +0 -180
  247. package/dist/codex/dist/hooks/prompt-router.js +0 -7336
  248. package/dist/codex/dist/hooks/session-init.js +0 -50
  249. package/dist/codex/hooks/hooks.json +0 -28
  250. package/dist/codex/install/AGENTS.fragment.md +0 -60
  251. package/dist/codex/install/config.fragment.toml +0 -5
  252. package/dist/codex/install/install.sh +0 -60
  253. package/dist/codex/package.json +0 -20
  254. package/dist/codex/plugin/.codex-plugin/plugin.json +0 -57
  255. package/dist/codex/plugin/skills/nx-init/SKILL.md +0 -189
  256. package/dist/codex/plugin/skills/nx-plan/SKILL.md +0 -353
  257. package/dist/codex/plugin/skills/nx-run/SKILL.md +0 -154
  258. package/dist/codex/plugin/skills/nx-sync/SKILL.md +0 -87
  259. package/dist/codex/prompts/architect.md +0 -166
  260. package/dist/codex/prompts/designer.md +0 -114
  261. package/dist/codex/prompts/engineer.md +0 -97
  262. package/dist/codex/prompts/lead.md +0 -60
  263. package/dist/codex/prompts/postdoc.md +0 -111
  264. package/dist/codex/prompts/researcher.md +0 -127
  265. package/dist/codex/prompts/reviewer.md +0 -128
  266. package/dist/codex/prompts/strategist.md +0 -105
  267. package/dist/codex/prompts/tester.md +0 -185
  268. package/dist/codex/prompts/writer.md +0 -113
  269. package/dist/hooks/agent-bootstrap.js +0 -238
  270. package/dist/hooks/agent-finalize.js +0 -180
  271. package/dist/hooks/post-tool-telemetry.js +0 -71
  272. package/dist/hooks/prompt-router.js +0 -7336
  273. package/dist/hooks/session-init.js +0 -50
  274. package/dist/manifests/claude-hooks.json +0 -64
  275. package/dist/manifests/codex-hooks.json +0 -28
  276. package/dist/manifests/opencode-manifest.json +0 -54
  277. package/dist/manifests/portability-report.json +0 -75
  278. package/dist/opencode/.opencode/skills/nx-init/SKILL.md +0 -189
  279. package/dist/opencode/.opencode/skills/nx-plan/SKILL.md +0 -353
  280. package/dist/opencode/.opencode/skills/nx-run/SKILL.md +0 -154
  281. package/dist/opencode/.opencode/skills/nx-sync/SKILL.md +0 -87
  282. package/dist/opencode/package.json +0 -23
  283. package/dist/opencode/src/agents/architect.ts +0 -176
  284. package/dist/opencode/src/agents/designer.ts +0 -124
  285. package/dist/opencode/src/agents/engineer.ts +0 -105
  286. package/dist/opencode/src/agents/lead.ts +0 -66
  287. package/dist/opencode/src/agents/postdoc.ts +0 -121
  288. package/dist/opencode/src/agents/researcher.ts +0 -136
  289. package/dist/opencode/src/agents/reviewer.ts +0 -137
  290. package/dist/opencode/src/agents/strategist.ts +0 -115
  291. package/dist/opencode/src/agents/tester.ts +0 -194
  292. package/dist/opencode/src/agents/writer.ts +0 -121
  293. package/dist/opencode/src/index.ts +0 -25
  294. package/dist/opencode/src/plugin.ts +0 -6
  295. package/dist/scripts/build-agents.d.ts +0 -170
  296. package/dist/scripts/build-agents.d.ts.map +0 -1
  297. package/dist/scripts/build-agents.js +0 -907
  298. package/dist/scripts/build-agents.js.map +0 -1
  299. package/dist/scripts/build-hooks.d.ts +0 -57
  300. package/dist/scripts/build-hooks.d.ts.map +0 -1
  301. package/dist/scripts/build-hooks.js +0 -562
  302. package/dist/scripts/build-hooks.js.map +0 -1
  303. package/dist/scripts/cli.d.ts +0 -54
  304. package/dist/scripts/cli.d.ts.map +0 -1
  305. package/dist/scripts/cli.js +0 -504
  306. package/dist/scripts/cli.js.map +0 -1
  307. package/dist/scripts/smoke/smoke-claude.d.ts +0 -2
  308. package/dist/scripts/smoke/smoke-claude.d.ts.map +0 -1
  309. package/dist/scripts/smoke/smoke-claude.js +0 -58
  310. package/dist/scripts/smoke/smoke-claude.js.map +0 -1
  311. package/dist/scripts/smoke/smoke-codex.d.ts +0 -2
  312. package/dist/scripts/smoke/smoke-codex.d.ts.map +0 -1
  313. package/dist/scripts/smoke/smoke-codex.js +0 -50
  314. package/dist/scripts/smoke/smoke-codex.js.map +0 -1
  315. package/dist/scripts/smoke/smoke-consumer.d.ts +0 -2
  316. package/dist/scripts/smoke/smoke-consumer.d.ts.map +0 -1
  317. package/dist/scripts/smoke/smoke-consumer.js +0 -230
  318. package/dist/scripts/smoke/smoke-consumer.js.map +0 -1
  319. package/dist/scripts/smoke/smoke-opencode.d.ts +0 -2
  320. package/dist/scripts/smoke/smoke-opencode.d.ts.map +0 -1
  321. package/dist/scripts/smoke/smoke-opencode.js +0 -99
  322. package/dist/scripts/smoke/smoke-opencode.js.map +0 -1
  323. package/dist/src/hooks/opencode-mount.d.ts +0 -35
  324. package/dist/src/hooks/opencode-mount.d.ts.map +0 -1
  325. package/dist/src/hooks/opencode-mount.js +0 -352
  326. package/dist/src/hooks/opencode-mount.js.map +0 -1
  327. package/dist/src/hooks/runtime.d.ts +0 -37
  328. package/dist/src/hooks/runtime.d.ts.map +0 -1
  329. package/dist/src/hooks/runtime.js +0 -274
  330. package/dist/src/hooks/runtime.js.map +0 -1
  331. package/dist/src/hooks/types.d.ts +0 -196
  332. package/dist/src/hooks/types.d.ts.map +0 -1
  333. package/dist/src/hooks/types.js +0 -85
  334. package/dist/src/hooks/types.js.map +0 -1
  335. package/dist/src/lsp/cache.d.ts +0 -9
  336. package/dist/src/lsp/cache.d.ts.map +0 -1
  337. package/dist/src/lsp/cache.js +0 -216
  338. package/dist/src/lsp/cache.js.map +0 -1
  339. package/dist/src/lsp/client.d.ts +0 -24
  340. package/dist/src/lsp/client.d.ts.map +0 -1
  341. package/dist/src/lsp/client.js +0 -166
  342. package/dist/src/lsp/client.js.map +0 -1
  343. package/dist/src/lsp/detect.d.ts +0 -77
  344. package/dist/src/lsp/detect.d.ts.map +0 -1
  345. package/dist/src/lsp/detect.js +0 -116
  346. package/dist/src/lsp/detect.js.map +0 -1
  347. package/dist/src/mcp/server.d.ts.map +0 -1
  348. package/dist/src/mcp/server.js +0 -34
  349. package/dist/src/mcp/server.js.map +0 -1
  350. package/dist/src/mcp/tools/artifact.d.ts.map +0 -1
  351. package/dist/src/mcp/tools/artifact.js +0 -36
  352. package/dist/src/mcp/tools/artifact.js.map +0 -1
  353. package/dist/src/mcp/tools/history.d.ts.map +0 -1
  354. package/dist/src/mcp/tools/history.js +0 -29
  355. package/dist/src/mcp/tools/history.js.map +0 -1
  356. package/dist/src/mcp/tools/lsp.d.ts +0 -13
  357. package/dist/src/mcp/tools/lsp.d.ts.map +0 -1
  358. package/dist/src/mcp/tools/lsp.js +0 -225
  359. package/dist/src/mcp/tools/lsp.js.map +0 -1
  360. package/dist/src/mcp/tools/plan.d.ts.map +0 -1
  361. package/dist/src/mcp/tools/plan.js +0 -317
  362. package/dist/src/mcp/tools/plan.js.map +0 -1
  363. package/dist/src/mcp/tools/task.d.ts.map +0 -1
  364. package/dist/src/mcp/tools/task.js +0 -252
  365. package/dist/src/mcp/tools/task.js.map +0 -1
  366. package/dist/src/shared/invocations.d.ts +0 -74
  367. package/dist/src/shared/invocations.d.ts.map +0 -1
  368. package/dist/src/shared/invocations.js +0 -247
  369. package/dist/src/shared/invocations.js.map +0 -1
  370. package/dist/src/shared/json-store.d.ts.map +0 -1
  371. package/dist/src/shared/json-store.js.map +0 -1
  372. package/dist/src/shared/mcp-utils.d.ts.map +0 -1
  373. package/dist/src/shared/mcp-utils.js.map +0 -1
  374. package/dist/src/shared/package-root.d.ts +0 -6
  375. package/dist/src/shared/package-root.d.ts.map +0 -1
  376. package/dist/src/shared/package-root.js +0 -19
  377. package/dist/src/shared/package-root.js.map +0 -1
  378. package/dist/src/shared/paths.d.ts.map +0 -1
  379. package/dist/src/shared/paths.js +0 -117
  380. package/dist/src/shared/paths.js.map +0 -1
  381. package/dist/src/shared/tool-log.d.ts +0 -8
  382. package/dist/src/shared/tool-log.d.ts.map +0 -1
  383. package/dist/src/shared/tool-log.js +0 -22
  384. package/dist/src/shared/tool-log.js.map +0 -1
  385. package/dist/src/types/agent-config.d.ts +0 -22
  386. package/dist/src/types/agent-config.d.ts.map +0 -1
  387. package/dist/src/types/agent-config.js +0 -2
  388. package/dist/src/types/agent-config.js.map +0 -1
  389. package/dist/src/types/index.d.ts +0 -2
  390. package/dist/src/types/index.d.ts.map +0 -1
  391. package/dist/src/types/index.js +0 -2
  392. package/dist/src/types/index.js.map +0 -1
  393. package/dist/src/types/state.d.ts.map +0 -1
  394. package/dist/src/types/state.js.map +0 -1
  395. package/docs/consuming/codex-lead-merge.md +0 -106
  396. package/docs/contract/harness-io.md +0 -333
  397. package/docs/plugin-guide.md +0 -355
  398. package/docs/plugin-template/claude/.github/workflows/build.yml +0 -60
  399. package/docs/plugin-template/claude/README.md +0 -110
  400. package/docs/plugin-template/claude/package.json +0 -16
  401. package/docs/plugin-template/codex/.github/workflows/build.yml +0 -51
  402. package/docs/plugin-template/codex/README.md +0 -147
  403. package/docs/plugin-template/codex/install/install.sh +0 -60
  404. package/docs/plugin-template/codex/package.json +0 -17
  405. package/docs/plugin-template/opencode/.github/workflows/build.yml +0 -61
  406. package/docs/plugin-template/opencode/README.md +0 -121
  407. package/docs/plugin-template/opencode/package.json +0 -25
  408. package/docs/plugin-template/opencode/src/plugin.ts +0 -6
  409. /package/dist/{src/mcp/tools → mcp/handlers}/artifact.d.ts +0 -0
  410. /package/dist/{src/mcp/tools → mcp/handlers}/history.d.ts +0 -0
  411. /package/dist/{src/mcp/tools → mcp/handlers}/plan.d.ts +0 -0
  412. /package/dist/{src/mcp/tools → mcp/handlers}/task.d.ts +0 -0
  413. /package/dist/{src/shared → shared}/json-store.d.ts +0 -0
  414. /package/dist/{src/shared → shared}/mcp-utils.d.ts +0 -0
  415. /package/dist/{src/shared → shared}/mcp-utils.js +0 -0
@@ -1,355 +0,0 @@
1
- # nexus-core Plugin 개발 가이드
2
-
3
- 플러그인 repo 저자를 위한 end-to-end 온보딩 문서입니다.
4
-
5
- ## 1. 3 레이어 스택 개요
6
-
7
- ```
8
- nexus-core (@moreih29/nexus-core)
9
- └── 공통 자산 정의 (agents/, skills/, hooks/, capability-matrix)
10
- └── 빌드 도구 (nexus-core sync / init / validate)
11
-
12
- plugin repo (your-org/my-X-plugin)
13
- └── nexus-core를 devDependency로 참조
14
- └── sync로 하네스별 자산을 생성·커밋
15
- └── 하네스 spec에 맞는 형식으로 배포
16
-
17
- end user (컨슈머)
18
- └── 플러그인을 Claude Code / OpenCode / Codex에 설치
19
- ```
20
-
21
- nexus-core는 자산을 **정의**합니다. plugin repo는 자산을 **패키징**합니다. end user는 플러그인을 **소비**합니다.
22
-
23
- > 계약 명세는 [docs/contract/harness-io.md](./contract/harness-io.md)를 참조. 본 문서는 튜토리얼입니다.
24
-
25
- ---
26
-
27
- ## 2. `nexus-core sync` 사용법
28
-
29
- sync 명령은 nexus-core의 자산을 plugin repo의 하네스별 형식으로 변환해 기록합니다.
30
-
31
- ### 기본 사용법
32
-
33
- ```bash
34
- bunx @moreih29/nexus-core sync --harness=<claude|opencode|codex> --target=<dir>
35
- ```
36
-
37
- ### 플래그 전체 목록
38
-
39
- | 플래그 | 기본값 | 설명 |
40
- |---|---|---|
41
- | `--harness=<name>` | 전체 (all) | 대상 하네스를 `claude`, `opencode`, `codex` 중 하나로 제한 |
42
- | `--target=<dir>` | `dist/` | 출력 디렉터리. `<dir>` 직속에 자산을 기록합니다 (harness prefix 없음). plugin repo 루트에 직접 출력하려면 `--target=./` |
43
- | `--dry-run` | — | 변경될 파일 목록만 출력. 실제 쓰기 없음 |
44
- | `--force` | — | Template 파일(처음 한 번만 생성되는 파일)도 강제 덮어쓰기 |
45
- | `--strict` | — | Managed 파일에 미커밋 로컬 변경이 있으면 오류로 중단 |
46
- | `--only=<name>` | — | 특정 에이전트 또는 스킬 이름만 처리 |
47
-
48
- ### 덮어쓰기 정책
49
-
50
- | 분류 | 예시 경로 | 정책 |
51
- |---|---|---|
52
- | **Managed** | `agents/*.md`, `src/agents/*.ts`, `plugin/skills/*/SKILL.md`, `settings.json`, `install/AGENTS.fragment.md` | 항상 덮어씀 (`--dry-run` 시 제외) |
53
- | **Template** | `.claude-plugin/plugin.json`, `package.json`, `src/plugin.ts`, `install/install.sh` | 파일이 없을 때만 생성. `--force`로 강제 가능 |
54
-
55
- **직접 편집하지 말아야 할 경로**: Managed 경로는 다음 sync 시 덮어집니다. 커스터마이즈가 필요하면 Template 경로나 별도 파일을 사용하세요.
56
-
57
- ### 실전 예시
58
-
59
- ```bash
60
- # 플러그인 repo 루트에서 claude 하네스 동기화
61
- bunx @moreih29/nexus-core sync --harness=claude --target=./
62
-
63
- # 변경 사항 미리 확인
64
- bunx @moreih29/nexus-core sync --harness=opencode --target=./ --dry-run
65
-
66
- # CI에서 미커밋 변경 감지 (엄격 모드)
67
- bunx @moreih29/nexus-core sync --harness=codex --target=./ --strict
68
-
69
- # 특정 에이전트만 재빌드
70
- bunx @moreih29/nexus-core sync --harness=claude --target=./ --only=architect
71
- ```
72
-
73
- ---
74
-
75
- ## 2-1. Lead primary agent 주입
76
-
77
- ### 배경
78
-
79
- nexus-core는 10개 에이전트 중 `lead`를 primary orchestrator로 지정합니다. 3 하네스는 빌드 시 `lead` agent body를 main thread 시스템 프롬프트로 자동 주입합니다. 이를 통해 컨슈머가 플러그인을 설치하는 순간 Lead가 기본 실행 에이전트로 동작합니다.
80
-
81
- ### `mode` 필드
82
-
83
- 에이전트 `assets/agents/<name>/body.md` frontmatter에 `mode` 필드가 있습니다.
84
-
85
- | 값 | 의미 |
86
- |---|---|
87
- | `primary` | 3 하네스의 main thread 시스템 프롬프트로 주입 |
88
- | `subagent` | 기본값. 서브에이전트로만 호출 가능 |
89
- | `all` | main thread 주입 + 서브에이전트 호출 모두 허용 |
90
-
91
- `lead`는 `mode: primary`로 정의되어 있습니다. 이 필드가 없는 에이전트는 `subagent`로 처리됩니다.
92
-
93
- ### 하네스별 주입 경로
94
-
95
- | 하네스 | 주입 경로 | Managed 산출물 | Consumer 작업 |
96
- |---|---|---|---|
97
- | Claude | `settings.json`의 `agent` 키 | `settings.json` | 없음 (자동) |
98
- | OpenCode | `AgentConfig.mode = "primary"` | `src/agents/<name>.ts` | 없음 (자동) |
99
- | Codex | `AGENTS.md` 수동 머지 | `install/AGENTS.fragment.md` | [docs/consuming/codex-lead-merge.md](./consuming/codex-lead-merge.md) 참조 |
100
-
101
- ---
102
-
103
- ## 3. `nexus-core init` 사용법
104
-
105
- init 명령은 nexus-core에 포함된 플러그인 템플릿을 지정 경로로 복사합니다.
106
- 새 plugin repo를 처음 생성할 때 한 번 실행합니다.
107
-
108
- ### 기본 사용법
109
-
110
- ```bash
111
- bunx @moreih29/nexus-core init --harness=<claude|opencode|codex> --target=<dir>
112
- ```
113
-
114
- ### 플래그
115
-
116
- | 플래그 | 기본값 | 설명 |
117
- |---|---|---|
118
- | `--harness=<name>` | `claude` | 복사할 하네스 템플릿 지정 |
119
- | `--target=<dir>` | (필수) | 템플릿을 복사할 대상 경로 |
120
-
121
- `--target`은 필수입니다. 생략 시 오류로 종료됩니다.
122
-
123
- ### 전체 흐름
124
-
125
- ```bash
126
- # 1. 새 플러그인 디렉터리 생성
127
- bunx @moreih29/nexus-core init --harness=claude --target=./my-claude-plugin
128
-
129
- # 2. 이동 및 의존성 설치
130
- cd my-claude-plugin
131
- bun install
132
-
133
- # 3. 자산 동기화 (nexus-core에서 에이전트·스킬 가져오기)
134
- bunx @moreih29/nexus-core sync --harness=claude --target=./
135
-
136
- # 4. 매니페스트 커스터마이즈 (name, version, description 변경)
137
- # .claude-plugin/plugin.json 편집
138
-
139
- # 5. 커밋
140
- git init
141
- git add .
142
- git commit -m "Initial plugin scaffold"
143
- ```
144
-
145
- ---
146
-
147
- ## 4. 하네스별 install 구현 가이드
148
-
149
- ### 4-1. Claude
150
-
151
- Claude 플러그인은 플러그인 repo 자체가 설치 단위입니다. 컨슈머는 별도 install 명령 없이
152
- 마켓플레이스에서 플러그인을 등록하거나 `claude --plugin-dir <path>`로 직접 로드합니다.
153
-
154
- **plugin repo 저자가 할 일:**
155
-
156
- 1. `nexus-core sync --harness=claude --target=./` 실행 후 커밋
157
- 2. `.claude-plugin/plugin.json` 의 `name`, `version`, `description` 커스터마이즈
158
- 3. 마켓플레이스 카탈로그에 GitHub 소스로 등록
159
-
160
- ```json
161
- {
162
- "source": "github",
163
- "repo": "your-org/my-claude-plugin",
164
- "ref": "v1.0.0"
165
- }
166
- ```
167
-
168
- **컨슈머 측 추가 작업 없음.** Claude Code가 플러그인 디렉터리를 캐시로 복사하고
169
- `agents/`, `skills/`, `hooks/` 등을 자동으로 인식합니다.
170
-
171
- 캐시 위치: `~/.claude/plugins/cache/<marketplace>/<plugin>/<version>/`
172
-
173
- `plugin.json`의 `version` 필드가 업데이트 감지 기준입니다. 릴리즈마다 버전을 올리세요.
174
-
175
- **Lead primary agent 주입**: sync는 `.claude-plugin/` 디렉터리가 아닌 플러그인 루트에 `settings.json`을 생성합니다. 이 파일에는 `{ "agent": "lead" }` 키가 포함되어, Claude Code가 플러그인 활성 시 main thread를 `lead` 에이전트로 실행합니다. 사용자가 다른 에이전트로 override하려면 프로젝트 또는 사용자 `.claude/settings.json`에서 scope 우선순위에 따라 재정의할 수 있습니다.
176
-
177
- `--target=./` flat 출력은 Claude Code marketplace의 `source: "./"` 계약과 직접 정합합니다. sync 결과물이 repo 루트에 위치하기 때문에 별도의 경로 재지정 없이 마켓플레이스에서 바로 인식됩니다.
178
-
179
- ---
180
-
181
- ### 4-2. OpenCode
182
-
183
- OpenCode 플러그인은 npm 패키지로 배포됩니다. 컨슈머가 `opencode.json`의 `plugin` 배열에
184
- 패키지명을 추가하면 OpenCode 시작 시 Bun이 자동 설치합니다.
185
-
186
- **요구사항: Node.js 22 이상** — `import ... with { type: "json" }` 구문이 필요합니다.
187
-
188
- **plugin repo 저자가 할 일:**
189
-
190
- 1. `nexus-core sync --harness=opencode --target=./` 실행 후 커밋
191
- 2. `package.json`의 `name`을 실제 npm 패키지명으로 변경
192
- 3. npm에 배포: `npm publish --access public`
193
- 4. 컨슈머에게 다음 안내 제공:
194
-
195
- ```json
196
- // .opencode/opencode.json (컨슈머 프로젝트)
197
- {
198
- "plugin": ["@your-org/my-opencode-plugin"]
199
- }
200
- ```
201
-
202
- **`src/plugin.ts`** (Template — 처음 sync 시 생성됨): mountHooks 진입점 보일러플레이트. 내용은 [`docs/plugin-template/opencode/src/plugin.ts`](../docs/plugin-template/opencode/src/plugin.ts) 참조. 저자는 최초 생성 후 자유롭게 수정 가능 (다음 sync에서 덮어쓰지 않음).
203
-
204
- #### hook manifest 스키마 (v0.14.0)
205
-
206
- v0.14.0부터 OpenCode hook manifest 스키마가 변경되었습니다. 진입점(`src/plugin.ts`)에서
207
- `@moreih29/nexus-core`의 서브패스를 통해 manifest를 임포트합니다.
208
-
209
- manifest의 구조는 다음과 같습니다.
210
-
211
- ```json
212
- {
213
- "hooks": [
214
- {
215
- "name": "hook-name",
216
- "events": ["event-name"],
217
- "matcher": "pattern",
218
- "handlerPath": "../assets/hooks/hook-name/handler.js",
219
- "priority": 0,
220
- "timeout": 5000
221
- }
222
- ]
223
- }
224
- ```
225
-
226
- > **v0.13.0 소비자 주의**: v0.13.0의 `mountHooks` `{ mountHooks: [...] }` 스키마는
227
- > 런타임 파싱에 실패해 실제로 동작한 적이 없습니다. v0.14.0의 새 스키마로 교체가 필요합니다.
228
- > manifest 파일명도 `dist/manifests/opencode-hooks.json` → `opencode-manifest.json`으로 변경되었습니다.
229
-
230
- **에이전트 활성화**: OpenCode는 `plugin` 배열 등록만으로 에이전트가 자동 활성화되지 않을 수 있습니다.
231
- sync 결과물인 `opencode.json.fragment`를 참고해 컨슈머의 `opencode.json`에 `agents` 배열을 추가하거나,
232
- `postinstall` 스크립트로 자동화하세요.
233
-
234
- ```js
235
- // postinstall.mjs (package.json scripts.postinstall: "node postinstall.mjs")
236
- import { readFileSync, writeFileSync, existsSync } from "node:fs";
237
- const fragment = JSON.parse(readFileSync("./opencode.json.fragment", "utf-8"));
238
- const target = ".opencode/opencode.json";
239
- const existing = existsSync(target) ? JSON.parse(readFileSync(target, "utf-8")) : {};
240
- existing.agents = [...(existing.agents || []), ...fragment.agents];
241
- writeFileSync(target, JSON.stringify(existing, null, 2));
242
- ```
243
-
244
- `package.json`이 `"type": "module"`이므로 `require()` 대신 ESM 방식(`import` / `fs.readFileSync + JSON.parse`)을 사용합니다.
245
-
246
- 자산 경로(`src/agents/*.ts`)는 TypeScript를 그대로 참조합니다. OpenCode가 TypeScript를 직접 실행합니다.
247
-
248
- **Lead primary agent 주입**: `lead` 에이전트는 `mode: "primary"`로 빌드됩니다. sync가 생성하는 `src/agents/lead.ts`의 `AgentConfig` 객체에 `mode: "primary"` 필드가 설정되어 OpenCode primary mode로 등록됩니다. 컨슈머 측 추가 작업은 없습니다.
249
-
250
- ---
251
-
252
- ### 4-3. Codex
253
-
254
- Codex는 플러그인 시스템(`.codex-plugin/plugin.json`)과 native agent 시스템(`config.toml [agents.*]`)이
255
- **별개**입니다. 에이전트를 활성화하려면 두 경로를 모두 처리해야 합니다.
256
-
257
- **plugin repo 저자가 할 일:**
258
-
259
- 1. `nexus-core sync --harness=codex --target=./` 실행 후 커밋
260
- 2. install 헬퍼 스크립트(`install/install.sh`) 작성 또는 `package.json`의 `install-plugin` 스크립트 구현
261
-
262
- **`install/install.sh`** (Template — 처음 sync 시 생성됨): block-marker 머지 설치 스크립트. 내용은 [`docs/plugin-template/codex/install/install.sh`](../docs/plugin-template/codex/install/install.sh) 참조. 저자는 `PLUGIN_NAME`·`CODEX_HOME` 등을 편집하여 최적화 가능.
263
-
264
- **block-marker 패턴**: `# BEGIN <plugin-name>` / `# END <plugin-name>` 마커 사이의 내용만 교체합니다.
265
- 기존 사용자 설정을 덮어쓰지 않습니다. oh-my-codex의 `omx setup` 패턴에서 가져온 방식입니다.
266
-
267
- `install/config.fragment.toml`에는 MCP 서버 설정이 포함됩니다.
268
-
269
- ```toml
270
- [mcp_servers.nx]
271
- command = "nexus-mcp"
272
- ```
273
-
274
- `nexus-mcp`는 `@moreih29/nexus-core`를 전역 설치하면 PATH에 추가됩니다.
275
-
276
- **Lead primary agent 주입**: sync는 `install/AGENTS.fragment.md`를 생성합니다. 이 파일은 `<!-- nexus-core:lead:start -->` / `<!-- nexus-core:lead:end -->` 마커로 감싸진 `lead` agent body를 포함합니다. Codex는 `AGENTS.md`를 공식 로드 경로로 사용하므로 컨슈머가 직접 머지해야 합니다. `install/install.sh`의 마지막 단계가 이를 자동화합니다. 자세한 수동 머지 절차는 [docs/consuming/codex-lead-merge.md](./consuming/codex-lead-merge.md) 참조.
277
-
278
- ---
279
-
280
- ## 5. 주의사항 및 FAQ
281
-
282
- ### Q: sync 후 plugin.json이 바뀌지 않아요
283
-
284
- `plugin.json`은 Template 파일입니다. 최초 생성 후에는 덮어쓰지 않습니다. 의도적으로 재생성하려면 `--force` 플래그를 사용하세요.
285
-
286
- ```bash
287
- bunx @moreih29/nexus-core sync --harness=claude --target=./ --force
288
- ```
289
-
290
- 주의: `--force`는 Template 파일의 기존 편집 내용도 덮어씁니다.
291
-
292
- ### Q: 사용자가 agents/*.md를 직접 수정해도 되나요?
293
-
294
- Managed 파일(`agents/`, `skills/` 등)은 다음 sync 시 덮어씁니다. 사용자 커스텀 내용은 보존되지 않습니다.
295
- 에이전트 동작을 커스터마이즈하려면 `plugin.json`의 `agents` 배열에서 파일 경로를 재지정하거나,
296
- 별도 경로에 커스텀 에이전트를 추가하세요.
297
-
298
- ### Q: --strict 플래그는 언제 사용하나요?
299
-
300
- CI 파이프라인에서 "sync 결과가 항상 커밋된 상태"임을 보장하고 싶을 때 사용합니다.
301
- Managed 파일에 로컬 변경이 감지되면 오류로 중단합니다.
302
-
303
- ### Q: OpenCode에서 git URL로 플러그인을 설치할 수 있나요?
304
-
305
- OpenCode의 `plugin` 배열은 npm 패키지명을 기준으로 동작합니다. git URL 기반 설치의 공식 지원 여부는 확인되지 않았습니다. npm 배포를 권장합니다.
306
-
307
- ### Q: Codex에서 npm으로 플러그인을 설치할 수 있나요?
308
-
309
- Codex 플러그인의 npm 기반 설치는 공식 지원 여부가 확인되지 않았습니다. 로컬 경로 또는 GitHub 소스 방식을 사용하세요.
310
-
311
- ### Q: 여러 하네스를 한 번에 동기화할 수 있나요?
312
-
313
- `--harness` 플래그를 생략하면 3 하네스를 순차로 처리합니다. 단, flat 출력 특성상 모든 하네스 자산이 동일한 `--target` 디렉터리에 쌓입니다. 하네스별로 별도 디렉터리(또는 별도 repo)에 출력해야 할 경우 개별 실행을 권장합니다.
314
-
315
- ```bash
316
- # 하네스별로 target을 분리해 실행
317
- bunx @moreih29/nexus-core sync --harness=claude --target=./dist/claude
318
- bunx @moreih29/nexus-core sync --harness=opencode --target=./dist/opencode
319
- bunx @moreih29/nexus-core sync --harness=codex --target=./dist/codex
320
- ```
321
-
322
- 각 하네스 repo 루트에 직접 출력하는 구성에서는 `--harness`와 `--target`을 함께 지정하세요.
323
-
324
- ### Q: plugin.json에서 오버라이드한 자산 경로가 sync 후 사라지나요?
325
-
326
- Template 파일인 `plugin.json`은 `--force` 없이는 덮어쓰지 않습니다. 오버라이드 내용은 보존됩니다.
327
-
328
- ### Q: lead 대신 다른 에이전트를 primary로 쓰고 싶으면?
329
-
330
- `assets/agents/<name>/body.md` frontmatter에서 원하는 에이전트의 `mode` 값을 `primary`로 변경하고 `lead`의 `mode`를 `subagent`로 바꿉니다. 이후 sync를 재실행하면 해당 에이전트가 3 하네스에 primary로 주입됩니다. Claude만 빠르게 override하려면 컨슈머 프로젝트 또는 사용자 `.claude/settings.json`에서 `agent` 키를 재정의하세요.
331
-
332
- ### Q: primary agent를 여러 개 등록할 수 있나요?
333
-
334
- 빌드는 `mode: primary`인 에이전트를 전부 처리합니다. 단, 하네스별 동작이 다릅니다.
335
-
336
- - **Claude**: `settings.json`은 첫 번째 primary만 기록하고, 복수 발견 시 경고 log를 출력합니다.
337
- - **Codex**: `install/AGENTS.fragment.md`에 primary 에이전트를 순차 append합니다.
338
- - **OpenCode**: 해당 에이전트 TS 모듈 각각에 `mode: "primary"`를 설정합니다.
339
-
340
- ---
341
-
342
- ## 6. 보조 명령
343
-
344
- ```bash
345
- bunx @moreih29/nexus-core list # 에이전트·스킬·훅 전체 목록과 설명 출력
346
- bunx @moreih29/nexus-core validate # assets/ frontmatter 및 YAML 파일 유효성 검사
347
- bunx @moreih29/nexus-core mcp # MCP stdio 서버 직접 실행 (nexus-mcp와 동일)
348
- bunx @moreih29/nexus-core --help # 전체 명령 도움말
349
- ```
350
-
351
- 전역 설치(`bun add -g @moreih29/nexus-core`) 환경에서는 `nexus-core list` 형태로도 사용할 수 있습니다.
352
-
353
- `bunx @moreih29/nexus-core validate`는 CI에서 자산 정합성을 검증하는 용도로 사용합니다.
354
- 검증 대상: `assets/agents/*/body.md` frontmatter, `assets/skills/*/body.md` frontmatter,
355
- `assets/capability-matrix.yml`, `assets/tools/tool-name-map.yml`.
@@ -1,60 +0,0 @@
1
- name: Build
2
-
3
- on:
4
- push:
5
- branches: [main]
6
- pull_request:
7
- branches: [main]
8
-
9
- jobs:
10
- sync-verify:
11
- name: Verify nexus-core sync
12
- runs-on: ubuntu-latest
13
- steps:
14
- - uses: actions/checkout@v4
15
-
16
- - uses: oven-sh/setup-bun@v2
17
- with:
18
- bun-version: latest
19
-
20
- - name: Install dependencies
21
- run: bun install
22
-
23
- - name: Run sync
24
- run: bunx @moreih29/nexus-core sync --harness=claude --target=./
25
-
26
- - name: Check for uncommitted changes
27
- run: |
28
- git diff --exit-code || (
29
- echo "Sync produced uncommitted changes. Run 'bun run sync' and commit the result."
30
- exit 1
31
- )
32
-
33
- - name: Validate assets
34
- run: bunx @moreih29/nexus-core validate
35
-
36
- release:
37
- name: Release
38
- runs-on: ubuntu-latest
39
- needs: sync-verify
40
- if: github.ref == 'refs/heads/main' && github.event_name == 'push'
41
- steps:
42
- - uses: actions/checkout@v4
43
-
44
- - uses: oven-sh/setup-bun@v2
45
- with:
46
- bun-version: latest
47
-
48
- - name: Install dependencies
49
- run: bun install
50
-
51
- - name: Run sync
52
- run: bunx @moreih29/nexus-core sync --harness=claude --target=./
53
-
54
- # plugin.json의 version 필드를 기준으로 릴리즈 태그를 생성합니다.
55
- # 실제 릴리즈 자동화는 프로젝트 요구에 맞게 조정하세요.
56
- - name: Create release archive
57
- run: |
58
- VERSION=$(node -e "console.log(require('./.claude-plugin/plugin.json').version)")
59
- echo "Plugin version: $VERSION"
60
- git archive --format=tar.gz --output="release-v${VERSION}.tar.gz" HEAD
@@ -1,110 +0,0 @@
1
- # Claude Code Plugin Scaffold — nexus-core
2
-
3
- 이 디렉터리는 `nexus-core init --harness=claude` 명령으로 복사되는 Claude Code 플러그인 스타터입니다.
4
-
5
- ## 개요
6
-
7
- nexus-core가 공통 에이전트·스킬·훅 자산을 이 플러그인 repo에 동기화(sync)합니다.
8
- 플러그인 repo 저자는 동기화된 자산을 커스터마이즈하고 배포만 담당합니다.
9
-
10
- ## 디렉터리 구조
11
-
12
- ```
13
- my-claude-plugin/
14
- ├── .claude-plugin/
15
- │ ├── plugin.json # 플러그인 매니페스트 (Template — 처음 한 번만 생성)
16
- │ └── marketplace.json # 마켓플레이스 카탈로그 (Template — 처음 한 번만 생성)
17
- ├── agents/ # Managed — nexus-core sync가 덮어씀
18
- │ └── <agent-name>.md
19
- ├── skills/ # Managed — nexus-core sync가 덮어씀
20
- │ └── <skill-name>/
21
- │ └── SKILL.md
22
- ├── hooks/ # nexus-core build-hooks가 생성 (sync 포함)
23
- │ └── hooks.json
24
- ├── .mcp.json # MCP 서버 설정 (수동 관리)
25
- ├── package.json
26
- └── .github/
27
- └── workflows/
28
- └── build.yml
29
- ```
30
-
31
- **Managed** 경로(`agents/`, `skills/`)는 `nexus-core sync`가 항상 최신 상태로 유지합니다.
32
- **Template** 경로(`.claude-plugin/plugin.json`, `.claude-plugin/marketplace.json`)는 처음 한 번만 생성됩니다. 이후 편집 내용은 보존됩니다(`--force` 없이는 덮어쓰지 않음).
33
-
34
- ## 빠른 시작
35
-
36
- ### 1. 이 템플릿으로 새 플러그인 생성
37
-
38
- ```bash
39
- bunx @moreih29/nexus-core init --harness=claude --target=./my-claude-plugin
40
- cd my-claude-plugin
41
- bun install
42
- ```
43
-
44
- ### 2. 자산 동기화
45
-
46
- ```bash
47
- bunx @moreih29/nexus-core sync --harness=claude --target=./
48
- ```
49
-
50
- 동기화 후 생성되는 파일:
51
-
52
- - `agents/<name>.md` × N
53
- - `skills/<name>/SKILL.md` × N
54
- - `.claude-plugin/plugin.json` (최초 생성 시)
55
- - `.claude-plugin/marketplace.json` (최초 생성 시)
56
-
57
- ### 3. 변경 내용 커밋
58
-
59
- ```bash
60
- git add agents/ skills/ .claude-plugin/ hooks/ .mcp.json
61
- git commit -m "Sync nexus-core assets"
62
- ```
63
-
64
- ## 플러그인 매니페스트 커스터마이즈
65
-
66
- `.claude-plugin/plugin.json`에서 플러그인 이름, 버전, 설명을 수정하세요.
67
-
68
- ```json
69
- {
70
- "name": "my-claude-plugin",
71
- "version": "1.0.0",
72
- "description": "My Claude Code plugin powered by nexus-core"
73
- }
74
- ```
75
-
76
- `name`은 kebab-case여야 합니다. `version`은 Claude Code의 업데이트 감지에 사용됩니다.
77
-
78
- ## 배포
79
-
80
- Claude Code 마켓플레이스에 배포하려면 마켓플레이스 카탈로그 저장소에 다음 형식으로 등록합니다.
81
-
82
- ```json
83
- {
84
- "source": "github",
85
- "repo": "your-org/my-claude-plugin",
86
- "ref": "v1.0.0"
87
- }
88
- ```
89
-
90
- 개발 중에는 `claude --plugin-dir ./`로 마켓플레이스 없이 로컬 로드할 수 있습니다.
91
-
92
- ## CLI 참조
93
-
94
- ```bash
95
- bunx @moreih29/nexus-core sync --harness=claude --target=<dir> # 자산 동기화
96
- bunx @moreih29/nexus-core sync --harness=claude --dry-run # 변경될 파일 목록만 출력 (쓰기 없음)
97
- bunx @moreih29/nexus-core sync --harness=claude --force # Template 파일도 강제 덮어쓰기
98
- bunx @moreih29/nexus-core sync --harness=claude --strict # Managed 파일의 미커밋 변경 시 오류
99
- bunx @moreih29/nexus-core sync --harness=claude --only=<name> # 특정 에이전트/스킬만 동기화
100
- bunx @moreih29/nexus-core list # 사용 가능한 에이전트·스킬·훅 목록
101
- bunx @moreih29/nexus-core validate # 자산 frontmatter 및 YAML 검증
102
- ```
103
-
104
- 전역 설치(`bun add -g @moreih29/nexus-core`) 환경에서는 `nexus-core <cmd>` 형태로도 사용할 수 있습니다.
105
-
106
- ## 주의사항
107
-
108
- - `agents/`, `skills/` 내 파일을 직접 편집하지 마세요. 다음 sync 시 덮어씁니다.
109
- - 플러그인 전용 커스텀 에이전트는 `agents/` 외 별도 경로에 두고 `plugin.json`에서 참조하세요.
110
- - `.claude-plugin/plugin.json`의 `name` 필드 변경 시 마켓플레이스 등록과 일치해야 합니다.
@@ -1,16 +0,0 @@
1
- {
2
- "name": "<my-claude-plugin>",
3
- "version": "1.0.0",
4
- "description": "Claude Code plugin powered by nexus-core",
5
- "private": true,
6
- "scripts": {
7
- "sync": "bunx @moreih29/nexus-core sync --harness=claude --target=./",
8
- "sync:dry": "bunx @moreih29/nexus-core sync --harness=claude --target=./ --dry-run",
9
- "build": "bun run sync",
10
- "validate": "bunx @moreih29/nexus-core validate",
11
- "list": "bunx @moreih29/nexus-core list"
12
- },
13
- "devDependencies": {
14
- "@moreih29/nexus-core": "^0.13.0"
15
- }
16
- }
@@ -1,51 +0,0 @@
1
- name: Build
2
-
3
- on:
4
- push:
5
- branches: [main]
6
- pull_request:
7
- branches: [main]
8
-
9
- jobs:
10
- sync-verify:
11
- name: Verify nexus-core sync
12
- runs-on: ubuntu-latest
13
- steps:
14
- - uses: actions/checkout@v4
15
-
16
- - uses: oven-sh/setup-bun@v2
17
- with:
18
- bun-version: latest
19
-
20
- - name: Install dependencies
21
- run: bun install
22
-
23
- - name: Run sync
24
- run: bunx @moreih29/nexus-core sync --harness=codex --target=./
25
-
26
- - name: Check for uncommitted changes
27
- run: |
28
- git diff --exit-code || (
29
- echo "Sync produced uncommitted changes. Run 'bun run sync' and commit the result."
30
- exit 1
31
- )
32
-
33
- - name: Validate assets
34
- run: bunx @moreih29/nexus-core validate
35
-
36
- - name: Verify plugin manifest
37
- run: |
38
- test -f plugin/.codex-plugin/plugin.json || (
39
- echo "plugin/.codex-plugin/plugin.json not found"
40
- exit 1
41
- )
42
- echo "Plugin manifest present"
43
- cat plugin/.codex-plugin/plugin.json
44
-
45
- - name: Verify install config fragment
46
- run: |
47
- test -f install/config.fragment.toml || (
48
- echo "install/config.fragment.toml not found — run 'bun run sync' to generate"
49
- exit 1
50
- )
51
- echo "Install config fragment present"