@gobing-ai/spur 0.3.48 → 0.3.50
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.
- package/.claude-plugin/marketplace.json +1 -1
- package/config/config.example.yaml +52 -4
- package/config/corpus-baseline.json +12144 -3
- package/config/workflows/pr-review.yaml +338 -0
- package/package.json +9 -9
- package/plugins/sp/README.md +9 -6
- package/plugins/sp/commands/{dev-featurechange.md → dev-feature-change.md} +7 -10
- package/plugins/sp/commands/dev-find-issue.md +24 -19
- package/plugins/sp/commands/dev-find-next.md +3 -3
- package/plugins/sp/commands/dev-gtd.md +11 -12
- package/plugins/sp/commands/dev-history-load.md +63 -0
- package/plugins/sp/commands/dev-pr-review.md +39 -0
- package/plugins/sp/plugin.json +1 -1
- package/plugins/sp/references/roles.md +25 -12
- package/plugins/sp/scripts/history-load.ts +400 -0
- package/plugins/sp/scripts/pr-reviewing.ts +867 -0
- package/plugins/sp/scripts/validate-commands.ts +33 -2
- package/plugins/sp/skills/code-implementation/SKILL.md +9 -1
- package/plugins/sp/skills/code-verification/SKILL.md +41 -28
- package/plugins/sp/skills/issue-finding/SKILL.md +6 -5
- package/plugins/sp/skills/issue-finding/references/session-formats.md +4 -2
- package/plugins/sp/skills/next-feature/SKILL.md +6 -6
- package/plugins/sp/skills/next-feature/references/handoff-routing.md +5 -5
- package/plugins/sp/skills/next-feature/references/signal-derivation.md +7 -2
- package/plugins/sp/skills/pr-reviewing/SKILL.md +285 -0
- package/plugins/sp/skills/spur-cli/references/features/hierarchy-mece.md +5 -5
- package/plugins/sp/skills/spur-cli/references/features.md +1 -1
- package/plugins/sp/skills/spur-cli/references/tasks.md +1 -0
- package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +18 -2
- package/plugins/sp/skills/spur-dev/references/cross-cutting.md +14 -6
- package/plugins/sp/skills/spur-dev/references/flag-glossary.md +14 -4
- package/schemas/spur-config.schema.json +20 -0
- package/spur.js +5336 -5714
- package/web/_astro/BoardApp.pdtYu-yW.js +1 -0
- package/web/_astro/{BoardApp.BjQUNhuj.js → BoardApp.plVXYkKo.js} +11 -11
- package/web/_astro/{TaskDetail.CVBuD6dF.js → TaskDetail.5DIyVQ_N.js} +1 -1
- package/web/_astro/{arc.BMMjdODi.js → arc.BnUgL7ho.js} +1 -1
- package/web/_astro/{architectureDiagram-3BPJPVTR.BU5ShzXf.js → architectureDiagram-3BPJPVTR.B9YMJau-.js} +1 -1
- package/web/_astro/{blockDiagram-GPEHLZMM.Bj1iEqPD.js → blockDiagram-GPEHLZMM.Dw2qgvWJ.js} +1 -1
- package/web/_astro/{c4Diagram-AAUBKEIU.vX8wepCL.js → c4Diagram-AAUBKEIU.jTbU0-Nk.js} +1 -1
- package/web/_astro/channel.DEqvaz-I.js +1 -0
- package/web/_astro/{chunk-2J33WTMH.BKAipTym.js → chunk-2J33WTMH.Di46EtkU.js} +1 -1
- package/web/_astro/{chunk-4BX2VUAB.B68XkPG7.js → chunk-4BX2VUAB.DweHBwqQ.js} +1 -1
- package/web/_astro/{chunk-55IACEB6.BmeDLcrc.js → chunk-55IACEB6.rRjTKaa7.js} +1 -1
- package/web/_astro/{chunk-727SXJPM.PDuBA3Kw.js → chunk-727SXJPM.BkEQIkSV.js} +1 -1
- package/web/_astro/{chunk-AQP2D5EJ.C7A044za.js → chunk-AQP2D5EJ.Cfe9IvAd.js} +1 -1
- package/web/_astro/{chunk-FMBD7UC4.BtzKKFqR.js → chunk-FMBD7UC4.fI6tLbeN.js} +1 -1
- package/web/_astro/{chunk-ND2GUHAM.BJuDeeOy.js → chunk-ND2GUHAM.BIjgpq0O.js} +1 -1
- package/web/_astro/{chunk-QZHKN3VN.DSeMDgcQ.js → chunk-QZHKN3VN.ZwLnVxyz.js} +1 -1
- package/web/_astro/{classDiagram-4FO5ZUOK.D53Q4tCw.js → classDiagram-4FO5ZUOK.BJAGYidE.js} +1 -1
- package/web/_astro/{classDiagram-v2-Q7XG4LA2.D53Q4tCw.js → classDiagram-v2-Q7XG4LA2.BJAGYidE.js} +1 -1
- package/web/_astro/{cose-bilkent-S5V4N54A.c712AFRH.js → cose-bilkent-S5V4N54A.B5y3nz26.js} +1 -1
- package/web/_astro/{dagre-BM42HDAG.D-idisph.js → dagre-BM42HDAG.DHmw0ZBC.js} +1 -1
- package/web/_astro/{diagram-2AECGRRQ.DLgnsJCU.js → diagram-2AECGRRQ.10gapJfY.js} +1 -1
- package/web/_astro/{diagram-5GNKFQAL.BiaxBVqx.js → diagram-5GNKFQAL.Gh33_drM.js} +1 -1
- package/web/_astro/{diagram-KO2AKTUF.C8HX1vd8.js → diagram-KO2AKTUF.8ROWlfcX.js} +1 -1
- package/web/_astro/{diagram-LMA3HP47.CfqDLLes.js → diagram-LMA3HP47.BsP3tKmg.js} +1 -1
- package/web/_astro/{diagram-OG6HWLK6.15SDiEed.js → diagram-OG6HWLK6.DM2WFDhU.js} +1 -1
- package/web/_astro/{erDiagram-TEJ5UH35.DksYtOYM.js → erDiagram-TEJ5UH35.royaC_lH.js} +1 -1
- package/web/_astro/{flowDiagram-I6XJVG4X.DR_Au-HV.js → flowDiagram-I6XJVG4X.C9GEvIie.js} +1 -1
- package/web/_astro/{ganttDiagram-6RSMTGT7.CHhHrffI.js → ganttDiagram-6RSMTGT7.CXO4T2U0.js} +1 -1
- package/web/_astro/{gitGraphDiagram-PVQCEYII.B2Xehvam.js → gitGraphDiagram-PVQCEYII.Q02KzYH7.js} +1 -1
- package/web/_astro/{infoDiagram-5YYISTIA.C9c3CNNN.js → infoDiagram-5YYISTIA.DNfSDKJt.js} +1 -1
- package/web/_astro/{ishikawaDiagram-YF4QCWOH.BibUHkh8.js → ishikawaDiagram-YF4QCWOH.BFttvtgJ.js} +1 -1
- package/web/_astro/{journeyDiagram-JHISSGLW.BYoVHiyO.js → journeyDiagram-JHISSGLW.Cfm-2SbG.js} +1 -1
- package/web/_astro/{kanban-definition-UN3LZRKU.CM1K5wHE.js → kanban-definition-UN3LZRKU.BWGNW6fV.js} +1 -1
- package/web/_astro/{linear.SPpjJUb-.js → linear.BprdUk2Y.js} +1 -1
- package/web/_astro/{mermaid.core.BAgx3nnb.js → mermaid.core.B2zRNxtX.js} +4 -4
- package/web/_astro/{mindmap-definition-RKZ34NQL.D35oPG1R.js → mindmap-definition-RKZ34NQL.g9jij8sw.js} +1 -1
- package/web/_astro/{pieDiagram-4H26LBE5.DiWuRwk7.js → pieDiagram-4H26LBE5.CbzR4n5b.js} +1 -1
- package/web/_astro/{quadrantDiagram-W4KKPZXB.B9PBzTWn.js → quadrantDiagram-W4KKPZXB.DxV3viWt.js} +1 -1
- package/web/_astro/{requirementDiagram-4Y6WPE33.CYuuamFN.js → requirementDiagram-4Y6WPE33.DvAb90JS.js} +1 -1
- package/web/_astro/{sankeyDiagram-5OEKKPKP.W24UhhtD.js → sankeyDiagram-5OEKKPKP.CIFz5t4D.js} +1 -1
- package/web/_astro/{sequenceDiagram-3UESZ5HK.BpbNjA51.js → sequenceDiagram-3UESZ5HK.DzlEQynd.js} +1 -1
- package/web/_astro/{stateDiagram-AJRCARHV.DqVsHudf.js → stateDiagram-AJRCARHV.Dph2V-ts.js} +1 -1
- package/web/_astro/{stateDiagram-v2-BHNVJYJU.CzwHYX81.js → stateDiagram-v2-BHNVJYJU.wJhfrLAy.js} +1 -1
- package/web/_astro/{timeline-definition-PNZ67QCA.Bc3B6djw.js → timeline-definition-PNZ67QCA.BrSiyubX.js} +1 -1
- package/web/_astro/{vennDiagram-CIIHVFJN.C-D5rh8O.js → vennDiagram-CIIHVFJN.COobPrUX.js} +1 -1
- package/web/_astro/{wardley-L42UT6IY.D7PdYCqn.js → wardley-L42UT6IY.CrjeTx8A.js} +1 -1
- package/web/_astro/{wardleyDiagram-YWT4CUSO.CwmJKXF3.js → wardleyDiagram-YWT4CUSO.B8_fTQ8E.js} +1 -1
- package/web/_astro/{xychartDiagram-2RQKCTM6.avDYnLsb.js → xychartDiagram-2RQKCTM6.BPpokgVv.js} +1 -1
- package/web/favicon.svg +1 -0
- package/web/index.html +1 -1
- package/web/_astro/BoardApp.8hiqShQn.js +0 -1
- package/web/_astro/channel.EwdSemIC.js +0 -1
|
@@ -49,6 +49,28 @@ agent:
|
|
|
49
49
|
# naming both accepted sets.
|
|
50
50
|
default: coder
|
|
51
51
|
|
|
52
|
+
# Role → tier map (SSOT: DEFAULT_AGENT_ROLES in packages/config, task 0572 /
|
|
53
|
+
# ADR-061; plugins/sp/references/roles.md is a parity-gated projection).
|
|
54
|
+
# Resolution: role → tier → cheapest USABLE executor whose tier >= the role's
|
|
55
|
+
# tier, climbing the ladder across gaps. Declare at least one usable executor
|
|
56
|
+
# at or above each rung or that role fails loudly at dispatch:
|
|
57
|
+
# scribe=cheap · coder=standard · reviewer=capable-1 · planner=capable-2
|
|
58
|
+
# Stage floors (stage-registry model_policy): changelog=cheap;
|
|
59
|
+
# implement/test/wrap/review/refine/brainstorm=standard;
|
|
60
|
+
# verify/dogfood=capable-1; plan=capable-2. A stage's fallback ladder
|
|
61
|
+
# (auth / resource-exhaustion / gate-fail) only advances when a higher rung
|
|
62
|
+
# has a usable executor — an empty rung turns a quota failure into a hang.
|
|
63
|
+
#
|
|
64
|
+
# Optional per-project override (0572): re-tier / re-stage a KNOWN role only —
|
|
65
|
+
# the vocabulary is closed; a config naming any other key fails at config load
|
|
66
|
+
# naming the accepted four. Per-field merge over the defaults (restate only
|
|
67
|
+
# what you override; a role you omit keeps its default wholesale):
|
|
68
|
+
# roles:
|
|
69
|
+
# reviewer:
|
|
70
|
+
# tier: capable-2 # e.g. pin review work one rung higher
|
|
71
|
+
# coder:
|
|
72
|
+
# stages: [implement] # e.g. stop folding test/wrap into coder
|
|
73
|
+
|
|
52
74
|
# Canonical coding-agent ids (ts-ai-runner DISPLAY_ORDER, 0.4.8+):
|
|
53
75
|
# claude, codex, gemini, pi, omp, opencode, antigravity-cli,
|
|
54
76
|
# openclaw, hermes, grok
|
|
@@ -56,32 +78,58 @@ agent:
|
|
|
56
78
|
# auth-status verb).
|
|
57
79
|
|
|
58
80
|
# Named executor profiles (ADR-033 / 0343). Each pairs a canonical agent with
|
|
59
|
-
# an
|
|
81
|
+
# an explicit model override and an explicit capability tier.
|
|
82
|
+
# `model` is pinned on every entry: omitting it defers to the agent CLI's own
|
|
83
|
+
# default, which drifts with CLI upgrades and account state — pin what your
|
|
84
|
+
# CLI would resolve today (`grok models`, omp config.yml modelRoles.default,
|
|
85
|
+
# ~/.codex/config.toml, ~/.claude.json). The ids below are working examples,
|
|
86
|
+
# not vendor defaults — re-pin for your accounts.
|
|
87
|
+
#
|
|
88
|
+
# Pairing philosophy (operator guidance, 2026-08): a `native` pair — a vendor's
|
|
89
|
+
# model served by that vendor's own CLI (gpt-5.6-* via codex, claude-*-5 via
|
|
90
|
+
# claude, grok-4.6 via grok, gemini-3.x via agy) — consistently outperforms the
|
|
91
|
+
# same model routed through a third-party CLI, and belongs at the capable rungs.
|
|
92
|
+
# `portable` models (glm-5.x, deepseek-v4-*, …) are provider-agnostic and best
|
|
93
|
+
# carried by omp or pi at the cheap/standard rungs. The ladder below mixes both
|
|
94
|
+
# classes on purpose; measure pairings with the history plane before promoting
|
|
95
|
+
# a portable model into a capable rung.
|
|
60
96
|
# Live tiers: cheap | standard | capable-1 | capable-2 | capable-3
|
|
61
97
|
# (1=low quality within capable, 3=high). DECLARE tier — inference never
|
|
62
98
|
# invents capable-2/3. Stage routing starts on the cheapest executor whose
|
|
63
99
|
# tier >= min_tier; same exact tier ties break by array order.
|
|
64
100
|
# Legacy bare `capable` is accepted at runtime as synonym for capable-1.
|
|
65
101
|
executors:
|
|
102
|
+
# cheap rung is optional: with none declared, scribe-role work starts one
|
|
103
|
+
# rung up at the cheapest standard executor. Add one when transcript-heavy
|
|
104
|
+
# mechanical commands (changelog/gitmsg/handover) get noisy on cost.
|
|
105
|
+
# - name: minimax
|
|
106
|
+
# agent: omp
|
|
107
|
+
# model: minimax/MiniMax-M3
|
|
108
|
+
# tier: cheap
|
|
66
109
|
- name: omp
|
|
67
110
|
agent: omp
|
|
111
|
+
model: opencode/deepseek-v4-flash
|
|
68
112
|
tier: standard
|
|
69
113
|
# - name: omp-zai
|
|
70
114
|
# agent: omp
|
|
71
115
|
# model: zai/glm-5.2
|
|
72
116
|
# tier: standard
|
|
117
|
+
- name: pi
|
|
118
|
+
agent: pi
|
|
119
|
+
model: "k3"
|
|
120
|
+
tier: capable-1
|
|
73
121
|
- name: grok
|
|
74
122
|
agent: grok
|
|
123
|
+
model: grok-4.6
|
|
75
124
|
tier: capable-2
|
|
76
125
|
- name: claude
|
|
77
126
|
agent: claude
|
|
127
|
+
model: k3
|
|
78
128
|
tier: capable-3
|
|
79
129
|
- name: codex
|
|
80
130
|
agent: codex
|
|
131
|
+
model: gpt-5.6
|
|
81
132
|
tier: capable-3
|
|
82
|
-
# - name: pi
|
|
83
|
-
# agent: pi
|
|
84
|
-
# tier: capable-1
|
|
85
133
|
|
|
86
134
|
# `default-by-phase` is a REMOVED (0452). Prefer
|
|
87
135
|
# executor `tier` + stage-registry model_policy. When present, a matching
|