@gobing-ai/spur 0.3.81 → 0.3.83

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 (93) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/config/config.example.yaml +19 -17
  3. package/config/config.global.yaml +6 -3
  4. package/config/templates/docs/99_PROJECT_CONSTITUTION.md +75 -13
  5. package/config/transition-shims.json +0 -7
  6. package/package.json +1 -1
  7. package/plugins/sp/README.md +19 -13
  8. package/plugins/sp/agents/expert-spur.md +3 -3
  9. package/plugins/sp/lib/idea-handoff.generated.mjs +84 -56
  10. package/plugins/sp/plugin.json +1 -1
  11. package/plugins/sp/scripts/inline-run-setup.ts +69 -1
  12. package/plugins/sp/scripts/quality-gate.mjs +52 -1
  13. package/plugins/sp/scripts/quality-gate.ts +70 -0
  14. package/plugins/sp/scripts/surface-drift-inventory.ts +0 -2
  15. package/plugins/sp/scripts/task-size-precheck.ts +44 -16
  16. package/plugins/sp/scripts/verify-answer-lint.ts +17 -1
  17. package/plugins/sp/skills/code-review/references/review-lenses.md +3 -0
  18. package/plugins/sp/skills/spur-cli/SKILL.md +4 -8
  19. package/plugins/sp/skills/spur-cli/references/agent.md +30 -97
  20. package/plugins/sp/skills/spur-cli/references/message.md +1 -1
  21. package/plugins/sp/skills/spur-cli/references/projects.md +7 -27
  22. package/plugins/sp/skills/spur-cli/references/self.md +2 -2
  23. package/plugins/sp/skills/spur-cli/references/serve.md +4 -4
  24. package/plugins/sp/skills/spur-cli/references/tasks.md +1 -1
  25. package/plugins/sp/skills/spur-composer/SKILL.md +3 -3
  26. package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +10 -0
  27. package/plugins/sp/skills/spur-dev/references/execution-batch.md +1 -1
  28. package/plugins/sp/skills/spur-dev/references/execution-workflow.md +4 -6
  29. package/plugins/sp/skills/spur-dev/references/glossary.md +1 -1
  30. package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +11 -1
  31. package/plugins/sp/skills/spur-doctor/SKILL.md +2 -2
  32. package/schemas/spur-config.schema.json +61 -85
  33. package/spur.js +3621 -4861
  34. package/web/_astro/BoardApp.D-WlxiN2.js +1 -0
  35. package/web/_astro/{BoardApp.B1U26g3I.js → BoardApp.D8bM9pKL.js} +73 -73
  36. package/web/_astro/{TaskDetail.DwPqpq7v.js → TaskDetail.BPRqgVUE.js} +1 -1
  37. package/web/_astro/{arc.CweZEjN2.js → arc.BPrPES3z.js} +1 -1
  38. package/web/_astro/{architectureDiagram-3BPJPVTR.D89pbDuv.js → architectureDiagram-3BPJPVTR.qX_7q02P.js} +1 -1
  39. package/web/_astro/{blockDiagram-GPEHLZMM.BOuTeEpX.js → blockDiagram-GPEHLZMM.CUZfj5V7.js} +1 -1
  40. package/web/_astro/{c4Diagram-AAUBKEIU.CASbkWZF.js → c4Diagram-AAUBKEIU.CTaOr8hH.js} +1 -1
  41. package/web/_astro/channel.DGZaFHZx.js +1 -0
  42. package/web/_astro/{chunk-2J33WTMH.BKQYtOvY.js → chunk-2J33WTMH.Dt-9wf3h.js} +1 -1
  43. package/web/_astro/{chunk-4BX2VUAB.9sHLdMtG.js → chunk-4BX2VUAB.CTC2sdoN.js} +1 -1
  44. package/web/_astro/{chunk-55IACEB6.wOLXWlPs.js → chunk-55IACEB6.DQcxt2_g.js} +1 -1
  45. package/web/_astro/{chunk-727SXJPM.DovFbwg3.js → chunk-727SXJPM.DXFPSn-a.js} +1 -1
  46. package/web/_astro/{chunk-AQP2D5EJ.B1Weod1X.js → chunk-AQP2D5EJ.BCx3U4bT.js} +1 -1
  47. package/web/_astro/{chunk-FMBD7UC4.TEMS04st.js → chunk-FMBD7UC4.DL2tJkdO.js} +1 -1
  48. package/web/_astro/{chunk-ND2GUHAM.Cp8VT1wQ.js → chunk-ND2GUHAM.DZyflMro.js} +1 -1
  49. package/web/_astro/{chunk-QZHKN3VN.BzATdEcP.js → chunk-QZHKN3VN.CUI2mT09.js} +1 -1
  50. package/web/_astro/{classDiagram-4FO5ZUOK.C9BOCfAO.js → classDiagram-4FO5ZUOK.g4rX4Fr1.js} +1 -1
  51. package/web/_astro/{classDiagram-v2-Q7XG4LA2.C9BOCfAO.js → classDiagram-v2-Q7XG4LA2.g4rX4Fr1.js} +1 -1
  52. package/web/_astro/{cose-bilkent-S5V4N54A.DUnr4UAw.js → cose-bilkent-S5V4N54A.CzWJLqp0.js} +1 -1
  53. package/web/_astro/{cynefin-OW5HDTMX.rYq5uM3D.js → cynefin-OW5HDTMX.WgsvQeCR.js} +1 -1
  54. package/web/_astro/{dagre-BM42HDAG.CWeNKe3I.js → dagre-BM42HDAG.Dzv6ngql.js} +1 -1
  55. package/web/_astro/{diagram-2AECGRRQ.DCkfls10.js → diagram-2AECGRRQ.CpJ4a9rU.js} +1 -1
  56. package/web/_astro/{diagram-5GNKFQAL.D5U4JCka.js → diagram-5GNKFQAL.CzPlF_dq.js} +1 -1
  57. package/web/_astro/{diagram-KO2AKTUF.BZJgqaqG.js → diagram-KO2AKTUF.TAkZNTcQ.js} +1 -1
  58. package/web/_astro/{diagram-LMA3HP47.DoMeHvPR.js → diagram-LMA3HP47.uCjoKSag.js} +1 -1
  59. package/web/_astro/{diagram-OG6HWLK6.B50qwwWX.js → diagram-OG6HWLK6.eMplIjoK.js} +1 -1
  60. package/web/_astro/{erDiagram-TEJ5UH35.DdGPG6LK.js → erDiagram-TEJ5UH35.Bf7zoXGz.js} +1 -1
  61. package/web/_astro/{flowDiagram-I6XJVG4X.QP2MJ12u.js → flowDiagram-I6XJVG4X.B_bHj3gN.js} +1 -1
  62. package/web/_astro/{ganttDiagram-6RSMTGT7.BI6LgKSy.js → ganttDiagram-6RSMTGT7.BasrHRMj.js} +1 -1
  63. package/web/_astro/{gitGraphDiagram-PVQCEYII.npPZiC2G.js → gitGraphDiagram-PVQCEYII.C6iphq1x.js} +1 -1
  64. package/web/_astro/{infoDiagram-5YYISTIA.DCJCBVbp.js → infoDiagram-5YYISTIA.HXmDMhW4.js} +1 -1
  65. package/web/_astro/{ishikawaDiagram-YF4QCWOH.BMLV-3I1.js → ishikawaDiagram-YF4QCWOH.BSmW8NiU.js} +1 -1
  66. package/web/_astro/{journeyDiagram-JHISSGLW.LE58crde.js → journeyDiagram-JHISSGLW.DEQow5fo.js} +1 -1
  67. package/web/_astro/{kanban-definition-UN3LZRKU.BPbz8rH9.js → kanban-definition-UN3LZRKU.IVm9cTdc.js} +1 -1
  68. package/web/_astro/{linear.DhZaBtYh.js → linear.CrsM73_9.js} +1 -1
  69. package/web/_astro/{mermaid.core.BD5-jXum.js → mermaid.core.CfBeDJls.js} +4 -4
  70. package/web/_astro/{mindmap-definition-RKZ34NQL.MTJyrQ65.js → mindmap-definition-RKZ34NQL.C3j60Y-0.js} +1 -1
  71. package/web/_astro/{pieDiagram-4H26LBE5.BrDhDvIS.js → pieDiagram-4H26LBE5.B-aCMeEA.js} +1 -1
  72. package/web/_astro/{quadrantDiagram-W4KKPZXB.71d73_5N.js → quadrantDiagram-W4KKPZXB.Cib965yq.js} +1 -1
  73. package/web/_astro/{requirementDiagram-4Y6WPE33.Bga6UF-z.js → requirementDiagram-4Y6WPE33.D61cS4O-.js} +1 -1
  74. package/web/_astro/{sankeyDiagram-5OEKKPKP.BnHs4K82.js → sankeyDiagram-5OEKKPKP.GKF2qVPy.js} +1 -1
  75. package/web/_astro/{sequenceDiagram-3UESZ5HK.DsfY2gnj.js → sequenceDiagram-3UESZ5HK.DZnq8F2h.js} +1 -1
  76. package/web/_astro/{stateDiagram-AJRCARHV.DvsTSc9a.js → stateDiagram-AJRCARHV.DXUFmdgM.js} +1 -1
  77. package/web/_astro/{stateDiagram-v2-BHNVJYJU.DxzzmHUR.js → stateDiagram-v2-BHNVJYJU.BtHmhLEz.js} +1 -1
  78. package/web/_astro/{timeline-definition-PNZ67QCA.4ZuQmOTt.js → timeline-definition-PNZ67QCA.Cy-WW2ln.js} +1 -1
  79. package/web/_astro/{vennDiagram-CIIHVFJN.Ck5Q86SG.js → vennDiagram-CIIHVFJN.SLp5b9KI.js} +1 -1
  80. package/web/_astro/{wardleyDiagram-YWT4CUSO.BK7k2hXr.js → wardleyDiagram-YWT4CUSO.Bww45mWV.js} +1 -1
  81. package/web/_astro/{xychartDiagram-2RQKCTM6.DfCrgauK.js → xychartDiagram-2RQKCTM6.DR4swI6a.js} +1 -1
  82. package/web/apple-touch-icon.png +0 -0
  83. package/web/favicon.ico +0 -0
  84. package/web/favicon.svg +17 -4
  85. package/web/icon-192.png +0 -0
  86. package/web/icon-512.png +0 -0
  87. package/web/index.html +2 -2
  88. package/web/site.webmanifest +31 -0
  89. package/web/spur_logo.svg +1 -0
  90. package/plugins/README.md +0 -656
  91. package/plugins/sp/skills/spur-cli/references/team.md +0 -165
  92. package/web/_astro/BoardApp.Csgyg-lS.js +0 -1
  93. package/web/_astro/channel.Cx6sXxhq.js +0 -1
@@ -173,6 +173,62 @@
173
173
  }
174
174
  }
175
175
  },
176
+ "fleet": {
177
+ "type": "object",
178
+ "description": "The project's agent fleet (G65 / 0858): the single declaration of composition, the on/off switch, and the dispatch strategy. PROJECT LAYER ONLY — a global-layer agent.fleet fails the load. Replaces the retired .spur/fleet.json (0835) and agent.team (0857). Mirrors @gobing-ai/spur-config AgentFleetSchema (Zod is SSOT).",
179
+ "properties": {
180
+ "enabled": {
181
+ "type": "boolean",
182
+ "default": false,
183
+ "description": "The single fleet switch. `spur serve` materializes and autostarts the roster only when true; an absent or disabled fleet starts nothing."
184
+ },
185
+ "strategy": {
186
+ "type": "string",
187
+ "enum": ["rest", "gtd"],
188
+ "default": "rest",
189
+ "description": "Dispatch strategy, reconciled into project_strategy at serve start (0859). One name is added by a typed code change, not by config."
190
+ },
191
+ "orchestrator": {
192
+ "type": "string",
193
+ "minLength": 1,
194
+ "description": "memberLocalId of the one planner-role member carrying purpose: orchestrator. Absent = no orchestrator declared (never inferred)."
195
+ },
196
+ "members": {
197
+ "type": "array",
198
+ "default": [],
199
+ "description": "The roster. Each member declares a role or an executor. `enabled: false` keeps the member's derived <role>-<n> id index but does not materialize it.",
200
+ "items": {
201
+ "type": "object",
202
+ "properties": {
203
+ "id": {
204
+ "type": "string",
205
+ "minLength": 1,
206
+ "description": "Explicit stable id; wins over the derived <role>-<n> form."
207
+ },
208
+ "role": {
209
+ "type": "string",
210
+ "enum": ["scribe", "coder", "reviewer", "planner"],
211
+ "description": "Layer-1 role id (closed vocabulary)."
212
+ },
213
+ "executor": {
214
+ "type": "string",
215
+ "minLength": 1,
216
+ "description": "Executor profile name or a raw canonical agent type."
217
+ },
218
+ "purpose": {
219
+ "type": "string",
220
+ "description": "Free-form member purpose; `orchestrator` is the value the orchestrator pointer binds to."
221
+ },
222
+ "enabled": {
223
+ "type": "boolean",
224
+ "description": "Default true. False preserves the member's derived id index without materializing it."
225
+ }
226
+ },
227
+ "anyOf": [{ "required": ["role"] }, { "required": ["executor"] }]
228
+ }
229
+ }
230
+ }
231
+ },
176
232
  "roles": {
177
233
  "type": "object",
178
234
  "description": "Per-role tier/stage overrides over DEFAULT_AGENT_ROLES (0572 / ADR-061). Keys are the closed role vocabulary (scribe, coder, reviewer, planner); a present field replaces the default for that role, an omitted field keeps it. Mirrors @gobing-ai/spur-config AgentRoleConfigSchema (Zod is SSOT).",
@@ -192,91 +248,6 @@
192
248
  }
193
249
  }
194
250
  }
195
- },
196
- "team": {
197
- "type": "object",
198
- "description": "Declarative agent teams keyed by team id (the map key is the teamId). Each team materializes a roster of agent specs (feature M). Mirrors @gobing-ai/spur-config TeamConfigSchema (Zod is SSOT).",
199
- "additionalProperties": {
200
- "type": "object",
201
- "required": ["name", "work_dir", "members"],
202
- "properties": {
203
- "name": {
204
- "type": "string",
205
- "minLength": 1,
206
- "description": "Human-readable team label."
207
- },
208
- "work_dir": {
209
- "type": "string",
210
- "minLength": 1,
211
- "description": "Default member workspace. A leading `~` is tilde-expanded at load."
212
- },
213
- "autostart": {
214
- "type": "boolean",
215
- "description": "Team-wide autostart default; per-member autostart overrides (effective = member.autostart ?? team.autostart ?? false)."
216
- },
217
- "members": {
218
- "type": "array",
219
- "minItems": 1,
220
- "description": "Roster of member references (>= 1). A bare string is shorthand for { executor: <string> }; the composed agent id is <teamId>-<id ?? executor>.",
221
- "items": {
222
- "oneOf": [
223
- {
224
- "type": "string",
225
- "minLength": 1
226
- },
227
- {
228
- "type": "object",
229
- "properties": {
230
- "executor": {
231
- "type": "string",
232
- "minLength": 1,
233
- "description": "Executor name \u2014 resolved against agent.executors first, else a raw canonical agent type. Optional since 0543: a role-only member (no executor) resolves one through the tier ladder at materialization; at least one of role or executor is required."
234
- },
235
- "id": {
236
- "type": "string",
237
- "minLength": 1,
238
- "description": "Local member id; composed id is <teamId>-<id ?? executor> (must match ^[a-z][a-z0-9_-]{1,63}$)."
239
- },
240
- "purpose": {
241
- "type": "string"
242
- },
243
- "role": {
244
- "type": "string",
245
- "enum": ["scribe", "coder", "reviewer", "planner"],
246
- "description": "Layer-1 role id (0538 R3): typed routing field carried onto the materialized spec; purpose stays prose."
247
- },
248
- "workspace": {
249
- "type": "string",
250
- "minLength": 1,
251
- "description": "Per-member workspace override. A leading `~` is tilde-expanded at load."
252
- },
253
- "model": {
254
- "type": "string",
255
- "minLength": 1
256
- },
257
- "autonomy": {
258
- "type": "string"
259
- },
260
- "systemPrompt": {
261
- "type": "string"
262
- },
263
- "command": {
264
- "type": "array",
265
- "items": {
266
- "type": "string",
267
- "minLength": 1
268
- }
269
- },
270
- "autostart": {
271
- "type": "boolean"
272
- }
273
- }
274
- }
275
- ]
276
- }
277
- }
278
- }
279
- }
280
251
  }
281
252
  }
282
253
  },
@@ -341,6 +312,11 @@
341
312
  "type": "object",
342
313
  "description": "Release knobs for bump-ver/drop-tags. Defaults: -v separator, publish.yml workflow, chore(release) commit, gh run list limit 5.",
343
314
  "properties": {
315
+ "aggregatePackage": {
316
+ "type": "string",
317
+ "minLength": 1,
318
+ "description": "Package whose own release tag is the publish trigger for the aggregate (--all) path, as an unscoped package id (e.g. \"spur\" for @gobing-ai/spur). Default: the package whose full name equals the workspace root manifest name."
319
+ },
344
320
  "tagVersionSeparator": {
345
321
  "type": "string",
346
322
  "minLength": 1,