bigpowers 1.0.0 → 1.1.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/CHANGELOG.md +14 -0
- package/CLAUDE.md +10 -8
- package/CONVENTIONS.md +8 -3
- package/GEMINI.md +9 -8
- package/README.md +57 -21
- package/RELEASE.md +10 -0
- package/SKILL-INDEX.md +98 -88
- package/assess-impact/SKILL.md +1 -0
- package/audit-code/SKILL.md +18 -0
- package/change-request/SKILL.md +1 -0
- package/commit-message/SKILL.md +1 -0
- package/compose-workflow/REFERENCE.md +13 -0
- package/compose-workflow/SKILL.md +23 -0
- package/countable-story-format.md +1 -1
- package/craft-skill/REFERENCE.md +1 -1
- package/craft-skill/SKILL.md +6 -1
- package/deepen-architecture/SKILL.md +15 -2
- package/define-language/SKILL.md +1 -0
- package/define-success/SKILL.md +1 -0
- package/delegate-task/SKILL.md +7 -2
- package/design-interface/SKILL.md +1 -0
- package/develop-tdd/SKILL.md +10 -9
- package/diagnose-root/SKILL.md +22 -0
- package/dispatch-agents/SKILL.md +13 -3
- package/edit-document/SKILL.md +1 -0
- package/elaborate-spec/SKILL.md +1 -0
- package/enforce-first/SKILL.md +1 -0
- package/evolve-skill/REFERENCE.md +12 -0
- package/evolve-skill/SKILL.md +24 -0
- package/execute-plan/SKILL.md +12 -4
- package/grill-me/SKILL.md +1 -0
- package/grill-with-docs/REFERENCE.md +5 -0
- package/grill-with-docs/SKILL.md +28 -0
- package/guard-git/REFERENCE.md +36 -6
- package/guard-git/SKILL.md +5 -2
- package/guard-git/scripts/lib/git-guardrails-core.sh +0 -1
- package/hook-commits/SKILL.md +1 -0
- package/hooks/pre-tool-use.sh +43 -46
- package/inspect-quality/SKILL.md +9 -6
- package/investigate-bug/SKILL.md +18 -5
- package/kickoff-branch/SKILL.md +13 -5
- package/map-codebase/SKILL.md +1 -0
- package/migrate-spec/SKILL.md +1 -0
- package/model-domain/SKILL.md +10 -0
- package/orchestrate-project/REFERENCE.md +13 -7
- package/orchestrate-project/SKILL.md +7 -5
- package/organize-workspace/SKILL.md +1 -0
- package/package.json +3 -2
- package/plan-refactor/SKILL.md +1 -0
- package/plan-release/SKILL.md +1 -0
- package/plan-work/SKILL.md +8 -3
- package/profiles/node-service.md +28 -0
- package/profiles/solo-git.md +39 -0
- package/profiles/swift.md +27 -0
- package/profiles/typescript-vue.md +28 -0
- package/release-branch/SKILL.md +51 -11
- package/request-review/SKILL.md +2 -1
- package/research-first/REFERENCE.md +29 -0
- package/research-first/SKILL.md +31 -0
- package/reset-baseline/SKILL.md +21 -0
- package/respond-review/SKILL.md +1 -0
- package/run-evals/REFERENCE.md +27 -0
- package/run-evals/SKILL.md +27 -0
- package/scope-work/SKILL.md +22 -0
- package/scripts/add-model-frontmatter.sh +82 -0
- package/scripts/build-skill-index.sh +28 -0
- package/scripts/install.sh +5 -1
- package/scripts/land-branch.sh +166 -0
- package/scripts/sync-skills.sh +5 -0
- package/search-skills/SKILL.md +20 -0
- package/seed-conventions/SKILL.md +3 -0
- package/session-state/SKILL.md +25 -3
- package/setup-environment/SKILL.md +22 -0
- package/simulate-agents/SKILL.md +24 -0
- package/slice-tasks/SKILL.md +22 -0
- package/spike-prototype/SKILL.md +1 -0
- package/stocktake-skills/REFERENCE.md +8 -0
- package/stocktake-skills/SKILL.md +28 -0
- package/survey-context/SKILL.md +12 -11
- package/terse-mode/SKILL.md +1 -0
- package/trace-requirement/SKILL.md +1 -0
- package/using-bigpowers/SKILL.md +30 -4
- package/validate-fix/SKILL.md +9 -5
- package/verify-work/REFERENCE.md +23 -0
- package/verify-work/SKILL.md +39 -0
- package/visual-dashboard/SKILL.md +51 -1
- package/wire-observability/SKILL.md +1 -0
- package/write-document/REFERENCE.md +166 -0
- package/write-document/SKILL.md +12 -1
package/hooks/pre-tool-use.sh
CHANGED
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
# bigpowers — pre-tool-use.sh
|
|
3
3
|
# Harness-agnostic Git Safety Hook for Claude Code, Cursor, and Gemini CLI.
|
|
4
4
|
# Enforces:
|
|
5
|
-
# 1. Block dangerous commands (push, reset --hard, etc.)
|
|
5
|
+
# 1. Block dangerous commands (force push, reset --hard, etc.)
|
|
6
6
|
# 2. Enforce Conventional Commits for 'git commit'
|
|
7
7
|
# 3. Block direct commits/pushes to protected branches (main, master)
|
|
8
|
+
# unless GIT_BIGPOWERS_LAND=1 (scripts/land-branch.sh only)
|
|
8
9
|
|
|
9
10
|
set -euo pipefail
|
|
10
11
|
|
|
11
12
|
# Configuration
|
|
12
13
|
PROTECTED_BRANCHES=("main" "master")
|
|
13
14
|
DANGEROUS_PATTERNS=(
|
|
14
|
-
"git push"
|
|
15
15
|
"git reset --hard"
|
|
16
16
|
"git clean -fd"
|
|
17
17
|
"git clean -f"
|
|
@@ -19,14 +19,26 @@ DANGEROUS_PATTERNS=(
|
|
|
19
19
|
"git checkout \\."
|
|
20
20
|
"git restore \\."
|
|
21
21
|
"push --force"
|
|
22
|
+
"push -f"
|
|
22
23
|
"reset --hard"
|
|
23
24
|
)
|
|
24
25
|
CONVENTIONAL_COMMITS_REGEX='^(feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\(.+\))?!?:[[:space:]].+'
|
|
26
|
+
LAND_MODE="${GIT_BIGPOWERS_LAND:-}"
|
|
25
27
|
|
|
26
28
|
# Detect mode from environment (for Gemini/Claude/Cursor parity)
|
|
27
29
|
# GIT_GUARDRAILS_MODE: claude (default) | cursor | gemini
|
|
28
30
|
MODE="${GIT_GUARDRAILS_MODE:-claude}"
|
|
29
31
|
|
|
32
|
+
deny() {
|
|
33
|
+
local reason="$1"
|
|
34
|
+
if [ "$MODE" = "gemini" ]; then
|
|
35
|
+
jq -nc --arg reason "$reason" '{decision: "deny", reason: $reason}'
|
|
36
|
+
else
|
|
37
|
+
echo "$reason" >&2
|
|
38
|
+
exit 2
|
|
39
|
+
fi
|
|
40
|
+
}
|
|
41
|
+
|
|
30
42
|
# Read input from stdin
|
|
31
43
|
INPUT=$(cat)
|
|
32
44
|
|
|
@@ -38,17 +50,10 @@ if [ -z "$COMMAND" ]; then
|
|
|
38
50
|
exit 0
|
|
39
51
|
fi
|
|
40
52
|
|
|
41
|
-
# 1. Check for dangerous patterns
|
|
53
|
+
# 1. Check for dangerous patterns (git push is NOT blanket-blocked)
|
|
42
54
|
for p in "${DANGEROUS_PATTERNS[@]}"; do
|
|
43
55
|
if echo "$COMMAND" | grep -qE "$p"; then
|
|
44
|
-
|
|
45
|
-
if [ "$MODE" = "gemini" ]; then
|
|
46
|
-
jq -nc --arg reason "$REASON" '{decision: "deny", reason: $reason}'
|
|
47
|
-
else
|
|
48
|
-
echo "$REASON" >&2
|
|
49
|
-
exit 2
|
|
50
|
-
fi
|
|
51
|
-
exit 0
|
|
56
|
+
deny "BLOCKED: '$COMMAND' matches dangerous pattern '$p'. Use a safer approach or ask the user."
|
|
52
57
|
fi
|
|
53
58
|
done
|
|
54
59
|
|
|
@@ -56,25 +61,36 @@ done
|
|
|
56
61
|
if [[ "$COMMAND" =~ git[[:space:]]+commit ]] || [[ "$COMMAND" =~ git[[:space:]]+push ]]; then
|
|
57
62
|
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown")
|
|
58
63
|
|
|
59
|
-
#
|
|
64
|
+
# Push to protected branches
|
|
60
65
|
if [[ "$COMMAND" =~ git[[:space:]]+push ]]; then
|
|
66
|
+
PUSH_TARGETS_PROTECTED=false
|
|
61
67
|
for b in "${PROTECTED_BRANCHES[@]}"; do
|
|
62
|
-
if [[ "$COMMAND" =~ [[:space:]]+$b
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
echo "$REASON" >&2
|
|
68
|
-
exit 2
|
|
69
|
-
fi
|
|
70
|
-
exit 0
|
|
68
|
+
if [[ "$COMMAND" =~ [[:space:]]+$b([[:space:]]|$) ]] \
|
|
69
|
+
|| [[ "$COMMAND" =~ :$b([[:space:]]|$) ]] \
|
|
70
|
+
|| [[ "$COMMAND" =~ refs/heads/$b ]]; then
|
|
71
|
+
PUSH_TARGETS_PROTECTED=true
|
|
72
|
+
break
|
|
71
73
|
fi
|
|
72
74
|
done
|
|
75
|
+
# Bare `git push` / `git push origin` with no ref (uses upstream from protected HEAD)
|
|
76
|
+
if [ "$PUSH_TARGETS_PROTECTED" = false ]; then
|
|
77
|
+
for b in "${PROTECTED_BRANCHES[@]}"; do
|
|
78
|
+
if [[ "$CURRENT_BRANCH" == "$b" ]] && {
|
|
79
|
+
[[ "$COMMAND" =~ ^git[[:space:]]+push$ ]] \
|
|
80
|
+
|| [[ "$COMMAND" =~ ^git[[:space:]]+push[[:space:]]+origin$ ]];
|
|
81
|
+
}; then
|
|
82
|
+
PUSH_TARGETS_PROTECTED=true
|
|
83
|
+
break
|
|
84
|
+
fi
|
|
85
|
+
done
|
|
86
|
+
fi
|
|
87
|
+
if [ "$PUSH_TARGETS_PROTECTED" = true ] && [ "$LAND_MODE" != "1" ]; then
|
|
88
|
+
deny "BLOCKED: Direct push to protected branch is forbidden. Use kickoff-branch + release-branch (solo-local: scripts/land-branch.sh) or team-pr via gh."
|
|
89
|
+
fi
|
|
73
90
|
fi
|
|
74
91
|
|
|
75
92
|
# Conventional Commits for 'git commit'
|
|
76
93
|
if [[ "$COMMAND" =~ git[[:space:]]+commit ]]; then
|
|
77
|
-
# Extract message from -m flag
|
|
78
94
|
MSG=""
|
|
79
95
|
if [[ "$COMMAND" =~ -m[[:space:]]+\"([^\"]+)\" ]]; then
|
|
80
96
|
MSG="${BASH_REMATCH[1]}"
|
|
@@ -85,39 +101,20 @@ if [[ "$COMMAND" =~ git[[:space:]]+commit ]] || [[ "$COMMAND" =~ git[[:space:]]+
|
|
|
85
101
|
if [ -n "$MSG" ]; then
|
|
86
102
|
SUBJECT=$(echo "$MSG" | head -n 1)
|
|
87
103
|
if [[ ! "$SUBJECT" =~ $CONVENTIONAL_COMMITS_REGEX ]]; then
|
|
88
|
-
|
|
89
|
-
if [ "$MODE" = "gemini" ]; then
|
|
90
|
-
jq -nc --arg reason "$REASON" '{decision: "deny", reason: $reason}'
|
|
91
|
-
else
|
|
92
|
-
echo "$REASON" >&2
|
|
93
|
-
exit 2
|
|
94
|
-
fi
|
|
95
|
-
exit 0
|
|
104
|
+
deny "BLOCKED: Commit message must follow Conventional Commits: <type>(<scope>): <subject>. Valid types: feat, fix, docs, style, refactor, perf, test, build, ci, chore."
|
|
96
105
|
fi
|
|
97
106
|
|
|
98
107
|
if [ ${#SUBJECT} -gt 72 ]; then
|
|
99
|
-
|
|
100
|
-
if [ "$MODE" = "gemini" ]; then
|
|
101
|
-
jq -nc --arg reason "$REASON" '{decision: "deny", reason: $reason}'
|
|
102
|
-
else
|
|
103
|
-
echo "$REASON" >&2
|
|
104
|
-
exit 2
|
|
105
|
-
fi
|
|
106
|
-
exit 0
|
|
108
|
+
deny "BLOCKED: Commit subject line must be 72 characters or less."
|
|
107
109
|
fi
|
|
108
110
|
fi
|
|
109
111
|
|
|
110
|
-
# Block direct commits to main
|
|
112
|
+
# Block direct commits to main unless land script is active
|
|
111
113
|
for b in "${PROTECTED_BRANCHES[@]}"; do
|
|
112
114
|
if [[ "$CURRENT_BRANCH" == "$b" ]]; then
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
jq -nc --arg reason "$REASON" '{decision: "deny", reason: $reason}'
|
|
116
|
-
else
|
|
117
|
-
echo "$REASON" >&2
|
|
118
|
-
exit 2
|
|
115
|
+
if [ "$LAND_MODE" != "1" ]; then
|
|
116
|
+
deny "BLOCKED: Direct commits to protected branch '$b' are forbidden. Use kickoff-branch to start a feature branch, or scripts/land-branch.sh to integrate."
|
|
119
117
|
fi
|
|
120
|
-
exit 0
|
|
121
118
|
fi
|
|
122
119
|
done
|
|
123
120
|
fi
|
package/inspect-quality/SKILL.md
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: inspect-quality
|
|
3
|
-
|
|
3
|
+
model: sonnet
|
|
4
|
+
description: Interactive QA session where user reports bugs or issues conversationally, and the agent logs them to specs/bugs/BUG-LOG.md with a structured audit schema. Explores the codebase in the background for context and domain language. Use when user wants to report bugs, do QA, or mentions "QA session".
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Inspect Quality
|
|
7
8
|
|
|
8
|
-
Run an interactive QA session. The user describes problems they're encountering. You clarify, explore the codebase for context, and log each issue to `specs/BUG-LOG.md` with a structured, durable format.
|
|
9
|
+
Run an interactive QA session. The user describes problems they're encountering. You clarify, explore the codebase for context, and log each issue to `specs/bugs/BUG-LOG.md` with a structured, durable format.
|
|
9
10
|
|
|
10
11
|
## For each issue the user raises
|
|
11
12
|
|
|
@@ -40,9 +41,9 @@ Keep as a single issue when:
|
|
|
40
41
|
- It's one behavior that's wrong in one place
|
|
41
42
|
- The symptoms are all caused by the same root behavior
|
|
42
43
|
|
|
43
|
-
### 4. Log to specs/BUG-LOG.md
|
|
44
|
+
### 4. Log to specs/bugs/BUG-LOG.md
|
|
44
45
|
|
|
45
|
-
Append the issue to `specs/BUG-LOG.md`. Create the
|
|
46
|
+
Append the issue to `specs/bugs/BUG-LOG.md`. Create the `specs/bugs/` directory if it doesn't exist.
|
|
46
47
|
|
|
47
48
|
#### BUG-LOG.md format
|
|
48
49
|
|
|
@@ -50,7 +51,7 @@ The file maintains a Markdown table with the following columns (derived from str
|
|
|
50
51
|
|
|
51
52
|
| Field | Description |
|
|
52
53
|
|-------|-------------|
|
|
53
|
-
| `bug_id` | `BUG-YYYY-MM-
|
|
54
|
+
| `bug_id` | `BUG-YYYY-MM-DDTHHMMSS` |
|
|
54
55
|
| `date` | `YYYY-MM-DD` |
|
|
55
56
|
| `severity` | `critical` / `high` / `medium` / `low` |
|
|
56
57
|
| `priority` | `p0` / `p1` / `p2` / `p3` |
|
|
@@ -69,6 +70,7 @@ The file maintains a Markdown table with the following columns (derived from str
|
|
|
69
70
|
| `release_type` | `patch` / `minor` / `major` (filled in after fix) |
|
|
70
71
|
| `commit_message` | Conventional Commits message (filled in after fix) |
|
|
71
72
|
| `follow_ups` | semicolon-separated follow-up items |
|
|
73
|
+
| `file` | path to detailed `specs/bugs/BUG-*.md` (filled in by investigate-bug) |
|
|
72
74
|
| `status` | `open` / `in-progress` / `fixed` / `wont-fix` |
|
|
73
75
|
|
|
74
76
|
When a bug is fixed (via `validate-fix`), update the relevant row with the resolution fields.
|
|
@@ -78,7 +80,7 @@ When a bug is fixed (via `validate-fix`), update the relevant row with the resol
|
|
|
78
80
|
For each bug, also append a detail section:
|
|
79
81
|
|
|
80
82
|
```markdown
|
|
81
|
-
### BUG-YYYY-MM-
|
|
83
|
+
### BUG-YYYY-MM-DDTHHMMSS: [short title]
|
|
82
84
|
|
|
83
85
|
**What happened:** [actual behavior, plain language]
|
|
84
86
|
**What I expected:** [expected behavior]
|
|
@@ -91,6 +93,7 @@ For each bug, also append a detail section:
|
|
|
91
93
|
|
|
92
94
|
#### Rules for all entries
|
|
93
95
|
|
|
96
|
+
- **bug_id** uses full timestamp: `BUG-YYYY-MM-DDTHHMMSS` — matches the individual bug file name in `specs/bugs/`
|
|
94
97
|
- **No file paths or line numbers** — these go stale
|
|
95
98
|
- **Use the project's domain language** (check `specs/UBIQUITOUS_LANGUAGE.md` if it exists)
|
|
96
99
|
- **Describe behaviors, not code** — "the sync service fails to apply the patch" not "applyPatch() throws"
|
package/investigate-bug/SKILL.md
CHANGED
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: investigate-bug
|
|
3
|
-
|
|
3
|
+
model: sonnet
|
|
4
|
+
description: Investigate a bug or issue by exploring the codebase to find root cause, then write a TDD-based fix plan to specs/bugs/BUG-*.md. Use when user reports a bug, wants to investigate a problem, mentions "triage", or wants to plan a fix.
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Investigate Bug
|
|
7
8
|
|
|
8
|
-
Investigate a reported problem, find its root cause, and write a TDD fix plan to `specs/
|
|
9
|
+
Investigate a reported problem, find its root cause, and write a TDD fix plan to `specs/bugs/BUG-*.md`. This is a mostly hands-off workflow — minimize questions to the user.
|
|
9
10
|
|
|
10
11
|
## Process
|
|
11
12
|
|
|
13
|
+
### 0. Read previous bug history
|
|
14
|
+
|
|
15
|
+
Before starting diagnosis:
|
|
16
|
+
|
|
17
|
+
1. Read `specs/bugs/BUG-LOG.md` (if it exists) — check for prior bugs in the same `scope` or with similar symptoms.
|
|
18
|
+
2. If a relevant prior bug is found, read the corresponding `specs/bugs/BUG-*.md` file to understand previous root cause analysis and fix approach.
|
|
19
|
+
3. Note in your investigation whether this is a recurrence, a related issue, or novel.
|
|
20
|
+
|
|
12
21
|
### 1. Capture the problem
|
|
13
22
|
|
|
14
23
|
Get a brief description of the issue from the user. If they haven't provided one, ask ONE question: "What's the problem you're seeing?"
|
|
@@ -58,12 +67,16 @@ Rules:
|
|
|
58
67
|
- Include a final refactor step if needed
|
|
59
68
|
- **Durability**: Only suggest fixes that would survive radical codebase changes. Tests assert on observable outcomes (API responses, UI state, user-visible effects), not internal state.
|
|
60
69
|
|
|
61
|
-
### 5. Write
|
|
70
|
+
### 5. Write the bug file
|
|
62
71
|
|
|
63
|
-
Save the investigation and fix plan to `specs/
|
|
72
|
+
Save the investigation and fix plan to `specs/bugs/BUG-YYYY-MM-DDTHHMMSS.md`. Create the `specs/bugs/` directory if it doesn't exist.
|
|
73
|
+
|
|
74
|
+
After writing, append a row to `specs/bugs/BUG-LOG.md` with: bug_id (same timestamp), date, severity, priority, scope, summary, and file path. Create `specs/bugs/BUG-LOG.md` if it doesn't exist.
|
|
64
75
|
|
|
65
76
|
<diagnosis-template>
|
|
66
77
|
|
|
78
|
+
# BUG-YYYY-MM-DDTHHMMSS: [short title]
|
|
79
|
+
|
|
67
80
|
## Problem
|
|
68
81
|
|
|
69
82
|
A clear description of the bug or issue, including:
|
|
@@ -108,4 +121,4 @@ A numbered list of RED-GREEN cycles:
|
|
|
108
121
|
|
|
109
122
|
</diagnosis-template>
|
|
110
123
|
|
|
111
|
-
After writing
|
|
124
|
+
After writing the bug file, print a one-line summary of the root cause and suggest running `kickoff-branch` next to create a fix branch.
|
package/kickoff-branch/SKILL.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: kickoff-branch
|
|
3
|
+
model: haiku
|
|
3
4
|
description: Create a git worktree and feature branch, then verify a clean test baseline before any code is written. Use when starting a new feature or task, when user wants to work in isolation from main, or mentions "start a branch" or "new worktree".
|
|
4
5
|
---
|
|
5
6
|
|
|
@@ -17,14 +18,21 @@ Create an isolated working environment before touching any code. A clean baselin
|
|
|
17
18
|
|
|
18
19
|
Ask if not already known: "What's the name of this feature or task?" Use it as the branch name slug (kebab-case, max 40 chars).
|
|
19
20
|
|
|
20
|
-
### 2.
|
|
21
|
+
### 2. Anchor on default branch (main or master)
|
|
22
|
+
|
|
23
|
+
> **HARD GATE** — Kickoff MUST start from an updated, clean default branch in the **primary** repository root (not a linked worktree).
|
|
21
24
|
|
|
22
25
|
```bash
|
|
23
|
-
|
|
24
|
-
git
|
|
26
|
+
# Detect default branch
|
|
27
|
+
DEFAULT=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@' || echo main)
|
|
28
|
+
|
|
29
|
+
git checkout "$DEFAULT"
|
|
30
|
+
git pull --ff-only origin "$DEFAULT" # skip if no remote
|
|
31
|
+
git status # working tree MUST be clean
|
|
32
|
+
git log --oneline -5
|
|
25
33
|
```
|
|
26
34
|
|
|
27
|
-
If working tree is dirty, ask the user to stash or commit first.
|
|
35
|
+
If working tree is dirty, ask the user to stash or commit first. If not on `$DEFAULT` after checkout, stop and fix before continuing.
|
|
28
36
|
|
|
29
37
|
### 3. Pre-flight & Conflict Resolution
|
|
30
38
|
|
|
@@ -84,4 +92,4 @@ Worktree: ../<task-slug>
|
|
|
84
92
|
Ready to develop.
|
|
85
93
|
```
|
|
86
94
|
|
|
87
|
-
Suggest next skill: `develop-tdd` to start the TDD loop, or `execute-plan` if
|
|
95
|
+
Suggest next skill: `develop-tdd` to start the TDD loop, or `execute-plan` if `specs/RELEASE-PLAN.md` already exists.
|
package/map-codebase/SKILL.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: map-codebase
|
|
3
|
+
model: sonnet
|
|
3
4
|
description: "High-fidelity codebase surveying — analyzes stack, architecture, and gray areas (error handling, API shapes) and persists them into specs/CONTEXT.md. Goes beyond survey-context by identifying 'signals' for planning."
|
|
4
5
|
---
|
|
5
6
|
|
package/migrate-spec/SKILL.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: migrate-spec
|
|
3
|
+
model: sonnet
|
|
3
4
|
description: Detect GSD, spec-kit, or BMAD spec artifacts in the current project and transform them into bigpowers format (specs/ directory, CONTEXT.md, SCOPE.md, TASKS.md, RELEASE-PLAN.md, ADRs). Use when user has an existing project with foreign spec docs and wants to adopt bigpowers conventions, or says "migrate", "import specs", "convert from GSD/BMAD/spec-kit".
|
|
4
5
|
---
|
|
5
6
|
|
package/model-domain/SKILL.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: model-domain
|
|
3
|
+
model: sonnet
|
|
3
4
|
description: Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates specs/CONTEXT.md and specs/adr/ inline as decisions crystallise. Use when user wants to stress-test a plan against their project's domain language and documented decisions.
|
|
4
5
|
---
|
|
5
6
|
|
|
@@ -80,3 +81,12 @@ Only offer to create an ADR when all three are true:
|
|
|
80
81
|
3. **The result of a real trade-off** — there were genuine alternatives and you picked one for specific reasons
|
|
81
82
|
|
|
82
83
|
If any of the three is missing, skip the ADR. Use the format in [ADR-FORMAT.md](./ADR-FORMAT.md).
|
|
84
|
+
|
|
85
|
+
## Concurrency safety audit
|
|
86
|
+
|
|
87
|
+
When the plan touches shared state, async, or multi-threaded code:
|
|
88
|
+
|
|
89
|
+
- [ ] List every **shared mutable** location (globals, singletons, module-level caches).
|
|
90
|
+
- [ ] For each: who reads, who writes, synchronization mechanism (lock, actor, immutable copy).
|
|
91
|
+
- [ ] Flag **race risks** (check-then-act, non-atomic read-modify-write) with severity.
|
|
92
|
+
- [ ] Record findings in `specs/CONTEXT.md` under `## Concurrency` or in an ADR if architectural.
|
|
@@ -30,15 +30,21 @@ Detailed documentation for the `orchestrate-project` meta-skill.
|
|
|
30
30
|
|
|
31
31
|
### PHASE 5: VERIFY
|
|
32
32
|
- **Goal**: Validate success criteria and ensure production readiness.
|
|
33
|
-
- **Deliverables**:
|
|
34
|
-
- **Skills**: `
|
|
35
|
-
- **Gate**:
|
|
33
|
+
- **Deliverables**: UAT evidence, eval results.
|
|
34
|
+
- **Skills**: `run-evals`, `verify-work`, `audit-code`, `request-review` (optional).
|
|
35
|
+
- **Gate**: Verification Script confirmed; `verify-work` not on `main`/`master`.
|
|
36
36
|
|
|
37
|
-
### PHASE 6: RELEASE
|
|
38
|
-
- **Goal**: Ship to
|
|
39
|
-
- **Deliverables**: Release tag (vX.Y.Z), release notes.
|
|
37
|
+
### PHASE 6: RELEASE (Integrate)
|
|
38
|
+
- **Goal**: Ship to `main` with full traceability.
|
|
39
|
+
- **Deliverables**: Release tag (vX.Y.Z), release notes via semantic-release.
|
|
40
40
|
- **Skills**: `commit-message`, `release-branch`.
|
|
41
|
-
- **
|
|
41
|
+
- **Git arc**:
|
|
42
|
+
1. Plan on `main` (Discover / Plan)
|
|
43
|
+
2. `kickoff-branch` → worktree + feature branch + clean baseline
|
|
44
|
+
3. Build / Verify / Review on feature branch
|
|
45
|
+
4. Integrate: **solo-local** (`scripts/land-branch.sh`) or **team-pr** (`gh pr create` → squash merge)
|
|
46
|
+
5. Cleanup worktree; **end on `main`** in primary repo root
|
|
47
|
+
- **Gate**: Safety ("About to land on main. Confirm?").
|
|
42
48
|
|
|
43
49
|
---
|
|
44
50
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: orchestrate-project
|
|
3
|
+
model: sonnet
|
|
3
4
|
description: Meta-skill that enforces the 6-phase core loop (discover → elaborate → plan → build → verify → release) with hard gates. Use to coordinate multi-phase projects with guaranteed quality checkpoints. One-time command for the entire project lifecycle.
|
|
4
5
|
---
|
|
5
6
|
|
|
@@ -34,14 +35,15 @@ See [REFERENCE.md](REFERENCE.md) for detailed phase specifications and gate type
|
|
|
34
35
|
## How Orchestrate Works
|
|
35
36
|
|
|
36
37
|
1. **Maintains STATE.md** — Tracks current phase, artifacts, decisions, risks.
|
|
37
|
-
2. **Spawns appropriate skills** — Calls survey-context, elaborate-spec, plan-work, etc.
|
|
38
|
-
3. **
|
|
39
|
-
4. **
|
|
38
|
+
2. **Spawns appropriate skills** — Reads each skill's `model:` frontmatter and routes (haiku/sonnet/opus). Calls survey-context, research-first, elaborate-spec, plan-work, develop-tdd, verify-work, run-evals, etc. Decisions pass only via `specs/STATE.md` between spawns.
|
|
39
|
+
3. **Methodology lenses** — If `specs/METHODOLOGY.md` exists, apply active reasoning modes (STRIDE, Cost-of-Delay) at phase gates.
|
|
40
|
+
4. **Enforces gates** — Hard stops if success criteria not met.
|
|
41
|
+
5. **The Gatekeeper** (v1.19.0) — Between every Story implementation in PHASE 4:
|
|
40
42
|
- READ `specs/RELEASE-PLAN.md` to verify completion.
|
|
41
43
|
- REQUIRE that the previous Story is marked `[x] Done`.
|
|
42
44
|
- REFUSE to call `update_topic` for a new Story until the previous one is physically evidenced as complete.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
+
6. **Pauses for confirmation** — After each phase, asks "Ready to proceed?".
|
|
46
|
+
7. **Archives history** — Saves RELEASE-PLAN snapshots as specs/RELEASE-PLAN-vX.Y.Z.md when needed.
|
|
45
47
|
|
|
46
48
|
## Orchestration Modes
|
|
47
49
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: organize-workspace
|
|
3
|
+
model: haiku
|
|
3
4
|
description: Scans the active workspace for disposable artifacts—logs, caches, stale build output, and stray draft markdown—and proposes consolidation of scattered assets. Produces a reviewable list, asks for explicit confirmation before any delete or move, and optionally revises .gitignore. Use when the user says "clean my room", "organize workspace", "workspace cleanup", "remove temp files", "organize assets", "gitignore", or wants a safe tidy pass.
|
|
4
5
|
---
|
|
5
6
|
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bigpowers",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "58 agent skills for spec-driven, test-first software development by solo developers",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
7
|
+
"compliance": "bash scripts/audit-compliance.sh specs/audit/features",
|
|
7
8
|
"sync": "bash scripts/sync-skills.sh",
|
|
8
9
|
"install": "bash scripts/install.sh",
|
|
9
10
|
"postinstall": "bash scripts/sync-skills.sh && bash scripts/install.sh",
|
package/plan-refactor/SKILL.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan-refactor
|
|
3
|
+
model: sonnet
|
|
3
4
|
description: Create a detailed refactor plan with tiny commits via user interview, then save it as specs/REFACTOR.md. Use when user wants to plan a refactor, create a refactoring RFC, or break a refactor into safe incremental steps.
|
|
4
5
|
---
|
|
5
6
|
|
package/plan-release/SKILL.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan-release
|
|
3
|
+
model: sonnet
|
|
3
4
|
description: Convert elaborated specs into a structured release plan with Gherkin acceptance criteria and WSJF-sorted epics. Produces specs/RELEASE-PLAN.md. Use when a spec is clear and ready to plan, after elaborate-spec, or when the user wants a release plan broken into epics and stories.
|
|
4
5
|
---
|
|
5
6
|
|
package/plan-work/SKILL.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan-work
|
|
3
|
+
model: opus
|
|
3
4
|
description: Write a detailed implementation plan to specs/RELEASE-PLAN.md. Every step must include a runnable verify command (Karpathy verification template). Use when user has a task to implement and needs a step-by-step plan with evidence checkpoints, or after plan-release produces specs/RELEASE-PLAN.md.
|
|
4
5
|
---
|
|
5
6
|
|
|
@@ -36,6 +37,8 @@ If this plan touches an existing module or symbol, run `assess-impact` first to
|
|
|
36
37
|
|
|
37
38
|
> **COMPLEXITY PUSHBACK (HARD GATE)** — Every step introducing a new abstraction (class, interface, helper, layer) MUST include a one-sentence "Reason for Depth": _"This abstraction is needed because [forcing function]..."_. If the sentence cannot be filled with a non-trivial reason, the abstraction is premature. Delete it and use inline code instead.
|
|
38
39
|
|
|
40
|
+
> **SLOPCHECK (HARD GATE)** — For every external package proposed in the plan, run slopcheck (or manual registry check) and tag: `[OK]`, `[SUS]`, or `[SLOP]`. `[SUS]` and `[SLOP]` require explicit human approval before the step may execute. Document tags inline next to the package name.
|
|
41
|
+
|
|
39
42
|
## Process
|
|
40
43
|
|
|
41
44
|
### 1. Explore the codebase
|
|
@@ -63,15 +66,17 @@ Append the detailed steps under the relevant story in `specs/RELEASE-PLAN.md`. C
|
|
|
63
66
|
|
|
64
67
|
### Story [X.Y]: [title] — Implementation Steps
|
|
65
68
|
|
|
69
|
+
**type:** feat | fix | refactor
|
|
70
|
+
**context:** domain | infra
|
|
66
71
|
**Context**: [One paragraph: what this story implements and why]
|
|
67
72
|
|
|
68
73
|
## Steps
|
|
69
74
|
|
|
70
|
-
1. [Step description] → verify: `<runnable command>`
|
|
75
|
+
1. [Step description] (ref: ADR-NNNN or commit SHA) → verify: `<runnable command>`
|
|
71
76
|
|
|
72
|
-
2. [Step description] → verify: `<runnable command>`
|
|
77
|
+
2. [Step description] (ref: ADR-NNNN or commit SHA) → verify: `<runnable command>`
|
|
73
78
|
|
|
74
|
-
3. [Step description] → verify: `<runnable command>`
|
|
79
|
+
3. [Step description] (ref: ADR-NNNN or commit SHA) → verify: `<runnable command>`
|
|
75
80
|
|
|
76
81
|
...
|
|
77
82
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Stack Profile: Node Service
|
|
2
|
+
|
|
3
|
+
Opt-in conventions fragment for `seed-conventions`.
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
| Action | Command |
|
|
8
|
+
|--------|---------|
|
|
9
|
+
| Test | `npm test` |
|
|
10
|
+
| Lint | `npm run lint` |
|
|
11
|
+
| Build | `npm run build` (if applicable) |
|
|
12
|
+
| Run | `node dist/index.js` or `npm start` |
|
|
13
|
+
|
|
14
|
+
## Architecture
|
|
15
|
+
|
|
16
|
+
- Layered: routes → handlers → services → repositories
|
|
17
|
+
- Structured JSON logging (see `wire-observability`)
|
|
18
|
+
|
|
19
|
+
## Conventions
|
|
20
|
+
|
|
21
|
+
- ESM or CJS — match existing `package.json` `"type"`
|
|
22
|
+
- Environment via `process.env` validated at boot
|
|
23
|
+
- Integration tests hit HTTP with supertest or fetch
|
|
24
|
+
|
|
25
|
+
## Never
|
|
26
|
+
|
|
27
|
+
- Never log secrets or full auth tokens
|
|
28
|
+
- Never use `any` on public API types
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Stack Profile: Solo Git (local squash land)
|
|
2
|
+
|
|
3
|
+
Opt-in git integrate profile for solo developers. Keeps protected `main`, worktrees, and verification gates; drops PR ceremony as the default ship path.
|
|
4
|
+
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
- Working alone; PR UI feels like overhead
|
|
8
|
+
- You still want Conventional Commits, semantic-release, and no direct work on `main`
|
|
9
|
+
- Remote CI on PR is optional, not required every task
|
|
10
|
+
|
|
11
|
+
## Integrate
|
|
12
|
+
|
|
13
|
+
| Setting | Value |
|
|
14
|
+
|---------|--------|
|
|
15
|
+
| Mode | `release-branch` → **solo-local** |
|
|
16
|
+
| Ship script | `bash scripts/land-branch.sh <branch> "<message>"` |
|
|
17
|
+
| PR | Opt-in only (team-pr / branch protection) |
|
|
18
|
+
| End state | Primary repo on `main`, worktree removed |
|
|
19
|
+
|
|
20
|
+
## Day-to-day arc
|
|
21
|
+
|
|
22
|
+
1. **On main:** `survey-context` → plan skills → `kickoff-branch` (forces clean, updated `main`)
|
|
23
|
+
2. **In worktree:** `develop-tdd` / `execute-plan` → `run-evals` → `verify-work` → `audit-code` → `commit-message`
|
|
24
|
+
3. **Integrate:** `release-branch` (solo-local) → `scripts/land-branch.sh`
|
|
25
|
+
4. **Done when:** `git branch --show-current` is `main`, feature worktree gone
|
|
26
|
+
|
|
27
|
+
## Hooks
|
|
28
|
+
|
|
29
|
+
Install via `guard-git`. Hooks block commits/pushes to `main` unless `GIT_BIGPOWERS_LAND=1` (set only by `land-branch.sh`).
|
|
30
|
+
|
|
31
|
+
## Register in project
|
|
32
|
+
|
|
33
|
+
Run `compose-workflow` or copy `specs/WORKFLOW-solo-git.md` and note in `specs/STATE.md` Active Decisions.
|
|
34
|
+
|
|
35
|
+
## Never
|
|
36
|
+
|
|
37
|
+
- Never land without `release-branch` §1–3 gates (tests, coverage, diff review)
|
|
38
|
+
- Never commit on `main` outside `land-branch.sh`
|
|
39
|
+
- Never skip `kickoff-branch` for feature work
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Stack Profile: Swift
|
|
2
|
+
|
|
3
|
+
Opt-in conventions fragment for `seed-conventions`. Core bigpowers skills stay language-agnostic.
|
|
4
|
+
|
|
5
|
+
## Commands (defaults — override in interview)
|
|
6
|
+
|
|
7
|
+
| Action | Command |
|
|
8
|
+
|--------|---------|
|
|
9
|
+
| Test | `swift test` |
|
|
10
|
+
| Lint | `swiftlint` (if `.swiftlint.yml` exists) |
|
|
11
|
+
| Build | `swift build` |
|
|
12
|
+
|
|
13
|
+
## Architecture
|
|
14
|
+
|
|
15
|
+
- Prefer MVVM: View → ViewModel → Model/Service
|
|
16
|
+
- Protocol-oriented seams for testability
|
|
17
|
+
|
|
18
|
+
## Conventions
|
|
19
|
+
|
|
20
|
+
- Use `struct` for value types; `class` only when reference semantics required
|
|
21
|
+
- Async: `async/await`; avoid callback pyramids
|
|
22
|
+
- Naming: Swift API Design Guidelines (camelCase, clarity at call site)
|
|
23
|
+
|
|
24
|
+
## Never
|
|
25
|
+
|
|
26
|
+
- Never force-unwrap (`!`) in production paths without documented invariant
|
|
27
|
+
- Never commit `DerivedData/` or `.build/`
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Stack Profile: TypeScript + Vue
|
|
2
|
+
|
|
3
|
+
Opt-in conventions fragment for `seed-conventions`.
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
| Action | Command |
|
|
8
|
+
|--------|---------|
|
|
9
|
+
| Test | `npm run test` or `vitest run` |
|
|
10
|
+
| Lint | `npm run lint` |
|
|
11
|
+
| Build | `npm run build` |
|
|
12
|
+
| Dev | `npm run dev` |
|
|
13
|
+
|
|
14
|
+
## Architecture
|
|
15
|
+
|
|
16
|
+
- Vue 3 Composition API + `<script setup>`
|
|
17
|
+
- Pinia for shared state; composables for reusable logic
|
|
18
|
+
|
|
19
|
+
## Conventions
|
|
20
|
+
|
|
21
|
+
- SFC order: `<script setup>` → `<template>` → `<style scoped>`
|
|
22
|
+
- Prettier for format; named exports in composables
|
|
23
|
+
- Vitest for unit tests; Vue Test Utils for components
|
|
24
|
+
|
|
25
|
+
## Never
|
|
26
|
+
|
|
27
|
+
- Never use Options API for new components unless extending legacy
|
|
28
|
+
- Never commit `dist/`, `node_modules/`, `.env`
|