bigpowers 2.86.6 → 2.86.7

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 (208) hide show
  1. package/.agents/skills/guard-git/SKILL.md +8 -8
  2. package/.agents/skills/kickoff-branch/SKILL.md +1 -1
  3. package/.agents/skills/migrate-spec/SKILL.md +52 -6
  4. package/.agents/skills/plan-work/SKILL.md +17 -5
  5. package/.agents/skills/publish-package/SKILL.md +15 -5
  6. package/.agents/skills/release-branch/SKILL.md +12 -8
  7. package/.agents/skills/seed-conventions/SKILL.md +20 -10
  8. package/.agents/skills/smoke-test/SKILL.md +9 -5
  9. package/.agents/skills/validate-contracts/SKILL.md +15 -6
  10. package/.agents/skills/wire-ci/SKILL.md +12 -5
  11. package/.agents/skills/write-document/SKILL.md +30 -4
  12. package/.cline/skills/guard-git/SKILL.md +8 -8
  13. package/.cline/skills/kickoff-branch/SKILL.md +1 -1
  14. package/.cline/skills/migrate-spec/SKILL.md +52 -6
  15. package/.cline/skills/plan-work/SKILL.md +17 -5
  16. package/.cline/skills/publish-package/SKILL.md +15 -5
  17. package/.cline/skills/release-branch/SKILL.md +12 -8
  18. package/.cline/skills/seed-conventions/SKILL.md +20 -10
  19. package/.cline/skills/smoke-test/SKILL.md +9 -5
  20. package/.cline/skills/validate-contracts/SKILL.md +15 -6
  21. package/.cline/skills/wire-ci/SKILL.md +12 -5
  22. package/.cline/skills/write-document/SKILL.md +30 -4
  23. package/.codebuddy/skills/guard-git/SKILL.md +8 -8
  24. package/.codebuddy/skills/kickoff-branch/SKILL.md +1 -1
  25. package/.codebuddy/skills/migrate-spec/SKILL.md +52 -6
  26. package/.codebuddy/skills/plan-work/SKILL.md +17 -5
  27. package/.codebuddy/skills/publish-package/SKILL.md +15 -5
  28. package/.codebuddy/skills/release-branch/SKILL.md +12 -8
  29. package/.codebuddy/skills/seed-conventions/SKILL.md +20 -10
  30. package/.codebuddy/skills/smoke-test/SKILL.md +9 -5
  31. package/.codebuddy/skills/validate-contracts/SKILL.md +15 -6
  32. package/.codebuddy/skills/wire-ci/SKILL.md +12 -5
  33. package/.codebuddy/skills/write-document/SKILL.md +30 -4
  34. package/.codex/skills/guard-git/SKILL.md +8 -8
  35. package/.codex/skills/kickoff-branch/SKILL.md +1 -1
  36. package/.codex/skills/migrate-spec/SKILL.md +52 -6
  37. package/.codex/skills/plan-work/SKILL.md +17 -5
  38. package/.codex/skills/publish-package/SKILL.md +15 -5
  39. package/.codex/skills/release-branch/SKILL.md +12 -8
  40. package/.codex/skills/seed-conventions/SKILL.md +20 -10
  41. package/.codex/skills/smoke-test/SKILL.md +9 -5
  42. package/.codex/skills/validate-contracts/SKILL.md +15 -6
  43. package/.codex/skills/wire-ci/SKILL.md +12 -5
  44. package/.codex/skills/write-document/SKILL.md +30 -4
  45. package/.copilot/skills/guard-git/SKILL.md +8 -8
  46. package/.copilot/skills/kickoff-branch/SKILL.md +1 -1
  47. package/.copilot/skills/migrate-spec/SKILL.md +52 -6
  48. package/.copilot/skills/plan-work/SKILL.md +17 -5
  49. package/.copilot/skills/publish-package/SKILL.md +15 -5
  50. package/.copilot/skills/release-branch/SKILL.md +12 -8
  51. package/.copilot/skills/seed-conventions/SKILL.md +20 -10
  52. package/.copilot/skills/smoke-test/SKILL.md +9 -5
  53. package/.copilot/skills/validate-contracts/SKILL.md +15 -6
  54. package/.copilot/skills/wire-ci/SKILL.md +12 -5
  55. package/.copilot/skills/write-document/SKILL.md +30 -4
  56. package/.hermes/skills/guard-git/SKILL.md +8 -8
  57. package/.hermes/skills/kickoff-branch/SKILL.md +1 -1
  58. package/.hermes/skills/migrate-spec/SKILL.md +52 -6
  59. package/.hermes/skills/plan-work/SKILL.md +17 -5
  60. package/.hermes/skills/publish-package/SKILL.md +15 -5
  61. package/.hermes/skills/release-branch/SKILL.md +12 -8
  62. package/.hermes/skills/seed-conventions/SKILL.md +20 -10
  63. package/.hermes/skills/smoke-test/SKILL.md +9 -5
  64. package/.hermes/skills/validate-contracts/SKILL.md +15 -6
  65. package/.hermes/skills/wire-ci/SKILL.md +12 -5
  66. package/.hermes/skills/write-document/SKILL.md +30 -4
  67. package/.kilocode/rules/guard-git.md +8 -8
  68. package/.kilocode/rules/kickoff-branch.md +1 -1
  69. package/.kilocode/rules/migrate-spec.md +52 -6
  70. package/.kilocode/rules/plan-work.md +17 -5
  71. package/.kilocode/rules/publish-package.md +15 -5
  72. package/.kilocode/rules/release-branch.md +12 -8
  73. package/.kilocode/rules/seed-conventions.md +20 -10
  74. package/.kilocode/rules/smoke-test.md +9 -5
  75. package/.kilocode/rules/validate-contracts.md +15 -6
  76. package/.kilocode/rules/wire-ci.md +12 -5
  77. package/.kilocode/rules/write-document.md +30 -4
  78. package/.mimocode/skills/guard-git/SKILL.md +8 -8
  79. package/.mimocode/skills/kickoff-branch/SKILL.md +1 -1
  80. package/.mimocode/skills/migrate-spec/SKILL.md +52 -6
  81. package/.mimocode/skills/plan-work/SKILL.md +17 -5
  82. package/.mimocode/skills/publish-package/SKILL.md +15 -5
  83. package/.mimocode/skills/release-branch/SKILL.md +12 -8
  84. package/.mimocode/skills/seed-conventions/SKILL.md +20 -10
  85. package/.mimocode/skills/smoke-test/SKILL.md +9 -5
  86. package/.mimocode/skills/validate-contracts/SKILL.md +15 -6
  87. package/.mimocode/skills/wire-ci/SKILL.md +12 -5
  88. package/.mimocode/skills/write-document/SKILL.md +30 -4
  89. package/.opencode/skills/guard-git/SKILL.md +8 -8
  90. package/.opencode/skills/kickoff-branch/SKILL.md +1 -1
  91. package/.opencode/skills/migrate-spec/SKILL.md +52 -6
  92. package/.opencode/skills/plan-work/SKILL.md +17 -5
  93. package/.opencode/skills/publish-package/SKILL.md +15 -5
  94. package/.opencode/skills/release-branch/SKILL.md +12 -8
  95. package/.opencode/skills/seed-conventions/SKILL.md +20 -10
  96. package/.opencode/skills/smoke-test/SKILL.md +9 -5
  97. package/.opencode/skills/validate-contracts/SKILL.md +15 -6
  98. package/.opencode/skills/wire-ci/SKILL.md +12 -5
  99. package/.opencode/skills/write-document/SKILL.md +30 -4
  100. package/.pi/package.json +1 -1
  101. package/.pi/prompts/guard-git.md +8 -8
  102. package/.pi/prompts/kickoff-branch.md +1 -1
  103. package/.pi/prompts/migrate-spec.md +52 -6
  104. package/.pi/prompts/plan-work.md +17 -5
  105. package/.pi/prompts/publish-package.md +15 -5
  106. package/.pi/prompts/release-branch.md +12 -8
  107. package/.pi/prompts/seed-conventions.md +20 -10
  108. package/.pi/prompts/smoke-test.md +9 -5
  109. package/.pi/prompts/validate-contracts.md +15 -6
  110. package/.pi/prompts/wire-ci.md +12 -5
  111. package/.pi/prompts/write-document.md +30 -4
  112. package/.pi/skills/guard-git/SKILL.md +8 -8
  113. package/.pi/skills/kickoff-branch/SKILL.md +1 -1
  114. package/.pi/skills/migrate-spec/SKILL.md +52 -6
  115. package/.pi/skills/plan-work/SKILL.md +17 -5
  116. package/.pi/skills/publish-package/SKILL.md +15 -5
  117. package/.pi/skills/release-branch/SKILL.md +12 -8
  118. package/.pi/skills/seed-conventions/SKILL.md +20 -10
  119. package/.pi/skills/smoke-test/SKILL.md +9 -5
  120. package/.pi/skills/validate-contracts/SKILL.md +15 -6
  121. package/.pi/skills/wire-ci/SKILL.md +12 -5
  122. package/.pi/skills/write-document/SKILL.md +30 -4
  123. package/.qwen/skills/guard-git/SKILL.md +8 -8
  124. package/.qwen/skills/kickoff-branch/SKILL.md +1 -1
  125. package/.qwen/skills/migrate-spec/SKILL.md +52 -6
  126. package/.qwen/skills/plan-work/SKILL.md +17 -5
  127. package/.qwen/skills/publish-package/SKILL.md +15 -5
  128. package/.qwen/skills/release-branch/SKILL.md +12 -8
  129. package/.qwen/skills/seed-conventions/SKILL.md +20 -10
  130. package/.qwen/skills/smoke-test/SKILL.md +9 -5
  131. package/.qwen/skills/validate-contracts/SKILL.md +15 -6
  132. package/.qwen/skills/wire-ci/SKILL.md +12 -5
  133. package/.qwen/skills/write-document/SKILL.md +30 -4
  134. package/.trae/skills/guard-git/SKILL.md +8 -8
  135. package/.trae/skills/kickoff-branch/SKILL.md +1 -1
  136. package/.trae/skills/migrate-spec/SKILL.md +52 -6
  137. package/.trae/skills/plan-work/SKILL.md +17 -5
  138. package/.trae/skills/publish-package/SKILL.md +15 -5
  139. package/.trae/skills/release-branch/SKILL.md +12 -8
  140. package/.trae/skills/seed-conventions/SKILL.md +20 -10
  141. package/.trae/skills/smoke-test/SKILL.md +9 -5
  142. package/.trae/skills/validate-contracts/SKILL.md +15 -6
  143. package/.trae/skills/wire-ci/SKILL.md +12 -5
  144. package/.trae/skills/write-document/SKILL.md +30 -4
  145. package/.windsurf/rules/guard-git.md +8 -8
  146. package/.windsurf/rules/kickoff-branch.md +1 -1
  147. package/.windsurf/rules/migrate-spec.md +52 -6
  148. package/.windsurf/rules/plan-work.md +17 -5
  149. package/.windsurf/rules/publish-package.md +15 -5
  150. package/.windsurf/rules/release-branch.md +12 -8
  151. package/.windsurf/rules/seed-conventions.md +20 -10
  152. package/.windsurf/rules/smoke-test.md +9 -5
  153. package/.windsurf/rules/validate-contracts.md +15 -6
  154. package/.windsurf/rules/wire-ci.md +12 -5
  155. package/.windsurf/rules/write-document.md +30 -4
  156. package/.zcode/skills/guard-git/SKILL.md +8 -8
  157. package/.zcode/skills/kickoff-branch/SKILL.md +1 -1
  158. package/.zcode/skills/migrate-spec/SKILL.md +52 -6
  159. package/.zcode/skills/plan-work/SKILL.md +17 -5
  160. package/.zcode/skills/publish-package/SKILL.md +15 -5
  161. package/.zcode/skills/release-branch/SKILL.md +12 -8
  162. package/.zcode/skills/seed-conventions/SKILL.md +20 -10
  163. package/.zcode/skills/smoke-test/SKILL.md +9 -5
  164. package/.zcode/skills/validate-contracts/SKILL.md +15 -6
  165. package/.zcode/skills/wire-ci/SKILL.md +12 -5
  166. package/.zcode/skills/write-document/SKILL.md +30 -4
  167. package/CHANGELOG.md +7 -0
  168. package/CONVENTIONS.md +2 -0
  169. package/package.json +1 -1
  170. package/scripts/generate-context-bundle.sh +6 -0
  171. package/scripts/generate-reference-nav.sh +89 -0
  172. package/scripts/generate-viz-graph.sh +4 -0
  173. package/scripts/golden-g13-script-orphans.sh +167 -0
  174. package/scripts/golden-g15-compliance-runner-selftest.sh +126 -0
  175. package/scripts/golden-g16-spec-version-gap.sh +72 -0
  176. package/scripts/lib/__pycache__/link_utils.cpython-312.pyc +0 -0
  177. package/scripts/lib/__pycache__/srp_engine_links.cpython-312.pyc +0 -0
  178. package/scripts/lib/audit-compliance-report.sh +32 -7
  179. package/scripts/lib/audit-compliance-runner.sh +14 -1
  180. package/scripts/lib/golden-suite-gates.sh +23 -7
  181. package/scripts/lib/test-assertions.sh +4 -0
  182. package/scripts/snapshot-catalog-baseline.sh +4 -0
  183. package/scripts/test-adapter-render.sh +19 -21
  184. package/scripts/test-completeness-critic-scope.sh +18 -19
  185. package/scripts/test-generate-epics-wiki-zero-stories.sh +12 -13
  186. package/scripts/test-golden-g11-worktree-venv.sh +16 -18
  187. package/scripts/test-install-distribute-only.sh +27 -26
  188. package/scripts/test-install-hub.sh +25 -23
  189. package/scripts/test-setup-no-pyyaml.sh +16 -17
  190. package/scripts/test-target-contracts.sh +15 -13
  191. package/scripts/test-tombstone-mechanism.sh +31 -33
  192. package/skills/guard-git/REFERENCE.md +8 -8
  193. package/skills/kickoff-branch/SKILL.md +1 -1
  194. package/skills/migrate-spec/REFERENCE.md +52 -6
  195. package/skills/plan-work/REFERENCE.md +17 -5
  196. package/skills/publish-package/REFERENCE.md +15 -5
  197. package/skills/release-branch/REFERENCE.md +12 -8
  198. package/skills/seed-conventions/REFERENCE.md +20 -10
  199. package/skills/smoke-test/REFERENCE.md +9 -5
  200. package/skills/validate-contracts/REFERENCE.md +15 -6
  201. package/skills/wire-ci/REFERENCE.md +12 -5
  202. package/skills/write-document/REFERENCE.md +30 -4
  203. package/skills-lock.json +1 -1
  204. package/scripts/add-model-frontmatter.sh +0 -32
  205. package/scripts/golden-g13-test-orphans.sh +0 -70
  206. package/scripts/install-cursor-skills-local.sh +0 -15
  207. package/scripts/install-cursor-skills.sh +0 -24
  208. package/scripts/project-survey.sh +0 -63
@@ -15,10 +15,12 @@ source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
15
15
  resolve_repo_root
16
16
  cd "$REPO_ROOT"
17
17
 
18
- PASS=0
19
- FAIL=0
20
- pass() { echo "PASS: $1"; PASS=$((PASS + 1)); }
21
- fail() { echo "FAIL: $1" >&2; FAIL=$((FAIL + 1)); }
18
+ TA_PASS=0
19
+ TA_FAIL=0
20
+ TA_TMPDIR=""
21
+
22
+ source "$REPO_ROOT/scripts/lib/test-assertions.sh"
23
+ trap ta_cleanup EXIT
22
24
 
23
25
  echo "=== test-target-contracts.sh ==="
24
26
 
@@ -31,9 +33,9 @@ out=$(run_contract "faketarget" "definitely_not_a_real_contract" 2>&1)
31
33
  rc=$?
32
34
  set -e
33
35
  if [[ $rc -ne 0 ]]; then
34
- pass "unknown contract fails (exit $rc)"
36
+ ta_pass "unknown contract fails (exit $rc)"
35
37
  else
36
- fail "unknown contract returned 0 — run_contract is fail-open again: $out"
38
+ ta_fail "unknown contract returned 0 — run_contract is fail-open again: $out"
37
39
  fi
38
40
 
39
41
  # 2. Every contract declared in targets.yaml must resolve to an assertion.
@@ -41,16 +43,16 @@ fi
41
43
  # a FAIL line, while a missing implementation hits the default branch and
42
44
  # reports "unknown contract".
43
45
  declared=$(grep -E "^ - [a-z0-9_]+$" scripts/targets.yaml | sed 's/^ - //' | sort -u)
44
- [[ -n "$declared" ]] || fail "no contracts parsed from targets.yaml"
46
+ [[ -n "$declared" ]] || ta_fail "no contracts parsed from targets.yaml"
45
47
 
46
48
  for c in $declared; do
47
49
  set +e
48
50
  out=$(run_contract "__probe__" "$c" 2>&1)
49
51
  set -e
50
52
  if grep -q "unknown contract" <<<"$out"; then
51
- fail "$c declared in targets.yaml but no assertion implements it"
53
+ ta_fail "$c declared in targets.yaml but no assertion implements it"
52
54
  else
53
- pass "$c has an implementation"
55
+ ta_pass "$c has an implementation"
54
56
  fi
55
57
  done
56
58
 
@@ -61,13 +63,13 @@ for c in $declared; do
61
63
  *_hooks_manifest)
62
64
  t="${c%_hooks_manifest}"
63
65
  if [[ -f "scripts/hooks/${t}/hooks-manifest.json" ]]; then
64
- pass "$t ships hooks-manifest.json"
66
+ ta_pass "$t ships hooks-manifest.json"
65
67
  else
66
- fail "$t declares $c but scripts/hooks/${t}/hooks-manifest.json is missing"
68
+ ta_fail "$t declares $c but scripts/hooks/${t}/hooks-manifest.json is missing"
67
69
  fi
68
70
  ;;
69
71
  esac
70
72
  done
71
73
 
72
- echo "test-target-contracts: $PASS passed, $FAIL failed"
73
- [[ "$FAIL" -eq 0 ]] || exit 1
74
+ echo "test-target-contracts: $TA_PASS passed, $TA_FAIL failed"
75
+ [[ "$TA_FAIL" -eq 0 ]] || exit 1
@@ -14,10 +14,12 @@ RED='\033[0;31m'
14
14
  GREEN='\033[0;32m'
15
15
  NC='\033[0m'
16
16
 
17
- FAILURES=0
18
- tt_pass() { echo -e "${GREEN}PASS${NC} $1"; }
19
- tt_fail() { echo -e "${RED}FAIL${NC} $1"; FAILURES=$((FAILURES + 1)); }
20
- strip_ansi() { sed -E 's/\x1b\[[0-9;]*m//g'; }
17
+ TA_PASS=0
18
+ TA_FAIL=0
19
+ TA_TMPDIR=""
20
+ source "$(dirname "${BASH_SOURCE[0]}")/lib/test-assertions.sh"
21
+ # NOT `trap ta_cleanup EXIT` — this script's cleanup restores a backed-up
22
+ # specs/tombstones.yaml and removes named fixture dirs, not a TA_TMPDIR.
21
23
 
22
24
  FIXTURE_OLD="test-tombstone-fixture"
23
25
  FIXTURE_NEW="test-tombstone-target"
@@ -25,7 +27,7 @@ FIXTURE_DIR="skills/${FIXTURE_OLD}"
25
27
  TOMBSTONES_FILE="specs/tombstones.yaml"
26
28
  TOMBSTONES_BACKUP=""
27
29
 
28
- cleanup() {
30
+ tombstone_test_cleanup() {
29
31
  rm -rf "$FIXTURE_DIR" "skills/${FIXTURE_NEW}"
30
32
  if [[ -n "$TOMBSTONES_BACKUP" ]]; then
31
33
  mv "$TOMBSTONES_BACKUP" "$TOMBSTONES_FILE"
@@ -33,7 +35,7 @@ cleanup() {
33
35
  rm -f "$TOMBSTONES_FILE"
34
36
  fi
35
37
  }
36
- trap cleanup EXIT
38
+ trap tombstone_test_cleanup EXIT
37
39
 
38
40
  if [[ -f "$TOMBSTONES_FILE" ]]; then
39
41
  TOMBSTONES_BACKUP=$(mktemp)
@@ -43,9 +45,9 @@ fi
43
45
 
44
46
  # --- Scenario: zero tombstones registered (6a) ---
45
47
  if bash scripts/validate-tombstones.sh 2>&1 | grep -qi "no tombstones"; then
46
- tt_pass "validate-tombstones.sh reports clean when zero tombstones registered"
48
+ ta_pass "validate-tombstones.sh reports clean when zero tombstones registered"
47
49
  else
48
- tt_fail "validate-tombstones.sh did not report 'no tombstones' with an empty ledger"
50
+ ta_fail "validate-tombstones.sh did not report 'no tombstones' with an empty ledger"
49
51
  fi
50
52
 
51
53
  # --- Scenario: tombstone-skill.sh generates a stub ---
@@ -62,28 +64,28 @@ FIXTUREEOF
62
64
  bash scripts/tombstone-skill.sh "$FIXTURE_OLD" "$FIXTURE_NEW"
63
65
 
64
66
  if grep -q "TOMBSTONE" "${FIXTURE_DIR}/SKILL.md"; then
65
- tt_pass "tombstone-skill.sh replaced SKILL.md with a stub"
67
+ ta_pass "tombstone-skill.sh replaced SKILL.md with a stub"
66
68
  else
67
- tt_fail "SKILL.md was not replaced with a tombstone stub"
69
+ ta_fail "SKILL.md was not replaced with a tombstone stub"
68
70
  fi
69
71
 
70
72
  if grep -q "story: e00s00" "${FIXTURE_DIR}/SKILL.md"; then
71
- tt_pass "tombstone-skill.sh preserved the old story tag"
73
+ ta_pass "tombstone-skill.sh preserved the old story tag"
72
74
  else
73
- tt_fail "story tag was not preserved in the stub"
75
+ ta_fail "story tag was not preserved in the stub"
74
76
  fi
75
77
 
76
78
  if [[ -f "$TOMBSTONES_FILE" ]] && grep -q "$FIXTURE_OLD" "$TOMBSTONES_FILE"; then
77
- tt_pass "tombstone-skill.sh registered the mapping in ${TOMBSTONES_FILE}"
79
+ ta_pass "tombstone-skill.sh registered the mapping in ${TOMBSTONES_FILE}"
78
80
  else
79
- tt_fail "mapping not registered in ${TOMBSTONES_FILE}"
81
+ ta_fail "mapping not registered in ${TOMBSTONES_FILE}"
80
82
  fi
81
83
 
82
84
  # --- Scenario: fresh tombstone resolves cleanly ---
83
- if bash scripts/validate-tombstones.sh 2>&1 | strip_ansi | grep -q "OK: ${FIXTURE_OLD}"; then
84
- tt_pass "validate-tombstones.sh confirms the fresh stub resolves"
85
+ if bash scripts/validate-tombstones.sh 2>&1 | ta_strip_ansi | grep -q "OK: ${FIXTURE_OLD}"; then
86
+ ta_pass "validate-tombstones.sh confirms the fresh stub resolves"
85
87
  else
86
- tt_fail "validate-tombstones.sh did not confirm the fresh stub"
88
+ ta_fail "validate-tombstones.sh did not confirm the fresh stub"
87
89
  fi
88
90
 
89
91
  # --- Scenario: expired tombstone flagged (6b) ---
@@ -96,10 +98,10 @@ for t in d['tombstones']:
96
98
  yaml.dump(d, open('$TOMBSTONES_FILE', 'w'), default_flow_style=False)
97
99
  "
98
100
 
99
- if bash scripts/validate-tombstones.sh 2>&1 | strip_ansi | grep -qi "EXPIRED: ${FIXTURE_OLD}"; then
100
- tt_pass "validate-tombstones.sh flags a tombstone whose expiry window has passed"
101
+ if bash scripts/validate-tombstones.sh 2>&1 | ta_strip_ansi | grep -qi "EXPIRED: ${FIXTURE_OLD}"; then
102
+ ta_pass "validate-tombstones.sh flags a tombstone whose expiry window has passed"
101
103
  else
102
- tt_fail "expired tombstone was not flagged"
104
+ ta_fail "expired tombstone was not flagged"
103
105
  fi
104
106
 
105
107
  # --- Scenario: rejects path-traversal / invalid skill names (threat model CWE-22) ---
@@ -108,16 +110,16 @@ fi
108
110
  # status doesn't mask the grep check below.
109
111
  output=$(bash scripts/tombstone-skill.sh "../../etc/passwd" "target" 2>&1 || true)
110
112
  if echo "$output" | grep -qi "not a valid skill name"; then
111
- tt_pass "tombstone-skill.sh rejects a path-traversal old-name"
113
+ ta_pass "tombstone-skill.sh rejects a path-traversal old-name"
112
114
  else
113
- tt_fail "tombstone-skill.sh did not reject a path-traversal old-name"
115
+ ta_fail "tombstone-skill.sh did not reject a path-traversal old-name"
114
116
  fi
115
117
 
116
118
  output=$(bash scripts/tombstone-skill.sh "$FIXTURE_OLD" "../../etc/passwd" 2>&1 || true)
117
119
  if echo "$output" | grep -qi "not a valid skill name"; then
118
- tt_pass "tombstone-skill.sh rejects a path-traversal new-name"
120
+ ta_pass "tombstone-skill.sh rejects a path-traversal new-name"
119
121
  else
120
- tt_fail "tombstone-skill.sh did not reject a path-traversal new-name"
122
+ ta_fail "tombstone-skill.sh did not reject a path-traversal new-name"
121
123
  fi
122
124
 
123
125
  # --- Scenario: validate-tombstones.sh rejects an invalid name read back from the ledger ---
@@ -131,11 +133,11 @@ d.setdefault('tombstones', []).append({
131
133
  })
132
134
  yaml.dump(d, open('$TOMBSTONES_FILE', 'w'), default_flow_style=False)
133
135
  "
134
- output=$(bash scripts/validate-tombstones.sh 2>&1 | strip_ansi || true)
136
+ output=$(bash scripts/validate-tombstones.sh 2>&1 | ta_strip_ansi || true)
135
137
  if echo "$output" | grep -qi "FAIL.*not a valid skill name"; then
136
- tt_pass "validate-tombstones.sh rejects a path-traversal name read from the ledger"
138
+ ta_pass "validate-tombstones.sh rejects a path-traversal name read from the ledger"
137
139
  else
138
- tt_fail "validate-tombstones.sh did not reject a path-traversal name read from the ledger"
140
+ ta_fail "validate-tombstones.sh did not reject a path-traversal name read from the ledger"
139
141
  fi
140
142
  python3 -c "
141
143
  import yaml
@@ -145,9 +147,5 @@ yaml.dump(d, open('$TOMBSTONES_FILE', 'w'), default_flow_style=False)
145
147
  "
146
148
 
147
149
  echo "---"
148
- if [[ "$FAILURES" -eq 0 ]]; then
149
- echo -e "${GREEN}test-tombstone-mechanism: ALL PASS${NC}"
150
- else
151
- echo -e "${RED}test-tombstone-mechanism: $FAILURES failure(s)${NC}"
152
- fi
153
- exit "$FAILURES"
150
+ echo "test-tombstone-mechanism: $TA_PASS passed, $TA_FAIL failed"
151
+ exit "$TA_FAIL"
@@ -5,14 +5,14 @@
5
5
  | Lines | Section |
6
6
  |-------|---------|
7
7
  | 1 | Title |
8
- | 3–14 | Navigation |
9
- | 16–24 | Secret patterns |
10
- | 26–44 | Copy layout |
11
- | 46–72 | Claude Code |
12
- | 74–92 | Cursor and Cursor CLI |
13
- | 94–120 | Gemini CLI |
14
- | 122–135 | Google Antigravity |
15
- | 137–178 | Verify (local tests) |
8
+ | 3–16 | Navigation |
9
+ | 17–28 | Secret patterns (audit + pre-commit) |
10
+ | 29–46 | Copy layout |
11
+ | 47–72 | Claude Code |
12
+ | 73–94 | Cursor and Cursor CLI |
13
+ | 95–122 | Gemini CLI |
14
+ | 123–137 | Google Antigravity |
15
+ | 138–180 | Verify (local tests) |
16
16
 
17
17
  ## Secret patterns (audit + pre-commit)
18
18
 
@@ -82,7 +82,7 @@ git worktree list | grep "<task-slug>"
82
82
  **Handling Conflicts:**
83
83
  - **Directory exists:** If `../<task-slug>` already exists, ask the user if they want to use it or delete it.
84
84
  - **Branch exists:** If the branch exists but no worktree is attached, ask to use the existing branch (`git worktree add ../<task-slug> <task-slug>`) or delete it.
85
- - **Ghost worktree:** If `git worktree list` shows the path but the directory is missing, run `git worktree prune` to clear the stale metadata.
85
+ - **Ghost worktree:** If `git worktree list` shows the path but the directory is missing, run `git worktree prune` to clear the stale metadata. `bash scripts/cleanup-worktrees.sh` does this plus reports any worktree whose branch is already merged or deleted — advisory only, it prints the `git worktree remove`/`git branch -d` commands rather than running them, so review before acting.
86
86
 
87
87
  ### 4. Create worktree + branch
88
88
 
@@ -5,12 +5,58 @@
5
5
  | Lines | Section |
6
6
  |-------|---------|
7
7
  | 1 | Title |
8
- | 3–22 | Navigation |
9
- | 24–62 | spec-kit → bigpowers Mapping |
10
- | 64–130 | BMAD → bigpowers Mapping |
11
- | 132–154 | Learnings to Adopt |
12
- | 156–350 | Output Formats + state.yaml template |
13
- | 352–620 | Reference blocks 1–2 + extended mappings |
8
+ | 3–68 | Navigation |
9
+ | 69–70 | spec-kit → bigpowers Mapping |
10
+ | 71–84 | Artifact Locations |
11
+ | 85–94 | `spec.md` → `specs/product/SCOPE_LATEST.yaml` + `specs/tech-architecture/TECH_STACK_LATEST.md` |
12
+ | 95–105 | `plan.md` → `specs/tech-architecture/TECH_STACK_LATEST.md` + `specs/release-plan.yaml` + `specs/epics/` |
13
+ | 106–114 | `tasks.md` → `specs/epics/` (via slice-tasks) |
14
+ | 115–120 | `.specify/` state |
15
+ | 121–122 | BMAD → bigpowers Mapping |
16
+ | 123–141 | Artifact Locations |
17
+ | 142–148 | `product-brief.md` / `prfaq-{project}.md` → `specs/product/VISION_LATEST.yaml` |
18
+ | 149–160 | `prd.md` → `specs/product/SCOPE_LATEST.yaml` + `GLOSSARY_LATEST.yaml` |
19
+ | 161–167 | `addendum.md` + `decision-log.md` → `specs/adr/` + `specs/DECISION-LOG_LATEST.md` |
20
+ | 168–174 | `architecture.md` → `specs/tech-architecture/TECH_STACK_LATEST.md` + `specs/adr/` |
21
+ | 175–178 | `epic-*.md` → `specs/release-plan.yaml` + `specs/epics/eNN-*.yaml` |
22
+ | 179–182 | `story-*.md` → `specs/epics/` stories |
23
+ | 183–188 | `project-context.md` → `CLAUDE.md` |
24
+ | 189–192 | Learnings to Adopt |
25
+ | 193–198 | From GSD |
26
+ | 199–204 | From spec-kit |
27
+ | 205–212 | From BMAD |
28
+ | 213–214 | Output Formats |
29
+ | 215–224 | ADR format (bigpowers) |
30
+ | 225–227 | Context |
31
+ | 228–230 | Decision |
32
+ | 231–234 | Consequences |
33
+ | 235–246 | DECISION-LOG.md format |
34
+ | 247–257 | MIGRATION-AUDIT.md format |
35
+ | 258–264 | Summary |
36
+ | 265–274 | High Priority Findings |
37
+ | 275–278 | Information |
38
+ | 279–285 | Next Steps |
39
+ | 286–306 | in_scope format with ID tracking |
40
+ | 307–341 | REQUIREMENTS_TRACE.yaml format |
41
+ | 342–397 | `specs/state.yaml` template format |
42
+ | 398–416 | Reference block 1 |
43
+ | 417–432 | Reference block 2 |
44
+ | 433–451 | Reference block 3 |
45
+ | 452–474 | Reference block 4 |
46
+ | 475–482 | Reference block 5 |
47
+ | 483–484 | Findings |
48
+ | 485–489 | High Priority |
49
+ | 490–495 | Information |
50
+ | 496–509 | Reference block 6 |
51
+ | 510–542 | Step 7 — Post-migration: Optional two-pass spec writing gate |
52
+ | 543–574 | Step 8 — Post-migration: Optional methodology doc template |
53
+ | 575–600 | Artifact Mapping Summary |
54
+ | 601–610 | Rules |
55
+ | 611–621 | Step 5 — Surface learnings (optional) |
56
+ | 622–644 | Step 6 — Adversarial review (optional) |
57
+ | 645–646 | Findings |
58
+ | 647–651 | High Priority |
59
+ | 652–660 | Information |
14
60
 
15
61
  # migrate-spec Reference — spec-kit, BMAD, Learnings
16
62
 
@@ -5,11 +5,23 @@
5
5
  | Lines | Section |
6
6
  |-------|---------|
7
7
  | 1 | Title |
8
- | 3–14 | Navigation |
9
- | 16–38 | Output file formats |
10
- | 40–71 | Plan template |
11
- | 73–91 | Verify step format rules |
12
- | 93–131 | Sub-operations (risk, define-success, zoom-out, slopcheck, delta tags) |
8
+ | 3–25 | Navigation |
9
+ | 26–27 | Output file formats |
10
+ | 28–31 | Story spec: `specs/epics/<capsule>/eNNsYY-<slug>.md` |
11
+ | 32–61 | Task checklist: `specs/epics/<capsule>/eNNsYY-tasks.yaml` |
12
+ | 62–64 | Plan template |
13
+ | 65–71 | Story [X.Y]: [title] — Implementation Steps |
14
+ | 72–77 | Steps |
15
+ | 78–85 | Verification Script (Step-by-Step) |
16
+ | 86–89 | Out of scope |
17
+ | 90–94 | Risks |
18
+ | 95–114 | Verify step format rules |
19
+ | 115–116 | Sub-operations |
20
+ | 117–127 | Risk Assignment Heuristics |
21
+ | 128–143 | Requirement delta tags (e45s29) |
22
+ | 144–152 | Define Success |
23
+ | 153–161 | Zoom-Out Check |
24
+ | 162–169 | Slopcheck |
13
25
 
14
26
  ## Output file formats
15
27
 
@@ -5,11 +5,21 @@
5
5
  | Lines | Section |
6
6
  |-------|---------|
7
7
  | 1 | Title |
8
- | 3–18 | Navigation |
9
- | 20–28 | Options |
10
- | 30–60 | Examples |
11
- | 62–72 | Integration with release-branch |
12
- | 74–252 | Reference blocks 1–8 |
8
+ | 3–23 | Navigation |
9
+ | 24–35 | Options |
10
+ | 36–37 | Examples |
11
+ | 38–51 | Publish an npm package |
12
+ | 52–59 | Publish a Rust crate |
13
+ | 60–69 | Missing token scenario |
14
+ | 70–80 | Integration with release-branch |
15
+ | 81–121 | Reference block 1 |
16
+ | 122–143 | Reference block 2 |
17
+ | 144–162 | Reference block 3 |
18
+ | 163–180 | Reference block 4 |
19
+ | 181–195 | Reference block 5 |
20
+ | 196–230 | Reference block 6 |
21
+ | 231–248 | Reference block 7 |
22
+ | 249–260 | Reference block 8 |
13
23
 
14
24
  ## Options
15
25
 
@@ -4,15 +4,19 @@
4
4
 
5
5
  | Lines | Section |
6
6
  |-------|---------|
7
- | 1–3 | Title |
8
- | 5–16 | Navigation |
9
- | 18–41 | PR body template |
10
- | 43–54 | Worktree cleanup |
11
- | 56–96 | Cycle-time recording |
12
- | 98–119 | CI verification |
13
- | 121–126 | Solo-local fallback |
7
+ | 1 | Title |
8
+ | 3–22 | Navigation |
9
+ | 23–31 | PR body template (team-pr mode) |
10
+ | 32–35 | Summary |
11
+ | 36–41 | Verify |
12
+ | 42–47 | specs/ artifacts |
13
+ | 48–58 | Worktree cleanup details |
14
+ | 59–81 | Cycle-time recording |
15
+ | 82–100 | Why not story_start minus story_end? |
16
+ | 101–121 | CI verification |
17
+ | 122–127 | Solo-local fallback detail |
14
18
  | 128–134 | Handoff |
15
- | 136–155 | Reference block 1 (manual squash) |
19
+ | 135–159 | Reference block 1 |
16
20
 
17
21
  # Release Branch — Reference
18
22
 
@@ -6,16 +6,26 @@
6
6
 
7
7
  | Lines | Section |
8
8
  |-------|---------|
9
- | 1–4 | Title + story tags |
10
- | 6–22 | Navigation (this table) |
11
- | 24–35 | AGENTS.md spine |
12
- | 37–76 | Agent config template |
13
- | 78–85 | opencode.json template |
14
- | 87–96 | Aider bridge |
15
- | 98–108 | Codex CLI wiring |
16
- | 110–118 | CONVENTIONS.md |
17
- | 120–122 | Stack profile fragments |
18
- | 124–153 | Local tool wiring |
9
+ | 1 | Title |
10
+ | 5–29 | Navigation |
11
+ | 30–53 | Fenced markers (e45s21) |
12
+ | 54–65 | AGENTS.md spine (Reach Template — e37s01) |
13
+ | 66–77 | Agent config template (legacy — prefer AGENTS.md spine) |
14
+ | 78–81 | Project |
15
+ | 82–91 | Commands |
16
+ | 92–94 | Architecture |
17
+ | 95–98 | Conventions |
18
+ | 99–104 | Never |
19
+ | 105–114 | Agent Rules |
20
+ | 115–123 | opencode.json template |
21
+ | 124–133 | Aider — `.aider.conf.yml` bridge (e37s03) |
22
+ | 134–146 | Codex CLI — project-local `.codex/config.toml` + AGENTS.md (e37s14) |
23
+ | 147–156 | CONVENTIONS.md |
24
+ | 157–160 | Stack profile fragments |
25
+ | 161–164 | Local tool wiring (optional interview step 8) |
26
+ | 165–173 | Cursor — project-local `.cursor/rules` symlink |
27
+ | 174–187 | OpenCode — project-local `opencode.json` + `AGENTS.md` |
28
+ | 188–190 | When to offer |
19
29
 
20
30
  ## Fenced markers (e45s21)
21
31
 
@@ -5,11 +5,15 @@
5
5
  | Lines | Section |
6
6
  |-------|---------|
7
7
  | 1 | Title |
8
- | 3–12 | Navigation |
9
- | 14–31 | Runner script |
10
- | 33–42 | Configuration reference |
11
- | 44–53 | Verification |
12
- | 55–160 | Reference blocks 1–5 |
8
+ | 3–17 | Navigation |
9
+ | 18–34 | Runner script |
10
+ | 35–46 | Configuration reference |
11
+ | 47–55 | Verification |
12
+ | 56–89 | Reference block 1 |
13
+ | 90–107 | Reference block 2 |
14
+ | 108–122 | Reference block 3 |
15
+ | 123–159 | Reference block 4 |
16
+ | 160–177 | Reference block 5 |
13
17
 
14
18
  ## Runner script
15
19
 
@@ -5,12 +5,21 @@
5
5
  | Lines | Section |
6
6
  |-------|---------|
7
7
  | 1 | Title |
8
- | 3–14 | Navigation |
9
- | 16–24 | Integration |
10
- | 26–35 | Configuration |
11
- | 37–46 | Verification |
12
- | 48–170 | Reference blocks + Examples 1–6 |
13
- | 172–190 | Integration (duplicate) + Configuration + Verification |
8
+ | 3–23 | Navigation |
9
+ | 24–32 | Integration |
10
+ | 33–44 | Configuration |
11
+ | 45–54 | Verification |
12
+ | 55–71 | Reference block 1 |
13
+ | 72–92 | Reference block 2 |
14
+ | 93–104 | Example 1 |
15
+ | 105–121 | Example 2 |
16
+ | 122–133 | Example 3 |
17
+ | 134–144 | Example 4 |
18
+ | 145–165 | Example 5 |
19
+ | 166–176 | Example 6 |
20
+ | 177–185 | Integration |
21
+ | 186–197 | Configuration |
22
+ | 198–204 | Verification |
14
23
 
15
24
  ## Integration
16
25
 
@@ -5,11 +5,18 @@
5
5
  | Lines | Section |
6
6
  |-------|---------|
7
7
  | 1 | Title |
8
- | 3–14 | Navigation |
9
- | 16–38 | Examples |
10
- | 40–52 | Options |
11
- | 54–62 | Integration with build-epic |
12
- | 64–270 | Reference blocks 1–8 |
8
+ | 3–20 | Navigation |
9
+ | 21–22 | Examples |
10
+ | 23–39 | Create CI for a Go project (TBR + optional deploy) |
11
+ | 40–49 | Create CI for a CLI tool (TBR only, no deploy) |
12
+ | 50–57 | Validate existing workflows (no generation) |
13
+ | 58–70 | Options |
14
+ | 71–79 | Integration with build-epic |
15
+ | 80–154 | Reference block 1 — test-build-release.yml (Go, excerpt) |
16
+ | 155–204 | Reference block 2 — deploy.yml (generic web app, excerpt) |
17
+ | 205–232 | Reference block 3 — CLI dogfood (big-release pattern) |
18
+ | 233–257 | Reference block 4 — validate script |
19
+ | 258–268 | Reference block 5 — dry-run |
13
20
 
14
21
  ## Examples
15
22
 
@@ -7,10 +7,36 @@ Combined from dbader/readme-template and jehna/readme-best-practices. No TOC.
7
7
  | Lines | Section |
8
8
  |-------|---------|
9
9
  | 1 | Title |
10
- | 5–16 | Navigation |
11
- | 18–24 | Sections intro |
12
- | 26–178 | README section templates (1–15) |
13
- | 180–183 | Verify |
10
+ | 5–40 | Navigation |
11
+ | 41–42 | Sections |
12
+ | 43–54 | 1. Title + Badges |
13
+ | 55–60 | 2. Tagline |
14
+ | 61–64 | 3. Description |
15
+ | 65–67 | 4. Prerequisites |
16
+ | 68–75 | Prerequisites |
17
+ | 76–78 | 5. Installation |
18
+ | 79–89 | Installation |
19
+ | 90–92 | 6. Usage |
20
+ | 93–102 | Usage |
21
+ | 103–105 | 7. Features |
22
+ | 106–113 | Features |
23
+ | 114–116 | 8. Configuration |
24
+ | 117–125 | Configuration |
25
+ | 126–128 | 9. Development Setup |
26
+ | 129–139 | Development |
27
+ | 140–142 | 10. Running Tests |
28
+ | 143–152 | Tests |
29
+ | 153–155 | 11. Contributing |
30
+ | 156–164 | Contributing |
31
+ | 165–167 | 12. Changelog |
32
+ | 168–172 | Changelog |
33
+ | 173–175 | 13. Links |
34
+ | 176–181 | Links |
35
+ | 182–184 | 14. License |
36
+ | 185–191 | License |
37
+ | 192–194 | 15. Credits (optional) |
38
+ | 195–199 | Credits |
39
+ | 200–202 | Verify |
14
40
 
15
41
  ## Sections
16
42
 
package/skills-lock.json CHANGED
@@ -188,7 +188,7 @@
188
188
  },
189
189
  "kickoff-branch": {
190
190
  "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\".",
191
- "sha256": "256eefc13f0ec022",
191
+ "sha256": "d94be12d4b29895b",
192
192
  "path": "skills/kickoff-branchSKILL.md"
193
193
  },
194
194
  "maintain-wiki": {
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env bash
2
- # add-model-frontmatter.sh — one-time helper; idempotent model: injection
3
- set -euo pipefail
4
- # SKILLS_ROOT: use skills/ when it exists, fall back to repo root
5
- source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
6
- resolve_repo_root
7
-
8
- # Bash 3.2-compatible model mapping (no declare -A)
9
- model_for() {
10
- case "$1" in
11
- survey-context|verify-work|validate-fix|audit-code|enforce-first|trace-requirement|commit-message|release-branch|kickoff-branch|guard-git|hook-commits|execute-plan|organize-workspace|terse-mode|session-state|search-skills|setup-environment|reset-baseline) echo "haiku" ;;
12
- elaborate-spec|grill-with-docs|design-interface|plan-work|request-review|evolve-skill) echo "opus" ;;
13
- *) echo "sonnet" ;;
14
- esac
15
- }
16
-
17
- for skill_dir in "$SKILLS_ROOT"/*/; do
18
- skill_md="$skill_dir/SKILL.md"
19
- [[ -f "$skill_md" ]] || continue
20
- name=$(basename "$skill_dir")
21
- model=$(model_for "$name")
22
- if grep -q '^model:' "$skill_md" 2>/dev/null; then
23
- continue
24
- fi
25
- # Insert model: after name: line in frontmatter
26
- awk -v m="$model" '
27
- /^---$/ { fm++; print; next }
28
- fm==1 && /^name:/ { print; print "model: " m; next }
29
- { print }
30
- ' "$skill_md" > "$skill_md.tmp" && mv "$skill_md.tmp" "$skill_md"
31
- echo "model: $model → $name"
32
- done