bigpowers 2.17.0 → 2.19.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/quick-fix.md +116 -0
- package/.pi/prompts/stocktake-skills.md +24 -1
- package/.pi/skills/quick-fix/SKILL.md +118 -0
- package/.pi/skills/stocktake-skills/SKILL.md +24 -1
- package/CHANGELOG.md +14 -0
- package/SKILL-INDEX.md +40 -39
- package/package.json +1 -1
- package/quick-fix/SKILL.md +117 -0
- package/scripts/bp-timing.sh +74 -0
- package/scripts/generate-skill-index.sh +1 -0
- package/skills-lock.json +6 -1
- package/stocktake-skills/SKILL.md +24 -1
package/.pi/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bigpowers",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.19.0",
|
|
4
|
+
"description": "68 skills — 61 agent skills for spec-driven, test-first software development by solo developers",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package"
|
|
7
7
|
],
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Streamlined fast-path for trivial data-only fixes — no TDD, no branching ceremony. Collapses 6 skills into 2 for changes that are purely data with no logic risk. Aborts with fallback to investigate-bug if guardrails trigger."
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
# Quick Fix
|
|
8
|
+
|
|
9
|
+
Fast-track for trivial data-only fixes that do not require the full bug-fix chain.
|
|
10
|
+
|
|
11
|
+
When a bug fix is purely data — an add-missing-key, a typo correction, a config value update — the standard 6-skill chain (investigate-bug → diagnose-root → develop-tdd → kickoff-branch → verify-work → release-branch) is wasteful overhead. Quick-fix collapses it to 2 skills: **quick-fix** then **release-branch**.
|
|
12
|
+
|
|
13
|
+
## Entry Criteria (ALL must be true)
|
|
14
|
+
|
|
15
|
+
Before invoking quick-fix, evaluate every item in this checklist:
|
|
16
|
+
|
|
17
|
+
1. **Purely data change** — adding a missing key, fixing a typo, updating a config value, correcting a constant
|
|
18
|
+
2. **No logic change** — no function signature, condition, loop, or control flow is modified
|
|
19
|
+
3. **No refactor risk** — the change does not reorganize or rename existing structures
|
|
20
|
+
4. **No API surface change** — no exported symbol, interface, or contract changes
|
|
21
|
+
5. **Verifiable with a single assertion** — one test, one curl, one grep can prove it works
|
|
22
|
+
6. **Affects ≤ 1 file**
|
|
23
|
+
7. **Affects ≤ 5 lines changed**
|
|
24
|
+
|
|
25
|
+
## Guardrails (HARD ABORT — all must pass)
|
|
26
|
+
|
|
27
|
+
If ANY guardrail triggers, **abort immediately** and suggest `investigate-bug` instead:
|
|
28
|
+
|
|
29
|
+
| Guardrail | Check |
|
|
30
|
+
|-----------|-------|
|
|
31
|
+
| **>1 file** | The fix touches more than one file |
|
|
32
|
+
| **>5 lines** | The diff exceeds 5 lines |
|
|
33
|
+
| **Logic change** | Any function signature, condition, or loop is modified |
|
|
34
|
+
| **Complex verify** | The verify command is more than one pipeline |
|
|
35
|
+
| **Test breakage** | Running `npm test` or equivalent breaks any existing test |
|
|
36
|
+
|
|
37
|
+
> **Fallback:** If any guardrail triggers, tell the user: *"This fix exceeds quick-fix guardrails. Use `investigate-bug` for the full TDD bug-fix chain instead."*
|
|
38
|
+
|
|
39
|
+
## Fast-Path Workflow
|
|
40
|
+
|
|
41
|
+
Only 2 skills needed for eligible fixes:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
quick-fix → apply change, run one-line verify, commit with fix:
|
|
45
|
+
release-branch → merge and ship (existing skill)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Skipped skills (with justification):**
|
|
49
|
+
|
|
50
|
+
| Skipped skill | Why skipped |
|
|
51
|
+
|---------------|-------------|
|
|
52
|
+
| `investigate-bug` | Root cause is obvious (data gap, not logic error) |
|
|
53
|
+
| `diagnose-root` | No isolation needed — the data point is the root cause |
|
|
54
|
+
| `develop-tdd` | No logic to test — single assertion proves correctness |
|
|
55
|
+
| `kickoff-branch` | Change is so small it does not warrant a separate worktree |
|
|
56
|
+
|
|
57
|
+
> Justification is included in the `fix:` commit body so the audit trail is preserved.
|
|
58
|
+
|
|
59
|
+
## Process
|
|
60
|
+
|
|
61
|
+
### 1. Evaluate entry criteria
|
|
62
|
+
|
|
63
|
+
Run the entry criteria checklist above. If any criterion fails → abort, suggest `investigate-bug`.
|
|
64
|
+
|
|
65
|
+
### 2. Apply the fix
|
|
66
|
+
|
|
67
|
+
Make the data change — add the missing key, fix the typo, update the value. Keep it to ≤5 lines in 1 file.
|
|
68
|
+
|
|
69
|
+
### 3. Verify
|
|
70
|
+
|
|
71
|
+
Run the single-assertion verify command. Example:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
grep -q "Bosnia" src/flags.js && echo "FIX VERIFIED" || echo "FIX FAILED"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 4. Commit
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
git add <file>
|
|
81
|
+
git commit -m "fix(<scope>): <description>"
|
|
82
|
+
git commit --amend -m "fix(<scope>): <description>
|
|
83
|
+
|
|
84
|
+
Skipped skills (justified for data-only change):
|
|
85
|
+
- investigate-bug: root cause is a data gap, not a logic error
|
|
86
|
+
- diagnose-root: the missing data point is the root cause
|
|
87
|
+
- develop-tdd: single assertion proves correctness
|
|
88
|
+
- kickoff-branch: change is too small for a separate worktree"
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 5. Release
|
|
92
|
+
|
|
93
|
+
Invoke `release-branch` to merge and ship.
|
|
94
|
+
|
|
95
|
+
## Verify
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
test -f quick-fix/SKILL.md && echo "OK: skill file exists" || echo "FAIL: no skill file"
|
|
99
|
+
grep -q "name: quick-fix" quick-fix/SKILL.md && echo "OK: frontmatter" || echo "FAIL: frontmatter"
|
|
100
|
+
grep -qi "data.only\|trivial\|fast.path\|guardrail\|abort" quick-fix/SKILL.md && echo "OK: entry criteria and guardrails"
|
|
101
|
+
grep -q "quick-fix" SKILL-INDEX.md && echo "OK: in SKILL-INDEX"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Example
|
|
105
|
+
|
|
106
|
+
### Bosnia flag missing from FLAGS dictionary
|
|
107
|
+
|
|
108
|
+
```gherkin
|
|
109
|
+
Given a bug where FLAGS dictionary is missing entry "Bosnia"
|
|
110
|
+
And no logic depends on the missing entry (purely a data gap)
|
|
111
|
+
When the agent invokes quick-fix
|
|
112
|
+
Then the missing entry is added to the dictionary
|
|
113
|
+
And a one-line verify confirms the key exists: grep -q "Bosnia" src/flags.js
|
|
114
|
+
And a fix: commit is created with the skipped-skills rationale in the body
|
|
115
|
+
And the change is ready for release-branch
|
|
116
|
+
```
|
|
@@ -21,7 +21,30 @@ Audit SKILL.md catalog for drift, stale triggers, missing HARD GATEs, and INDEX
|
|
|
21
21
|
1. Run `bash scripts/audit-catalog.sh` to verify pi/skills ↔ source SKILL.md sync. Mismatch is a critical finding.
|
|
22
22
|
2. Run mode; for each skill check: exists, verb-noun, <300 lines total, HARD GATE present, INDEX row matches.
|
|
23
23
|
3. Write `specs/STOCKTAKE-<date>.md` with findings table (skill, issue, severity).
|
|
24
|
-
4.
|
|
24
|
+
4. **Effectiveness report (--full mode only):** Read `specs/state.yaml` `metrics.skill_timings` and report:
|
|
25
|
+
- Top 5 most-used skills (by calls, total_seconds)
|
|
26
|
+
- Skills with zero calls (potential dead weight)
|
|
27
|
+
- Skills with high average time (candidates for `evolve-skill`)
|
|
28
|
+
5. Critical findings → `plan-work` story; cosmetic → `evolve-skill` candidate.
|
|
29
|
+
|
|
30
|
+
### Skill timing data (`metrics.skill_timings`)
|
|
31
|
+
|
|
32
|
+
In `--full` mode, read `specs/state.yaml` `metrics.skill_timings` for per-skill usage stats:
|
|
33
|
+
|
|
34
|
+
```yaml
|
|
35
|
+
metrics:
|
|
36
|
+
skill_timings:
|
|
37
|
+
survey-context:
|
|
38
|
+
calls: 12
|
|
39
|
+
total_seconds: 180
|
|
40
|
+
avg_seconds: 15.0
|
|
41
|
+
develop-tdd:
|
|
42
|
+
calls: 30
|
|
43
|
+
total_seconds: 5400
|
|
44
|
+
avg_seconds: 180.0
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Timing data is populated by `scripts/bp-timing.sh start|end <skill>` calls within critical-path skills.
|
|
25
48
|
|
|
26
49
|
## Verify
|
|
27
50
|
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: quick-fix
|
|
3
|
+
description: "\"Streamlined fast-path for trivial data-only fixes — no TDD, no branching ceremony. Collapses 6 skills into 2 for changes that are purely data with no logic risk. Aborts with fallback to investigate-bug if guardrails trigger.\""
|
|
4
|
+
model: sonnet
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# Quick Fix
|
|
10
|
+
|
|
11
|
+
Fast-track for trivial data-only fixes that do not require the full bug-fix chain.
|
|
12
|
+
|
|
13
|
+
When a bug fix is purely data — an add-missing-key, a typo correction, a config value update — the standard 6-skill chain (investigate-bug → diagnose-root → develop-tdd → kickoff-branch → verify-work → release-branch) is wasteful overhead. Quick-fix collapses it to 2 skills: **quick-fix** then **release-branch**.
|
|
14
|
+
|
|
15
|
+
## Entry Criteria (ALL must be true)
|
|
16
|
+
|
|
17
|
+
Before invoking quick-fix, evaluate every item in this checklist:
|
|
18
|
+
|
|
19
|
+
1. **Purely data change** — adding a missing key, fixing a typo, updating a config value, correcting a constant
|
|
20
|
+
2. **No logic change** — no function signature, condition, loop, or control flow is modified
|
|
21
|
+
3. **No refactor risk** — the change does not reorganize or rename existing structures
|
|
22
|
+
4. **No API surface change** — no exported symbol, interface, or contract changes
|
|
23
|
+
5. **Verifiable with a single assertion** — one test, one curl, one grep can prove it works
|
|
24
|
+
6. **Affects ≤ 1 file**
|
|
25
|
+
7. **Affects ≤ 5 lines changed**
|
|
26
|
+
|
|
27
|
+
## Guardrails (HARD ABORT — all must pass)
|
|
28
|
+
|
|
29
|
+
If ANY guardrail triggers, **abort immediately** and suggest `investigate-bug` instead:
|
|
30
|
+
|
|
31
|
+
| Guardrail | Check |
|
|
32
|
+
|-----------|-------|
|
|
33
|
+
| **>1 file** | The fix touches more than one file |
|
|
34
|
+
| **>5 lines** | The diff exceeds 5 lines |
|
|
35
|
+
| **Logic change** | Any function signature, condition, or loop is modified |
|
|
36
|
+
| **Complex verify** | The verify command is more than one pipeline |
|
|
37
|
+
| **Test breakage** | Running `npm test` or equivalent breaks any existing test |
|
|
38
|
+
|
|
39
|
+
> **Fallback:** If any guardrail triggers, tell the user: *"This fix exceeds quick-fix guardrails. Use `investigate-bug` for the full TDD bug-fix chain instead."*
|
|
40
|
+
|
|
41
|
+
## Fast-Path Workflow
|
|
42
|
+
|
|
43
|
+
Only 2 skills needed for eligible fixes:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
quick-fix → apply change, run one-line verify, commit with fix:
|
|
47
|
+
release-branch → merge and ship (existing skill)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Skipped skills (with justification):**
|
|
51
|
+
|
|
52
|
+
| Skipped skill | Why skipped |
|
|
53
|
+
|---------------|-------------|
|
|
54
|
+
| `investigate-bug` | Root cause is obvious (data gap, not logic error) |
|
|
55
|
+
| `diagnose-root` | No isolation needed — the data point is the root cause |
|
|
56
|
+
| `develop-tdd` | No logic to test — single assertion proves correctness |
|
|
57
|
+
| `kickoff-branch` | Change is so small it does not warrant a separate worktree |
|
|
58
|
+
|
|
59
|
+
> Justification is included in the `fix:` commit body so the audit trail is preserved.
|
|
60
|
+
|
|
61
|
+
## Process
|
|
62
|
+
|
|
63
|
+
### 1. Evaluate entry criteria
|
|
64
|
+
|
|
65
|
+
Run the entry criteria checklist above. If any criterion fails → abort, suggest `investigate-bug`.
|
|
66
|
+
|
|
67
|
+
### 2. Apply the fix
|
|
68
|
+
|
|
69
|
+
Make the data change — add the missing key, fix the typo, update the value. Keep it to ≤5 lines in 1 file.
|
|
70
|
+
|
|
71
|
+
### 3. Verify
|
|
72
|
+
|
|
73
|
+
Run the single-assertion verify command. Example:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
grep -q "Bosnia" src/flags.js && echo "FIX VERIFIED" || echo "FIX FAILED"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 4. Commit
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
git add <file>
|
|
83
|
+
git commit -m "fix(<scope>): <description>"
|
|
84
|
+
git commit --amend -m "fix(<scope>): <description>
|
|
85
|
+
|
|
86
|
+
Skipped skills (justified for data-only change):
|
|
87
|
+
- investigate-bug: root cause is a data gap, not a logic error
|
|
88
|
+
- diagnose-root: the missing data point is the root cause
|
|
89
|
+
- develop-tdd: single assertion proves correctness
|
|
90
|
+
- kickoff-branch: change is too small for a separate worktree"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 5. Release
|
|
94
|
+
|
|
95
|
+
Invoke `release-branch` to merge and ship.
|
|
96
|
+
|
|
97
|
+
## Verify
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
test -f quick-fix/SKILL.md && echo "OK: skill file exists" || echo "FAIL: no skill file"
|
|
101
|
+
grep -q "name: quick-fix" quick-fix/SKILL.md && echo "OK: frontmatter" || echo "FAIL: frontmatter"
|
|
102
|
+
grep -qi "data.only\|trivial\|fast.path\|guardrail\|abort" quick-fix/SKILL.md && echo "OK: entry criteria and guardrails"
|
|
103
|
+
grep -q "quick-fix" SKILL-INDEX.md && echo "OK: in SKILL-INDEX"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Example
|
|
107
|
+
|
|
108
|
+
### Bosnia flag missing from FLAGS dictionary
|
|
109
|
+
|
|
110
|
+
```gherkin
|
|
111
|
+
Given a bug where FLAGS dictionary is missing entry "Bosnia"
|
|
112
|
+
And no logic depends on the missing entry (purely a data gap)
|
|
113
|
+
When the agent invokes quick-fix
|
|
114
|
+
Then the missing entry is added to the dictionary
|
|
115
|
+
And a one-line verify confirms the key exists: grep -q "Bosnia" src/flags.js
|
|
116
|
+
And a fix: commit is created with the skipped-skills rationale in the body
|
|
117
|
+
And the change is ready for release-branch
|
|
118
|
+
```
|
|
@@ -23,7 +23,30 @@ Audit SKILL.md catalog for drift, stale triggers, missing HARD GATEs, and INDEX
|
|
|
23
23
|
1. Run `bash scripts/audit-catalog.sh` to verify pi/skills ↔ source SKILL.md sync. Mismatch is a critical finding.
|
|
24
24
|
2. Run mode; for each skill check: exists, verb-noun, <300 lines total, HARD GATE present, INDEX row matches.
|
|
25
25
|
3. Write `specs/STOCKTAKE-<date>.md` with findings table (skill, issue, severity).
|
|
26
|
-
4.
|
|
26
|
+
4. **Effectiveness report (--full mode only):** Read `specs/state.yaml` `metrics.skill_timings` and report:
|
|
27
|
+
- Top 5 most-used skills (by calls, total_seconds)
|
|
28
|
+
- Skills with zero calls (potential dead weight)
|
|
29
|
+
- Skills with high average time (candidates for `evolve-skill`)
|
|
30
|
+
5. Critical findings → `plan-work` story; cosmetic → `evolve-skill` candidate.
|
|
31
|
+
|
|
32
|
+
### Skill timing data (`metrics.skill_timings`)
|
|
33
|
+
|
|
34
|
+
In `--full` mode, read `specs/state.yaml` `metrics.skill_timings` for per-skill usage stats:
|
|
35
|
+
|
|
36
|
+
```yaml
|
|
37
|
+
metrics:
|
|
38
|
+
skill_timings:
|
|
39
|
+
survey-context:
|
|
40
|
+
calls: 12
|
|
41
|
+
total_seconds: 180
|
|
42
|
+
avg_seconds: 15.0
|
|
43
|
+
develop-tdd:
|
|
44
|
+
calls: 30
|
|
45
|
+
total_seconds: 5400
|
|
46
|
+
avg_seconds: 180.0
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Timing data is populated by `scripts/bp-timing.sh start|end <skill>` calls within critical-path skills.
|
|
27
50
|
|
|
28
51
|
## Verify
|
|
29
52
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# [2.19.0](https://github.com/danielvm-git/bigpowers/compare/v2.18.0...v2.19.0) (2026-06-21)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **skill:** quick-fix — fast-path for trivial data-only fixes ([77090cb](https://github.com/danielvm-git/bigpowers/commit/77090cb8236c8fc1129773be4391abb67c9401a9))
|
|
7
|
+
|
|
8
|
+
# [2.18.0](https://github.com/danielvm-git/bigpowers/compare/v2.17.0...v2.18.0) (2026-06-21)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **e18s05:** auto-timing helper + stocktake effectiveness ([1542bb7](https://github.com/danielvm-git/bigpowers/commit/1542bb7652c7ba1edb893260c7e586f63e416259))
|
|
14
|
+
|
|
1
15
|
# [2.17.0](https://github.com/danielvm-git/bigpowers/compare/v2.16.0...v2.17.0) (2026-06-21)
|
|
2
16
|
|
|
3
17
|
|
package/SKILL-INDEX.md
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
> **DO NOT EDIT** — This file is auto-generated by `scripts/generate-skill-index.sh`.
|
|
4
4
|
> Edit `SKILL.md` source files or `skills-lock.json` instead. Run `bash scripts/sync-skills.sh` to regenerate.
|
|
5
5
|
|
|
6
|
-
**Generated:** 2026-06-21T21:
|
|
7
|
-
**Skills:**
|
|
6
|
+
**Generated:** 2026-06-21T21:50:19Z
|
|
7
|
+
**Skills:** 68
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
| Discover | 6 | `elaborate-spec, map-codebase, research-first, search-skills, survey-context, using-bigpowers` |
|
|
16
16
|
| Design | 7 | `deepen-architecture, define-language, define-success, design-interface, grill-me, grill-with-docs, model-domain` |
|
|
17
17
|
| Plan | 9 | `assess-impact, change-request, plan-refactor, plan-release, plan-work, run-planning, scope-work, seed-conventions, slice-tasks` |
|
|
18
|
-
| Build |
|
|
18
|
+
| Build | 18 | `align-grid, build-epic, craft-skill, deploy, develop-tdd, execute-plan, guard-git, hook-commits, kickoff-branch, orchestrate-project, publish-package, quick-fix, setup-environment, smoke-test, spike-prototype, validate-contracts, wire-ci, wire-observability` |
|
|
19
19
|
| Verify | 12 | `audit-code, diagnose-root, enforce-first, fix-bug, inspect-quality, investigate-bug, request-review, respond-review, run-evals, trace-requirement, validate-fix, verify-work` |
|
|
20
20
|
| Release | 2 | `commit-message, release-branch` |
|
|
21
21
|
| Sustain | 13 | `compose-workflow, delegate-task, dispatch-agents, edit-document, evolve-skill, migrate-spec, organize-workspace, reset-baseline, session-state, simulate-agents, stocktake-skills, terse-mode, write-document` |
|
|
22
|
-
| **TOTAL** | **
|
|
22
|
+
| **TOTAL** | **67** | |
|
|
23
23
|
|
|
24
24
|
---
|
|
25
25
|
|
|
@@ -60,41 +60,42 @@
|
|
|
60
60
|
| 31 | Build | `kickoff-branch` | Create a git worktree and feature branch, then verify a clean test baseline befo | ✅ Active |
|
|
61
61
|
| 32 | Build | `orchestrate-project` | Meta-skill that enforces the 6-phase core loop (discover → elaborate → plan | ✅ Active |
|
|
62
62
|
| 33 | Build | `publish-package` | "Package registry publishing for npm, crates.io, PyPI, and Homebrew. Verifies pr | ✅ Active |
|
|
63
|
-
| 34 | Build | `
|
|
64
|
-
| 35 | Build | `
|
|
65
|
-
| 36 | Build | `
|
|
66
|
-
| 37 | Build | `
|
|
67
|
-
| 38 | Build | `
|
|
68
|
-
| 39 | Build | `wire-
|
|
69
|
-
| 40 |
|
|
70
|
-
| 41 | Verify | `
|
|
71
|
-
| 42 | Verify | `
|
|
72
|
-
| 43 | Verify | `
|
|
73
|
-
| 44 | Verify | `
|
|
74
|
-
| 45 | Verify | `
|
|
75
|
-
| 46 | Verify | `
|
|
76
|
-
| 47 | Verify | `
|
|
77
|
-
| 48 | Verify | `
|
|
78
|
-
| 49 | Verify | `
|
|
79
|
-
| 50 | Verify | `
|
|
80
|
-
| 51 | Verify | `
|
|
81
|
-
| 52 |
|
|
82
|
-
| 53 | Release | `
|
|
83
|
-
| 54 |
|
|
84
|
-
| 55 | Sustain | `
|
|
85
|
-
| 56 | Sustain | `
|
|
86
|
-
| 57 | Sustain | `
|
|
87
|
-
| 58 | Sustain | `
|
|
88
|
-
| 59 | Sustain | `
|
|
89
|
-
| 60 | Sustain | `
|
|
90
|
-
| 61 | Sustain | `
|
|
91
|
-
| 62 | Sustain | `
|
|
92
|
-
| 63 | Sustain | `
|
|
93
|
-
| 64 | Sustain | `
|
|
94
|
-
| 65 | Sustain | `
|
|
95
|
-
| 66 | Sustain | `
|
|
96
|
-
|
|
97
|
-
|
|
63
|
+
| 34 | Build | `quick-fix` | "Streamlined fast-path for trivial data-only fixes — no TDD, no branching cere | ✅ Active |
|
|
64
|
+
| 35 | Build | `setup-environment` | Pre-install dependencies and configure tools before development work begins. Use | ✅ Active |
|
|
65
|
+
| 36 | Build | `smoke-test` | "Post-deploy health-check against a live URL. Validates HTTP status, response co | ✅ Active |
|
|
66
|
+
| 37 | Build | `spike-prototype` | Throw-away prototype for unknown problem spaces. Output is learning notes in spe | ✅ Active |
|
|
67
|
+
| 38 | Build | `validate-contracts` | "Assert data shape consistency across system boundaries — live API responses a | ✅ Active |
|
|
68
|
+
| 39 | Build | `wire-ci` | "CI pipeline setup with pre-built templates and local validation. Generates GitH | ✅ Active |
|
|
69
|
+
| 40 | Build | `wire-observability` | Add structured JSON logging, observability commands, and idempotent setup script | ✅ Active |
|
|
70
|
+
| 41 | Verify | `audit-code` | Self-review checklist for the coding agent to run before dispatching a reviewer. | ✅ Active |
|
|
71
|
+
| 42 | Verify | `diagnose-root` | Run 4-phase root cause analysis — reproduce, isolate, hypothesize, verify. Use | ✅ Active |
|
|
72
|
+
| 43 | Verify | `enforce-first` | Apply the F.I.R.S.T test quality rubric (Fast, Independent, Repeatable, Self-Val | ✅ Active |
|
|
73
|
+
| 44 | Verify | `fix-bug` | Bug fix orchestrator — active_flow fix_bug; reads specs/bugs/BUG-*.md; chains | ✅ Active |
|
|
74
|
+
| 45 | Verify | `inspect-quality` | Interactive QA session where user reports bugs or issues conversationally, and t | ✅ Active |
|
|
75
|
+
| 46 | Verify | `investigate-bug` | Investigate a bug or issue by exploring the codebase to find root cause, then wr | ✅ Active |
|
|
76
|
+
| 47 | Verify | `request-review` | Dispatch a fresh reviewer agent with a clean context to critique the code after | ✅ Active |
|
|
77
|
+
| 48 | Verify | `respond-review` | Act on a reviewer agent's feedback systematically — categorize findings, apply | ✅ Active |
|
|
78
|
+
| 49 | Verify | `run-evals` | Eval-Driven Development — define capability and regression evals before buildi | ✅ Active |
|
|
79
|
+
| 50 | Verify | `trace-requirement` | Link story IDs from specs/release-plan.yaml + epic capsule directories to the im | ✅ Active |
|
|
80
|
+
| 51 | Verify | `validate-fix` | Prove a fix works before declaring done — re-run the failing test, run the ful | ✅ Active |
|
|
81
|
+
| 52 | Verify | `verify-work` | Multi-phase UAT gate — cold-start smoke, build, typecheck, lint, tests, step-b | ✅ Active |
|
|
82
|
+
| 53 | Release | `commit-message` | Reviews working-tree changes, then drafts a Conventional Commits title/body and | ✅ Active |
|
|
83
|
+
| 54 | Release | `release-branch` | Make the merge/PR/keep/discard decision for a feature branch, verify coverage ga | ✅ Active |
|
|
84
|
+
| 55 | Sustain | `compose-workflow` | Chain multiple bigpowers skills into a custom workflow recipe saved in specs/. U | ✅ Active |
|
|
85
|
+
| 56 | Sustain | `delegate-task` | Delegate one complex task to a single subagent, review its work in two stages be | ✅ Active |
|
|
86
|
+
| 57 | Sustain | `dispatch-agents` | Dispatch multiple subagents in parallel on independent tasks. No waiting between | ✅ Active |
|
|
87
|
+
| 58 | Sustain | `edit-document` | Edit and improve documents by restructuring sections, improving clarity, and tig | ✅ Active |
|
|
88
|
+
| 59 | Sustain | `evolve-skill` | Benchmark-gated skill evolution — consume bigpowers-benchmark report, propose | ✅ Active |
|
|
89
|
+
| 60 | Sustain | `migrate-spec` | Detect GSD, spec-kit, or BMAD spec artifacts and transform them into bigpowers Y | ✅ Active |
|
|
90
|
+
| 61 | Sustain | `organize-workspace` | Scans the active workspace for disposable artifacts—logs, caches, stale build | ✅ Active |
|
|
91
|
+
| 62 | Sustain | `reset-baseline` | Restore the project to a known clean state between agent runs or experiments. Us | ✅ Active |
|
|
92
|
+
| 63 | Sustain | `session-state` | Track implementation decisions and progress in specs/state.yaml to prevent conte | ✅ Active |
|
|
93
|
+
| 64 | Sustain | `simulate-agents` | Run Mock User and Auditor agents against a feature in fresh contexts before huma | ✅ Active |
|
|
94
|
+
| 65 | Sustain | `stocktake-skills` | Sequential subagent batch audit of the bigpowers skill catalog — Quick Scan (c | ✅ Active |
|
|
95
|
+
| 66 | Sustain | `terse-mode` | Fallback ultra-compressed communication mode. Cuts token usage ~75% by dropping | ✅ Active |
|
|
96
|
+
| 67 | Sustain | `write-document` | Write, organize, and sync high-integrity technical documents using the BMAD meth | ✅ Active |
|
|
97
|
+
|
|
98
|
+
**Total: 67 active skills.**
|
|
98
99
|
|
|
99
100
|
---
|
|
100
101
|
|
package/package.json
CHANGED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: quick-fix
|
|
3
|
+
description: "Streamlined fast-path for trivial data-only fixes — no TDD, no branching ceremony. Collapses 6 skills into 2 for changes that are purely data with no logic risk. Aborts with fallback to investigate-bug if guardrails trigger."
|
|
4
|
+
model: sonnet
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
# Quick Fix
|
|
9
|
+
|
|
10
|
+
Fast-track for trivial data-only fixes that do not require the full bug-fix chain.
|
|
11
|
+
|
|
12
|
+
When a bug fix is purely data — an add-missing-key, a typo correction, a config value update — the standard 6-skill chain (investigate-bug → diagnose-root → develop-tdd → kickoff-branch → verify-work → release-branch) is wasteful overhead. Quick-fix collapses it to 2 skills: **quick-fix** then **release-branch**.
|
|
13
|
+
|
|
14
|
+
## Entry Criteria (ALL must be true)
|
|
15
|
+
|
|
16
|
+
Before invoking quick-fix, evaluate every item in this checklist:
|
|
17
|
+
|
|
18
|
+
1. **Purely data change** — adding a missing key, fixing a typo, updating a config value, correcting a constant
|
|
19
|
+
2. **No logic change** — no function signature, condition, loop, or control flow is modified
|
|
20
|
+
3. **No refactor risk** — the change does not reorganize or rename existing structures
|
|
21
|
+
4. **No API surface change** — no exported symbol, interface, or contract changes
|
|
22
|
+
5. **Verifiable with a single assertion** — one test, one curl, one grep can prove it works
|
|
23
|
+
6. **Affects ≤ 1 file**
|
|
24
|
+
7. **Affects ≤ 5 lines changed**
|
|
25
|
+
|
|
26
|
+
## Guardrails (HARD ABORT — all must pass)
|
|
27
|
+
|
|
28
|
+
If ANY guardrail triggers, **abort immediately** and suggest `investigate-bug` instead:
|
|
29
|
+
|
|
30
|
+
| Guardrail | Check |
|
|
31
|
+
|-----------|-------|
|
|
32
|
+
| **>1 file** | The fix touches more than one file |
|
|
33
|
+
| **>5 lines** | The diff exceeds 5 lines |
|
|
34
|
+
| **Logic change** | Any function signature, condition, or loop is modified |
|
|
35
|
+
| **Complex verify** | The verify command is more than one pipeline |
|
|
36
|
+
| **Test breakage** | Running `npm test` or equivalent breaks any existing test |
|
|
37
|
+
|
|
38
|
+
> **Fallback:** If any guardrail triggers, tell the user: *"This fix exceeds quick-fix guardrails. Use `investigate-bug` for the full TDD bug-fix chain instead."*
|
|
39
|
+
|
|
40
|
+
## Fast-Path Workflow
|
|
41
|
+
|
|
42
|
+
Only 2 skills needed for eligible fixes:
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
quick-fix → apply change, run one-line verify, commit with fix:
|
|
46
|
+
release-branch → merge and ship (existing skill)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Skipped skills (with justification):**
|
|
50
|
+
|
|
51
|
+
| Skipped skill | Why skipped |
|
|
52
|
+
|---------------|-------------|
|
|
53
|
+
| `investigate-bug` | Root cause is obvious (data gap, not logic error) |
|
|
54
|
+
| `diagnose-root` | No isolation needed — the data point is the root cause |
|
|
55
|
+
| `develop-tdd` | No logic to test — single assertion proves correctness |
|
|
56
|
+
| `kickoff-branch` | Change is so small it does not warrant a separate worktree |
|
|
57
|
+
|
|
58
|
+
> Justification is included in the `fix:` commit body so the audit trail is preserved.
|
|
59
|
+
|
|
60
|
+
## Process
|
|
61
|
+
|
|
62
|
+
### 1. Evaluate entry criteria
|
|
63
|
+
|
|
64
|
+
Run the entry criteria checklist above. If any criterion fails → abort, suggest `investigate-bug`.
|
|
65
|
+
|
|
66
|
+
### 2. Apply the fix
|
|
67
|
+
|
|
68
|
+
Make the data change — add the missing key, fix the typo, update the value. Keep it to ≤5 lines in 1 file.
|
|
69
|
+
|
|
70
|
+
### 3. Verify
|
|
71
|
+
|
|
72
|
+
Run the single-assertion verify command. Example:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
grep -q "Bosnia" src/flags.js && echo "FIX VERIFIED" || echo "FIX FAILED"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 4. Commit
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
git add <file>
|
|
82
|
+
git commit -m "fix(<scope>): <description>"
|
|
83
|
+
git commit --amend -m "fix(<scope>): <description>
|
|
84
|
+
|
|
85
|
+
Skipped skills (justified for data-only change):
|
|
86
|
+
- investigate-bug: root cause is a data gap, not a logic error
|
|
87
|
+
- diagnose-root: the missing data point is the root cause
|
|
88
|
+
- develop-tdd: single assertion proves correctness
|
|
89
|
+
- kickoff-branch: change is too small for a separate worktree"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 5. Release
|
|
93
|
+
|
|
94
|
+
Invoke `release-branch` to merge and ship.
|
|
95
|
+
|
|
96
|
+
## Verify
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
test -f quick-fix/SKILL.md && echo "OK: skill file exists" || echo "FAIL: no skill file"
|
|
100
|
+
grep -q "name: quick-fix" quick-fix/SKILL.md && echo "OK: frontmatter" || echo "FAIL: frontmatter"
|
|
101
|
+
grep -qi "data.only\|trivial\|fast.path\|guardrail\|abort" quick-fix/SKILL.md && echo "OK: entry criteria and guardrails"
|
|
102
|
+
grep -q "quick-fix" SKILL-INDEX.md && echo "OK: in SKILL-INDEX"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Example
|
|
106
|
+
|
|
107
|
+
### Bosnia flag missing from FLAGS dictionary
|
|
108
|
+
|
|
109
|
+
```gherkin
|
|
110
|
+
Given a bug where FLAGS dictionary is missing entry "Bosnia"
|
|
111
|
+
And no logic depends on the missing entry (purely a data gap)
|
|
112
|
+
When the agent invokes quick-fix
|
|
113
|
+
Then the missing entry is added to the dictionary
|
|
114
|
+
And a one-line verify confirms the key exists: grep -q "Bosnia" src/flags.js
|
|
115
|
+
And a fix: commit is created with the skipped-skills rationale in the body
|
|
116
|
+
And the change is ready for release-branch
|
|
117
|
+
```
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# bp-timing.sh — Record skill invocation timings for stocktake effectiveness analysis.
|
|
3
|
+
# Usage: bash scripts/bp-timing.sh start <skill-name>
|
|
4
|
+
# bash scripts/bp-timing.sh end <skill-name>
|
|
5
|
+
# Requires: python3 (for YAML-safe state updates)
|
|
6
|
+
set -euo pipefail
|
|
7
|
+
|
|
8
|
+
STATE_YAML="specs/state.yaml"
|
|
9
|
+
TIMINGS_KEY="metrics.skill_timings"
|
|
10
|
+
|
|
11
|
+
usage() {
|
|
12
|
+
echo "Usage: $0 start|end <skill-name>" >&2
|
|
13
|
+
exit 1
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
[ $# -ne 2 ] && usage
|
|
17
|
+
|
|
18
|
+
ACTION="$1"
|
|
19
|
+
SKILL="$2"
|
|
20
|
+
|
|
21
|
+
case "$ACTION" in
|
|
22
|
+
start)
|
|
23
|
+
STAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
24
|
+
python3 -c "
|
|
25
|
+
import yaml, sys
|
|
26
|
+
try:
|
|
27
|
+
with open('$STATE_YAML') as f:
|
|
28
|
+
data = yaml.safe_load(f) or {}
|
|
29
|
+
except: data = {}
|
|
30
|
+
|
|
31
|
+
metrics = data.setdefault('metrics', {})
|
|
32
|
+
timings = metrics.setdefault('skill_timings', {})
|
|
33
|
+
|
|
34
|
+
if '$SKILL' not in timings:
|
|
35
|
+
timings['$SKILL'] = {'calls': 0, 'total_seconds': 0, 'avg_seconds': 0}
|
|
36
|
+
|
|
37
|
+
timings['$SKILL']['_start'] = '$STAMP'
|
|
38
|
+
with open('$STATE_YAML', 'w') as f:
|
|
39
|
+
yaml.dump(data, f, default_flow_style=False, sort_keys=False, allow_unicode=True)
|
|
40
|
+
" 2>/dev/null || echo "WARN: timing start failed (yaml tools missing?)" >&2
|
|
41
|
+
;;
|
|
42
|
+
|
|
43
|
+
end)
|
|
44
|
+
STAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
45
|
+
python3 -c "
|
|
46
|
+
import yaml
|
|
47
|
+
from datetime import datetime
|
|
48
|
+
|
|
49
|
+
with open('$STATE_YAML') as f:
|
|
50
|
+
data = yaml.safe_load(f) or {}
|
|
51
|
+
|
|
52
|
+
metrics = data.setdefault('metrics', {})
|
|
53
|
+
timings = metrics.setdefault('skill_timings', {})
|
|
54
|
+
|
|
55
|
+
if '$SKILL' in timings and '_start' in timings['$SKILL']:
|
|
56
|
+
start_t = datetime.fromisoformat(timings['$SKILL']['_start'].replace('Z','+00:00'))
|
|
57
|
+
end_t = datetime.fromisoformat('$STAMP'.replace('Z','+00:00'))
|
|
58
|
+
elapsed = (end_t - start_t).total_seconds()
|
|
59
|
+
|
|
60
|
+
entry = timings['$SKILL']
|
|
61
|
+
entry['calls'] = entry.get('calls', 0) + 1
|
|
62
|
+
entry['total_seconds'] = entry.get('total_seconds', 0) + elapsed
|
|
63
|
+
entry['avg_seconds'] = entry['total_seconds'] / entry['calls']
|
|
64
|
+
del entry['_start']
|
|
65
|
+
|
|
66
|
+
with open('$STATE_YAML', 'w') as f:
|
|
67
|
+
yaml.dump(data, f, default_flow_style=False, sort_keys=False, allow_unicode=True)
|
|
68
|
+
" 2>/dev/null || echo "WARN: timing end failed" >&2
|
|
69
|
+
;;
|
|
70
|
+
|
|
71
|
+
*)
|
|
72
|
+
usage
|
|
73
|
+
;;
|
|
74
|
+
esac
|
package/skills-lock.json
CHANGED
|
@@ -196,6 +196,11 @@
|
|
|
196
196
|
"sha256": "25ead1dd4d174d54",
|
|
197
197
|
"path": "publish-package/SKILL.md"
|
|
198
198
|
},
|
|
199
|
+
"quick-fix": {
|
|
200
|
+
"description": "\"Streamlined fast-path for trivial data-only fixes — no TDD, no branching ceremony. Collapses 6 skills into 2 for changes that are purely data with no logic risk. Aborts with fallback to investigate-bug if guardrails trigger.\"",
|
|
201
|
+
"sha256": "6b83f22481ff4995",
|
|
202
|
+
"path": "quick-fix/SKILL.md"
|
|
203
|
+
},
|
|
199
204
|
"release-branch": {
|
|
200
205
|
"description": "Make the merge/PR/keep/discard decision for a feature branch, verify coverage gates, create the PR with gh, and clean up the worktree. Use when a feature is done and ready to ship, or when user says \"release\", \"merge\", or \"open a PR\".",
|
|
201
206
|
"sha256": "6b2df2c92230d098",
|
|
@@ -278,7 +283,7 @@
|
|
|
278
283
|
},
|
|
279
284
|
"stocktake-skills": {
|
|
280
285
|
"description": "Sequential subagent batch audit of the bigpowers skill catalog — Quick Scan (changed only) or Full (all skills). Use during sustain phase, before a major release, or when catalog drift is suspected.",
|
|
281
|
-
"sha256": "
|
|
286
|
+
"sha256": "c58bf4f70ff02cd3",
|
|
282
287
|
"path": "stocktake-skills/SKILL.md"
|
|
283
288
|
},
|
|
284
289
|
"survey-context": {
|
|
@@ -22,7 +22,30 @@ Audit SKILL.md catalog for drift, stale triggers, missing HARD GATEs, and INDEX
|
|
|
22
22
|
1. Run `bash scripts/audit-catalog.sh` to verify pi/skills ↔ source SKILL.md sync. Mismatch is a critical finding.
|
|
23
23
|
2. Run mode; for each skill check: exists, verb-noun, <300 lines total, HARD GATE present, INDEX row matches.
|
|
24
24
|
3. Write `specs/STOCKTAKE-<date>.md` with findings table (skill, issue, severity).
|
|
25
|
-
4.
|
|
25
|
+
4. **Effectiveness report (--full mode only):** Read `specs/state.yaml` `metrics.skill_timings` and report:
|
|
26
|
+
- Top 5 most-used skills (by calls, total_seconds)
|
|
27
|
+
- Skills with zero calls (potential dead weight)
|
|
28
|
+
- Skills with high average time (candidates for `evolve-skill`)
|
|
29
|
+
5. Critical findings → `plan-work` story; cosmetic → `evolve-skill` candidate.
|
|
30
|
+
|
|
31
|
+
### Skill timing data (`metrics.skill_timings`)
|
|
32
|
+
|
|
33
|
+
In `--full` mode, read `specs/state.yaml` `metrics.skill_timings` for per-skill usage stats:
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
metrics:
|
|
37
|
+
skill_timings:
|
|
38
|
+
survey-context:
|
|
39
|
+
calls: 12
|
|
40
|
+
total_seconds: 180
|
|
41
|
+
avg_seconds: 15.0
|
|
42
|
+
develop-tdd:
|
|
43
|
+
calls: 30
|
|
44
|
+
total_seconds: 5400
|
|
45
|
+
avg_seconds: 180.0
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Timing data is populated by `scripts/bp-timing.sh start|end <skill>` calls within critical-path skills.
|
|
26
49
|
|
|
27
50
|
## Verify
|
|
28
51
|
|