@damian87/omp 0.1.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 (166) hide show
  1. package/.github/agents/architect.md +25 -0
  2. package/.github/agents/code-reviewer.md +25 -0
  3. package/.github/agents/designer.md +26 -0
  4. package/.github/agents/executor.md +24 -0
  5. package/.github/agents/planner.md +26 -0
  6. package/.github/agents/researcher.md +26 -0
  7. package/.github/agents/verifier.md +26 -0
  8. package/.github/copilot-instructions.md +20 -0
  9. package/.github/plugin/marketplace.json +30 -0
  10. package/.github/skills/caveman/SKILL.md +20 -0
  11. package/.github/skills/code-review/SKILL.md +22 -0
  12. package/.github/skills/codebase-research/SKILL.md +20 -0
  13. package/.github/skills/create-skill/SKILL.md +78 -0
  14. package/.github/skills/create-skill/references/best-practices.md +449 -0
  15. package/.github/skills/create-skill/references/examples.md +69 -0
  16. package/.github/skills/create-skill/references/progressive-disclosure.md +25 -0
  17. package/.github/skills/create-skill/references/skill-structure.md +55 -0
  18. package/.github/skills/debug/SKILL.md +22 -0
  19. package/.github/skills/grill-me/SKILL.md +16 -0
  20. package/.github/skills/jira-ticket/SKILL.md +21 -0
  21. package/.github/skills/omp-autopilot/SKILL.md +20 -0
  22. package/.github/skills/prototype/SKILL.md +21 -0
  23. package/.github/skills/ralph/SKILL.md +20 -0
  24. package/.github/skills/ralplan/SKILL.md +21 -0
  25. package/.github/skills/self-evolve/SKILL.md +157 -0
  26. package/.github/skills/tdd/SKILL.md +19 -0
  27. package/.github/skills/team/SKILL.md +20 -0
  28. package/.github/skills/ultraqa/SKILL.md +20 -0
  29. package/.github/skills/ultrawork/SKILL.md +20 -0
  30. package/.github/skills/verify/SKILL.md +20 -0
  31. package/LICENSE +21 -0
  32. package/README.md +214 -0
  33. package/catalog/capabilities.json +729 -0
  34. package/catalog/skills-general.json +427 -0
  35. package/dist/src/catalog.d.ts +79 -0
  36. package/dist/src/catalog.js +113 -0
  37. package/dist/src/catalog.js.map +1 -0
  38. package/dist/src/cli.d.ts +9 -0
  39. package/dist/src/cli.js +475 -0
  40. package/dist/src/cli.js.map +1 -0
  41. package/dist/src/copilot/config.d.ts +7 -0
  42. package/dist/src/copilot/config.js +24 -0
  43. package/dist/src/copilot/config.js.map +1 -0
  44. package/dist/src/copilot/doctor.d.ts +18 -0
  45. package/dist/src/copilot/doctor.js +85 -0
  46. package/dist/src/copilot/doctor.js.map +1 -0
  47. package/dist/src/copilot/launch.d.ts +14 -0
  48. package/dist/src/copilot/launch.js +64 -0
  49. package/dist/src/copilot/launch.js.map +1 -0
  50. package/dist/src/copilot/list.d.ts +17 -0
  51. package/dist/src/copilot/list.js +82 -0
  52. package/dist/src/copilot/list.js.map +1 -0
  53. package/dist/src/copilot/paths.d.ts +21 -0
  54. package/dist/src/copilot/paths.js +36 -0
  55. package/dist/src/copilot/paths.js.map +1 -0
  56. package/dist/src/copilot/setup.d.ts +20 -0
  57. package/dist/src/copilot/setup.js +90 -0
  58. package/dist/src/copilot/setup.js.map +1 -0
  59. package/dist/src/copilot/version.d.ts +13 -0
  60. package/dist/src/copilot/version.js +34 -0
  61. package/dist/src/copilot/version.js.map +1 -0
  62. package/dist/src/jira.d.ts +149 -0
  63. package/dist/src/jira.js +492 -0
  64. package/dist/src/jira.js.map +1 -0
  65. package/dist/src/lint.d.ts +11 -0
  66. package/dist/src/lint.js +85 -0
  67. package/dist/src/lint.js.map +1 -0
  68. package/dist/src/mcp/server.d.ts +10 -0
  69. package/dist/src/mcp/server.js +44 -0
  70. package/dist/src/mcp/server.js.map +1 -0
  71. package/dist/src/mcp/tools/index.d.ts +9 -0
  72. package/dist/src/mcp/tools/index.js +15 -0
  73. package/dist/src/mcp/tools/index.js.map +1 -0
  74. package/dist/src/mcp/tools/notepad.d.ts +2 -0
  75. package/dist/src/mcp/tools/notepad.js +135 -0
  76. package/dist/src/mcp/tools/notepad.js.map +1 -0
  77. package/dist/src/mcp/tools/project-memory.d.ts +2 -0
  78. package/dist/src/mcp/tools/project-memory.js +91 -0
  79. package/dist/src/mcp/tools/project-memory.js.map +1 -0
  80. package/dist/src/mcp/tools/shared-memory.d.ts +2 -0
  81. package/dist/src/mcp/tools/shared-memory.js +148 -0
  82. package/dist/src/mcp/tools/shared-memory.js.map +1 -0
  83. package/dist/src/mcp/tools/state.d.ts +2 -0
  84. package/dist/src/mcp/tools/state.js +107 -0
  85. package/dist/src/mcp/tools/state.js.map +1 -0
  86. package/dist/src/mcp/tools/trace.d.ts +10 -0
  87. package/dist/src/mcp/tools/trace.js +102 -0
  88. package/dist/src/mcp/tools/trace.js.map +1 -0
  89. package/dist/src/mcp/types.d.ts +29 -0
  90. package/dist/src/mcp/types.js +7 -0
  91. package/dist/src/mcp/types.js.map +1 -0
  92. package/dist/src/mode-state/index.d.ts +4 -0
  93. package/dist/src/mode-state/index.js +5 -0
  94. package/dist/src/mode-state/index.js.map +1 -0
  95. package/dist/src/mode-state/paths.d.ts +5 -0
  96. package/dist/src/mode-state/paths.js +29 -0
  97. package/dist/src/mode-state/paths.js.map +1 -0
  98. package/dist/src/mode-state/ralph.d.ts +25 -0
  99. package/dist/src/mode-state/ralph.js +44 -0
  100. package/dist/src/mode-state/ralph.js.map +1 -0
  101. package/dist/src/mode-state/ultraqa.d.ts +26 -0
  102. package/dist/src/mode-state/ultraqa.js +51 -0
  103. package/dist/src/mode-state/ultraqa.js.map +1 -0
  104. package/dist/src/mode-state/ultrawork.d.ts +20 -0
  105. package/dist/src/mode-state/ultrawork.js +34 -0
  106. package/dist/src/mode-state/ultrawork.js.map +1 -0
  107. package/dist/src/project.d.ts +29 -0
  108. package/dist/src/project.js +101 -0
  109. package/dist/src/project.js.map +1 -0
  110. package/dist/src/skills.d.ts +17 -0
  111. package/dist/src/skills.js +61 -0
  112. package/dist/src/skills.js.map +1 -0
  113. package/dist/src/sync.d.ts +6 -0
  114. package/dist/src/sync.js +27 -0
  115. package/dist/src/sync.js.map +1 -0
  116. package/dist/src/team/api.d.ts +20 -0
  117. package/dist/src/team/api.js +55 -0
  118. package/dist/src/team/api.js.map +1 -0
  119. package/dist/src/team/heartbeat.d.ts +4 -0
  120. package/dist/src/team/heartbeat.js +27 -0
  121. package/dist/src/team/heartbeat.js.map +1 -0
  122. package/dist/src/team/idle-nudge.d.ts +27 -0
  123. package/dist/src/team/idle-nudge.js +60 -0
  124. package/dist/src/team/idle-nudge.js.map +1 -0
  125. package/dist/src/team/inbox.d.ts +3 -0
  126. package/dist/src/team/inbox.js +16 -0
  127. package/dist/src/team/inbox.js.map +1 -0
  128. package/dist/src/team/index.d.ts +11 -0
  129. package/dist/src/team/index.js +12 -0
  130. package/dist/src/team/index.js.map +1 -0
  131. package/dist/src/team/outbox.d.ts +14 -0
  132. package/dist/src/team/outbox.js +82 -0
  133. package/dist/src/team/outbox.js.map +1 -0
  134. package/dist/src/team/runtime.d.ts +84 -0
  135. package/dist/src/team/runtime.js +243 -0
  136. package/dist/src/team/runtime.js.map +1 -0
  137. package/dist/src/team/state-paths.d.ts +31 -0
  138. package/dist/src/team/state-paths.js +54 -0
  139. package/dist/src/team/state-paths.js.map +1 -0
  140. package/dist/src/team/task-store.d.ts +41 -0
  141. package/dist/src/team/task-store.js +153 -0
  142. package/dist/src/team/task-store.js.map +1 -0
  143. package/dist/src/team/tmux.d.ts +26 -0
  144. package/dist/src/team/tmux.js +87 -0
  145. package/dist/src/team/tmux.js.map +1 -0
  146. package/dist/src/team/types.d.ts +45 -0
  147. package/dist/src/team/types.js +2 -0
  148. package/dist/src/team/types.js.map +1 -0
  149. package/dist/src/team/worker-bootstrap.d.ts +8 -0
  150. package/dist/src/team/worker-bootstrap.js +52 -0
  151. package/dist/src/team/worker-bootstrap.js.map +1 -0
  152. package/docs/copilot-distribution.md +100 -0
  153. package/docs/general-skills.md +76 -0
  154. package/docs/jira.md +64 -0
  155. package/docs/self-evolve.md +22 -0
  156. package/hooks/hooks.json +74 -0
  157. package/package.json +58 -0
  158. package/plugin.json +14 -0
  159. package/scripts/error.mjs +31 -0
  160. package/scripts/lib/hook-output.mjs +30 -0
  161. package/scripts/lib/stdin.mjs +29 -0
  162. package/scripts/post-tool-use.mjs +31 -0
  163. package/scripts/pre-tool-use.mjs +30 -0
  164. package/scripts/prompt-submit.mjs +66 -0
  165. package/scripts/session-end.mjs +29 -0
  166. package/scripts/session-start.mjs +33 -0
@@ -0,0 +1,427 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "canonicalRoot": ".github/skills",
4
+ "commandPrefix": "/",
5
+ "skills": [
6
+ {
7
+ "name": "codebase-research",
8
+ "capabilityId": "codebase-research",
9
+ "capabilityIds": [
10
+ "codebase-research",
11
+ "research.codebase"
12
+ ],
13
+ "source": ".github/skills/codebase-research/SKILL.md",
14
+ "sourcePath": ".github/skills/codebase-research/SKILL.md",
15
+ "canonicalPath": ".github/skills/codebase-research/SKILL.md",
16
+ "description": "Read repo evidence before planning or asking.",
17
+ "summary": "Read repo evidence before planning or asking.",
18
+ "support": "project-skill",
19
+ "aliases": [],
20
+ "slashCommands": [
21
+ "codebase-research"
22
+ ],
23
+ "projections": {
24
+ "copilot": {
25
+ "command": "/codebase-research",
26
+ "state": "supported"
27
+ }
28
+ },
29
+ "projection": "project-skill",
30
+ "phase1": true
31
+ },
32
+ {
33
+ "name": "grill-me",
34
+ "capabilityId": "grill-me",
35
+ "capabilityIds": [
36
+ "grill-me",
37
+ "planning.challenge"
38
+ ],
39
+ "source": ".github/skills/grill-me/SKILL.md",
40
+ "sourcePath": ".github/skills/grill-me/SKILL.md",
41
+ "canonicalPath": ".github/skills/grill-me/SKILL.md",
42
+ "description": "Ask one sharp clarification question after research.",
43
+ "summary": "Ask one sharp clarification question after research.",
44
+ "support": "project-skill",
45
+ "aliases": [],
46
+ "slashCommands": [
47
+ "grill-me"
48
+ ],
49
+ "projections": {
50
+ "copilot": {
51
+ "command": "/grill-me",
52
+ "state": "supported"
53
+ }
54
+ },
55
+ "projection": "project-skill",
56
+ "phase1": true
57
+ },
58
+ {
59
+ "name": "ralplan",
60
+ "capabilityId": "ralplan",
61
+ "capabilityIds": [
62
+ "ralplan",
63
+ "planning.consensus"
64
+ ],
65
+ "source": ".github/skills/ralplan/SKILL.md",
66
+ "sourcePath": ".github/skills/ralplan/SKILL.md",
67
+ "canonicalPath": ".github/skills/ralplan/SKILL.md",
68
+ "description": "Create implementation-ready plans and test shape.",
69
+ "summary": "Create implementation-ready plans and test shape.",
70
+ "support": "project-skill",
71
+ "aliases": [],
72
+ "slashCommands": [
73
+ "ralplan"
74
+ ],
75
+ "projections": {
76
+ "copilot": {
77
+ "command": "/ralplan",
78
+ "state": "supported"
79
+ }
80
+ },
81
+ "projection": "project-skill",
82
+ "phase1": true
83
+ },
84
+ {
85
+ "name": "team",
86
+ "capabilityId": "team",
87
+ "capabilityIds": [
88
+ "team",
89
+ "execution.parallel"
90
+ ],
91
+ "source": ".github/skills/team/SKILL.md",
92
+ "sourcePath": ".github/skills/team/SKILL.md",
93
+ "canonicalPath": ".github/skills/team/SKILL.md",
94
+ "description": "Split approved plans into parallel lanes.",
95
+ "summary": "Split approved plans into parallel lanes.",
96
+ "support": "project-skill",
97
+ "aliases": [],
98
+ "slashCommands": [
99
+ "team"
100
+ ],
101
+ "projections": {
102
+ "copilot": {
103
+ "command": "/team",
104
+ "state": "supported"
105
+ }
106
+ },
107
+ "projection": "project-skill",
108
+ "phase1": true
109
+ },
110
+ {
111
+ "name": "ralph",
112
+ "capabilityId": "ralph",
113
+ "capabilityIds": [
114
+ "ralph",
115
+ "execution.single-owner"
116
+ ],
117
+ "source": ".github/skills/ralph/SKILL.md",
118
+ "sourcePath": ".github/skills/ralph/SKILL.md",
119
+ "canonicalPath": ".github/skills/ralph/SKILL.md",
120
+ "description": "Run a single-owner execute-fix-verify loop.",
121
+ "summary": "Run a single-owner execute-fix-verify loop.",
122
+ "support": "project-skill",
123
+ "aliases": [],
124
+ "slashCommands": [
125
+ "ralph"
126
+ ],
127
+ "projections": {
128
+ "copilot": {
129
+ "command": "/ralph",
130
+ "state": "supported"
131
+ }
132
+ },
133
+ "projection": "project-skill",
134
+ "phase1": true
135
+ },
136
+ {
137
+ "name": "ultrawork",
138
+ "capabilityId": "ultrawork",
139
+ "capabilityIds": [
140
+ "ultrawork",
141
+ "execution.parallel"
142
+ ],
143
+ "source": ".github/skills/ultrawork/SKILL.md",
144
+ "sourcePath": ".github/skills/ultrawork/SKILL.md",
145
+ "canonicalPath": ".github/skills/ultrawork/SKILL.md",
146
+ "description": "Batch many independent small work items.",
147
+ "summary": "Batch many independent small work items.",
148
+ "support": "project-skill",
149
+ "aliases": [],
150
+ "slashCommands": [
151
+ "ultrawork"
152
+ ],
153
+ "projections": {
154
+ "copilot": {
155
+ "command": "/ultrawork",
156
+ "state": "supported"
157
+ }
158
+ },
159
+ "projection": "project-skill",
160
+ "phase1": true
161
+ },
162
+ {
163
+ "name": "ultraqa",
164
+ "capabilityId": "ultraqa",
165
+ "capabilityIds": [
166
+ "ultraqa",
167
+ "qa.behavioral"
168
+ ],
169
+ "source": ".github/skills/ultraqa/SKILL.md",
170
+ "sourcePath": ".github/skills/ultraqa/SKILL.md",
171
+ "canonicalPath": ".github/skills/ultraqa/SKILL.md",
172
+ "description": "Run adversarial behavior and regression QA.",
173
+ "summary": "Run adversarial behavior and regression QA.",
174
+ "support": "project-skill",
175
+ "aliases": [],
176
+ "slashCommands": [
177
+ "ultraqa"
178
+ ],
179
+ "projections": {
180
+ "copilot": {
181
+ "command": "/ultraqa",
182
+ "state": "supported"
183
+ }
184
+ },
185
+ "projection": "project-skill",
186
+ "phase1": true
187
+ },
188
+ {
189
+ "name": "omp-autopilot",
190
+ "capabilityId": "omp-autopilot",
191
+ "capabilityIds": [
192
+ "omp-autopilot",
193
+ "execution.autonomous"
194
+ ],
195
+ "source": ".github/skills/omp-autopilot/SKILL.md",
196
+ "sourcePath": ".github/skills/omp-autopilot/SKILL.md",
197
+ "canonicalPath": ".github/skills/omp-autopilot/SKILL.md",
198
+ "description": "Run the lightweight end-to-end skill flow.",
199
+ "summary": "Run the lightweight end-to-end skill flow.",
200
+ "support": "project-skill",
201
+ "aliases": ["autopilot"],
202
+ "slashCommands": [
203
+ "omp-autopilot"
204
+ ],
205
+ "projections": {
206
+ "copilot": {
207
+ "command": "/omp-autopilot",
208
+ "state": "supported"
209
+ }
210
+ },
211
+ "projection": "project-skill",
212
+ "phase1": true
213
+ },
214
+ {
215
+ "name": "code-review",
216
+ "capabilityId": "code-review",
217
+ "capabilityIds": [
218
+ "code-review",
219
+ "review.independent"
220
+ ],
221
+ "source": ".github/skills/code-review/SKILL.md",
222
+ "sourcePath": ".github/skills/code-review/SKILL.md",
223
+ "canonicalPath": ".github/skills/code-review/SKILL.md",
224
+ "description": "Review completed changes before merge or handoff.",
225
+ "summary": "Review completed changes before merge or handoff.",
226
+ "support": "project-skill",
227
+ "aliases": [
228
+ "review"
229
+ ],
230
+ "slashCommands": [
231
+ "code-review"
232
+ ],
233
+ "projections": {
234
+ "copilot": {
235
+ "command": "/code-review",
236
+ "state": "supported"
237
+ }
238
+ },
239
+ "projection": "project-skill",
240
+ "phase1": true
241
+ },
242
+ {
243
+ "name": "verify",
244
+ "capabilityId": "verify",
245
+ "capabilityIds": [
246
+ "verify",
247
+ "verification.evidence"
248
+ ],
249
+ "source": ".github/skills/verify/SKILL.md",
250
+ "sourcePath": ".github/skills/verify/SKILL.md",
251
+ "canonicalPath": ".github/skills/verify/SKILL.md",
252
+ "description": "Prove completion claims with evidence.",
253
+ "summary": "Prove completion claims with evidence.",
254
+ "support": "project-skill",
255
+ "aliases": [],
256
+ "slashCommands": [
257
+ "verify"
258
+ ],
259
+ "projections": {
260
+ "copilot": {
261
+ "command": "/verify",
262
+ "state": "supported"
263
+ }
264
+ },
265
+ "projection": "project-skill",
266
+ "phase1": true
267
+ },
268
+ {
269
+ "name": "jira-ticket",
270
+ "capabilityId": "jira-ticket",
271
+ "capabilityIds": [
272
+ "jira-ticket",
273
+ "tracker.ticket"
274
+ ],
275
+ "source": ".github/skills/jira-ticket/SKILL.md",
276
+ "sourcePath": ".github/skills/jira-ticket/SKILL.md",
277
+ "canonicalPath": ".github/skills/jira-ticket/SKILL.md",
278
+ "description": "Prepare Jira payloads with safe fallback.",
279
+ "summary": "Prepare Jira payloads with safe fallback.",
280
+ "support": "project-skill",
281
+ "aliases": [
282
+ "jira"
283
+ ],
284
+ "slashCommands": [
285
+ "jira-ticket"
286
+ ],
287
+ "projections": {
288
+ "copilot": {
289
+ "command": "/jira-ticket",
290
+ "state": "supported"
291
+ }
292
+ },
293
+ "projection": "project-skill",
294
+ "phase1": true
295
+ },
296
+ {
297
+ "name": "prototype",
298
+ "capabilityId": "prototype",
299
+ "capabilityIds": [
300
+ "prototype",
301
+ "design.prototype"
302
+ ],
303
+ "source": ".github/skills/prototype/SKILL.md",
304
+ "sourcePath": ".github/skills/prototype/SKILL.md",
305
+ "canonicalPath": ".github/skills/prototype/SKILL.md",
306
+ "description": "Build disposable experiments to answer design questions.",
307
+ "summary": "Build disposable experiments to answer design questions.",
308
+ "support": "project-skill",
309
+ "aliases": [],
310
+ "slashCommands": [
311
+ "prototype"
312
+ ],
313
+ "projections": {
314
+ "copilot": {
315
+ "command": "/prototype",
316
+ "state": "supported"
317
+ }
318
+ },
319
+ "projection": "project-skill",
320
+ "phase1": true
321
+ },
322
+ {
323
+ "name": "caveman",
324
+ "capabilityId": "caveman",
325
+ "capabilityIds": [
326
+ "caveman",
327
+ "communication.compact"
328
+ ],
329
+ "source": ".github/skills/caveman/SKILL.md",
330
+ "sourcePath": ".github/skills/caveman/SKILL.md",
331
+ "canonicalPath": ".github/skills/caveman/SKILL.md",
332
+ "description": "Use ultra-compact response style.",
333
+ "summary": "Use ultra-compact response style.",
334
+ "support": "project-skill",
335
+ "aliases": [],
336
+ "slashCommands": [
337
+ "caveman"
338
+ ],
339
+ "projections": {
340
+ "copilot": {
341
+ "command": "/caveman",
342
+ "state": "supported"
343
+ }
344
+ },
345
+ "projection": "project-skill",
346
+ "phase1": true
347
+ },
348
+ {
349
+ "name": "debug",
350
+ "capabilityId": "debug",
351
+ "capabilityIds": [
352
+ "debug",
353
+ "debug.systematic"
354
+ ],
355
+ "source": ".github/skills/debug/SKILL.md",
356
+ "sourcePath": ".github/skills/debug/SKILL.md",
357
+ "canonicalPath": ".github/skills/debug/SKILL.md",
358
+ "description": "Reproduce, diagnose, fix, and regression-test bugs.",
359
+ "summary": "Reproduce, diagnose, fix, and regression-test bugs.",
360
+ "support": "project-skill",
361
+ "aliases": [],
362
+ "slashCommands": [
363
+ "debug"
364
+ ],
365
+ "projections": {
366
+ "copilot": {
367
+ "command": "/debug",
368
+ "state": "supported"
369
+ }
370
+ },
371
+ "projection": "project-skill",
372
+ "phase1": true
373
+ },
374
+ {
375
+ "name": "tdd",
376
+ "capabilityId": "tdd",
377
+ "capabilityIds": [
378
+ "tdd",
379
+ "testing.tdd"
380
+ ],
381
+ "source": ".github/skills/tdd/SKILL.md",
382
+ "sourcePath": ".github/skills/tdd/SKILL.md",
383
+ "canonicalPath": ".github/skills/tdd/SKILL.md",
384
+ "description": "Use red-green-refactor for behavior changes.",
385
+ "summary": "Use red-green-refactor for behavior changes.",
386
+ "support": "project-skill",
387
+ "aliases": [],
388
+ "slashCommands": [
389
+ "tdd"
390
+ ],
391
+ "projections": {
392
+ "copilot": {
393
+ "command": "/tdd",
394
+ "state": "supported"
395
+ }
396
+ },
397
+ "projection": "project-skill",
398
+ "phase1": true
399
+ },
400
+ {
401
+ "name": "self-evolve",
402
+ "capabilityId": "self-evolve",
403
+ "capabilityIds": [
404
+ "self-evolve",
405
+ "meta.self-improvement"
406
+ ],
407
+ "source": ".github/skills/self-evolve/SKILL.md",
408
+ "sourcePath": ".github/skills/self-evolve/SKILL.md",
409
+ "canonicalPath": ".github/skills/self-evolve/SKILL.md",
410
+ "description": "Capture user-correction patterns and draft a new project skill on the third repeat.",
411
+ "summary": "Capture user-correction patterns and draft a new project skill on the third repeat.",
412
+ "support": "project-skill",
413
+ "aliases": [],
414
+ "slashCommands": [
415
+ "self-evolve"
416
+ ],
417
+ "projections": {
418
+ "copilot": {
419
+ "command": "/self-evolve",
420
+ "state": "supported"
421
+ }
422
+ },
423
+ "projection": "project-skill",
424
+ "phase1": true
425
+ }
426
+ ]
427
+ }
@@ -0,0 +1,79 @@
1
+ export type ProviderId = "copilot";
2
+ export type ProviderSupportState = "native" | "handoff" | "stub" | "unsupported";
3
+ export type CompatProviderState = "supported" | "fallback" | "unsupported";
4
+ export interface ProviderSupport {
5
+ state: ProviderSupportState;
6
+ notes: string;
7
+ }
8
+ export interface Capability {
9
+ id: string;
10
+ name: string;
11
+ title: string;
12
+ category: "clarification" | "planning" | "execution" | "tracking" | "verification" | string;
13
+ summary: string;
14
+ notes: string;
15
+ defaultCommand: string;
16
+ phase1: boolean;
17
+ sourceSkill: string;
18
+ providers: Record<ProviderId, CompatProviderState>;
19
+ support: Record<ProviderId, string>;
20
+ providerSupport: Record<ProviderId, ProviderSupport>;
21
+ }
22
+ export interface CapabilityCatalog {
23
+ schemaVersion: number;
24
+ providerStates: ProviderSupportState[];
25
+ compatProviderStates?: CompatProviderState[];
26
+ capabilities: Capability[];
27
+ }
28
+ export interface SkillProjection {
29
+ name: string;
30
+ capabilityId: string;
31
+ capabilityIds: string[];
32
+ source: string;
33
+ sourcePath: string;
34
+ canonicalPath: string;
35
+ description: string;
36
+ aliases: string[];
37
+ slashCommands: string[];
38
+ projections: Record<string, {
39
+ command?: string;
40
+ state?: CompatProviderState;
41
+ }>;
42
+ summary: string;
43
+ support: string;
44
+ projection: "skill-wrapper" | "capability-handoff" | string;
45
+ phase1: boolean;
46
+ handoffOnly?: boolean;
47
+ }
48
+ export type SkillEntry = SkillProjection;
49
+ export interface SkillCatalog {
50
+ schemaVersion: number;
51
+ canonicalRoot: string;
52
+ commandPrefix: string;
53
+ skills: SkillProjection[];
54
+ }
55
+ export interface CatalogBundle {
56
+ capabilities: CapabilityCatalog;
57
+ skills: SkillCatalog;
58
+ }
59
+ export interface CatalogValidationIssue {
60
+ code: string;
61
+ message: string;
62
+ path: string;
63
+ }
64
+ export interface CatalogValidationResult {
65
+ ok: boolean;
66
+ issues: CatalogValidationIssue[];
67
+ capabilityIds: string[];
68
+ skillNames: string[];
69
+ }
70
+ export declare function defaultCatalogDir(): string;
71
+ export declare function loadCapabilityCatalog(catalogDir?: string): CapabilityCatalog;
72
+ export declare function loadSkillCatalog(catalogDir?: string): SkillCatalog;
73
+ export declare function loadCatalogBundle(catalogDir?: string): CatalogBundle;
74
+ export declare function phase1Skills(catalog?: SkillCatalog): SkillProjection[];
75
+ export declare function phase1SkillNames(catalog?: SkillCatalog): string[];
76
+ export declare function phase1SlashCommands(catalog?: SkillCatalog): string[];
77
+ export declare function findCapability(id: string, catalog?: CapabilityCatalog): Capability | undefined;
78
+ export declare function validateCatalog(catalog?: SkillCatalog): string[];
79
+ export declare function validateCatalogBundle(bundle?: CatalogBundle): CatalogValidationResult;
@@ -0,0 +1,113 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { packageRootFromImportMeta } from "./project.js";
4
+ const PROVIDERS = ["copilot"];
5
+ const STATES = ["native", "handoff", "stub", "unsupported"];
6
+ const COMPAT_STATES = ["supported", "fallback", "unsupported"];
7
+ function readJsonFile(path) {
8
+ return JSON.parse(readFileSync(path, "utf8"));
9
+ }
10
+ export function defaultCatalogDir() {
11
+ return join(packageRootFromImportMeta(import.meta.url), "catalog");
12
+ }
13
+ export function loadCapabilityCatalog(catalogDir = defaultCatalogDir()) {
14
+ return readJsonFile(join(catalogDir, "capabilities.json"));
15
+ }
16
+ export function loadSkillCatalog(catalogDir = defaultCatalogDir()) {
17
+ return readJsonFile(join(catalogDir, "skills-general.json"));
18
+ }
19
+ export function loadCatalogBundle(catalogDir = defaultCatalogDir()) {
20
+ return {
21
+ capabilities: loadCapabilityCatalog(catalogDir),
22
+ skills: loadSkillCatalog(catalogDir),
23
+ };
24
+ }
25
+ export function phase1Skills(catalog = loadSkillCatalog()) {
26
+ return catalog.skills.filter((skill) => skill.phase1);
27
+ }
28
+ export function phase1SkillNames(catalog = loadSkillCatalog()) {
29
+ return phase1Skills(catalog).map((skill) => skill.name);
30
+ }
31
+ export function phase1SlashCommands(catalog = loadSkillCatalog()) {
32
+ return phase1Skills(catalog).flatMap((skill) => (skill.slashCommands.length > 0 ? skill.slashCommands : [skill.name]));
33
+ }
34
+ export function findCapability(id, catalog = loadCapabilityCatalog()) {
35
+ return catalog.capabilities.find((capability) => capability.id === id || capability.name === id);
36
+ }
37
+ export function validateCatalog(catalog = loadSkillCatalog()) {
38
+ const errors = [];
39
+ const names = new Set();
40
+ for (const [index, skill] of catalog.skills.entries()) {
41
+ if (!skill.name)
42
+ errors.push(`skills[${index}] missing name`);
43
+ if (names.has(skill.name))
44
+ errors.push(`duplicate skill name: ${skill.name}`);
45
+ names.add(skill.name);
46
+ if (!skill.source && !skill.sourcePath && !skill.canonicalPath)
47
+ errors.push(`skill ${skill.name} missing source`);
48
+ if (!skill.capabilityId && skill.capabilityIds.length === 0)
49
+ errors.push(`skill ${skill.name} missing capability`);
50
+ if (skill.slashCommands.length === 0)
51
+ errors.push(`skill ${skill.name} missing slash command`);
52
+ }
53
+ return errors;
54
+ }
55
+ export function validateCatalogBundle(bundle = loadCatalogBundle()) {
56
+ const issues = [];
57
+ const capabilityIds = bundle.capabilities.capabilities.map((capability) => capability.id);
58
+ const skillNames = bundle.skills.skills.map((skill) => skill.name);
59
+ const capabilityIdSet = new Set();
60
+ for (const state of bundle.capabilities.providerStates) {
61
+ if (!STATES.includes(state)) {
62
+ issues.push({ code: "unknown-provider-state", path: "capabilities.providerStates", message: `Unknown provider state: ${state}` });
63
+ }
64
+ }
65
+ for (const [index, capability] of bundle.capabilities.capabilities.entries()) {
66
+ const path = `capabilities[${index}]`;
67
+ if (!capability.id) {
68
+ issues.push({ code: "missing-capability-id", path, message: "Capability id is required." });
69
+ continue;
70
+ }
71
+ if (capabilityIdSet.has(capability.id)) {
72
+ issues.push({ code: "duplicate-capability-id", path: `${path}.id`, message: `Duplicate capability id: ${capability.id}` });
73
+ }
74
+ capabilityIdSet.add(capability.id);
75
+ for (const provider of PROVIDERS) {
76
+ const support = capability.providerSupport[provider];
77
+ if (!support) {
78
+ issues.push({ code: "missing-provider-support", path: `${path}.providerSupport.${provider}`, message: `Missing provider support for ${provider}.` });
79
+ continue;
80
+ }
81
+ if (!STATES.includes(support.state)) {
82
+ issues.push({ code: "invalid-provider-state", path: `${path}.providerSupport.${provider}.state`, message: `Invalid provider state: ${support.state}` });
83
+ }
84
+ const compatState = capability.providers[provider];
85
+ if (compatState && !COMPAT_STATES.includes(compatState)) {
86
+ issues.push({ code: "invalid-compat-provider-state", path: `${path}.providers.${provider}`, message: `Invalid compatibility provider state: ${compatState}` });
87
+ }
88
+ }
89
+ }
90
+ for (const [index, skill] of bundle.skills.skills.entries()) {
91
+ const path = `skills[${index}]`;
92
+ if (!skill.name) {
93
+ issues.push({ code: "missing-skill-name", path, message: "Skill name is required." });
94
+ }
95
+ const ids = new Set([skill.capabilityId, ...skill.capabilityIds]);
96
+ for (const id of ids) {
97
+ if (id && !capabilityIdSet.has(id)) {
98
+ issues.push({ code: "unknown-skill-capability", path: `${path}.capabilityIds`, message: `Skill references unknown capability: ${id}` });
99
+ }
100
+ }
101
+ if (skill.slashCommands.length === 0) {
102
+ issues.push({ code: "missing-slash-command", path: `${path}.slashCommands`, message: `Skill ${skill.name} must expose at least one slash command.` });
103
+ }
104
+ if (skill.phase1 && !capabilityIdSet.has(skill.capabilityId || skill.name)) {
105
+ issues.push({ code: "missing-phase1-skill-capability", path: `${path}.capabilityId`, message: `Phase 1 skill ${skill.name} must map to a catalog capability.` });
106
+ }
107
+ }
108
+ for (const error of validateCatalog(bundle.skills)) {
109
+ issues.push({ code: "invalid-skill-catalog", path: "skills", message: error });
110
+ }
111
+ return { ok: issues.length === 0, issues, capabilityIds, skillNames };
112
+ }
113
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ interface CliResult {
3
+ ok: boolean;
4
+ exitCode?: number;
5
+ output?: unknown;
6
+ message?: string;
7
+ }
8
+ export declare function runCli(argv?: string[]): Promise<CliResult>;
9
+ export {};