You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* OC-5: one dot per line — AGREE/DISAGREE | file:line
246
-
* OC-6: no abbreviations — AGREE/DISAGREE | file:line
247
-
* OC-7: ≤20 lines per function, ≤50 per class — AGREE/DISAGREE | longest: file:line
248
-
* OC-8: ≤2 instance variables per class (behavioural classes only; dataclasses, Pydantic models, value objects, and TypedDicts are exempt) — AGREE/DISAGREE | file:line
249
-
* OC-9: no getters/setters — AGREE/DISAGREE | file:line
250
-
* Patterns: I have no good reason to refactor parts of the code using OOP or Design Patterns — AGREE/DISAGREE | file:line
251
-
* Patterns: no creational smell — AGREE/DISAGREE | file:line
252
-
* Patterns: no structural smell — AGREE/DISAGREE | file:line
253
-
* Patterns: no behavioral smell — AGREE/DISAGREE | file:line
254
-
* Semantic: tests operate at same abstraction as AC — AGREE/DISAGREE | file:line
255
-
```
256
-
257
-
A `DISAGREE` answer is not automatic rejection — state the reason inline and fix before handing off.
225
+
Communicate verbally to the reviewer. Answer honestly for each principle:
226
+
227
+
- YAGNI: no code without a failing test — AGREE/DISAGREE | file:line
228
+
- YAGNI: no speculative abstractions — AGREE/DISAGREE | file:line
229
+
- KISS: simplest solution that passes — AGREE/DISAGREE | file:line
230
+
- KISS: no premature optimization — AGREE/DISAGREE | file:line
231
+
- DRY: no duplication — AGREE/DISAGREE | file:line
232
+
- DRY: no redundant comments — AGREE/DISAGREE | file:line
233
+
- SOLID-S: one reason to change per class — AGREE/DISAGREE | file:line
234
+
- SOLID-O: open for extension, closed for modification — AGREE/DISAGREE | file:line
- OC-5: one dot per line — AGREE/DISAGREE | file:line
243
+
- OC-6: no abbreviations — AGREE/DISAGREE | file:line
244
+
- OC-7: ≤20 lines per function, ≤50 per class — AGREE/DISAGREE | longest: file:line
245
+
- OC-8: ≤2 instance variables per class (behavioural classes only; dataclasses, Pydantic models, value objects, and TypedDicts are exempt) — AGREE/DISAGREE | file:line
246
+
- OC-9: no getters/setters — AGREE/DISAGREE | file:line
247
+
- Patterns: I have no good reason to refactor parts of the code using OOP or Design Patterns — AGREE/DISAGREE | file:line
248
+
- Patterns: no creational smell — AGREE/DISAGREE | file:line
249
+
- Patterns: no structural smell — AGREE/DISAGREE | file:line
250
+
- Patterns: no behavioral smell — AGREE/DISAGREE | file:line
251
+
- Semantic: tests operate at same abstraction as AC — AGREE/DISAGREE | file:line
252
+
253
+
A `DISAGREE` answer is not automatic rejection — state the reason and fix before handing off.
258
254
259
255
### Hand off to Step 4 (Verify)
260
256
261
257
Signal completion to the reviewer. Provide:
262
258
- Feature file path
263
-
- Self-Declaration report
259
+
- Self-Declaration (communicated verbally, as above)
Copy file name to clipboardExpand all lines: .opencode/skills/scope/SKILL.md
+13-17Lines changed: 13 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -281,23 +281,19 @@ All Rules must have their pre-mortems completed before any Examples are written.
281
281
282
282
**Self-Declaration (mandatory before criteria commit)**
283
283
284
-
Write the following block into `TODO.md` before committing. Every `DISAGREE` is a **hard blocker** — explain inline and fix before the commit. Do not commit until all items are AGREE or have a documented resolution.
285
-
286
-
```markdown
287
-
## Self-Declaration
288
-
As a product-owner I declare:
289
-
* INVEST-I: each Rule is Independent (no hidden ordering or dependency between Rules) — AGREE/DISAGREE | conflict:
290
-
* INVEST-V: each Rule delivers Value to a named user — AGREE/DISAGREE | Rule:
291
-
* INVEST-S: each Rule is Small enough for one development cycle — AGREE/DISAGREE | Rule:
292
-
* INVEST-T: each Rule is Testable (I can write a pass/fail Example for it) — AGREE/DISAGREE | Rule:
293
-
* Observable: every Then is a single, observable, measurable outcome — AGREE/DISAGREE | file:line
294
-
* No impl details: no Example tests internal state or implementation — AGREE/DISAGREE | file:line
295
-
* Coverage: every entity in the feature description appears in at least one Rule — AGREE/DISAGREE | missing:
296
-
* Distinct: no two Examples test the same observable behavior — AGREE/DISAGREE | file:line
297
-
* Unique IDs: all @id values are unique within this feature — AGREE/DISAGREE
298
-
* Pre-mortem: I ran a pre-mortem on each Rule and found no hidden failure modes — AGREE/DISAGREE | Rule:
299
-
* Scope: no Example introduces behavior outside the feature boundary — AGREE/DISAGREE | file:line
300
-
```
284
+
Communicate verbally to the next agent. Every `DISAGREE` is a **hard blocker** — fix before committing. Do not commit until all items are AGREE or have a documented resolution.
285
+
286
+
- INVEST-I: each Rule is Independent (no hidden ordering or dependency between Rules) — AGREE/DISAGREE | conflict:
287
+
- INVEST-V: each Rule delivers Value to a named user — AGREE/DISAGREE | Rule:
288
+
- INVEST-S: each Rule is Small enough for one development cycle — AGREE/DISAGREE | Rule:
289
+
- INVEST-T: each Rule is Testable (I can write a pass/fail Example for it) — AGREE/DISAGREE | Rule:
290
+
- Observable: every Then is a single, observable, measurable outcome — AGREE/DISAGREE | file:line
291
+
- No impl details: no Example tests internal state or implementation — AGREE/DISAGREE | file:line
292
+
- Coverage: every entity in the feature description appears in at least one Rule — AGREE/DISAGREE | missing:
293
+
- Distinct: no two Examples test the same observable behavior — AGREE/DISAGREE | file:line
294
+
- Unique IDs: all @id values are unique within this feature — AGREE/DISAGREE
295
+
- Pre-mortem: I ran a pre-mortem on each Rule and found no hidden failure modes — AGREE/DISAGREE | Rule:
296
+
- Scope: no Example introduces behavior outside the feature boundary — AGREE/DISAGREE | file:line
301
297
302
298
Commit: `feat(criteria): write acceptance criteria for <name>`
Copy file name to clipboardExpand all lines: .opencode/skills/session-workflow/SKILL.md
-41Lines changed: 0 additions & 41 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -104,46 +104,10 @@ No feature in progress.
104
104
Next: Run @<product-owner-agent> — load skill feature-selection and pick the next BASELINED feature from backlog.
105
105
```
106
106
107
-
## Step 1 (Stage 2 Criteria) Self-Declaration TODO Format
108
-
109
-
When Stage 2 Step B (criteria) is complete and before the `feat(criteria):` commit, TODO.md **must** include a `## Self-Declaration` block written by the PO:
110
-
111
-
```markdown
112
-
# Current Work
113
-
114
-
Feature: <name>
115
-
Step: 1 (SCOPE — Stage 2 Criteria)
116
-
Source: docs/features/backlog/<name>.feature
117
-
118
-
## Self-Declaration
119
-
As a product-owner I declare:
120
-
* INVEST-I: each Rule is Independent — AGREE/DISAGREE | conflict:
121
-
* INVEST-V: each Rule delivers Value to a named user — AGREE/DISAGREE | Rule:
122
-
* INVEST-S: each Rule is Small enough for one development cycle — AGREE/DISAGREE | Rule:
123
-
* INVEST-T: each Rule is Testable — AGREE/DISAGREE | Rule:
124
-
* Observable: every Then is a single, observable, measurable outcome — AGREE/DISAGREE | file:line
125
-
* No impl details: no Example tests internal state or implementation — AGREE/DISAGREE | file:line
126
-
* Coverage: every entity in the feature description appears in at least one Rule — AGREE/DISAGREE | missing:
127
-
* Distinct: no two Examples test the same observable behavior — AGREE/DISAGREE | file:line
128
-
* Unique IDs: all @id values are unique within this feature — AGREE/DISAGREE
129
-
* Pre-mortem: I ran a pre-mortem on each Rule and found no hidden failure modes — AGREE/DISAGREE | Rule:
130
-
* Scope: no Example introduces behavior outside the feature boundary — AGREE/DISAGREE | file:line
131
-
132
-
## Progress
133
-
-[x]`@id:<hex>`: <description>
134
-
135
-
## Next
136
-
Run @<software-engineer-agent> — load skill implementation and begin Step 2 (Architecture) for <feature-name>
137
-
```
138
-
139
-
Every `DISAGREE` is a hard blocker — fix before committing.
140
-
141
107
## Step 3 (TDD Loop) Cycle-Aware TODO Format
142
108
143
109
During Step 3 (TDD Loop), TODO.md **must** include a `## Cycle State` block to track Red-Green-Refactor progress.
144
110
145
-
When `Phase: REFACTOR` is complete, a `## Self-Declaration` block is also **mandatory** before handing off to Step 4.
As a software-engineer I declare this code follows YAGNI-1 ... (full checklist in implementation/SKILL.md)
160
-
161
122
## Progress
162
123
-[x]`@id:<hex>`: <description>
163
124
-[~]`@id:<hex>`: <description> ← in progress (see Cycle State)
@@ -199,5 +160,3 @@ Run `gen-todo` at session start (after reading TODO.md) and at session end (befo
199
160
5. The "Next" line must be actionable enough that a fresh AI can execute it without asking questions
200
161
6. During Step 3, always update `## Cycle State` when transitioning between RED/GREEN/REFACTOR phases
201
162
7. When a step completes, update TODO.md and commit **before** any further work
202
-
8. During Step 3, write the `## Self-Declaration` block into TODO.md after all quality gates pass — every claim must have AGREE/DISAGREE with `file:line` evidence
203
-
9. During Step 1 Stage 2 Step B (criteria), write the `## Self-Declaration` block into TODO.md before the criteria commit — every DISAGREE is a hard blocker that must be resolved before committing
Copy file name to clipboardExpand all lines: AGENTS.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -230,7 +230,7 @@ Use `@software-engineer /skill git-release` for the full release process. When r
230
230
231
231
Every session: load `skill session-workflow`. Read `TODO.md` first, update it at the end.
232
232
233
-
`TODO.md` is a session bookmark — not a project journal. See `docs/workflow.md` for the full structure including the Cycle State and Self-Declaration blocks used during Step 3.
233
+
`TODO.md` is a session bookmark — not a project journal. See `docs/workflow.md` for the full structure including the Cycle State block used during Step 3.
│ * OC-5: one dot per line — AGREE/DISAGREE | file:line │
257
-
│ * OC-6: no abbreviations — AGREE/DISAGREE | file:line │
258
-
│ * OC-7: ≤20 lines per function — AGREE/DISAGREE | file:line │
259
-
│ * OC-8: ≤2 instance variables per class (behavioural classes only; dataclasses, Pydantic models, value objects, and TypedDicts are exempt) — AGREE/DISAGREE | file:line │
260
-
│ * OC-9: no getters/setters — AGREE/DISAGREE | file:line │
* OC-5: one dot per line — AGREE/DISAGREE | file:line
459
-
* OC-6: no abbreviations — AGREE/DISAGREE | file:line
460
-
* OC-7: ≤20 lines per function, ≤50 per class — AGREE/DISAGREE | longest: file:line
461
-
* OC-8: ≤2 instance variables per class (behavioural classes only; dataclasses, Pydantic models, value objects, and TypedDicts are exempt) — AGREE/DISAGREE | file:line
462
-
* OC-9: no getters/setters — AGREE/DISAGREE | file:line
463
-
* Patterns: no creational smell — AGREE/DISAGREE | file:line
464
-
* Patterns: no structural smell — AGREE/DISAGREE | file:line
465
-
* Patterns: no behavioral smell — AGREE/DISAGREE | file:line
466
-
* Semantic: tests operate at same abstraction as AC — AGREE/DISAGREE | file:line
410
+
Phase: RED | GREEN | REFACTOR
467
411
468
412
## Progress
469
413
-[x]@id:<hex>: <done>
@@ -474,7 +418,7 @@ As a software-engineer I declare:
474
418
<oneactionablesentence>
475
419
```
476
420
477
-
`## Cycle State` is updated at every phase transition. `## Self-Declaration` is written once after all quality gates pass in Step 3. Both sections are present only during Step 3; omit when in other steps.
421
+
`## Cycle State` is updated at every phase transition. This section is present only during Step 3; omit when in other steps.
0 commit comments