bigpowers 2.1.3 → 2.3.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 (164) hide show
  1. package/.pi/package.json +16 -0
  2. package/.pi/prompts/assess-impact.md +76 -0
  3. package/.pi/prompts/audit-code.md +156 -0
  4. package/.pi/prompts/build-epic.md +44 -0
  5. package/.pi/prompts/change-request.md +105 -0
  6. package/.pi/prompts/commit-message.md +135 -0
  7. package/.pi/prompts/compose-workflow.md +40 -0
  8. package/.pi/prompts/craft-skill.md +150 -0
  9. package/.pi/prompts/deepen-architecture.md +235 -0
  10. package/.pi/prompts/define-language.md +79 -0
  11. package/.pi/prompts/define-success.md +62 -0
  12. package/.pi/prompts/delegate-task.md +76 -0
  13. package/.pi/prompts/design-interface.md +96 -0
  14. package/.pi/prompts/develop-tdd.md +375 -0
  15. package/.pi/prompts/diagnose-root.md +23 -0
  16. package/.pi/prompts/dispatch-agents.md +83 -0
  17. package/.pi/prompts/edit-document.md +22 -0
  18. package/.pi/prompts/elaborate-spec.md +81 -0
  19. package/.pi/prompts/enforce-first.md +77 -0
  20. package/.pi/prompts/evolve-skill.md +38 -0
  21. package/.pi/prompts/execute-plan.md +54 -0
  22. package/.pi/prompts/fix-bug.md +36 -0
  23. package/.pi/prompts/grill-me.md +95 -0
  24. package/.pi/prompts/grill-with-docs.md +37 -0
  25. package/.pi/prompts/guard-git.md +212 -0
  26. package/.pi/prompts/hook-commits.md +93 -0
  27. package/.pi/prompts/inspect-quality.md +105 -0
  28. package/.pi/prompts/investigate-bug.md +117 -0
  29. package/.pi/prompts/kickoff-branch.md +99 -0
  30. package/.pi/prompts/map-codebase.md +70 -0
  31. package/.pi/prompts/migrate-spec.md +482 -0
  32. package/.pi/prompts/model-domain.md +227 -0
  33. package/.pi/prompts/orchestrate-project.md +161 -0
  34. package/.pi/prompts/organize-workspace.md +159 -0
  35. package/.pi/prompts/plan-refactor.md +77 -0
  36. package/.pi/prompts/plan-release.md +145 -0
  37. package/.pi/prompts/plan-work.md +161 -0
  38. package/.pi/prompts/release-branch.md +158 -0
  39. package/.pi/prompts/request-review.md +70 -0
  40. package/.pi/prompts/research-first.md +62 -0
  41. package/.pi/prompts/reset-baseline.md +20 -0
  42. package/.pi/prompts/respond-review.md +70 -0
  43. package/.pi/prompts/run-evals.md +56 -0
  44. package/.pi/prompts/run-planning.md +26 -0
  45. package/.pi/prompts/scope-work.md +23 -0
  46. package/.pi/prompts/search-skills.md +21 -0
  47. package/.pi/prompts/seed-conventions.md +132 -0
  48. package/.pi/prompts/session-state.md +146 -0
  49. package/.pi/prompts/setup-environment.md +23 -0
  50. package/.pi/prompts/simulate-agents.md +25 -0
  51. package/.pi/prompts/slice-tasks.md +23 -0
  52. package/.pi/prompts/spike-prototype.md +94 -0
  53. package/.pi/prompts/stocktake-skills.md +40 -0
  54. package/.pi/prompts/survey-context.md +129 -0
  55. package/.pi/prompts/terse-mode.md +37 -0
  56. package/.pi/prompts/trace-requirement.md +68 -0
  57. package/.pi/prompts/using-bigpowers.md +105 -0
  58. package/.pi/prompts/validate-fix.md +98 -0
  59. package/.pi/prompts/verify-work.md +125 -0
  60. package/.pi/prompts/visual-dashboard.md +51 -0
  61. package/.pi/prompts/wire-observability.md +92 -0
  62. package/.pi/prompts/write-document.md +244 -0
  63. package/.pi/skills/assess-impact/SKILL.md +77 -0
  64. package/.pi/skills/audit-code/SKILL.md +157 -0
  65. package/.pi/skills/build-epic/SKILL.md +45 -0
  66. package/.pi/skills/change-request/SKILL.md +106 -0
  67. package/.pi/skills/commit-message/SKILL.md +136 -0
  68. package/.pi/skills/compose-workflow/SKILL.md +41 -0
  69. package/.pi/skills/craft-skill/SKILL.md +151 -0
  70. package/.pi/skills/deepen-architecture/SKILL.md +236 -0
  71. package/.pi/skills/define-language/SKILL.md +80 -0
  72. package/.pi/skills/define-success/SKILL.md +63 -0
  73. package/.pi/skills/delegate-task/SKILL.md +77 -0
  74. package/.pi/skills/design-interface/SKILL.md +97 -0
  75. package/.pi/skills/develop-tdd/SKILL.md +376 -0
  76. package/.pi/skills/diagnose-root/SKILL.md +24 -0
  77. package/.pi/skills/dispatch-agents/SKILL.md +84 -0
  78. package/.pi/skills/edit-document/SKILL.md +23 -0
  79. package/.pi/skills/elaborate-spec/SKILL.md +82 -0
  80. package/.pi/skills/enforce-first/SKILL.md +78 -0
  81. package/.pi/skills/evolve-skill/SKILL.md +39 -0
  82. package/.pi/skills/execute-plan/SKILL.md +55 -0
  83. package/.pi/skills/fix-bug/SKILL.md +37 -0
  84. package/.pi/skills/grill-me/SKILL.md +96 -0
  85. package/.pi/skills/grill-with-docs/SKILL.md +38 -0
  86. package/.pi/skills/guard-git/SKILL.md +213 -0
  87. package/.pi/skills/hook-commits/SKILL.md +94 -0
  88. package/.pi/skills/inspect-quality/SKILL.md +106 -0
  89. package/.pi/skills/investigate-bug/SKILL.md +118 -0
  90. package/.pi/skills/kickoff-branch/SKILL.md +100 -0
  91. package/.pi/skills/map-codebase/SKILL.md +71 -0
  92. package/.pi/skills/migrate-spec/SKILL.md +483 -0
  93. package/.pi/skills/model-domain/SKILL.md +228 -0
  94. package/.pi/skills/orchestrate-project/SKILL.md +162 -0
  95. package/.pi/skills/organize-workspace/SKILL.md +160 -0
  96. package/.pi/skills/plan-refactor/SKILL.md +78 -0
  97. package/.pi/skills/plan-release/SKILL.md +146 -0
  98. package/.pi/skills/plan-work/SKILL.md +162 -0
  99. package/.pi/skills/release-branch/SKILL.md +159 -0
  100. package/.pi/skills/request-review/SKILL.md +71 -0
  101. package/.pi/skills/research-first/SKILL.md +63 -0
  102. package/.pi/skills/reset-baseline/SKILL.md +21 -0
  103. package/.pi/skills/respond-review/SKILL.md +71 -0
  104. package/.pi/skills/run-evals/SKILL.md +57 -0
  105. package/.pi/skills/run-planning/SKILL.md +27 -0
  106. package/.pi/skills/scope-work/SKILL.md +24 -0
  107. package/.pi/skills/search-skills/SKILL.md +22 -0
  108. package/.pi/skills/seed-conventions/SKILL.md +133 -0
  109. package/.pi/skills/session-state/SKILL.md +147 -0
  110. package/.pi/skills/setup-environment/SKILL.md +24 -0
  111. package/.pi/skills/simulate-agents/SKILL.md +26 -0
  112. package/.pi/skills/slice-tasks/SKILL.md +24 -0
  113. package/.pi/skills/spike-prototype/SKILL.md +95 -0
  114. package/.pi/skills/stocktake-skills/SKILL.md +41 -0
  115. package/.pi/skills/survey-context/SKILL.md +130 -0
  116. package/.pi/skills/terse-mode/SKILL.md +38 -0
  117. package/.pi/skills/trace-requirement/SKILL.md +69 -0
  118. package/.pi/skills/using-bigpowers/SKILL.md +106 -0
  119. package/.pi/skills/validate-fix/SKILL.md +99 -0
  120. package/.pi/skills/verify-work/SKILL.md +126 -0
  121. package/.pi/skills/visual-dashboard/SKILL.md +52 -0
  122. package/.pi/skills/wire-observability/SKILL.md +93 -0
  123. package/.pi/skills/write-document/SKILL.md +245 -0
  124. package/CHANGELOG.md +14 -0
  125. package/CLAUDE.md +1 -1
  126. package/CONVENTIONS.md +16 -10
  127. package/README.md +30 -4
  128. package/build-epic/SKILL.md +1 -1
  129. package/deepen-architecture/SKILL.md +2 -0
  130. package/define-language/SKILL.md +2 -0
  131. package/develop-tdd/REFERENCE.md +61 -0
  132. package/develop-tdd/SKILL.md +19 -119
  133. package/diagnose-root/SKILL.md +2 -0
  134. package/edit-document/SKILL.md +2 -0
  135. package/fix-bug/SKILL.md +3 -1
  136. package/grill-me/SKILL.md +3 -1
  137. package/grill-with-docs/SKILL.md +3 -1
  138. package/investigate-bug/SKILL.md +5 -11
  139. package/map-codebase/SKILL.md +3 -1
  140. package/migrate-spec/REFERENCE-GSD.md +4 -4
  141. package/migrate-spec/REFERENCE.md +33 -6
  142. package/migrate-spec/SKILL.md +1 -14
  143. package/model-domain/SKILL.md +2 -0
  144. package/orchestrate-project/REFERENCE.md +1 -1
  145. package/package.json +3 -2
  146. package/plan-release/SKILL.md +1 -1
  147. package/plan-work/REFERENCE.md +104 -0
  148. package/plan-work/SKILL.md +17 -151
  149. package/release-branch/REFERENCE.md +55 -0
  150. package/release-branch/SKILL.md +19 -117
  151. package/request-review/SKILL.md +1 -1
  152. package/run-planning/SKILL.md +3 -2
  153. package/scope-work/SKILL.md +3 -1
  154. package/scripts/audit-compliance.sh +15 -3
  155. package/scripts/check-skill-size.sh +79 -0
  156. package/scripts/generate-reference-tables.sh +64 -0
  157. package/scripts/project-survey.sh +2 -2
  158. package/scripts/sync-skills.sh +51 -3
  159. package/scripts/validate-doctrine.sh +143 -0
  160. package/seed-conventions/REFERENCE.md +63 -0
  161. package/seed-conventions/SKILL.md +23 -177
  162. package/slice-tasks/SKILL.md +3 -1
  163. package/survey-context/SKILL.md +3 -1
  164. package/write-document/SKILL.md +4 -2
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env bash
2
+ # Regenerates the auto-generated catalog section in docs/references/model-profiles.md
3
+ # from live */SKILL.md frontmatter. Run after any SKILL.md addition/rename.
4
+ # Called by sync-skills.sh and npm version hooks.
5
+ set -euo pipefail
6
+
7
+ REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
8
+ TARGET="$REPO_ROOT/docs/references/model-profiles.md"
9
+
10
+ cd "$REPO_ROOT"
11
+
12
+ # --- 1. Collect live skill→model pairs ---
13
+ declare -a ROWS=()
14
+ while IFS= read -r line; do
15
+ skill_dir="${line%%/SKILL.md*}"
16
+ model_raw="${line##*model: }"
17
+ model="${model_raw// /}"
18
+ ROWS+=("$skill_dir $model")
19
+ done < <(grep -r "^model:" */SKILL.md | sed 's|/SKILL.md:model:||' | sort)
20
+
21
+ TOTAL=${#ROWS[@]}
22
+
23
+ # --- 2. Build replacement block ---
24
+ BLOCK="<!-- AUTO-GENERATED-CATALOG: begin — do not edit manually; run scripts/generate-reference-tables.sh -->
25
+ | Skill | Model |
26
+ |-------|-------|"
27
+ for row in "${ROWS[@]}"; do
28
+ skill="${row%% *}"
29
+ model="${row##* }"
30
+ # capitalise first letter for display
31
+ model_cap="$(echo "${model:0:1}" | tr '[:lower:]' '[:upper:]')${model:1}"
32
+ BLOCK+="
33
+ | \`$skill\` | **$model_cap** |"
34
+ done
35
+ BLOCK+="
36
+
37
+ Total: **$TOTAL** skills — verify with \`ls -d \*/SKILL.md | wc -l\`
38
+ <!-- AUTO-GENERATED-CATALOG: end -->"
39
+
40
+ # --- 3. Splice block into target file ---
41
+ # Replace between marker comments if they exist; otherwise append.
42
+ if grep -q "AUTO-GENERATED-CATALOG: begin" "$TARGET"; then
43
+ python3 - "$TARGET" "$BLOCK" <<'PYEOF'
44
+ import sys, re
45
+ path = sys.argv[1]
46
+ block = sys.argv[2]
47
+ text = open(path).read()
48
+ new_text = re.sub(
49
+ r'<!-- AUTO-GENERATED-CATALOG: begin.*?<!-- AUTO-GENERATED-CATALOG: end -->',
50
+ block,
51
+ text,
52
+ flags=re.DOTALL
53
+ )
54
+ open(path, 'w').write(new_text)
55
+ PYEOF
56
+ else
57
+ printf '\n\n## Full Skill Catalog (auto-generated)\n\n%s\n' "$BLOCK" >> "$TARGET"
58
+ fi
59
+
60
+ # --- 4. Update the "expect N" count assertion (legacy line) ---
61
+ # Replaces "expect NN" with the live count so the prose stays accurate.
62
+ sed -i.bak "s/expect [0-9]*/expect $TOTAL/" "$TARGET" && rm -f "${TARGET}.bak"
63
+
64
+ echo "generate-reference-tables: updated $TARGET ($TOTAL skills)"
@@ -13,7 +13,7 @@ specs_files=""
13
13
  if [[ "$has_specs" == "true" ]]; then
14
14
  specs_files=$( {
15
15
  ls specs/*.yaml 2>/dev/null || true
16
- ls specs/requirements/*.yaml 2>/dev/null || true
16
+ ls specs/product/*.yaml 2>/dev/null || true
17
17
  ls specs/*.md 2>/dev/null || true
18
18
  } | xargs -n1 basename 2>/dev/null | sort -u | tr '\n' ',' | sed 's/,$//')
19
19
  fi
@@ -34,7 +34,7 @@ if [[ -f "specs/state.yaml" ]]; then
34
34
  esac
35
35
  elif [[ -f "specs/release-plan.yaml" ]]; then
36
36
  phase="Plan"
37
- elif [[ -f "specs/requirements/SCOPE_LATEST.yaml" ]] || [[ -f "specs/SCOPE.md" ]]; then
37
+ elif [[ -f "specs/product/SCOPE_LATEST.yaml" ]] || [[ -f "specs/SCOPE.md" ]]; then
38
38
  phase="Design"
39
39
  elif [[ "$current_branch" != "main" && "$current_branch" != "master" ]]; then
40
40
  phase="Initiate"
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env bash
2
- # sync-skills.sh — generate Cursor and Gemini CLI artifacts from SKILL.md source files
2
+ # sync-skills.sh — generate Cursor, Gemini CLI, and pi artifacts from SKILL.md source files
3
3
  # Run this after adding or updating any skill. Symlinks carry changes through automatically.
4
4
  set -euo pipefail
5
5
 
@@ -9,12 +9,17 @@ GEMINI_EXT_DIR="$REPO_ROOT/.gemini/extensions/bigpowers"
9
9
  GEMINI_SKILLS="$GEMINI_EXT_DIR/skills"
10
10
  GEMINI_COMMANDS="$GEMINI_EXT_DIR/commands"
11
11
  GEMINI_MANIFEST="$GEMINI_EXT_DIR/gemini-extension.json"
12
+ PI_SKILLS="$REPO_ROOT/.pi/skills"
13
+ PI_PROMPTS="$REPO_ROOT/.pi/prompts"
14
+ PI_PACKAGE_JSON="$REPO_ROOT/.pi/package.json"
12
15
 
13
- mkdir -p "$CURSOR_RULES" "$GEMINI_SKILLS" "$GEMINI_COMMANDS"
16
+ mkdir -p "$CURSOR_RULES" "$GEMINI_SKILLS" "$GEMINI_COMMANDS" "$PI_SKILLS" "$PI_PROMPTS"
14
17
 
15
18
  # Clear old artifacts to ensure a clean sync
16
19
  rm -rf "${GEMINI_SKILLS:?}"/*
17
20
  rm -rf "${GEMINI_COMMANDS:?}"/*
21
+ rm -rf "${PI_SKILLS:?}"/*
22
+ rm -rf "${PI_PROMPTS:?}"/*
18
23
 
19
24
  # We'll collect metadata for the manifest if needed,
20
25
  # though skills/commands are auto-discovered.
@@ -82,6 +87,28 @@ for skill_dir in "$REPO_ROOT"/*/; do
82
87
  echo "prompt = \"@{$prompt_file}\""
83
88
  } > "$GEMINI_COMMANDS/$name.toml"
84
89
 
90
+ # 4. Write pi skill: .pi/skills/<name>/SKILL.md
91
+ # Pi implements the Agent Skills standard — same YAML frontmatter + body format
92
+ mkdir -p "$PI_SKILLS/$name"
93
+ {
94
+ echo "---"
95
+ echo "name: $name"
96
+ echo "description: \"$description\""
97
+ echo "---"
98
+ echo ""
99
+ echo "$body"
100
+ } > "$PI_SKILLS/$name/SKILL.md"
101
+
102
+ # 5. Write pi prompt template: .pi/prompts/<name>.md
103
+ # Slash-command templates expandable via /<name> in pi's editor
104
+ {
105
+ echo "---"
106
+ echo "description: $description"
107
+ echo "---"
108
+ echo ""
109
+ echo "$body"
110
+ } > "$PI_PROMPTS/$name.md"
111
+
85
112
  skill_count=$((skill_count + 1))
86
113
  done
87
114
 
@@ -94,7 +121,22 @@ jq -n --arg name "bigpowers" \
94
121
  --arg desc "${skill_count} skills — ${pkg_desc}" \
95
122
  '{name: $name, version: $version, description: $desc}' > "$GEMINI_MANIFEST"
96
123
 
97
- # 4. Write OpenCode configuration: opencode.json (minimal project-level config)
124
+ # 6. Write pi package config: .pi/package.json
125
+ # Enables pi install (local path, npm, or git) with auto-discovered skills and prompts
126
+ jq -n --arg version "$pkg_version" \
127
+ --arg desc "${skill_count} skills — ${pkg_desc}" \
128
+ '{
129
+ "name": "bigpowers",
130
+ "version": $version,
131
+ "description": $desc,
132
+ "keywords": ["pi-package"],
133
+ "pi": {
134
+ "skills": ["./skills"],
135
+ "prompts": ["./prompts"]
136
+ }
137
+ }' > "$PI_PACKAGE_JSON"
138
+
139
+ # 7. Write OpenCode configuration: opencode.json (minimal project-level config)
98
140
  # Skills are loaded on-demand via opencode's native skill tool, not instructions.
99
141
  # Full opencode integration lives in the bigpowers-opencode repo.
100
142
  {
@@ -140,6 +182,9 @@ echo " → .cursor/rules/ ($skill_count .mdc files)"
140
182
  echo " → .gemini/extensions/bigpowers/skills/ (Agent Skills)"
141
183
  echo " → .gemini/extensions/bigpowers/commands/ (Slash Commands)"
142
184
  echo " → .gemini/extensions/bigpowers/gemini-extension.json"
185
+ echo " → .pi/skills/ ($skill_count skill dirs — pi Agent Skills)"
186
+ echo " → .pi/prompts/ ($skill_count prompt templates — pi slash commands)"
187
+ echo " → .pi/package.json (pi package manifest)"
143
188
  echo " → opencode.json (CLAUDE.md + CONVENTIONS.md instructions)"
144
189
  [[ -n "$OPN_TARGET" ]] && echo " → bigpowers-opencode: $opencode_count skills"
145
190
 
@@ -161,4 +206,7 @@ if [[ -f "$manifest" ]]; then
161
206
  fi
162
207
  fi
163
208
 
209
+ # Regenerate derived reference tables from live SKILL.md frontmatter
210
+ bash "$REPO_ROOT/scripts/generate-reference-tables.sh"
211
+
164
212
  exit 0
@@ -0,0 +1,143 @@
1
+ #!/usr/bin/env bash
2
+ # Doctrine drift guard — fails CI if any tracked invariants regress.
3
+ # Run after sync-skills.sh and before merging any branch.
4
+ # Extended by each epic: add new assertions below the relevant section header.
5
+ set -euo pipefail
6
+
7
+ REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
8
+ cd "$REPO_ROOT"
9
+
10
+ ERRORS=0
11
+
12
+ fail() {
13
+ echo "FAIL: $*" >&2
14
+ ERRORS=$((ERRORS + 1))
15
+ }
16
+
17
+ pass() {
18
+ echo "ok : $*"
19
+ }
20
+
21
+ # ── Epic 1: Dead skill names in model-profiles.md ─────────────────────────────
22
+ # Scope: model-profiles.md is the canonical skill-roster reference.
23
+ # Other docs may legitimately reference npm tools or conceptual names.
24
+ echo "--- [Epic 1] dead skill names in docs/references/model-profiles.md ---"
25
+ DEAD=()
26
+ while IFS= read -r name; do
27
+ if [[ ! -d "$name" ]]; then
28
+ DEAD+=("$name")
29
+ fi
30
+ done < <(grep -oE '`[a-z][a-z-]+`' docs/references/model-profiles.md \
31
+ | tr -d '`' \
32
+ | grep -E '^[a-z]+-[a-z]+(-[a-z]+)?$' \
33
+ | sort -u)
34
+
35
+ if [[ ${#DEAD[@]} -eq 0 ]]; then
36
+ pass "all skill names in model-profiles.md resolve to real directories"
37
+ else
38
+ for name in "${DEAD[@]}"; do
39
+ fail "dead skill name in model-profiles.md: '$name' has no matching directory"
40
+ done
41
+ fi
42
+
43
+ # ── Epic 1: Legacy MD artifact names in live docs/ (docs/archive/ exempt) ─────
44
+ # docs/archive/ holds historical/exploratory material (Epic 6); legacy names there are expected.
45
+ echo "--- [Epic 1] legacy MD artifact names in docs/ ---"
46
+ LEGACY_HITS=$(grep -rE "PLAN\.md|STATE\.md|PROJECT\.md|CONTEXT\.md|SUMMARY\.md|VERIFICATION\.md|RESEARCH\.md|RELEASE-PLAN\.md" \
47
+ docs/ 2>/dev/null \
48
+ | grep -v "docs/archive/" \
49
+ | grep -v "specs/archive" \
50
+ | wc -l | tr -d ' ') || true
51
+ if [[ "$LEGACY_HITS" -eq 0 ]]; then
52
+ pass "no legacy MD artifact names in live docs/ (docs/archive/ exempt)"
53
+ else
54
+ fail "legacy MD artifact names found in docs/ ($LEGACY_HITS occurrences)"
55
+ grep -rE "PLAN\.md|STATE\.md|PROJECT\.md|CONTEXT\.md|SUMMARY\.md|VERIFICATION\.md|RESEARCH\.md|RELEASE-PLAN\.md" \
56
+ docs/ 2>/dev/null \
57
+ | grep -v "docs/archive/" \
58
+ | grep -v "specs/archive" | head -20 >&2
59
+ fi
60
+
61
+ # ── Epic 1: Skill count consistency ───────────────────────────────────────────
62
+ echo "--- [Epic 1] skill count consistency ---"
63
+ LIVE_COUNT=$(ls -d */SKILL.md 2>/dev/null | wc -l | tr -d ' ')
64
+ STALE_COUNT_HITS=$(grep -rE "expect [0-9]+" docs/ 2>/dev/null \
65
+ | grep -v "expect $LIVE_COUNT" | wc -l | tr -d ' ') || true
66
+ if [[ "$STALE_COUNT_HITS" -eq 0 ]]; then
67
+ pass "skill count annotations match live count ($LIVE_COUNT)"
68
+ else
69
+ fail "stale skill count annotation in docs/ (live=$LIVE_COUNT, $STALE_COUNT_HITS mismatches)"
70
+ grep -rE "expect [0-9]+" docs/ 2>/dev/null | grep -v "expect $LIVE_COUNT" >&2
71
+ fi
72
+
73
+ # ── Epic 2: Non-canonical specs/ subpaths ─────────────────────────────────────
74
+ # Exclusions: specs/archive, specs/epics/archive, CHANGELOG.md (auto-gen),
75
+ # specs/verifications/reports/ (generated reports), PLAN-evolve-structure.md
76
+ # (migration plan that documents the before→after paths as historical record).
77
+ echo "--- [Epic 2] canonical specs/ subpaths ---"
78
+ LEGACY_SPECS=$(grep -rE "specs/(requirements|plans|audit)\b" \
79
+ --include="*.md" --include="*.sh" --include="*.yaml" --include="*.yml" --include="*.json" . \
80
+ 2>/dev/null \
81
+ | grep -v "specs/archive\|specs/epics/archive\|docs/archive/\|\.git\|node_modules\|\.gemini\|\.cursor" \
82
+ | grep -v "CHANGELOG\.md\|specs/verifications/reports/\|PLAN-evolve-structure\.md" \
83
+ | wc -l | tr -d ' ') || true
84
+ if [[ "$LEGACY_SPECS" -eq 0 ]]; then
85
+ pass "no legacy specs/ subpaths (requirements/, plans/, audit/)"
86
+ else
87
+ fail "legacy specs/ subpaths found ($LEGACY_SPECS occurrences)"
88
+ grep -rE "specs/(requirements|plans|audit)\b" \
89
+ --include="*.md" --include="*.sh" --include="*.yaml" --include="*.yml" --include="*.json" . \
90
+ 2>/dev/null \
91
+ | grep -v "specs/archive\|specs/epics/archive\|docs/archive/\|\.git\|node_modules\|\.gemini\|\.cursor" \
92
+ | grep -v "CHANGELOG\.md\|specs/verifications/reports/\|PLAN-evolve-structure\.md" \
93
+ | head -10 >&2
94
+ fi
95
+
96
+ # ── Epic 3: BCP slop guard ────────────────────────────────────────────────────
97
+ echo "--- [Epic 3] BCP terminology ---"
98
+ BCP_SLOP=$(grep -ri "build commit point" . 2>/dev/null \
99
+ | grep -v "specs/archive\|\.git\|node_modules\|\.gemini\|\.cursor\|validate-doctrine\.sh" \
100
+ | wc -l | tr -d ' ') || true
101
+ if [[ "$BCP_SLOP" -eq 0 ]]; then
102
+ pass "no 'Build Commit Point' slop — BCP = Business Complexity Points"
103
+ else
104
+ fail "'Build Commit Point' found ($BCP_SLOP hits) — canonical term is 'Business Complexity Points'; see docs/references/bcp.md"
105
+ grep -ri "build commit point" . 2>/dev/null \
106
+ | grep -v "specs/archive\|\.git\|node_modules\|\.gemini\|\.cursor\|validate-doctrine\.sh" | head -5 >&2
107
+ fi
108
+
109
+ # ── Epic 4: SKILL.md size cap ─────────────────────────────────────────────────
110
+ echo "--- [Epic 4] SKILL.md size cap ---"
111
+ if bash "$REPO_ROOT/scripts/check-skill-size.sh" >/dev/null 2>&1; then
112
+ pass "all SKILL.md files within tiered size cap (150 critical-path / 120 utility)"
113
+ else
114
+ fail "a SKILL.md exceeds its size cap — run: bash scripts/check-skill-size.sh"
115
+ bash "$REPO_ROOT/scripts/check-skill-size.sh" 2>&1 | grep "^FAIL:" >&2 || true
116
+ fi
117
+
118
+ # ── Epic 5: Critical-path skills document a handoff target ─────────────────────
119
+ echo "--- [Epic 5] critical-path handoff targets ---"
120
+ CRITICAL_HANDOFF=(survey-context plan-work develop-tdd verify-work audit-code release-branch kickoff-branch commit-message)
121
+ MISSING_HANDOFF=()
122
+ for s in "${CRITICAL_HANDOFF[@]}"; do
123
+ if [[ -f "$s/SKILL.md" ]] && ! grep -qiE "handoff|next_skill|next:" "$s/SKILL.md"; then
124
+ MISSING_HANDOFF+=("$s")
125
+ fi
126
+ done
127
+ if [[ ${#MISSING_HANDOFF[@]} -eq 0 ]]; then
128
+ pass "all critical-path skills document a handoff target"
129
+ else
130
+ for s in "${MISSING_HANDOFF[@]}"; do
131
+ fail "critical-path skill '$s' has no documented handoff/next_skill"
132
+ done
133
+ fi
134
+
135
+ # ── Summary ────────────────────────────────────────────────────────────────────
136
+ echo "---"
137
+ if [[ "$ERRORS" -eq 0 ]]; then
138
+ echo "validate-doctrine: ALL checks passed"
139
+ exit 0
140
+ else
141
+ echo "validate-doctrine: $ERRORS check(s) FAILED" >&2
142
+ exit 1
143
+ fi
@@ -0,0 +1,63 @@
1
+ # Seed Conventions — Reference Templates
2
+
3
+ ## Agent config template (CLAUDE.md / GEMINI.md / AGENTS.md)
4
+
5
+ All three files use the same structure — only the header differs:
6
+ - `CLAUDE.md` → `# [Project Name] — Claude Code`
7
+ - `GEMINI.md` → `# [Project Name] — Gemini CLI`
8
+ - `AGENTS.md` → `# [Project Name] — OpenCode`
9
+
10
+ ```markdown
11
+ # [Project Name] — [Agent]
12
+
13
+ Read CONVENTIONS.md before any GitHub or git operation.
14
+
15
+ ## Project
16
+ [One sentence description]
17
+ Stack: [language, framework, runtime]
18
+
19
+ ## Commands
20
+ | Action | Command |
21
+ |--------|---------|
22
+ | Run | `[cmd]` |
23
+ | Test | `[cmd]` |
24
+ | Build | `[cmd]` |
25
+ | Lint | `[cmd]` |
26
+
27
+ ## Architecture
28
+ [1–2 sentences. Key modules and their relationships.]
29
+
30
+ ## Conventions
31
+ - [convention 1]
32
+ - [convention 2]
33
+
34
+ ## Never
35
+ - [hard stop 1]
36
+ - [hard stop 2]
37
+
38
+ ## Agent Rules
39
+ - **Workflow Mandate:** You MUST use the bigpowers skills (e.g. `plan-work`, `develop-tdd`, `orchestrate-project`) to perform tasks. DO NOT write code directly in response to a user prompt like "build this feature".
40
+ - Read specs/ before writing code.
41
+ - All planning and specifications MUST be written to `specs/` (`product/SCOPE_LATEST.yaml`, `release-plan.yaml`, `epics/`) before any code is generated.
42
+ - Write the minimum code that solves the stated problem. Nothing extra.
43
+ - Never refactor, rename, or reorganize code outside the task scope.
44
+ - Run tests after every change. Show evidence before declaring done.
45
+ - One clarifying question beats a wrong assumption baked into 200 lines.
46
+ ```
47
+
48
+ ## opencode.json template
49
+
50
+ ```json
51
+ {
52
+ "$schema": "https://opencode.ai/config.json",
53
+ "instructions": [".cursor/rules/*.mdc"]
54
+ }
55
+ ```
56
+
57
+ ## CONVENTIONS.md
58
+
59
+ Use the standard bigpowers CONVENTIONS.md as the base. Fill in the project-specific defensive code categories from the interview answers.
60
+
61
+ ## Stack profile fragments
62
+
63
+ If the user selected a stack profile, merge the matching `profiles/<name>.md` fragment into the generated `CONVENTIONS.md` under a `## Stack Conventions` section. Profiles supply language-specific commands, architecture patterns, and never-do additions.
@@ -5,8 +5,7 @@ description: Generate CLAUDE.md and CONVENTIONS.md for a brand-new project throu
5
5
  ---
6
6
 
7
7
  # Seed Conventions
8
- > **HARD GATE** — **HARD GATE** — Before any new code lands, confirm the project conventions are understood. Ask: 'What does a good commit message look like in this project?'
9
-
8
+ > **HARD GATE** — Before any new code lands, confirm the project conventions are understood. Ask: 'What does a good commit message look like in this project?'
10
9
 
11
10
  Bootstrap a new project with the AI agent conventions it needs. Run this once at the start of a greenfield project.
12
11
 
@@ -23,196 +22,43 @@ Bootstrap a new project with the AI agent conventions it needs. Run this once at
23
22
  Ask the user these questions (one at a time, wait for each answer):
24
23
 
25
24
  1. **Project name and one-sentence description** — "What is this project? One sentence."
26
-
27
25
  2. **Stack** — "What language, framework, and runtime? (e.g. TypeScript / Next.js / Node 22)"
28
-
29
- 2b. **Stack profile (optional)** — Offer: `swift`, `typescript-vue`, `node-service`, or none. If chosen, merge the matching fragment from `profiles/<name>.md` into generated `CONVENTIONS.md` (commands, architecture, never-do).
30
-
31
- 3. **Commands** — "What commands do you use for: run, test, build, lint? I'll document them so agents know how to verify their work."
32
-
33
- 4. **Architecture** — "Describe the key modules and their relationships in 1–2 sentences. What are the main moving parts?"
34
-
35
- 5. **Conventions** — "Any naming conventions, file organization rules, or patterns that every contributor (human or agent) must follow?"
36
-
37
- 6. **Never-do list** — "What are the hard stops? Things an agent must never touch or do in this project?"
38
-
39
- 7. **Defensive code categories** — "Which of these apply to your project? (Rate limit / Retry with backoff / Circuit breaker / Timeout / Graceful degradation)"
26
+ 2b. **Stack profile (optional)** — Offer: `swift`, `typescript-vue`, `node-service`, or none. If chosen, merge the matching fragment from `profiles/<name>.md` into generated `CONVENTIONS.md`.
27
+ 3. **Commands** — "What commands do you use for: run, test, build, lint?"
28
+ 4. **Architecture** — "Key modules and relationships in 1–2 sentences."
29
+ 5. **Conventions** — "Any naming, file organization, or patterns all agents must follow?"
30
+ 6. **Never-do list** — "What are the hard stops? Things an agent must never touch?"
31
+ 7. **Defensive code categories** — "Which apply? (Rate limit / Retry / Circuit breaker / Timeout / Graceful degradation)"
40
32
 
41
33
  ## Generate files
42
34
 
43
- After the interview, generate:
44
-
45
- ### `CLAUDE.md`
46
-
47
- ```markdown
48
- # [Project Name] — Claude Code
49
-
50
- Read CONVENTIONS.md before any GitHub or git operation.
51
-
52
- ## Project
53
- [One sentence description]
54
- Stack: [language, framework, runtime]
55
-
56
- ## Commands
57
- | Action | Command |
58
- |--------|---------|
59
- | Run | `[cmd]` |
60
- | Test | `[cmd]` |
61
- | Build | `[cmd]` |
62
- | Lint | `[cmd]` |
63
-
64
- ## Architecture
65
- [1–2 sentences. Key modules and their relationships.]
66
-
67
- ## Conventions
68
- - [convention 1]
69
- - [convention 2]
70
-
71
- ## Never
72
- - [hard stop 1]
73
- - [hard stop 2]
74
-
75
- ## Agent Rules
76
- - **Workflow Mandate:** You MUST use the bigpowers skills (e.g. `plan-work`, `develop-tdd`, `orchestrate-project`) to perform tasks. DO NOT write code directly in response to a user prompt like "build this feature".
77
- - Read specs/ before writing code.
78
- - All planning and specifications MUST be written to `specs/` (`product/SCOPE_LATEST.yaml`, `release-plan.yaml`, `epics/`) before any code is generated.
79
- - Write the minimum code that solves the stated problem. Nothing extra.
80
- - Never refactor, rename, or reorganize code outside the task scope.
81
- - Run tests after every change. Show evidence before declaring done.
82
- - One clarifying question beats a wrong assumption baked into 200 lines.
83
- ```
84
-
85
- ### `GEMINI.md`
86
-
87
- ```markdown
88
- # [Project Name] — Gemini CLI
89
-
90
- Read CONVENTIONS.md before any GitHub or git operation.
91
-
92
- ## Project
93
- [One sentence description]
94
- Stack: [language, framework, runtime]
95
-
96
- ## Commands
97
- | Action | Command |
98
- |--------|---------|
99
- | Run | `[cmd]` |
100
- | Test | `[cmd]` |
101
- | Build | `[cmd]` |
102
- | Lint | `[cmd]` |
103
-
104
- ## Architecture
105
- [1–2 sentences. Key modules and their relationships.]
106
-
107
- ## Conventions
108
- - [convention 1]
109
- - [convention 2]
110
-
111
- ## Never
112
- - [hard stop 1]
113
- - [hard stop 2]
114
-
115
- ## Agent Rules
116
- - **Workflow Mandate:** You MUST use the bigpowers skills (e.g. `plan-work`, `develop-tdd`, `orchestrate-project`) to perform tasks. DO NOT write code directly in response to a user prompt like "build this feature".
117
- - Read specs/ before writing code.
118
- - All planning and specifications MUST be written to `specs/` (`product/SCOPE_LATEST.yaml`, `release-plan.yaml`, `epics/`) before any code is generated.
119
- - Write the minimum code that solves the stated problem. Nothing extra.
120
- - Never refactor, rename, or reorganize code outside the task scope.
121
- - Run tests after every change. Show evidence before declaring done.
122
- - One clarifying question beats a wrong assumption baked into 200 lines.
123
- ```
124
-
125
- ### `AGENTS.md`
126
-
127
- ```markdown
128
- # [Project Name] — OpenCode
129
-
130
- Read CONVENTIONS.md before any GitHub or git operation.
131
-
132
- ## Project
133
- [One sentence description]
134
- Stack: [language, framework, runtime]
135
-
136
- ## Commands
137
- | Action | Command |
138
- |--------|---------|
139
- | Run | `[cmd]` |
140
- | Test | `[cmd]` |
141
- | Build | `[cmd]` |
142
- | Lint | `[cmd]` |
143
-
144
- ## Architecture
145
- [1–2 sentences. Key modules and their relationships.]
146
-
147
- ## Conventions
148
- - [convention 1]
149
- - [convention 2]
150
-
151
- ## Never
152
- - [hard stop 1]
153
- - [hard stop 2]
154
-
155
- ## Agent Rules
156
- - **Workflow Mandate:** You MUST use the bigpowers skills (e.g. `plan-work`, `develop-tdd`, `orchestrate-project`) to perform tasks. DO NOT write code directly in response to a user prompt like "build this feature".
157
- - Read specs/ before writing code.
158
- - All planning and specifications MUST be written to `specs/` (`product/SCOPE_LATEST.yaml`, `release-plan.yaml`, `epics/`) before any code is generated.
159
- - Write the minimum code that solves the stated problem. Nothing extra.
160
- - Never refactor, rename, or reorganize code outside the task scope.
161
- - Run tests after every change. Show evidence before declaring done.
162
- - One clarifying question beats a wrong assumption baked into 200 lines.
163
- ```
164
-
165
- ### `opencode.json`
166
-
167
- ```json
168
- {
169
- "$schema": "https://opencode.ai/config.json",
170
- "instructions": [".cursor/rules/*.mdc"]
171
- }
172
- ```
173
-
174
- ### `CONVENTIONS.md`
175
-
176
- Use the standard bigpowers CONVENTIONS.md template, filling in the project-specific defensive code categories from the interview.
35
+ After the interview, generate each file using the templates in [REFERENCE.md](REFERENCE.md):
36
+ - `CLAUDE.md`, `GEMINI.md`, `AGENTS.md` — from the agent-config template
37
+ - `opencode.json` — from the opencode template
38
+ - `CONVENTIONS.md` — bigpowers standard template + project defensive code categories
177
39
 
178
40
  ### `specs/` directory
179
41
 
180
- Create the evolved bigpowers directory structure:
181
-
182
42
  ```bash
183
- mkdir -p specs/product
184
- mkdir -p specs/product/snapshots
185
- mkdir -p specs/epics/archive
186
- mkdir -p specs/tech-architecture
187
- mkdir -p specs/adr
188
- mkdir -p specs/verifications
189
- mkdir -p specs/bugs
190
-
191
- # Create empty placeholder files
192
- touch specs/product/SCOPE_LATEST.yaml
193
- touch specs/product/VISION_LATEST.yaml
194
- touch specs/product/GLOSSARY_LATEST.yaml
195
- touch specs/release-plan.yaml
196
- touch specs/execution-status.yaml
197
- touch specs/planning-status.yaml
198
- touch specs/state.yaml
199
- touch specs/tech-architecture/tech-stack.md
200
- touch specs/tech-architecture/security.md
201
- touch specs/tech-architecture/test.md
202
- touch specs/tech-architecture/design.md
203
- touch specs/tech-architecture/REFACTOR_LATEST.md
204
- touch specs/tech-architecture/IMPACT_LATEST.md
43
+ mkdir -p specs/product specs/product/snapshots specs/epics/archive
44
+ mkdir -p specs/tech-architecture specs/adr specs/verifications specs/bugs
45
+ touch specs/product/SCOPE_LATEST.yaml specs/product/VISION_LATEST.yaml specs/product/GLOSSARY_LATEST.yaml
46
+ touch specs/release-plan.yaml specs/execution-status.yaml specs/planning-status.yaml specs/state.yaml
47
+ touch specs/tech-architecture/tech-stack.md specs/tech-architecture/security.md
48
+ touch specs/tech-architecture/test.md specs/tech-architecture/design.md
49
+ touch specs/tech-architecture/REFACTOR_LATEST.md specs/tech-architecture/IMPACT_LATEST.md
205
50
  touch specs/bugs/registry.yaml
206
- echo "# Specs\n\nAll planning documents for this project. Evolved bigpowers structure (v2.0.0+)." > specs/README.md
51
+ echo "# Specs\n\nAll planning documents for this project." > specs/README.md
207
52
  ```
208
53
 
209
- **Note:** `specs/state.yaml.lock` is NOT pre-created — it is acquired and released dynamically during writes to prevent concurrency conflicts.
54
+ **Note:** `specs/state.yaml.lock` is NOT pre-created — acquired/released dynamically.
55
+
56
+ `specs/state.yaml` carries a top-level `workflow_mode` key (`team-pr` | `solo-git`, default `team-pr`). This is the **canonical integrate-mode signal** for all skills — set it once here and skills such as `release-branch` read it from this file instead of sniffing profile files.
210
57
 
211
- ### Verify
58
+ ## Verify
212
59
 
213
60
  - [ ] CLAUDE.md exists and is populated
214
61
  - [ ] CONVENTIONS.md exists and includes specs/ output convention
215
- - [ ] specs/ directory exists
216
62
  - [ ] specs/product/ exists with SCOPE_LATEST.yaml, VISION_LATEST.yaml, GLOSSARY_LATEST.yaml
217
63
  - [ ] specs/tech-architecture/ exists with tech-stack.md, security.md, test.md, design.md
218
64
  - [ ] specs/verifications/ exists
@@ -1,11 +1,13 @@
1
1
  ---
2
2
  name: slice-tasks
3
- description: Break a plan or PRD into vertical-slice stories in specs/epics/ (replaces legacy TASKS.md). Use after scope-work or plan-release, before plan-work.
3
+ description: "PLANNING SPINE STEP 2 of 3 — Slice the work: break a scoped PRD into vertical-slice stories in specs/epics/. Use after scope-work (step 1), before plan-work (step 3). Not a substitute for scope-work or plan-work."
4
4
  model: sonnet
5
5
  ---
6
6
 
7
7
  # Slice Tasks
8
8
 
9
+ > **Spine position:** Step 2 — scope-work → slice-tasks → plan-work.
10
+
9
11
  Produce **epic capsule story tasks** in `specs/epics/eNN-slug/` — vertical slices, each independently deliverable and testable. Output: decoupled `eNNsYY-tasks.yaml` files with runnable verify commands. Legacy `specs/epics/ (see slice-tasks)` is deprecated; use capsule dirs + `execution-status.yaml`.
10
12
 
11
13
  ## Process
@@ -1,13 +1,15 @@
1
1
  ---
2
2
  name: survey-context
3
3
  model: haiku
4
- description: Per-task context survey — reads specs/ and CONVENTIONS.md, maps the current lifecycle phase, and suggests the next skill to invoke. Use at the start of any new task, when returning to a project after a break, or when unsure what to do next.
4
+ description: Per-task context bootstrap — reads existing specs/ and tech-architecture docs to map the current lifecycle phase and suggest the next skill. Use at the start of any task, when returning after a break, or when unsure what to do next. For deriving a tech-stack doc from scratch, use map-codebase first.
5
5
  ---
6
6
 
7
7
  # Survey Context
8
8
 
9
9
  Read the project's current state and give a phase map + next-skill recommendation. This is the "where am I?" skill — run it at the start of every task.
10
10
 
11
+ > **Use this vs map-codebase:** `survey-context` consumes existing specs and docs (fast; does not re-derive). `map-codebase` builds the tech-stack doc from scratch by scanning the codebase. Run `map-codebase` when `specs/tech-architecture/tech-stack.md` doesn't exist yet; run `survey-context` when it does.
12
+
11
13
  > **HARD GATE** — Read specs/ files before suggesting next steps. If state.yaml is stale or contradicts the codebase, request clarification rather than assuming intent.
12
14
 
13
15
  Orchestrate-project 6 phases: Phase 1 Discover - Phase 2 Elaborate - Phase 3 Plan - Phase 4 Build - Phase 5 Verify - Phase 6 Release