@seanyao/roll 3.620.1 → 3.624.1

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 (67) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/roll.mjs +4563 -3369
  3. package/package.json +1 -1
  4. package/lib/__pycache__/changelog_audit.cpython-314.pyc +0 -0
  5. package/lib/__pycache__/github_sync.cpython-314.pyc +0 -0
  6. package/lib/__pycache__/loop-fmt.cpython-314.pyc +0 -0
  7. package/lib/__pycache__/loop_result_eval.cpython-314.pyc +0 -0
  8. package/lib/__pycache__/loop_unstick.cpython-314.pyc +0 -0
  9. package/lib/__pycache__/model_prices.cpython-314.pyc +0 -0
  10. package/lib/__pycache__/prices_fetcher.cpython-314.pyc +0 -0
  11. package/lib/__pycache__/roll-home.cpython-314.pyc +0 -0
  12. package/lib/__pycache__/roll-loop-status.cpython-314.pyc +0 -0
  13. package/lib/__pycache__/roll_git.cpython-314.pyc +0 -0
  14. package/lib/__pycache__/roll_render.cpython-314.pyc +0 -0
  15. package/lib/__pycache__/slides-render.cpython-314.pyc +0 -0
  16. package/lib/agent_usage/__pycache__/__init__.cpython-314.pyc +0 -0
  17. package/lib/agent_usage/__pycache__/gemini.cpython-314.pyc +0 -0
  18. package/lib/agent_usage/__pycache__/kimi.cpython-314.pyc +0 -0
  19. package/lib/agent_usage/__pycache__/openai.cpython-314.pyc +0 -0
  20. package/lib/agent_usage/__pycache__/pi.cpython-314.pyc +0 -0
  21. package/lib/agent_usage/__pycache__/pi_emit.cpython-314.pyc +0 -0
  22. package/lib/agent_usage/__pycache__/qwen.cpython-314.pyc +0 -0
  23. package/skills/README.md +0 -64
  24. package/skills/docs/skill-authoring.md +0 -74
  25. package/skills/reports/skill-audit-summary.md +0 -53
  26. package/skills/roll-.changelog/SKILL.md +0 -47
  27. package/skills/roll-.changelog/references/full-contract.md +0 -462
  28. package/skills/roll-.clarify/SKILL.md +0 -64
  29. package/skills/roll-.dream/SKILL.md +0 -47
  30. package/skills/roll-.dream/references/full-contract.md +0 -365
  31. package/skills/roll-.echo/SKILL.md +0 -118
  32. package/skills/roll-.qa/SKILL.md +0 -47
  33. package/skills/roll-.qa/references/full-contract.md +0 -256
  34. package/skills/roll-.review/SKILL.md +0 -148
  35. package/skills/roll-build/SKILL.md +0 -49
  36. package/skills/roll-build/references/full-contract.md +0 -968
  37. package/skills/roll-debug/SKILL.md +0 -48
  38. package/skills/roll-debug/assets/injectable-bb.js +0 -263
  39. package/skills/roll-debug/references/full-contract.md +0 -607
  40. package/skills/roll-design/SKILL.md +0 -52
  41. package/skills/roll-design/references/engineering-checklist.md +0 -298
  42. package/skills/roll-design/references/full-contract.md +0 -940
  43. package/skills/roll-doc-audit/SKILL.md +0 -51
  44. package/skills/roll-doc-audit/references/full-contract.md +0 -796
  45. package/skills/roll-doctor/SKILL.md +0 -211
  46. package/skills/roll-fix/SKILL.md +0 -49
  47. package/skills/roll-fix/references/full-contract.md +0 -672
  48. package/skills/roll-idea/SKILL.md +0 -62
  49. package/skills/roll-loop/SKILL.md +0 -50
  50. package/skills/roll-loop/references/full-contract.md +0 -534
  51. package/skills/roll-notes/SKILL.md +0 -107
  52. package/skills/roll-onboard/SKILL.md +0 -238
  53. package/skills/roll-peer/SKILL.md +0 -47
  54. package/skills/roll-peer/references/full-contract.md +0 -323
  55. package/skills/roll-propose/SKILL.md +0 -155
  56. package/skills/roll-review-pr/SKILL.md +0 -62
  57. package/skills/roll-spar/SKILL.md +0 -47
  58. package/skills/roll-spar/references/full-contract.md +0 -288
  59. package/skills/route-cases/skills.json +0 -216
  60. package/skills/scripts/audit-skills.mjs +0 -272
  61. package/skills/scripts/test-audit-skills.mjs +0 -39
  62. package/skills/tests/fixtures/skill-audit/block-skill/SKILL.md +0 -12
  63. package/skills/tests/fixtures/skill-audit/minimal-skill/SKILL.md +0 -8
  64. package/skills/tests/fixtures/skill-audit/quoted-skill/SKILL.md +0 -10
  65. package/skills/tests/fixtures/skill-audit/route-cases.json +0 -21
  66. package/skills/tests/fixtures/skill-audit/spoke-skill/SKILL.md +0 -12
  67. package/skills/tests/fixtures/skill-audit/spoke-skill/references/runbook.md +0 -3
@@ -1,288 +0,0 @@
1
- # Full Contract Reference
2
-
3
- This file preserves the detailed contract extracted from SKILL.md. Read it when the hub points here for exact workflow steps, templates, rubrics, or recovery branches.
4
-
5
- ---
6
-
7
- # Spar
8
-
9
- Adversarial TDD: two agents collaborate in attack-and-defend mode to build a more robust system.
10
-
11
- ## When to Use
12
-
13
- **Manual trigger:**
14
- - User explicitly requests `$roll-spar`
15
- - Involves core business logic requiring higher quality assurance
16
-
17
- **Auto trigger (agent judgment):** Recommend enabling when any of these conditions are met
18
- - Involves authentication / authorization / security
19
- - Involves money / payments / billing
20
- - Involves data integrity (writes are irreversible)
21
- - Complex state machines / concurrency logic
22
- - Module has had previous bugs (BACKLOG has related FIX records)
23
-
24
- **Do not use for:**
25
- - UI styling adjustments, copy changes
26
- - Simple CRUD
27
- - Configuration changes
28
- - Small tasks not worth the overhead of two-agent collaboration
29
-
30
- ## Roles
31
-
32
- ### Attacker (Red Agent)
33
-
34
- **Goal: Find weaknesses in the code and write tests that break the system.**
35
-
36
- - Think about boundary conditions, invalid inputs, concurrency scenarios, state inconsistencies
37
- - Write the trickiest test cases possible
38
- - Don't care about implementation difficulty — only care about "can the system handle this scenario"
39
- - Write at least 1 RED test per round, can write multiple
40
-
41
- ### Defender (Green Agent)
42
-
43
- **Goal: Make all tests pass with the simplest, most robust code possible.**
44
-
45
- - Cannot modify tests written by the Attacker (unless the test itself has a bug)
46
- - Aim for minimal implementation, avoid over-engineering
47
- - Make all tests GREEN each round, then commit
48
- - May refactor, but must stay GREEN
49
-
50
- ## Workflow
51
-
52
- ```
53
- User: "$roll-spar implement transfer logic" or agent auto-triggers
54
-
55
-
56
- ┌─────────────────────────────────────┐
57
- │ 0. Setup │
58
- │ - Define feature scope and AC │
59
- │ - Create test file skeleton │
60
- │ - Context brief for Attacker │
61
- │ and Defender │
62
- └─────────────┬───────────────────────┘
63
-
64
-
65
- ┌─────────────────────────────────────┐
66
- │ Spar Loop (repeat until converged) │
67
- │ │
68
- │ ┌───────────────────────────────┐ │
69
- │ │ 🔴 Attacker Turn │ │
70
- │ │ - Analyze current code/API │ │
71
- │ │ - Write 1+ RED tests │ │
72
- │ │ - State attack intent: │ │
73
- │ │ "Test balance consistency│ │
74
- │ │ during concurrent │ │
75
- │ │ transfers" │ │
76
- │ └──────────────┬────────────────┘ │
77
- │ │ │
78
- │ ▼ │
79
- │ ┌───────────────────────────────┐ │
80
- │ │ 🟢 Defender Turn │ │
81
- │ │ - Read Attacker's tests │ │
82
- │ │ - Write minimal code to │ │
83
- │ │ make tests pass │ │
84
- │ │ - Run all tests → GREEN │ │
85
- │ │ - git commit │ │
86
- │ └──────────────┬────────────────┘ │
87
- │ │ │
88
- │ ▼ │
89
- │ ┌───────────────────────────────┐ │
90
- │ │ 🔴 Attacker Turn (again) │ │
91
- │ │ - Review Defender's impl │ │
92
- │ │ - Find new weaknesses, │ │
93
- │ │ write new RED tests │ │
94
- │ │ - Or: "No new weaknesses │ │
95
- │ │ found" │ │
96
- │ └──────────────┬────────────────┘ │
97
- │ │ │
98
- │ ┌────────┴────────┐ │
99
- │ │ │ │
100
- │ Has new tests No new tests │
101
- │ → Continue loop → Exit Spar │
102
- │ │
103
- └─────────────────────────────────────┘
104
-
105
-
106
- ┌─────────────────────────────────────┐
107
- │ Wrap-up │
108
- │ - Attacker summarizes attack │
109
- │ coverage │
110
- │ - Defender summarizes defense │
111
- │ strategy │
112
- │ - Merged report │
113
- │ - Continue normal roll-build │
114
- │ flow │
115
- │ (push → CI → deploy → verify) │
116
- └─────────────────────────────────────┘
117
- ```
118
-
119
- ## Spar Convergence Conditions
120
-
121
- Attacker declares completion when any of these are met:
122
- - Cannot write a new RED test for 2 consecutive rounds
123
- - Already covered: happy path + boundary values + invalid inputs + concurrency/race conditions + state consistency
124
- - Reached the agreed maximum number of rounds (default: 5 rounds)
125
-
126
- ## Agent Context Brief
127
-
128
- ### Attacker Brief Template
129
-
130
- ```markdown
131
- ## Role: Attacker (Red Agent)
132
-
133
- Your goal is to find weaknesses in this code.
134
-
135
- ### Feature Description
136
- {Feature AC and interface definition}
137
-
138
- ### Current Implementation
139
- {Defender's latest code, or "not yet implemented"}
140
-
141
- ### Existing Tests
142
- {Currently existing test cases}
143
-
144
- ### Your Task
145
- Write 1+ new test cases that make the current implementation fail (RED).
146
- Directions to explore:
147
- - Boundary values (0, -1, MAX_INT, empty string, null)
148
- - Exception flows (network disconnect, timeout, duplicate requests)
149
- - Concurrency (two requests arriving simultaneously)
150
- - State consistency (is system state clean after mid-process failure)
151
-
152
- ### Output Format
153
- For each test, state the attack intent:
154
- "Attack: {scenario description} — expected system behavior: {expected behavior}"
155
- ```
156
-
157
- ### Defender Brief Template
158
-
159
- ```markdown
160
- ## Role: Defender (Green Agent)
161
-
162
- Your goal is to make all tests pass with the simplest implementation.
163
-
164
- ### Feature Description
165
- {Feature AC and interface definition}
166
-
167
- ### Current Code
168
- {Your previously written code, or empty}
169
-
170
- ### New RED Tests
171
- {Tests written by the Attacker this round}
172
-
173
- ### Your Task
174
- Modify/add code to make all tests (including previous ones) pass.
175
- Rules:
176
- - Cannot modify tests written by the Attacker
177
- - Aim for minimal changes
178
- - Keep the code clear
179
- - Commit after all tests are GREEN
180
- ```
181
-
182
- ## Status Report
183
-
184
- Report to the user after each round:
185
-
186
- ```
187
- ⚔️ Spar Round {N}
188
-
189
- 🔴 Attacker:
190
- Attack: {scenario 1} — {result}
191
- Attack: {scenario 2} — {result}
192
-
193
- 🟢 Defender:
194
- Defense strategy: {brief description of how it was defended}
195
- Test status: {passed}/{total} ✅
196
-
197
- 📊 Cumulative: {total tests} tests, {total rounds} rounds
198
- 🔄 Next round: Attacker continues looking for weaknesses...
199
- ```
200
-
201
- ## Hard Rules
202
-
203
- 1. **Attacker does not write implementation code** — only writes tests and attack analysis
204
- 2. **Defender does not modify tests** — unless the test itself has a bug (must explain the reason)
205
- 3. **Must commit each round** — Defender commits immediately after making tests GREEN, keeping the repo clean
206
- 4. **Attack intent must be explained** — cannot just write tests without explaining "why this scenario matters"
207
- 5. **Maximum round limit** — default 5 rounds, prevents infinite loops
208
-
209
- ## Integration with roll-build
210
-
211
- Spar replaces steps 4-5 in roll-build (Test Design + TCR Implementation):
212
-
213
- ```
214
- roll-build normal flow:
215
- 1. Clarify Story
216
- 2. Split Actions
217
- 3. Define verification
218
- ──────────────────────
219
- 4. Test Design Review ← Spar replaces this step
220
- 5. TCR Implementation ← and this step
221
- ──────────────────────
222
- 6. Local CI check ← Back to normal flow
223
- 7. Quality Review
224
- ...
225
- ```
226
-
227
- **Auto-switching from roll-build to Spar:**
228
-
229
- When the agent assesses an Action as high-risk at step 3:
230
- ```
231
- ⚔️ High-risk Action detected: {description}
232
- Risk factors: {auth/payment/data integrity/...}
233
- Recommend enabling Spar mode — confirm? [Y/n]
234
- ```
235
-
236
- After user confirms, enter Spar. Once complete, return to roll-build step 6 to continue.
237
-
238
- ## Example
239
-
240
- ```
241
- User: "$roll-spar implement user balance transfer"
242
-
243
- ⚔️ Spar: User Balance Transfer
244
-
245
- ── Round 1 ──
246
-
247
- 🔴 Attacker:
248
- Attack 1: Transfer amount is 0 — should reject
249
- Attack 2: Transfer amount is negative — should reject
250
- Attack 3: Transfer amount exceeds balance — should reject and keep balance unchanged
251
-
252
- 🟢 Defender:
253
- Implementation: transfer(from, to, amount) basic validation
254
- Tests: 3/3 ✅
255
- commit: "tcr: transfer basic validation"
256
-
257
- ── Round 2 ──
258
-
259
- 🔴 Attacker:
260
- Attack 4: Transfer to self — should reject
261
- Attack 5: Two concurrent transfers whose total exceeds balance — only one should succeed
262
-
263
- 🟢 Defender:
264
- Implementation: add self-transfer check + optimistic lock
265
- Tests: 5/5 ✅
266
- commit: "tcr: transfer self-check and concurrency lock"
267
-
268
- ── Round 3 ──
269
-
270
- 🔴 Attacker:
271
- Attack 6: Database error mid-transfer — both balances should remain unchanged (atomicity)
272
- Attack 7: Recipient account does not exist — should reject and keep sender's balance
273
-
274
- 🟢 Defender:
275
- Implementation: database transaction wrapper + recipient existence check
276
- Tests: 7/7 ✅
277
- commit: "tcr: transfer atomicity and recipient validation"
278
-
279
- ── Round 4 ──
280
-
281
- 🔴 Attacker:
282
- No new weaknesses found. Covered: input validation, self-transfer, concurrency, atomicity, related accounts.
283
-
284
- ⚔️ Spar Complete!
285
- 📊 4 rounds, 7 tests, 3 commits
286
- 🔴 Attack coverage: input boundaries + business rules + concurrency + atomicity
287
- 🟢 Defense strategy: upfront validation + optimistic lock + transactions
288
- ```
@@ -1,216 +0,0 @@
1
- {
2
- "version": 1,
3
- "skills": {
4
- "roll-.changelog": {
5
- "positive": [
6
- "build finished, generate CHANGELOG.md from Done backlog stories",
7
- "after deploy, sync user-facing changelog with acceptance evidence"
8
- ],
9
- "negative": [
10
- "design new stories for a feature backlog",
11
- "fix a failing unit test through TCR"
12
- ]
13
- },
14
- "roll-.clarify": {
15
- "positive": [
16
- "the fly-mode build request is vague and needs scope questions",
17
- "the user asked for a feature but boundaries are underspecified"
18
- ],
19
- "negative": [
20
- "the user supplied a concrete US-XXX story id",
21
- "the user only wants intent restated, not scope questions"
22
- ]
23
- },
24
- "roll-.dream": {
25
- "positive": [
26
- "run the nightly architecture health scan",
27
- "look for dead code, doc staleness, and refactor candidates"
28
- ],
29
- "negative": [
30
- "sample production behavior from deployed endpoints",
31
- "generate CHANGELOG.md after a release"
32
- ]
33
- },
34
- "roll-.echo": {
35
- "positive": [
36
- "the user message is contradictory and needs restatement",
37
- "confirm a rambling request before any implementation"
38
- ],
39
- "negative": [
40
- "ask detailed feature scope questions for roll-build fly mode",
41
- "execute a clearly named US-XXX story"
42
- ]
43
- },
44
- "roll-.qa": {
45
- "positive": [
46
- "choose the right test pyramid coverage for a story",
47
- "decide whether visual, E2E, smoke, or unit tests are required"
48
- ],
49
- "negative": [
50
- "perform code review findings after TCR",
51
- "write a product proposal for backlog candidates"
52
- ]
53
- },
54
- "roll-.review": {
55
- "positive": [
56
- "self-review code before committing a TCR micro-step",
57
- "inspect a local diff for bugs, regressions, and security issues"
58
- ],
59
- "negative": [
60
- "review a GitHub pull request from another branch",
61
- "ask another agent for peer negotiation"
62
- ]
63
- },
64
- "roll-build": {
65
- "positive": [
66
- "execute US-AUTH-001 through TCR and verification",
67
- "turn this feature request into clarified design, implementation, tests, and backlog write-back"
68
- ],
69
- "negative": [
70
- "only discuss architecture options and split backlog stories",
71
- "fix FIX-123 as a narrow bug repair"
72
- ]
73
- },
74
- "roll-debug": {
75
- "positive": [
76
- "mount a browser black-box probe on localhost to diagnose a broken page",
77
- "collect console, network, DOM, and runtime state before fixing a web bug"
78
- ],
79
- "negative": [
80
- "run a nightly code architecture scan",
81
- "review a pull request diff"
82
- ]
83
- },
84
- "roll-deck": {
85
- "positive": [
86
- "generate an 18-slide bilingual deck.md for this product topic",
87
- "create slides from README, backlog, and evidence"
88
- ],
89
- "negative": [
90
- "update project documentation index",
91
- "write a daily owner brief"
92
- ]
93
- },
94
- "roll-design": {
95
- "positive": [
96
- "discuss options and split this feature into INVEST stories",
97
- "model the domain and write backlog/spec artifacts without coding"
98
- ],
99
- "negative": [
100
- "execute an existing US-XXX story through TCR",
101
- "hotfix a specific BUG-XXX item"
102
- ]
103
- },
104
- "roll-doc-audit": {
105
- "positive": [
106
- "check README guide site and CLI help against implemented behavior",
107
- "scan docs and generate docs/INDEX.md",
108
- "find undocumented modules and draft missing documentation"
109
- ],
110
- "negative": [
111
- "generate a bilingual presentation deck",
112
- "diagnose Roll installation health"
113
- ]
114
- },
115
- "roll-doctor": {
116
- "positive": [
117
- "diagnose Roll toolchain health and config validity",
118
- "check skill files, templates, symlinks, and conventions sync"
119
- ],
120
- "negative": [
121
- "repair a failing feature test",
122
- "run production patrol sampling"
123
- ]
124
- },
125
- "roll-fix": {
126
- "positive": [
127
- "fix FIX-123 through the lightweight TCR flow",
128
- "repair this narrow bug with a regression test and backlog write-back"
129
- ],
130
- "negative": [
131
- "design a new feature from vague product input",
132
- "execute a broad US-XXX feature story"
133
- ]
134
- },
135
- "roll-idea": {
136
- "positive": [
137
- "capture this short idea into backlog with an auto id",
138
- "classify a one-line bug or idea note quickly"
139
- ],
140
- "negative": [
141
- "turn an idea into full DDD stories",
142
- "write owner briefing since last release"
143
- ]
144
- },
145
- "roll-loop": {
146
- "positive": [
147
- "operate the autonomous backlog executor loop",
148
- "scan Todo stories and dispatch US/FIX/REFACTOR work"
149
- ],
150
- "negative": [
151
- "do a one-time nightly architecture scan",
152
- "write a human product proposal"
153
- ]
154
- },
155
- "roll-notes": {
156
- "positive": [
157
- "record this development discovery in today's project diary",
158
- "append a success, failure, or decision to Roll notes"
159
- ],
160
- "negative": [
161
- "generate user-facing changelog entries",
162
- "create a backlog story from a product idea"
163
- ]
164
- },
165
- "roll-onboard": {
166
- "positive": [
167
- "onboard this legacy project into Roll with interactive questions",
168
- "produce .roll/onboard-plan.yaml for roll init --apply"
169
- ],
170
- "negative": [
171
- "run setup after the project is already onboarded",
172
- "audit existing skill routing quality"
173
- ]
174
- },
175
- "roll-peer": {
176
- "positive": [
177
- "the user explicitly says /peer for this design decision",
178
- "ask another agent to negotiate a high-risk ambiguous plan"
179
- ],
180
- "negative": [
181
- "perform local self-review before commit",
182
- "review a pull request without cross-agent negotiation"
183
- ]
184
- },
185
- "roll-propose": {
186
- "positive": [
187
- "generate product proposal drafts from current project context",
188
- "write 1-3 candidate user stories into .roll/proposals.md"
189
- ],
190
- "negative": [
191
- "append a confirmed story directly to backlog",
192
- "execute a Todo story through TCR"
193
- ]
194
- },
195
- "roll-review-pr": {
196
- "positive": [
197
- "review this PR diff and emit APPROVE or REQUEST_CHANGES",
198
- "inspect pull request changes with file and line grounded findings"
199
- ],
200
- "negative": [
201
- "self-review a local TCR micro-step",
202
- "run attacker and defender agents for high-risk logic"
203
- ]
204
- },
205
- "roll-spar": {
206
- "positive": [
207
- "use adversarial TDD for auth or payment logic",
208
- "spawn attacker tests and defender implementation for complex state logic"
209
- ],
210
- "negative": [
211
- "ask for ordinary peer review of a plan",
212
- "perform routine QA coverage selection"
213
- ]
214
- }
215
- }
216
- }