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.
Files changed (89) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/CLAUDE.md +10 -8
  3. package/CONVENTIONS.md +8 -3
  4. package/GEMINI.md +9 -8
  5. package/README.md +57 -21
  6. package/RELEASE.md +10 -0
  7. package/SKILL-INDEX.md +98 -88
  8. package/assess-impact/SKILL.md +1 -0
  9. package/audit-code/SKILL.md +18 -0
  10. package/change-request/SKILL.md +1 -0
  11. package/commit-message/SKILL.md +1 -0
  12. package/compose-workflow/REFERENCE.md +13 -0
  13. package/compose-workflow/SKILL.md +23 -0
  14. package/countable-story-format.md +1 -1
  15. package/craft-skill/REFERENCE.md +1 -1
  16. package/craft-skill/SKILL.md +6 -1
  17. package/deepen-architecture/SKILL.md +15 -2
  18. package/define-language/SKILL.md +1 -0
  19. package/define-success/SKILL.md +1 -0
  20. package/delegate-task/SKILL.md +7 -2
  21. package/design-interface/SKILL.md +1 -0
  22. package/develop-tdd/SKILL.md +10 -9
  23. package/diagnose-root/SKILL.md +22 -0
  24. package/dispatch-agents/SKILL.md +13 -3
  25. package/edit-document/SKILL.md +1 -0
  26. package/elaborate-spec/SKILL.md +1 -0
  27. package/enforce-first/SKILL.md +1 -0
  28. package/evolve-skill/REFERENCE.md +12 -0
  29. package/evolve-skill/SKILL.md +24 -0
  30. package/execute-plan/SKILL.md +12 -4
  31. package/grill-me/SKILL.md +1 -0
  32. package/grill-with-docs/REFERENCE.md +5 -0
  33. package/grill-with-docs/SKILL.md +28 -0
  34. package/guard-git/REFERENCE.md +36 -6
  35. package/guard-git/SKILL.md +5 -2
  36. package/guard-git/scripts/lib/git-guardrails-core.sh +0 -1
  37. package/hook-commits/SKILL.md +1 -0
  38. package/hooks/pre-tool-use.sh +43 -46
  39. package/inspect-quality/SKILL.md +9 -6
  40. package/investigate-bug/SKILL.md +18 -5
  41. package/kickoff-branch/SKILL.md +13 -5
  42. package/map-codebase/SKILL.md +1 -0
  43. package/migrate-spec/SKILL.md +1 -0
  44. package/model-domain/SKILL.md +10 -0
  45. package/orchestrate-project/REFERENCE.md +13 -7
  46. package/orchestrate-project/SKILL.md +7 -5
  47. package/organize-workspace/SKILL.md +1 -0
  48. package/package.json +3 -2
  49. package/plan-refactor/SKILL.md +1 -0
  50. package/plan-release/SKILL.md +1 -0
  51. package/plan-work/SKILL.md +8 -3
  52. package/profiles/node-service.md +28 -0
  53. package/profiles/solo-git.md +39 -0
  54. package/profiles/swift.md +27 -0
  55. package/profiles/typescript-vue.md +28 -0
  56. package/release-branch/SKILL.md +51 -11
  57. package/request-review/SKILL.md +2 -1
  58. package/research-first/REFERENCE.md +29 -0
  59. package/research-first/SKILL.md +31 -0
  60. package/reset-baseline/SKILL.md +21 -0
  61. package/respond-review/SKILL.md +1 -0
  62. package/run-evals/REFERENCE.md +27 -0
  63. package/run-evals/SKILL.md +27 -0
  64. package/scope-work/SKILL.md +22 -0
  65. package/scripts/add-model-frontmatter.sh +82 -0
  66. package/scripts/build-skill-index.sh +28 -0
  67. package/scripts/install.sh +5 -1
  68. package/scripts/land-branch.sh +166 -0
  69. package/scripts/sync-skills.sh +5 -0
  70. package/search-skills/SKILL.md +20 -0
  71. package/seed-conventions/SKILL.md +3 -0
  72. package/session-state/SKILL.md +25 -3
  73. package/setup-environment/SKILL.md +22 -0
  74. package/simulate-agents/SKILL.md +24 -0
  75. package/slice-tasks/SKILL.md +22 -0
  76. package/spike-prototype/SKILL.md +1 -0
  77. package/stocktake-skills/REFERENCE.md +8 -0
  78. package/stocktake-skills/SKILL.md +28 -0
  79. package/survey-context/SKILL.md +12 -11
  80. package/terse-mode/SKILL.md +1 -0
  81. package/trace-requirement/SKILL.md +1 -0
  82. package/using-bigpowers/SKILL.md +30 -4
  83. package/validate-fix/SKILL.md +9 -5
  84. package/verify-work/REFERENCE.md +23 -0
  85. package/verify-work/SKILL.md +39 -0
  86. package/visual-dashboard/SKILL.md +51 -1
  87. package/wire-observability/SKILL.md +1 -0
  88. package/write-document/REFERENCE.md +166 -0
  89. package/write-document/SKILL.md +12 -1
@@ -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
- REASON="BLOCKED: '$COMMAND' matches dangerous pattern '$p'. Use a safer approach or ask the user."
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
- # Branch protection
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 ]] || [[ "$CURRENT_BRANCH" == "$b" ]]; then
63
- REASON="BLOCKED: Direct push to protected branch '$b' is forbidden. Use a feature branch and PR."
64
- if [ "$MODE" = "gemini" ]; then
65
- jq -nc --arg reason "$REASON" '{decision: "deny", reason: $reason}'
66
- else
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
- REASON="BLOCKED: Commit message must follow Conventional Commits: <type>(<scope>): <subject>. Valid types: feat, fix, docs, style, refactor, perf, test, build, ci, chore."
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
- REASON="BLOCKED: Commit subject line must be 72 characters or less."
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
- REASON="BLOCKED: Direct commits to protected branch '$b' are forbidden. Use kickoff-branch to start a feature branch."
114
- if [ "$MODE" = "gemini" ]; then
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
@@ -1,11 +1,12 @@
1
1
  ---
2
2
  name: inspect-quality
3
- description: Interactive QA session where user reports bugs or issues conversationally, and the agent logs them to specs/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".
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 file and `specs/` directory if they don't exist.
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-DD-NNN` |
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-DD-NNN: [short title]
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"
@@ -1,14 +1,23 @@
1
1
  ---
2
2
  name: investigate-bug
3
- description: Investigate a bug or issue by exploring the codebase to find root cause, then write a TDD-based fix plan to specs/DIAGNOSIS.md. Use when user reports a bug, wants to investigate a problem, mentions "triage", or wants to plan a fix.
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/DIAGNOSIS.md`. This is a mostly hands-off workflow — minimize questions to the user.
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 specs/DIAGNOSIS.md
70
+ ### 5. Write the bug file
62
71
 
63
- Save the investigation and fix plan to `specs/DIAGNOSIS.md`. Create the `specs/` directory if it doesn't exist.
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 `specs/DIAGNOSIS.md`, print a one-line summary of the root cause and suggest running `kickoff-branch` next to create a fix branch.
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.
@@ -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. Check current state
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
- git status # ensure working tree is clean
24
- git log --oneline -5 # confirm you're on the right base branch
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 a specs/PLAN.md already exists.
95
+ Suggest next skill: `develop-tdd` to start the TDD loop, or `execute-plan` if `specs/RELEASE-PLAN.md` already exists.
@@ -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
 
@@ -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
 
@@ -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**: `VERIFICATION.md`, audit results.
34
- - **Skills**: `validate-fix`, `audit-code`, `request-review`.
35
- - **Gate**: Quality ≥94%, coverage ≥95%, audits ≥93%.
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 production with full traceability.
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
- - **Gate**: Safety ("About to push to main. Confirm?").
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. **Enforces gates** — Hard stops if success criteria not met.
39
- 4. **The Gatekeeper** (v1.19.0) Between every Story implementation in PHASE 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
- 5. **Pauses for confirmation** — After each phase, asks "Ready to proceed?".
44
- 6. **Archives history** — Saves PLAN.md as specs/PLAN-vX.Y.Z.md.
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.0.0",
4
- "description": "44 agent skills for spec-driven, test-first software development by solo developers",
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",
@@ -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
 
@@ -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
 
@@ -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`