bigpowers 2.72.1 → 2.73.1

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 (191) hide show
  1. package/.continue/rules/align-grid.md +0 -0
  2. package/.continue/rules/assess-impact.md +0 -0
  3. package/.continue/rules/audit-code.md +0 -0
  4. package/.continue/rules/audit-plan.md +0 -0
  5. package/.continue/rules/build-epic.md +0 -0
  6. package/.continue/rules/change-request.md +0 -0
  7. package/.continue/rules/commit-message.md +0 -0
  8. package/.continue/rules/compose-workflow.md +0 -0
  9. package/.continue/rules/craft-skill.md +0 -0
  10. package/.continue/rules/deepen-architecture.md +0 -0
  11. package/.continue/rules/define-language.md +0 -0
  12. package/.continue/rules/define-success.md +0 -0
  13. package/.continue/rules/delegate-task.md +0 -0
  14. package/.continue/rules/deploy.md +0 -0
  15. package/.continue/rules/design-interface.md +0 -0
  16. package/.continue/rules/develop-tdd.md +0 -0
  17. package/.continue/rules/diagnose-root.md +0 -0
  18. package/.continue/rules/dispatch-agents.md +0 -0
  19. package/.continue/rules/edit-document.md +0 -0
  20. package/.continue/rules/elaborate-spec.md +0 -0
  21. package/.continue/rules/enforce-first.md +0 -0
  22. package/.continue/rules/evolve-skill.md +0 -0
  23. package/.continue/rules/execute-plan.md +0 -0
  24. package/.continue/rules/extract-design.md +0 -0
  25. package/.continue/rules/fix-bug.md +0 -0
  26. package/.continue/rules/gate-trace.md +0 -0
  27. package/.continue/rules/grill-me.md +0 -0
  28. package/.continue/rules/grill-with-docs.md +0 -0
  29. package/.continue/rules/guard-git.md +0 -0
  30. package/.continue/rules/hook-commits.md +0 -0
  31. package/.continue/rules/inspect-quality.md +0 -0
  32. package/.continue/rules/investigate-bug.md +0 -0
  33. package/.continue/rules/kickoff-branch.md +0 -0
  34. package/.continue/rules/maintain-wiki.md +0 -0
  35. package/.continue/rules/map-codebase.md +0 -0
  36. package/.continue/rules/migrate-spec.md +0 -0
  37. package/.continue/rules/model-domain.md +0 -0
  38. package/.continue/rules/orchestrate-project.md +0 -0
  39. package/.continue/rules/organize-workspace.md +0 -0
  40. package/.continue/rules/plan-refactor.md +0 -0
  41. package/.continue/rules/plan-release.md +0 -0
  42. package/.continue/rules/plan-tests.md +0 -0
  43. package/.continue/rules/plan-work.md +0 -0
  44. package/.continue/rules/publish-package.md +0 -0
  45. package/.continue/rules/quick-fix.md +0 -0
  46. package/.continue/rules/release-branch.md +0 -0
  47. package/.continue/rules/request-review.md +0 -0
  48. package/.continue/rules/research-first.md +0 -0
  49. package/.continue/rules/reset-baseline.md +0 -0
  50. package/.continue/rules/respond-review.md +0 -0
  51. package/.continue/rules/run-benchmark.md +0 -0
  52. package/.continue/rules/run-evals.md +0 -0
  53. package/.continue/rules/run-planning.md +0 -0
  54. package/.continue/rules/scope-work.md +0 -0
  55. package/.continue/rules/search-skills.md +0 -0
  56. package/.continue/rules/security-review.md +0 -0
  57. package/.continue/rules/seed-conventions.md +0 -0
  58. package/.continue/rules/session-state.md +0 -0
  59. package/.continue/rules/setup-environment.md +0 -0
  60. package/.continue/rules/simulate-agents.md +0 -0
  61. package/.continue/rules/slice-tasks.md +0 -0
  62. package/.continue/rules/smoke-test.md +0 -0
  63. package/.continue/rules/spike-prototype.md +0 -0
  64. package/.continue/rules/stocktake-skills.md +0 -0
  65. package/.continue/rules/survey-context.md +0 -0
  66. package/.continue/rules/terse-mode.md +0 -0
  67. package/.continue/rules/trace-requirement.md +0 -0
  68. package/.continue/rules/using-bigpowers.md +0 -0
  69. package/.continue/rules/validate-contracts.md +0 -0
  70. package/.continue/rules/validate-fix.md +0 -0
  71. package/.continue/rules/verify-work.md +0 -0
  72. package/.continue/rules/visual-dashboard.md +0 -0
  73. package/.continue/rules/wire-ci.md +0 -0
  74. package/.continue/rules/wire-observability.md +0 -0
  75. package/.continue/rules/write-document.md +0 -0
  76. package/.kilocode/rules/align-grid.md +0 -0
  77. package/.kilocode/rules/assess-impact.md +0 -0
  78. package/.kilocode/rules/audit-code.md +0 -0
  79. package/.kilocode/rules/audit-plan.md +0 -0
  80. package/.kilocode/rules/build-epic.md +0 -0
  81. package/.kilocode/rules/change-request.md +0 -0
  82. package/.kilocode/rules/commit-message.md +0 -0
  83. package/.kilocode/rules/compose-workflow.md +0 -0
  84. package/.kilocode/rules/craft-skill.md +0 -0
  85. package/.kilocode/rules/deepen-architecture.md +0 -0
  86. package/.kilocode/rules/define-language.md +0 -0
  87. package/.kilocode/rules/define-success.md +0 -0
  88. package/.kilocode/rules/delegate-task.md +0 -0
  89. package/.kilocode/rules/deploy.md +0 -0
  90. package/.kilocode/rules/design-interface.md +0 -0
  91. package/.kilocode/rules/develop-tdd.md +0 -0
  92. package/.kilocode/rules/diagnose-root.md +0 -0
  93. package/.kilocode/rules/dispatch-agents.md +0 -0
  94. package/.kilocode/rules/edit-document.md +0 -0
  95. package/.kilocode/rules/elaborate-spec.md +0 -0
  96. package/.kilocode/rules/enforce-first.md +0 -0
  97. package/.kilocode/rules/evolve-skill.md +0 -0
  98. package/.kilocode/rules/execute-plan.md +0 -0
  99. package/.kilocode/rules/extract-design.md +0 -0
  100. package/.kilocode/rules/fix-bug.md +0 -0
  101. package/.kilocode/rules/gate-trace.md +0 -0
  102. package/.kilocode/rules/grill-me.md +0 -0
  103. package/.kilocode/rules/grill-with-docs.md +0 -0
  104. package/.kilocode/rules/guard-git.md +0 -0
  105. package/.kilocode/rules/hook-commits.md +0 -0
  106. package/.kilocode/rules/inspect-quality.md +0 -0
  107. package/.kilocode/rules/investigate-bug.md +0 -0
  108. package/.kilocode/rules/kickoff-branch.md +0 -0
  109. package/.kilocode/rules/maintain-wiki.md +0 -0
  110. package/.kilocode/rules/map-codebase.md +0 -0
  111. package/.kilocode/rules/migrate-spec.md +0 -0
  112. package/.kilocode/rules/model-domain.md +0 -0
  113. package/.kilocode/rules/orchestrate-project.md +0 -0
  114. package/.kilocode/rules/organize-workspace.md +0 -0
  115. package/.kilocode/rules/plan-refactor.md +0 -0
  116. package/.kilocode/rules/plan-release.md +0 -0
  117. package/.kilocode/rules/plan-tests.md +0 -0
  118. package/.kilocode/rules/plan-work.md +0 -0
  119. package/.kilocode/rules/publish-package.md +0 -0
  120. package/.kilocode/rules/quick-fix.md +0 -0
  121. package/.kilocode/rules/release-branch.md +0 -0
  122. package/.kilocode/rules/request-review.md +0 -0
  123. package/.kilocode/rules/research-first.md +0 -0
  124. package/.kilocode/rules/reset-baseline.md +0 -0
  125. package/.kilocode/rules/respond-review.md +0 -0
  126. package/.kilocode/rules/run-benchmark.md +0 -0
  127. package/.kilocode/rules/run-evals.md +0 -0
  128. package/.kilocode/rules/run-planning.md +0 -0
  129. package/.kilocode/rules/scope-work.md +0 -0
  130. package/.kilocode/rules/search-skills.md +0 -0
  131. package/.kilocode/rules/security-review.md +0 -0
  132. package/.kilocode/rules/seed-conventions.md +0 -0
  133. package/.kilocode/rules/session-state.md +0 -0
  134. package/.kilocode/rules/setup-environment.md +0 -0
  135. package/.kilocode/rules/simulate-agents.md +0 -0
  136. package/.kilocode/rules/slice-tasks.md +0 -0
  137. package/.kilocode/rules/smoke-test.md +0 -0
  138. package/.kilocode/rules/spike-prototype.md +0 -0
  139. package/.kilocode/rules/stocktake-skills.md +0 -0
  140. package/.kilocode/rules/survey-context.md +0 -0
  141. package/.kilocode/rules/terse-mode.md +0 -0
  142. package/.kilocode/rules/trace-requirement.md +0 -0
  143. package/.kilocode/rules/using-bigpowers.md +0 -0
  144. package/.kilocode/rules/validate-contracts.md +0 -0
  145. package/.kilocode/rules/validate-fix.md +0 -0
  146. package/.kilocode/rules/verify-work.md +0 -0
  147. package/.kilocode/rules/visual-dashboard.md +0 -0
  148. package/.kilocode/rules/wire-ci.md +0 -0
  149. package/.kilocode/rules/wire-observability.md +0 -0
  150. package/.kilocode/rules/write-document.md +0 -0
  151. package/.pi/package.json +1 -1
  152. package/.pi/prompts/seed-conventions.md +46 -8
  153. package/.pi/prompts/using-bigpowers.md +2 -2
  154. package/.pi/skills/seed-conventions/SKILL.md +46 -8
  155. package/.pi/skills/using-bigpowers/SKILL.md +2 -2
  156. package/CHANGELOG.md +14 -0
  157. package/audit-independent-unwaived-2026-07-06.md +49 -0
  158. package/package.json +1 -1
  159. package/scripts/adapters/agy.sh +6 -0
  160. package/scripts/adapters/aider.sh +7 -0
  161. package/scripts/adapters/cline.sh +8 -0
  162. package/scripts/adapters/continue.sh +11 -0
  163. package/scripts/adapters/cursor.sh +25 -0
  164. package/scripts/adapters/gemini.sh +36 -0
  165. package/scripts/adapters/goose.sh +3 -0
  166. package/scripts/adapters/hermes.sh +10 -0
  167. package/scripts/adapters/iflow.sh +6 -0
  168. package/scripts/adapters/kilocode.sh +11 -0
  169. package/scripts/adapters/omp.sh +10 -0
  170. package/scripts/adapters/pi.sh +37 -0
  171. package/scripts/adapters/qwen.sh +6 -0
  172. package/scripts/adapters/shai.sh +6 -0
  173. package/scripts/adapters/vibe.sh +6 -0
  174. package/scripts/adapters/zed.sh +10 -0
  175. package/scripts/check-blind-spots.sh +3 -0
  176. package/scripts/generate-context-bundle.sh +57 -0
  177. package/scripts/install.sh +21 -0
  178. package/scripts/lib/context-wire.sh +66 -0
  179. package/scripts/lib/target-contracts.sh +77 -0
  180. package/scripts/lib/trace-stories.py +3 -2
  181. package/scripts/sync-bugs-registry.sh +3 -1
  182. package/scripts/sync-skills.sh +24 -9
  183. package/scripts/targets.yaml +202 -0
  184. package/scripts/test-adapters.sh +80 -0
  185. package/scripts/test-trace-strict.sh +132 -0
  186. package/scripts/validate-targets-yaml.sh +69 -0
  187. package/scripts/verify-install.sh +76 -3
  188. package/skills/seed-conventions/REFERENCE.md +40 -5
  189. package/skills/seed-conventions/SKILL.md +6 -3
  190. package/skills/using-bigpowers/SKILL.md +2 -2
  191. package/skills-lock.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [2.73.1](https://github.com/danielvm-git/bigpowers/compare/v2.73.0...v2.73.1) (2026-07-06)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **ci:** skip unimplemented P0 stories in trace --strict gate ([e7a56bf](https://github.com/danielvm-git/bigpowers/commit/e7a56bfd94d5dbebf0f7736383e2c381016616b9))
7
+
8
+ # [2.73.0](https://github.com/danielvm-git/bigpowers/compare/v2.72.1...v2.73.0) (2026-07-06)
9
+
10
+
11
+ ### Features
12
+
13
+ * **reach:** AGENTS.md spine and integration registry (e37) ([7d3b856](https://github.com/danielvm-git/bigpowers/commit/7d3b85691384e8df67e71d61fccfd143cc637f56))
14
+
1
15
  ## [2.72.1](https://github.com/danielvm-git/bigpowers/compare/v2.72.0...v2.72.1) (2026-07-06)
2
16
 
3
17
 
@@ -0,0 +1,49 @@
1
+ # Independent Compliance Audit (Unwaived Mode)
2
+
3
+ **Date**: 2026-07-06
4
+ **Mode**: Strict (All waivers disabled)
5
+ **Target**: `specs/verifications/features/`
6
+ **Result**: GATE: FAIL
7
+
8
+ ## Summary of Execution
9
+ I executed the verification gates by temporarily bypassing `waivers.yaml` to run an independent compliance audit against the `bigpowers` principles and conventions without any exceptions. The `audit-compliance.sh` and `validate-doctrine.sh` scripts were successfully executed.
10
+
11
+ ## Failed Verification Steps & Offending Scripts
12
+
13
+ By disabling the waivers, I isolated **4 failing verification steps**. Below is the mapping of each failure to its offending files and corresponding `bigpowers` skills:
14
+
15
+ ### 1. Unique Public Symbols (`grep` < 5 results)
16
+ **Feature**: `akita.feature` (sourced from `conventions.feature`)
17
+ - **Reason**: Duplicate function names across multiple files (e.g., `agent_dry_run`, `assign_tier`, `cleanup`, `emit_json`, `fail`, `parse_frontmatter`, `pass`, `show_help`, `usage`).
18
+ - **Affected Core/Skills**: Common shared scripts and lifecycle utilities.
19
+
20
+ ### 2. Context Window Constraint (< 300 lines)
21
+ **Feature**: `akita.feature`
22
+ - **Reason**: Scripts exceeding the 300-line limit for agent context windows.
23
+ - **Offending Files**:
24
+ - `scripts/sync-skills.sh` (Mapped to: `craft-skill`, `evolve-skill`, `maintain-wiki`)
25
+ - `scripts/migrate-version.sh` (Mapped to: `migrate-spec`)
26
+ - `scripts/run-verification-gates.sh` (Core harness)
27
+ - `scripts/validate-okf.sh` (Core harness)
28
+ - `scripts/audit-compliance.sh` (Core harness / `audit-code`)
29
+ - `scripts/run-golden-suite.sh` (Core harness)
30
+ - `scripts/lib/trace-matrix.py` (Mapped to: `gate-trace`)
31
+ - `scripts/lib/trace-stories.py` (Mapped to: `trace-requirement`)
32
+
33
+ ### 3. Newspaper Metaphor (< 500 lines)
34
+ **Feature**: `cleancode.feature`
35
+ - **Reason**: Critical scripts exceeding the absolute 500-line hard cap.
36
+ - **Offending Files**:
37
+ - `scripts/sync-skills.sh` (Mapped to: `craft-skill`, `evolve-skill`)
38
+ - `scripts/migrate-version.sh` (Mapped to: `migrate-spec`)
39
+ - `scripts/lib/trace-matrix.py` (Mapped to: `gate-trace`)
40
+
41
+ ### 4. Boolean Encapsulation (G28)
42
+ **Feature**: `cleancode.feature`
43
+ - **Reason**: Complex, multi-clause bash conditional logic not encapsulated in named functions.
44
+ - **Offending Files**:
45
+ - `scripts/migrate-version.sh` (Mapped to: `migrate-spec`)
46
+ - `scripts/check-spec-version-gap.sh` (Mapped to: `plan-release`)
47
+
48
+ ## Restoration
49
+ After the test run concluded, the original `waivers.yaml` was restored to preserve environment integrity. No actual code modifications were made.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "2.72.1",
3
+ "version": "2.73.1",
4
4
  "description": "73 agent skills synthesizing 17 years of software engineering discipline into a prescriptive methodology for solo developers",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s09
3
+ wire_context() {
4
+ source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
5
+ wire_context_mode symlink "${1:-CLAUDE.md}"
6
+ }
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s05 e37s03
3
+
4
+ wire_context() {
5
+ source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
6
+ wire_context_mode config-bridge ".aider.conf.yml" read "AGENTS.md"
7
+ }
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s05
3
+ # Cline reads AGENTS.md natively — no skill artifacts.
4
+
5
+ wire_context() {
6
+ # native mode — no derivative
7
+ return 0
8
+ }
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s12
3
+ render_skill() {
4
+ local rules_dir="${CONTINUE_RULES:-.continue/rules}"
5
+ mkdir -p "$rules_dir" 2>/dev/null || true
6
+ [[ -n "${IR_NAME:-}" ]] && touch "$rules_dir/$IR_NAME.md" 2>/dev/null || true
7
+ }
8
+ wire_context() {
9
+ source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
10
+ wire_context_mode copy "${1:-AGENTS.md}"
11
+ }
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s05 e37s07
3
+ # scenario: SC-e37s07-P0-02
4
+ # Cursor skill adapter — renders .cursor/rules/*.mdc from IR globals.
5
+
6
+ render_skill() {
7
+ if declare -f render_cursor >/dev/null 2>&1; then
8
+ render_cursor
9
+ return
10
+ fi
11
+ local cursor_file="${CURSOR_RULES:-.cursor/rules}/$IR_NAME.mdc"
12
+ {
13
+ echo "---"
14
+ echo "description: \"$IR_DESC_ESCAPED\""
15
+ echo "alwaysApply: false"
16
+ echo "---"
17
+ echo ""
18
+ echo "$IR_BODY"
19
+ } > "$cursor_file"
20
+ }
21
+
22
+ wire_context() {
23
+ source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
24
+ wire_context_mode symlink "${1:-CLAUDE.md}"
25
+ }
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s05 e37s07
3
+
4
+ render_skill() {
5
+ if declare -f render_gemini_skill >/dev/null 2>&1; then
6
+ render_gemini_skill
7
+ render_gemini_command
8
+ return
9
+ fi
10
+ mkdir -p "${GEMINI_SKILLS:-.gemini/extensions/bigpowers/skills}/$IR_NAME"
11
+ {
12
+ echo "---"
13
+ echo "name: $IR_NAME"
14
+ [[ -n "$IR_MODEL" ]] && echo "model: $IR_MODEL"
15
+ echo "description: \"$IR_DESC_ESCAPED\""
16
+ echo "disable-model-invocation: true"
17
+ echo "---"
18
+ echo ""
19
+ echo "$IR_BODY"
20
+ } > "${GEMINI_SKILLS}/$IR_NAME/SKILL.md"
21
+
22
+ mkdir -p "${GEMINI_COMMANDS:-.gemini/extensions/bigpowers/commands/prompts}"
23
+ {
24
+ echo "---"
25
+ echo "name: $IR_NAME"
26
+ echo "description: \"$IR_DESC_ESCAPED\""
27
+ echo "---"
28
+ echo ""
29
+ echo "$IR_BODY"
30
+ } > "${GEMINI_COMMANDS}/prompts/$IR_NAME.md"
31
+ }
32
+
33
+ wire_context() {
34
+ source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
35
+ wire_context_mode symlink "${1:-GEMINI.md}"
36
+ }
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s09
3
+ wire_context() { return 0; }
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s10
3
+ render_skill() {
4
+ local out="${HERMES_SKILLS:-.hermes/skills}"
5
+ mkdir -p "$out/${IR_NAME:-_stub}" 2>/dev/null || true
6
+ }
7
+ wire_context() {
8
+ source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
9
+ wire_context_mode config-bridge ".hermes/config.yaml" "instructions" "AGENTS.md"
10
+ }
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s13
3
+ wire_context() {
4
+ source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
5
+ wire_context_mode symlink "${1:-AGENTS.md}"
6
+ }
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s11
3
+ render_skill() {
4
+ local out="${KILOCODE_RULES:-.kilocode/rules}"
5
+ mkdir -p "$out" 2>/dev/null || true
6
+ [[ -n "${IR_NAME:-}" ]] && touch "$out/$IR_NAME.md" 2>/dev/null || true
7
+ }
8
+ wire_context() {
9
+ source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
10
+ wire_context_mode copy "${1:-AGENTS.md}"
11
+ }
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s10
3
+ render_skill() {
4
+ local out="${OMP_SKILLS:-.omp/skills}"
5
+ mkdir -p "$out/${IR_NAME:-_stub}" 2>/dev/null || true
6
+ }
7
+ wire_context() {
8
+ source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
9
+ wire_context_mode symlink "${1:-CLAUDE.md}"
10
+ }
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s05 e37s07
3
+
4
+ render_skill() {
5
+ if declare -f render_pi_skill >/dev/null 2>&1; then
6
+ render_pi_skill
7
+ render_pi_prompt
8
+ return
9
+ fi
10
+ mkdir -p "${PI_SKILLS:-.pi/skills}/$IR_NAME"
11
+ cp "${SKILL_MD_PATH:-}" "${PI_SKILLS}/$IR_NAME/SKILL.md" 2>/dev/null || {
12
+ {
13
+ echo "---"
14
+ echo "name: $IR_NAME"
15
+ [[ -n "$IR_MODEL" ]] && echo "model: $IR_MODEL"
16
+ echo "description: \"$IR_DESC_ESCAPED\""
17
+ echo "---"
18
+ echo ""
19
+ echo "$IR_BODY"
20
+ } > "${PI_SKILLS}/$IR_NAME/SKILL.md"
21
+ }
22
+
23
+ mkdir -p "${PI_PROMPTS:-.pi/prompts}"
24
+ {
25
+ echo "---"
26
+ echo "name: $IR_NAME"
27
+ echo "description: \"$IR_DESC_ESCAPED\""
28
+ echo "---"
29
+ echo ""
30
+ echo "$IR_BODY"
31
+ } > "${PI_PROMPTS}/$IR_NAME.md"
32
+ }
33
+
34
+ wire_context() {
35
+ source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
36
+ wire_context_mode symlink "${1:-CLAUDE.md}"
37
+ }
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s11
3
+ wire_context() {
4
+ source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
5
+ wire_context_mode symlink "${1:-QWEN.md}"
6
+ }
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s13
3
+ wire_context() {
4
+ source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
5
+ wire_context_mode symlink "${1:-AGENTS.md}"
6
+ }
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s13
3
+ wire_context() {
4
+ source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
5
+ wire_context_mode symlink "${1:-AGENTS.md}"
6
+ }
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s10
3
+ render_skill() {
4
+ local out="${ZED_OUT:-.zed/skills}"
5
+ mkdir -p "$out/${IR_NAME:-_stub}" 2>/dev/null || true
6
+ }
7
+ wire_context() {
8
+ source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
9
+ wire_context_mode copy "${1:-AGENTS.md}"
10
+ }
@@ -11,6 +11,9 @@
11
11
 
12
12
  set -euo pipefail
13
13
  source "$(dirname "${BASH_SOURCE[0]}")/lib/python-env.sh"
14
+ source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
15
+ resolve_repo_root
16
+
14
17
 
15
18
  BLIND_SPOTS_JSON="$REPO_ROOT/specs/blind-spots.json"
16
19
  EXEC_STATUS="$REPO_ROOT/specs/execution-status.yaml"
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s06
3
+ # scenario: SC-e37s06-P1-01
4
+ set -euo pipefail
5
+
6
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7
+ source "$SCRIPT_DIR/lib/skill-common.sh"
8
+ resolve_repo_root
9
+
10
+ DRY_RUN=0
11
+ for arg in "$@"; do
12
+ case "$arg" in
13
+ --dry-run) DRY_RUN=1 ;;
14
+ --help|-h)
15
+ echo "Usage: generate-context-bundle.sh [--dry-run]"
16
+ exit 0
17
+ ;;
18
+ esac
19
+ done
20
+
21
+ bash "$SCRIPT_DIR/validate-targets-yaml.sh" >/dev/null
22
+
23
+ TARGETS_FILE="$SCRIPT_DIR/targets.yaml"
24
+ command -v yq >/dev/null || { echo "generate-context-bundle: yq required" >&2; exit 1; }
25
+
26
+ cd "$REPO_ROOT"
27
+ agents_src="AGENTS.md"
28
+ [[ -f "$agents_src" ]] || agents_src="docs/templates/AGENTS.md"
29
+
30
+ while IFS= read -r row; do
31
+ id=$(echo "$row" | yq -r '.id')
32
+ mode=$(echo "$row" | yq -r '.context.mode // ""')
33
+ [[ "$mode" == "null" || -z "$mode" || "$mode" == "native" ]] && continue
34
+
35
+ file=$(echo "$row" | yq -r '.context.file // ""')
36
+ bridge_file=$(echo "$row" | yq -r '.context.bridge_file // ""')
37
+ bridge_key=$(echo "$row" | yq -r '.context.bridge_key // "read"')
38
+ adapter=$(echo "$row" | yq -r '.context.adapter')
39
+
40
+ dest="${file:-$bridge_file}"
41
+ if [[ "$DRY_RUN" -eq 1 ]]; then
42
+ echo "would wire $id → $dest (mode=$mode, source=$agents_src)"
43
+ continue
44
+ fi
45
+
46
+ adapter_script="$SCRIPT_DIR/adapters/${adapter}.sh"
47
+ # shellcheck source=/dev/null
48
+ source "$adapter_script"
49
+ case "$mode" in
50
+ symlink) wire_context_mode symlink "$file" ;;
51
+ copy) wire_context_mode copy "$file" ;;
52
+ config-bridge) wire_context_mode config-bridge "$bridge_file" "$bridge_key" "$agents_src" ;;
53
+ esac
54
+ echo "wired $id → $dest"
55
+ done < <(yq -o=json '.targets[] | select(.context != null)' "$TARGETS_FILE" | jq -c '.')
56
+
57
+ echo "generate-context-bundle: done (source=$agents_src)"
@@ -225,6 +225,25 @@ uninstall_pi() {
225
225
  fi
226
226
  }
227
227
 
228
+ # ── Codex CLI (e37s15) ───────────────────────────────────────────────────────
229
+
230
+ CODEX_DIR="$HOME/.codex"
231
+ CODEX_AGENTS="$CODEX_DIR/AGENTS.md"
232
+ CODEX_TEMPLATE="$REPO_ROOT/docs/templates/codex/AGENTS.md"
233
+
234
+ install_codex() {
235
+ echo ""
236
+ echo "Codex CLI → $CODEX_AGENTS"
237
+ [[ -f "$CODEX_TEMPLATE" ]] || { echo " skip: template missing $CODEX_TEMPLATE" >&2; return 0; }
238
+ link "$CODEX_TEMPLATE" "$CODEX_AGENTS"
239
+ }
240
+
241
+ uninstall_codex() {
242
+ echo ""
243
+ echo "Codex CLI → removing $CODEX_AGENTS"
244
+ unlink_if_managed "$CODEX_AGENTS" "$REPO_ROOT/"
245
+ }
246
+
228
247
  # ── main ──────────────────────────────────────────────────────────────────────
229
248
 
230
249
  echo "bigpowers install.sh — REPO: $REPO_ROOT"
@@ -236,6 +255,7 @@ if $UNINSTALL; then
236
255
  uninstall_gemini
237
256
  uninstall_pi
238
257
  uninstall_cursor
258
+ uninstall_codex
239
259
  echo ""
240
260
  echo "bigpowers uninstalled."
241
261
  else
@@ -243,6 +263,7 @@ else
243
263
  install_gemini
244
264
  install_pi
245
265
  install_cursor
266
+ install_codex
246
267
  echo ""
247
268
  echo "bigpowers installed. Future updates:"
248
269
  if [[ -d "$REPO_ROOT/.git" ]]; then
@@ -0,0 +1,66 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s05 e37s06
3
+ # scenario: SC-e37s06-P1-02
4
+ # Shared Context Derivative wiring — symlink with copy fallback (Windows-safe).
5
+
6
+ wire_symlink_or_copy() {
7
+ local src="$1"
8
+ local dest="$2"
9
+
10
+ [[ -f "$src" ]] || { echo "context-wire: source missing: $src" >&2; return 1; }
11
+
12
+ if [[ -L "$dest" ]] && [[ "$(readlink "$dest" 2>/dev/null)" == "$src" || "$(readlink "$dest" 2>/dev/null)" == "./$src" ]]; then
13
+ return 0
14
+ fi
15
+ if [[ -f "$dest" ]] && cmp -s "$src" "$dest" 2>/dev/null; then
16
+ return 0
17
+ fi
18
+
19
+ rm -f "$dest" 2>/dev/null || true
20
+ if ln -sf "$src" "$dest" 2>/dev/null; then
21
+ return 0
22
+ fi
23
+
24
+ echo "context-wire: symlink failed for $dest — using copy fallback" >&2
25
+ cp "$src" "$dest"
26
+ }
27
+
28
+ wire_config_bridge() {
29
+ local bridge_file="$1"
30
+ local bridge_key="$2"
31
+ local agents_path="${3:-AGENTS.md}"
32
+
33
+ mkdir -p "$(dirname "$bridge_file")"
34
+ if [[ -f "$bridge_file" ]] && grep -q "^${bridge_key}:" "$bridge_file" 2>/dev/null; then
35
+ return 0
36
+ fi
37
+ printf '%s: %s\n' "$bridge_key" "$agents_path" > "$bridge_file"
38
+ }
39
+
40
+ wire_context_mode() {
41
+ local mode="$1"
42
+ local file="${2:-}"
43
+ local bridge_file="${3:-}"
44
+ local bridge_key="${4:-read}"
45
+ local src="${5:-AGENTS.md}"
46
+
47
+ case "$mode" in
48
+ native) return 0 ;;
49
+ symlink|copy)
50
+ [[ -n "$file" ]] || { echo "context-wire: file required for mode=$mode" >&2; return 1; }
51
+ if [[ "$mode" == "copy" ]]; then
52
+ cp "$src" "$file"
53
+ else
54
+ wire_symlink_or_copy "$src" "$file"
55
+ fi
56
+ ;;
57
+ config-bridge)
58
+ [[ -n "$bridge_file" ]] || { echo "context-wire: bridge_file required" >&2; return 1; }
59
+ wire_config_bridge "$bridge_file" "$bridge_key" "$src"
60
+ ;;
61
+ *)
62
+ echo "context-wire: unknown mode: $mode" >&2
63
+ return 1
64
+ ;;
65
+ esac
66
+ }
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env bash
2
+ # story: e37s08
3
+ # scenario: SC-e37s08-P1-01
4
+
5
+ assert_agents_md() {
6
+ local id="$1"
7
+ if [[ -f AGENTS.md ]] || [[ -f docs/templates/AGENTS.md ]]; then
8
+ echo "PASS $id:agents_md_exists"
9
+ return 0
10
+ fi
11
+ echo "FAIL $id:agents_md_exists — AGENTS.md missing"
12
+ return 1
13
+ }
14
+
15
+ assert_symlink_claude_md() {
16
+ local id="$1"
17
+ if [[ -L CLAUDE.md ]] || [[ -f CLAUDE.md ]]; then
18
+ echo "PASS $id:symlink_claude_md"
19
+ return 0
20
+ fi
21
+ echo "FAIL $id:symlink_claude_md — CLAUDE.md missing"
22
+ return 1
23
+ }
24
+
25
+ assert_cursor_rules_nonempty() {
26
+ local id="$1"
27
+ if [[ -d .cursor/rules ]] && [[ -n "$(ls -A .cursor/rules 2>/dev/null)" ]]; then
28
+ echo "PASS $id:cursor_rules_nonempty"
29
+ return 0
30
+ fi
31
+ echo "FAIL $id:cursor_rules_nonempty — .cursor/rules empty"
32
+ return 1
33
+ }
34
+
35
+ assert_gemini_ext_exists() {
36
+ local id="$1"
37
+ if [[ -d .gemini/extensions/bigpowers ]]; then
38
+ echo "PASS $id:gemini_ext_exists"
39
+ return 0
40
+ fi
41
+ echo "FAIL $id:gemini_ext_exists — gemini extension missing"
42
+ return 1
43
+ }
44
+
45
+ assert_pi_skills_nonempty() {
46
+ local id="$1"
47
+ if [[ -d .pi/skills ]] && [[ -n "$(ls -A .pi/skills 2>/dev/null)" ]]; then
48
+ echo "PASS $id:pi_skills_nonempty"
49
+ return 0
50
+ fi
51
+ echo "FAIL $id:pi_skills_nonempty — .pi/skills empty"
52
+ return 1
53
+ }
54
+
55
+ assert_aider_bridge() {
56
+ local id="$1"
57
+ if [[ -f .aider.conf.yml ]] && grep -q 'AGENTS.md' .aider.conf.yml 2>/dev/null; then
58
+ echo "PASS $id:aider_bridge"
59
+ return 0
60
+ fi
61
+ echo "SKIP $id:aider_bridge — opt_in not wired"
62
+ return 0
63
+ }
64
+
65
+ run_contract() {
66
+ local id="$1"
67
+ local contract="$2"
68
+ case "$contract" in
69
+ agents_md_exists) assert_agents_md "$id" ;;
70
+ symlink_claude_md) assert_symlink_claude_md "$id" ;;
71
+ cursor_rules_nonempty) assert_cursor_rules_nonempty "$id" ;;
72
+ gemini_ext_exists) assert_gemini_ext_exists "$id" ;;
73
+ pi_skills_nonempty) assert_pi_skills_nonempty "$id" ;;
74
+ aider_bridge) assert_aider_bridge "$id" ;;
75
+ *) echo "SKIP $id:$contract — unknown contract"; return 0 ;;
76
+ esac
77
+ }
@@ -30,6 +30,7 @@ MODE = sys.argv[6]
30
30
  # 1. Parse YAML files → story inventory
31
31
  # -----------------------------------------------------------------------
32
32
  _MIN_STORY_BASELINE = 50 # floor assertion: --strict FAILs if story count drops below this
33
+ _STRICT_UNIMPLEMENTED_STATUSES = frozenset({"backlog", "todo", "planned"})
33
34
 
34
35
  def _load_yaml(path: Path) -> dict:
35
36
  """Load a YAML file with PyYAML. Exits with code 1 if parse fails."""
@@ -290,10 +291,10 @@ if STRICT:
290
291
  wsjf_sorted = sorted(set(s["wsjf"] for s in matrix_stories), reverse=True)
291
292
  cutoff_idx = max(0, len(wsjf_sorted) // 4 - 1)
292
293
  p0_threshold = wsjf_sorted[cutoff_idx] if cutoff_idx < len(wsjf_sorted) else 0
293
- # Only flag non-backlog stories — backlog stories haven't been implemented yet
294
+ # Only flag stories expected to have implementation — skip backlog/todo/planned
294
295
  uncovered_p0 = [s["id"] for s in matrix_stories
295
296
  if s["wsjf"] >= p0_threshold and len(s["links"]) == 0
296
- and s["status"] != "backlog"]
297
+ and s["status"] not in _STRICT_UNIMPLEMENTED_STATUSES]
297
298
  if uncovered_p0:
298
299
  print(f"trace-stories.sh: STRICT FAIL — P0 stories with 0% coverage: {', '.join(uncovered_p0)}", file=sys.stderr)
299
300
  sys.exit(2)
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env bash
2
- # story: e45s03
3
2
  # sync-bugs-registry.sh — rebuild specs/bugs/registry.yaml + OKF concept bundles
4
3
  set -euo pipefail
5
4
  source "$(dirname "${BASH_SOURCE[0]}")/lib/python-env.sh"
6
5
  source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
6
+ resolve_repo_root
7
7
  BUGS="$REPO_ROOT/specs/bugs"
8
8
  mkdir -p "$BUGS"
9
9
 
@@ -18,6 +18,8 @@ repo_root = Path(sys.argv[2])
18
18
  # ---- Phase 1: Build registry.yaml ----
19
19
  entries = []
20
20
  for path in sorted(bugs_dir.glob("BUG-*.md")):
21
+ if ".okf" in path.name:
22
+ continue
21
23
  text = path.read_text(encoding="utf-8")
22
24
  if not text.startswith("---"):
23
25
  continue
@@ -254,11 +254,18 @@ parse_frontmatter_okf() {
254
254
  return 0
255
255
  }
256
256
 
257
- # ── Target registry ─────────────────────────────────────────────────
258
- # Order matters: render functions are called in this order per skill.
259
- TARGETS=(render_cursor render_gemini_skill render_gemini_command render_pi_skill render_pi_prompt)
260
- if [[ "$OKF_MODE" -eq 1 ]]; then
261
- TARGETS+=(render_okf_concept)
257
+ # ── Target registry (e37s07) ────────────────────────────────────────
258
+ # Load skill adapters from scripts/targets.yaml — no hardcoded target list.
259
+ TARGETS_FILE="$REPO_ROOT/scripts/targets.yaml"
260
+ SKILL_ADAPTERS=()
261
+ if [[ -f "$TARGETS_FILE" ]] && command -v yq >/dev/null 2>&1; then
262
+ bash "$REPO_ROOT/scripts/validate-targets-yaml.sh" >/dev/null
263
+ while IFS= read -r adapter; do
264
+ [[ -n "$adapter" && "$adapter" != "null" ]] && SKILL_ADAPTERS+=("$adapter")
265
+ done < <(yq -r '.targets[] | select(.skill != null) | .skill.adapter' "$TARGETS_FILE" | sort -u)
266
+ else
267
+ echo "sync-skills: WARN — targets.yaml missing; using legacy render list" >&2
268
+ SKILL_ADAPTERS=(cursor gemini pi)
262
269
  fi
263
270
 
264
271
  skill_count=0
@@ -283,12 +290,20 @@ while IFS= read -r skill_dir; do
283
290
  [[ -z "$IR_NAME" ]] && continue
284
291
 
285
292
  IR_BODY=$(build_body "$skill_md" "$skill_dir")
286
-
287
- # Dispatch to each render target
288
- for target_fn in "${TARGETS[@]}"; do
289
- "$target_fn"
293
+ SKILL_MD_PATH="$skill_md"
294
+
295
+ # Dispatch to each skill adapter from registry (e37s07)
296
+ for adapter_name in "${SKILL_ADAPTERS[@]}"; do
297
+ adapter_script="$REPO_ROOT/scripts/adapters/${adapter_name}.sh"
298
+ # shellcheck source=/dev/null
299
+ source "$adapter_script"
300
+ render_skill
290
301
  done
291
302
 
303
+ if [[ "$OKF_MODE" -eq 1 ]]; then
304
+ render_okf_concept
305
+ fi
306
+
292
307
  skill_count=$((skill_count + 1))
293
308
  done < <(iterate_skills)
294
309