bigpowers 2.4.0 → 2.5.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.
- package/.pi/package.json +2 -2
- package/.pi/prompts/align-grid.md +102 -0
- package/.pi/prompts/compose-workflow.md +1 -1
- package/.pi/prompts/diagnose-root.md +1 -1
- package/.pi/prompts/evolve-skill.md +1 -1
- package/.pi/prompts/grill-with-docs.md +1 -1
- package/.pi/prompts/research-first.md +1 -1
- package/.pi/prompts/reset-baseline.md +1 -1
- package/.pi/prompts/run-evals.md +1 -1
- package/.pi/prompts/scope-work.md +1 -1
- package/.pi/prompts/search-skills.md +1 -1
- package/.pi/prompts/setup-environment.md +1 -1
- package/.pi/prompts/simulate-agents.md +1 -1
- package/.pi/prompts/slice-tasks.md +1 -1
- package/.pi/prompts/stocktake-skills.md +1 -1
- package/.pi/prompts/verify-work.md +1 -1
- package/.pi/skills/align-grid/SKILL.md +104 -0
- package/.pi/skills/assess-impact/SKILL.md +2 -1
- package/.pi/skills/audit-code/SKILL.md +1 -0
- package/.pi/skills/build-epic/SKILL.md +1 -0
- package/.pi/skills/change-request/SKILL.md +1 -0
- package/.pi/skills/commit-message/SKILL.md +1 -0
- package/.pi/skills/compose-workflow/SKILL.md +2 -1
- package/.pi/skills/craft-skill/SKILL.md +1 -0
- package/.pi/skills/deepen-architecture/SKILL.md +1 -0
- package/.pi/skills/define-language/SKILL.md +2 -1
- package/.pi/skills/define-success/SKILL.md +2 -1
- package/.pi/skills/delegate-task/SKILL.md +1 -0
- package/.pi/skills/design-interface/SKILL.md +2 -1
- package/.pi/skills/develop-tdd/SKILL.md +1 -0
- package/.pi/skills/diagnose-root/SKILL.md +2 -1
- package/.pi/skills/dispatch-agents/SKILL.md +1 -0
- package/.pi/skills/edit-document/SKILL.md +1 -0
- package/.pi/skills/elaborate-spec/SKILL.md +2 -1
- package/.pi/skills/enforce-first/SKILL.md +2 -1
- package/.pi/skills/evolve-skill/SKILL.md +2 -1
- package/.pi/skills/execute-plan/SKILL.md +1 -0
- package/.pi/skills/fix-bug/SKILL.md +1 -0
- package/.pi/skills/grill-me/SKILL.md +2 -1
- package/.pi/skills/grill-with-docs/SKILL.md +2 -1
- package/.pi/skills/guard-git/SKILL.md +1 -0
- package/.pi/skills/hook-commits/SKILL.md +1 -0
- package/.pi/skills/inspect-quality/SKILL.md +2 -1
- package/.pi/skills/investigate-bug/SKILL.md +2 -1
- package/.pi/skills/kickoff-branch/SKILL.md +2 -1
- package/.pi/skills/map-codebase/SKILL.md +2 -1
- package/.pi/skills/migrate-spec/SKILL.md +1 -0
- package/.pi/skills/model-domain/SKILL.md +1 -0
- package/.pi/skills/orchestrate-project/SKILL.md +1 -0
- package/.pi/skills/organize-workspace/SKILL.md +2 -1
- package/.pi/skills/plan-refactor/SKILL.md +1 -0
- package/.pi/skills/plan-release/SKILL.md +2 -1
- package/.pi/skills/plan-work/SKILL.md +2 -1
- package/.pi/skills/release-branch/SKILL.md +2 -1
- package/.pi/skills/request-review/SKILL.md +1 -0
- package/.pi/skills/research-first/SKILL.md +2 -1
- package/.pi/skills/reset-baseline/SKILL.md +2 -1
- package/.pi/skills/respond-review/SKILL.md +1 -0
- package/.pi/skills/run-evals/SKILL.md +2 -1
- package/.pi/skills/run-planning/SKILL.md +2 -1
- package/.pi/skills/scope-work/SKILL.md +2 -1
- package/.pi/skills/search-skills/SKILL.md +2 -1
- package/.pi/skills/seed-conventions/SKILL.md +1 -0
- package/.pi/skills/session-state/SKILL.md +1 -0
- package/.pi/skills/setup-environment/SKILL.md +2 -1
- package/.pi/skills/simulate-agents/SKILL.md +2 -1
- package/.pi/skills/slice-tasks/SKILL.md +2 -1
- package/.pi/skills/spike-prototype/SKILL.md +2 -1
- package/.pi/skills/stocktake-skills/SKILL.md +2 -1
- package/.pi/skills/survey-context/SKILL.md +1 -0
- package/.pi/skills/terse-mode/SKILL.md +2 -1
- package/.pi/skills/trace-requirement/SKILL.md +2 -1
- package/.pi/skills/using-bigpowers/SKILL.md +2 -1
- package/.pi/skills/validate-fix/SKILL.md +2 -1
- package/.pi/skills/verify-work/SKILL.md +2 -1
- package/.pi/skills/visual-dashboard/SKILL.md +1 -0
- package/.pi/skills/wire-observability/SKILL.md +1 -0
- package/.pi/skills/write-document/SKILL.md +1 -0
- package/CHANGELOG.md +14 -0
- package/SKILL-INDEX.md +34 -33
- package/align-grid/SKILL.md +108 -0
- package/align-grid/scripts/grid_tokens.py +201 -0
- package/align-grid/scripts/verify_grid.js +140 -0
- package/dashboard/src/web/client.html +191 -249
- package/package.json +1 -1
- package/scripts/generate-reference-tables.sh +1 -1
- package/scripts/sync-skills.sh +22 -10
- package/scripts/validate-skill-yaml.py +73 -0
- package/visual-dashboard/scripts/cockpit.html +123 -16
- package/visual-dashboard/scripts/frame-template.html +181 -45
- package/countable-story-format.md +0 -293
|
@@ -1,293 +0,0 @@
|
|
|
1
|
-
# Countable Story Format
|
|
2
|
-
|
|
3
|
-
The canonical format for stories and bug-fix specs that need to be **countable** — i.e., readable by automated counters that score scope, sizing, and non-functional coverage. Every spec-producing skill in bigpowers writes output in this format.
|
|
4
|
-
|
|
5
|
-
This is a structural contract. Counters key off the exact section names and order. Section omissions are not equivalent to "no content here" — they make the spec uncountable. Use `Not applicable` instead.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Hard rules
|
|
10
|
-
|
|
11
|
-
1. **Every section must be present.** Empty sections are written as `Not applicable` with a one-line reason. Deleting a section caps maturity at 3.
|
|
12
|
-
2. **Section names and order are fixed.** Do not rename, merge, or reorder. Counters do not infer location.
|
|
13
|
-
3. **Sections 14, 15, 16 are tagged `*NFR*`** in their heading. The NFR ratio = (§14 + §15 + §16 content) / total content. The tag must be present even when the section is `Not applicable`.
|
|
14
|
-
4. **Sizing uses Fibonacci only.** XS=1, S=2, M=3, L=5, XL=8. Any other value is invalid.
|
|
15
|
-
5. **Acceptance criteria are Gherkin only** (`Scenario / Given / When / Then`) and live in §17.
|
|
16
|
-
6. **Acceptance criteria must cover the main flow (§5) plus every alternative/exception listed in §6.** One scenario per branch, minimum.
|
|
17
|
-
7. **Multiple occurrences of the same dimension are listed separately**, each with its own one-line rationale. Do not collapse.
|
|
18
|
-
|
|
19
|
-
## Maturity rubric (self-score in the header)
|
|
20
|
-
|
|
21
|
-
| Score | Label | Definition |
|
|
22
|
-
|------|-------|------------|
|
|
23
|
-
| 1 | Napkin | Only §1, §2, §17 populated. |
|
|
24
|
-
| 2 | Sketch | §1–§6 populated; data model implicit. |
|
|
25
|
-
| **3** | **Countable** | **§1–§16 populated. Counter runs cleanly. Wording may still be loose.** |
|
|
26
|
-
| 4 | Refined | §1–§20 populated. Gherkin covers every business rule. Open questions tracked but non-blocking. |
|
|
27
|
-
| 5 | Implementation-ready | All sections final. Data model precise enough for codegen. No open questions. References complete. |
|
|
28
|
-
|
|
29
|
-
**Sprint commitment gate:** maturity ≥ 4 recommended. Anything below 3 is blocked from sprint commit unless risk is explicitly accepted.
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
## Header block (mandatory)
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
STORY KEY: <PROJECT-NNN>
|
|
37
|
-
TITLE: <short imperative title>
|
|
38
|
-
TYPE: Story | Spike | Bug | Enabler
|
|
39
|
-
PARENT: <epic key or N/A>
|
|
40
|
-
STATUS: Draft | Ready for refinement | Refined | Counted | In sprint
|
|
41
|
-
AUTHOR: <name> DATE: <YYYY-MM-DD>
|
|
42
|
-
MATURITY: <self-score 1-5>
|
|
43
|
-
SIZE: XS | S | M | L | XL (Fibonacci 1/2/3/5/8)
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
`SIZE` is optional at maturity 3; required at maturity 4+.
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## The 20 sections
|
|
51
|
-
|
|
52
|
-
Headings appear verbatim, including the numbers.
|
|
53
|
-
|
|
54
|
-
### 1. Business narrative
|
|
55
|
-
|
|
56
|
-
Two to four paragraphs of plain business prose. No solution language. No `As a / I want` phrasing — that belongs in §2. Describe the situation, the friction, and the desired outcome from the business point of view.
|
|
57
|
-
|
|
58
|
-
### 2. Value statement
|
|
59
|
-
|
|
60
|
-
A single line:
|
|
61
|
-
```
|
|
62
|
-
As a <actor>, I want <capability>, so that <outcome>.
|
|
63
|
-
```
|
|
64
|
-
Retained for portfolio-level skim. One line, no expansion.
|
|
65
|
-
|
|
66
|
-
### 3. Actors and permissions
|
|
67
|
-
|
|
68
|
-
List of actors and what they are allowed to do. Mark each as `internal | external | system`.
|
|
69
|
-
|
|
70
|
-
### 4. Trigger and preconditions
|
|
71
|
-
|
|
72
|
-
What event starts this flow. What must be true before it can run.
|
|
73
|
-
|
|
74
|
-
### 5. Main flow and business logic
|
|
75
|
-
|
|
76
|
-
Numbered steps describing the happy path. Decision points are explicit. Include the line `Interruption point: <where the flow can be paused/resumed or N/A>`.
|
|
77
|
-
|
|
78
|
-
### 6. Alternative flows and exceptions
|
|
79
|
-
|
|
80
|
-
Numbered list of every branch and every error path. Each entry must be referenced by a Gherkin scenario in §17.
|
|
81
|
-
|
|
82
|
-
### 7. Interface elements
|
|
83
|
-
|
|
84
|
-
```
|
|
85
|
-
Context: new | existing
|
|
86
|
-
Static elements: <list>
|
|
87
|
-
Dynamic elements: <list>
|
|
88
|
-
```
|
|
89
|
-
Max five elements per cluster. If more, split into clusters.
|
|
90
|
-
|
|
91
|
-
### 8. Domain model
|
|
92
|
-
|
|
93
|
-
Entities touched, entities created, relationships changed. Reference `specs/CONTEXT.md` and `specs/UBIQUITOUS_LANGUAGE.md` where applicable.
|
|
94
|
-
|
|
95
|
-
### 9. Integrations and boundaries
|
|
96
|
-
|
|
97
|
-
Each integration tagged `perennial | ethereal` and `direction: in | out | both`.
|
|
98
|
-
|
|
99
|
-
### 10. Background processes
|
|
100
|
-
|
|
101
|
-
Each tagged `event | scheduled | manual+scheduled | external`.
|
|
102
|
-
|
|
103
|
-
### 11. Notifications
|
|
104
|
-
|
|
105
|
-
One entry per notification: channel, recipient, trigger event.
|
|
106
|
-
|
|
107
|
-
### 12. Audit and logging
|
|
108
|
-
|
|
109
|
-
Audited entities and the audit fields captured.
|
|
110
|
-
|
|
111
|
-
### 13. Solution variabilities
|
|
112
|
-
|
|
113
|
-
For each parameter: source (`config | tenant | feature flag | role`) and behaviour per value.
|
|
114
|
-
|
|
115
|
-
### 14. Quality attributes *NFR*
|
|
116
|
-
|
|
117
|
-
Concrete service-level targets: p95 latency, uptime, scale ceiling, reliability. Numbers only — no adjectives.
|
|
118
|
-
|
|
119
|
-
### 15. Security and compliance *NFR*
|
|
120
|
-
|
|
121
|
-
AuthN method, AuthZ model, data classification, applicable regulations, controls in place.
|
|
122
|
-
|
|
123
|
-
### 16. UX and accessibility *NFR*
|
|
124
|
-
|
|
125
|
-
WCAG level, i18n scope, supported modalities, branding constraints.
|
|
126
|
-
|
|
127
|
-
### 17. Acceptance criteria
|
|
128
|
-
|
|
129
|
-
Gherkin scenarios:
|
|
130
|
-
```
|
|
131
|
-
Scenario: <name>
|
|
132
|
-
Given <precondition>
|
|
133
|
-
When <action>
|
|
134
|
-
Then <outcome>
|
|
135
|
-
```
|
|
136
|
-
At least one scenario for the main flow (§5) and one per branch in §6.
|
|
137
|
-
|
|
138
|
-
### 18. Out of scope
|
|
139
|
-
|
|
140
|
-
Explicit non-goals. Phrased as full sentences, not single words.
|
|
141
|
-
|
|
142
|
-
### 19. Open questions
|
|
143
|
-
|
|
144
|
-
```
|
|
145
|
-
- <question> — owner: <name>, needed by: <YYYY-MM-DD>
|
|
146
|
-
```
|
|
147
|
-
A non-empty §19 caps maturity at 3.
|
|
148
|
-
|
|
149
|
-
### 20. References
|
|
150
|
-
|
|
151
|
-
Links to design docs, RFCs, ADRs, prior stories, datasets, prototypes.
|
|
152
|
-
|
|
153
|
-
---
|
|
154
|
-
|
|
155
|
-
## Bug-fix specs (bugs/BUG-*.md)
|
|
156
|
-
|
|
157
|
-
Bug fixes use the same header block and the same 20 sections. The minimum required for "Countable" on a bug fix:
|
|
158
|
-
|
|
159
|
-
- §1 — describe actual vs. expected behavior and reproduction.
|
|
160
|
-
- §5 — the verified root-cause flow (output of the 4-phase RCA).
|
|
161
|
-
- §6 — alternative hypotheses ruled out.
|
|
162
|
-
- §17 — Gherkin: at least one regression scenario that fails before the fix and passes after.
|
|
163
|
-
- §18 — what this fix deliberately does not change.
|
|
164
|
-
- §19 — anything still unverified.
|
|
165
|
-
|
|
166
|
-
Sections 2–4, 7–16, 20 are marked `Not applicable — <reason>` if the fix is purely behavioral.
|
|
167
|
-
|
|
168
|
-
---
|
|
169
|
-
|
|
170
|
-
## Refactors and spikes
|
|
171
|
-
|
|
172
|
-
Refactors and spikes are not user stories and do **not** use this format. They keep their existing lightweight templates (`specs/REFACTOR.md`, `specs/SPIKE-<name>.md`). They are not counted.
|
|
173
|
-
|
|
174
|
-
---
|
|
175
|
-
|
|
176
|
-
## Worked example (minimal countable story)
|
|
177
|
-
|
|
178
|
-
```
|
|
179
|
-
STORY KEY: ACME-101
|
|
180
|
-
TITLE: Self-serve password reset
|
|
181
|
-
TYPE: Story
|
|
182
|
-
PARENT: ACME-EPIC-7
|
|
183
|
-
STATUS: Draft
|
|
184
|
-
AUTHOR: dvm DATE: 2026-05-23
|
|
185
|
-
MATURITY: 3
|
|
186
|
-
SIZE: M
|
|
187
|
-
|
|
188
|
-
### 1. Business narrative
|
|
189
|
-
Customer-support handles ~120 password reset tickets per week. Each ticket
|
|
190
|
-
costs an average of 8 minutes of agent time. Customers wait 4 hours on
|
|
191
|
-
average for a reply. Both numbers are unacceptable for our SLA tier.
|
|
192
|
-
|
|
193
|
-
### 2. Value statement
|
|
194
|
-
As a signed-out customer, I want to reset my own password, so that I can
|
|
195
|
-
get back into my account without contacting support.
|
|
196
|
-
|
|
197
|
-
### 3. Actors and permissions
|
|
198
|
-
- Customer (external) — initiate reset, set new password.
|
|
199
|
-
- Auth service (system) — issue and verify reset tokens.
|
|
200
|
-
|
|
201
|
-
### 4. Trigger and preconditions
|
|
202
|
-
Trigger: customer clicks "Forgot password" on the sign-in screen.
|
|
203
|
-
Precondition: an account with the supplied email exists and is not locked.
|
|
204
|
-
|
|
205
|
-
### 5. Main flow and business logic
|
|
206
|
-
1. Customer submits email.
|
|
207
|
-
2. System creates single-use reset token (TTL 30 min).
|
|
208
|
-
3. System emails token link to the registered address.
|
|
209
|
-
4. Customer opens link and submits new password.
|
|
210
|
-
5. System verifies token, updates password hash, invalidates token.
|
|
211
|
-
6. System redirects to sign-in.
|
|
212
|
-
Interruption point: between steps 3 and 4 (link sent, not yet clicked).
|
|
213
|
-
|
|
214
|
-
### 6. Alternative flows and exceptions
|
|
215
|
-
6a. Email not registered — respond identically to success path (do not leak).
|
|
216
|
-
6b. Token expired — display generic "request a new link" message.
|
|
217
|
-
6c. Account locked — redirect to support contact page; do not issue token.
|
|
218
|
-
|
|
219
|
-
### 7. Interface elements
|
|
220
|
-
Context: existing.
|
|
221
|
-
Static elements: page title, email input, submit button.
|
|
222
|
-
Dynamic elements: validation message, throttle banner.
|
|
223
|
-
|
|
224
|
-
### 8. Domain model
|
|
225
|
-
Entities touched: User, AuthCredential. New entity: PasswordResetToken
|
|
226
|
-
(user_id, token_hash, expires_at, used_at).
|
|
227
|
-
|
|
228
|
-
### 9. Integrations and boundaries
|
|
229
|
-
- Email provider (perennial, direction: out).
|
|
230
|
-
|
|
231
|
-
### 10. Background processes
|
|
232
|
-
- Token sweeper (scheduled, hourly) — purges expired tokens.
|
|
233
|
-
|
|
234
|
-
### 11. Notifications
|
|
235
|
-
- Email — recipient: registered user — trigger: token issued.
|
|
236
|
-
|
|
237
|
-
### 12. Audit and logging
|
|
238
|
-
Audited entity: PasswordResetToken. Fields: issued_at, used_at, ip.
|
|
239
|
-
|
|
240
|
-
### 13. Solution variabilities
|
|
241
|
-
- TTL (config) — default 30 min, override per tenant.
|
|
242
|
-
|
|
243
|
-
### 14. Quality attributes *NFR*
|
|
244
|
-
- p95 reset-flow end-to-end < 60 s including email delivery.
|
|
245
|
-
- 99.9% monthly uptime on the reset endpoint.
|
|
246
|
-
|
|
247
|
-
### 15. Security and compliance *NFR*
|
|
248
|
-
- AuthN: anonymous on request, token-based on completion.
|
|
249
|
-
- AuthZ: token bound to user_id; single use.
|
|
250
|
-
- Data class: PII (email).
|
|
251
|
-
- Controls: rate-limit 5/hour/IP; token-hash at rest.
|
|
252
|
-
|
|
253
|
-
### 16. UX and accessibility *NFR*
|
|
254
|
-
- WCAG 2.1 AA.
|
|
255
|
-
- i18n: en, pt-BR at launch.
|
|
256
|
-
|
|
257
|
-
### 17. Acceptance criteria
|
|
258
|
-
Scenario: Happy path
|
|
259
|
-
Given a registered customer at the sign-in screen
|
|
260
|
-
When the customer requests a password reset for their email
|
|
261
|
-
Then an email with a single-use link is sent within 60 seconds
|
|
262
|
-
|
|
263
|
-
Scenario: Unknown email (6a)
|
|
264
|
-
Given an email that is not registered
|
|
265
|
-
When the customer requests a password reset
|
|
266
|
-
Then the UI shows the same confirmation as the happy path
|
|
267
|
-
And no email is sent
|
|
268
|
-
|
|
269
|
-
Scenario: Expired token (6b)
|
|
270
|
-
Given a reset token older than 30 minutes
|
|
271
|
-
When the customer opens the link
|
|
272
|
-
Then the UI shows "request a new link"
|
|
273
|
-
|
|
274
|
-
Scenario: Locked account (6c)
|
|
275
|
-
Given an account marked locked
|
|
276
|
-
When the customer requests a password reset
|
|
277
|
-
Then no token is issued
|
|
278
|
-
And the UI redirects to the support contact page
|
|
279
|
-
|
|
280
|
-
### 18. Out of scope
|
|
281
|
-
- Passwordless / magic-link sign-in.
|
|
282
|
-
- Forced password rotation policy.
|
|
283
|
-
- Admin-initiated resets.
|
|
284
|
-
|
|
285
|
-
### 19. Open questions
|
|
286
|
-
- Confirm rate-limit threshold with SecOps — owner: dvm, needed by: 2026-05-30.
|
|
287
|
-
|
|
288
|
-
### 20. References
|
|
289
|
-
- ADR-0014 (token strategy).
|
|
290
|
-
- specs/CONTEXT.md (User aggregate).
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
This example scores 3 (Countable). To reach 4, resolve §19 and add NFR coverage for §16 i18n test plan.
|