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.
- package/.agents/skills/guard-git/SKILL.md +8 -8
- package/.agents/skills/kickoff-branch/SKILL.md +1 -1
- package/.agents/skills/migrate-spec/SKILL.md +52 -6
- package/.agents/skills/plan-work/SKILL.md +17 -5
- package/.agents/skills/publish-package/SKILL.md +15 -5
- package/.agents/skills/release-branch/SKILL.md +12 -8
- package/.agents/skills/seed-conventions/SKILL.md +20 -10
- package/.agents/skills/smoke-test/SKILL.md +9 -5
- package/.agents/skills/validate-contracts/SKILL.md +15 -6
- package/.agents/skills/wire-ci/SKILL.md +12 -5
- package/.agents/skills/write-document/SKILL.md +30 -4
- package/.cline/skills/guard-git/SKILL.md +8 -8
- package/.cline/skills/kickoff-branch/SKILL.md +1 -1
- package/.cline/skills/migrate-spec/SKILL.md +52 -6
- package/.cline/skills/plan-work/SKILL.md +17 -5
- package/.cline/skills/publish-package/SKILL.md +15 -5
- package/.cline/skills/release-branch/SKILL.md +12 -8
- package/.cline/skills/seed-conventions/SKILL.md +20 -10
- package/.cline/skills/smoke-test/SKILL.md +9 -5
- package/.cline/skills/validate-contracts/SKILL.md +15 -6
- package/.cline/skills/wire-ci/SKILL.md +12 -5
- package/.cline/skills/write-document/SKILL.md +30 -4
- package/.codebuddy/skills/guard-git/SKILL.md +8 -8
- package/.codebuddy/skills/kickoff-branch/SKILL.md +1 -1
- package/.codebuddy/skills/migrate-spec/SKILL.md +52 -6
- package/.codebuddy/skills/plan-work/SKILL.md +17 -5
- package/.codebuddy/skills/publish-package/SKILL.md +15 -5
- package/.codebuddy/skills/release-branch/SKILL.md +12 -8
- package/.codebuddy/skills/seed-conventions/SKILL.md +20 -10
- package/.codebuddy/skills/smoke-test/SKILL.md +9 -5
- package/.codebuddy/skills/validate-contracts/SKILL.md +15 -6
- package/.codebuddy/skills/wire-ci/SKILL.md +12 -5
- package/.codebuddy/skills/write-document/SKILL.md +30 -4
- package/.codex/skills/guard-git/SKILL.md +8 -8
- package/.codex/skills/kickoff-branch/SKILL.md +1 -1
- package/.codex/skills/migrate-spec/SKILL.md +52 -6
- package/.codex/skills/plan-work/SKILL.md +17 -5
- package/.codex/skills/publish-package/SKILL.md +15 -5
- package/.codex/skills/release-branch/SKILL.md +12 -8
- package/.codex/skills/seed-conventions/SKILL.md +20 -10
- package/.codex/skills/smoke-test/SKILL.md +9 -5
- package/.codex/skills/validate-contracts/SKILL.md +15 -6
- package/.codex/skills/wire-ci/SKILL.md +12 -5
- package/.codex/skills/write-document/SKILL.md +30 -4
- package/.copilot/skills/guard-git/SKILL.md +8 -8
- package/.copilot/skills/kickoff-branch/SKILL.md +1 -1
- package/.copilot/skills/migrate-spec/SKILL.md +52 -6
- package/.copilot/skills/plan-work/SKILL.md +17 -5
- package/.copilot/skills/publish-package/SKILL.md +15 -5
- package/.copilot/skills/release-branch/SKILL.md +12 -8
- package/.copilot/skills/seed-conventions/SKILL.md +20 -10
- package/.copilot/skills/smoke-test/SKILL.md +9 -5
- package/.copilot/skills/validate-contracts/SKILL.md +15 -6
- package/.copilot/skills/wire-ci/SKILL.md +12 -5
- package/.copilot/skills/write-document/SKILL.md +30 -4
- package/.hermes/skills/guard-git/SKILL.md +8 -8
- package/.hermes/skills/kickoff-branch/SKILL.md +1 -1
- package/.hermes/skills/migrate-spec/SKILL.md +52 -6
- package/.hermes/skills/plan-work/SKILL.md +17 -5
- package/.hermes/skills/publish-package/SKILL.md +15 -5
- package/.hermes/skills/release-branch/SKILL.md +12 -8
- package/.hermes/skills/seed-conventions/SKILL.md +20 -10
- package/.hermes/skills/smoke-test/SKILL.md +9 -5
- package/.hermes/skills/validate-contracts/SKILL.md +15 -6
- package/.hermes/skills/wire-ci/SKILL.md +12 -5
- package/.hermes/skills/write-document/SKILL.md +30 -4
- package/.kilocode/rules/guard-git.md +8 -8
- package/.kilocode/rules/kickoff-branch.md +1 -1
- package/.kilocode/rules/migrate-spec.md +52 -6
- package/.kilocode/rules/plan-work.md +17 -5
- package/.kilocode/rules/publish-package.md +15 -5
- package/.kilocode/rules/release-branch.md +12 -8
- package/.kilocode/rules/seed-conventions.md +20 -10
- package/.kilocode/rules/smoke-test.md +9 -5
- package/.kilocode/rules/validate-contracts.md +15 -6
- package/.kilocode/rules/wire-ci.md +12 -5
- package/.kilocode/rules/write-document.md +30 -4
- package/.mimocode/skills/guard-git/SKILL.md +8 -8
- package/.mimocode/skills/kickoff-branch/SKILL.md +1 -1
- package/.mimocode/skills/migrate-spec/SKILL.md +52 -6
- package/.mimocode/skills/plan-work/SKILL.md +17 -5
- package/.mimocode/skills/publish-package/SKILL.md +15 -5
- package/.mimocode/skills/release-branch/SKILL.md +12 -8
- package/.mimocode/skills/seed-conventions/SKILL.md +20 -10
- package/.mimocode/skills/smoke-test/SKILL.md +9 -5
- package/.mimocode/skills/validate-contracts/SKILL.md +15 -6
- package/.mimocode/skills/wire-ci/SKILL.md +12 -5
- package/.mimocode/skills/write-document/SKILL.md +30 -4
- package/.opencode/skills/guard-git/SKILL.md +8 -8
- package/.opencode/skills/kickoff-branch/SKILL.md +1 -1
- package/.opencode/skills/migrate-spec/SKILL.md +52 -6
- package/.opencode/skills/plan-work/SKILL.md +17 -5
- package/.opencode/skills/publish-package/SKILL.md +15 -5
- package/.opencode/skills/release-branch/SKILL.md +12 -8
- package/.opencode/skills/seed-conventions/SKILL.md +20 -10
- package/.opencode/skills/smoke-test/SKILL.md +9 -5
- package/.opencode/skills/validate-contracts/SKILL.md +15 -6
- package/.opencode/skills/wire-ci/SKILL.md +12 -5
- package/.opencode/skills/write-document/SKILL.md +30 -4
- package/.pi/package.json +1 -1
- package/.pi/prompts/guard-git.md +8 -8
- package/.pi/prompts/kickoff-branch.md +1 -1
- package/.pi/prompts/migrate-spec.md +52 -6
- package/.pi/prompts/plan-work.md +17 -5
- package/.pi/prompts/publish-package.md +15 -5
- package/.pi/prompts/release-branch.md +12 -8
- package/.pi/prompts/seed-conventions.md +20 -10
- package/.pi/prompts/smoke-test.md +9 -5
- package/.pi/prompts/validate-contracts.md +15 -6
- package/.pi/prompts/wire-ci.md +12 -5
- package/.pi/prompts/write-document.md +30 -4
- package/.pi/skills/guard-git/SKILL.md +8 -8
- package/.pi/skills/kickoff-branch/SKILL.md +1 -1
- package/.pi/skills/migrate-spec/SKILL.md +52 -6
- package/.pi/skills/plan-work/SKILL.md +17 -5
- package/.pi/skills/publish-package/SKILL.md +15 -5
- package/.pi/skills/release-branch/SKILL.md +12 -8
- package/.pi/skills/seed-conventions/SKILL.md +20 -10
- package/.pi/skills/smoke-test/SKILL.md +9 -5
- package/.pi/skills/validate-contracts/SKILL.md +15 -6
- package/.pi/skills/wire-ci/SKILL.md +12 -5
- package/.pi/skills/write-document/SKILL.md +30 -4
- package/.qwen/skills/guard-git/SKILL.md +8 -8
- package/.qwen/skills/kickoff-branch/SKILL.md +1 -1
- package/.qwen/skills/migrate-spec/SKILL.md +52 -6
- package/.qwen/skills/plan-work/SKILL.md +17 -5
- package/.qwen/skills/publish-package/SKILL.md +15 -5
- package/.qwen/skills/release-branch/SKILL.md +12 -8
- package/.qwen/skills/seed-conventions/SKILL.md +20 -10
- package/.qwen/skills/smoke-test/SKILL.md +9 -5
- package/.qwen/skills/validate-contracts/SKILL.md +15 -6
- package/.qwen/skills/wire-ci/SKILL.md +12 -5
- package/.qwen/skills/write-document/SKILL.md +30 -4
- package/.trae/skills/guard-git/SKILL.md +8 -8
- package/.trae/skills/kickoff-branch/SKILL.md +1 -1
- package/.trae/skills/migrate-spec/SKILL.md +52 -6
- package/.trae/skills/plan-work/SKILL.md +17 -5
- package/.trae/skills/publish-package/SKILL.md +15 -5
- package/.trae/skills/release-branch/SKILL.md +12 -8
- package/.trae/skills/seed-conventions/SKILL.md +20 -10
- package/.trae/skills/smoke-test/SKILL.md +9 -5
- package/.trae/skills/validate-contracts/SKILL.md +15 -6
- package/.trae/skills/wire-ci/SKILL.md +12 -5
- package/.trae/skills/write-document/SKILL.md +30 -4
- package/.windsurf/rules/guard-git.md +8 -8
- package/.windsurf/rules/kickoff-branch.md +1 -1
- package/.windsurf/rules/migrate-spec.md +52 -6
- package/.windsurf/rules/plan-work.md +17 -5
- package/.windsurf/rules/publish-package.md +15 -5
- package/.windsurf/rules/release-branch.md +12 -8
- package/.windsurf/rules/seed-conventions.md +20 -10
- package/.windsurf/rules/smoke-test.md +9 -5
- package/.windsurf/rules/validate-contracts.md +15 -6
- package/.windsurf/rules/wire-ci.md +12 -5
- package/.windsurf/rules/write-document.md +30 -4
- package/.zcode/skills/guard-git/SKILL.md +8 -8
- package/.zcode/skills/kickoff-branch/SKILL.md +1 -1
- package/.zcode/skills/migrate-spec/SKILL.md +52 -6
- package/.zcode/skills/plan-work/SKILL.md +17 -5
- package/.zcode/skills/publish-package/SKILL.md +15 -5
- package/.zcode/skills/release-branch/SKILL.md +12 -8
- package/.zcode/skills/seed-conventions/SKILL.md +20 -10
- package/.zcode/skills/smoke-test/SKILL.md +9 -5
- package/.zcode/skills/validate-contracts/SKILL.md +15 -6
- package/.zcode/skills/wire-ci/SKILL.md +12 -5
- package/.zcode/skills/write-document/SKILL.md +30 -4
- package/CHANGELOG.md +7 -0
- package/CONVENTIONS.md +2 -0
- package/package.json +1 -1
- package/scripts/generate-context-bundle.sh +6 -0
- package/scripts/generate-reference-nav.sh +89 -0
- package/scripts/generate-viz-graph.sh +4 -0
- package/scripts/golden-g13-script-orphans.sh +167 -0
- package/scripts/golden-g15-compliance-runner-selftest.sh +126 -0
- package/scripts/golden-g16-spec-version-gap.sh +72 -0
- package/scripts/lib/__pycache__/link_utils.cpython-312.pyc +0 -0
- package/scripts/lib/__pycache__/srp_engine_links.cpython-312.pyc +0 -0
- package/scripts/lib/audit-compliance-report.sh +32 -7
- package/scripts/lib/audit-compliance-runner.sh +14 -1
- package/scripts/lib/golden-suite-gates.sh +23 -7
- package/scripts/lib/test-assertions.sh +4 -0
- package/scripts/snapshot-catalog-baseline.sh +4 -0
- package/scripts/test-adapter-render.sh +19 -21
- package/scripts/test-completeness-critic-scope.sh +18 -19
- package/scripts/test-generate-epics-wiki-zero-stories.sh +12 -13
- package/scripts/test-golden-g11-worktree-venv.sh +16 -18
- package/scripts/test-install-distribute-only.sh +27 -26
- package/scripts/test-install-hub.sh +25 -23
- package/scripts/test-setup-no-pyyaml.sh +16 -17
- package/scripts/test-target-contracts.sh +15 -13
- package/scripts/test-tombstone-mechanism.sh +31 -33
- package/skills/guard-git/REFERENCE.md +8 -8
- package/skills/kickoff-branch/SKILL.md +1 -1
- package/skills/migrate-spec/REFERENCE.md +52 -6
- package/skills/plan-work/REFERENCE.md +17 -5
- package/skills/publish-package/REFERENCE.md +15 -5
- package/skills/release-branch/REFERENCE.md +12 -8
- package/skills/seed-conventions/REFERENCE.md +20 -10
- package/skills/smoke-test/REFERENCE.md +9 -5
- package/skills/validate-contracts/REFERENCE.md +15 -6
- package/skills/wire-ci/REFERENCE.md +12 -5
- package/skills/write-document/REFERENCE.md +30 -4
- package/skills-lock.json +1 -1
- package/scripts/add-model-frontmatter.sh +0 -32
- package/scripts/golden-g13-test-orphans.sh +0 -70
- package/scripts/install-cursor-skills-local.sh +0 -15
- package/scripts/install-cursor-skills.sh +0 -24
- 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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
36
|
+
ta_pass "unknown contract fails (exit $rc)"
|
|
35
37
|
else
|
|
36
|
-
|
|
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" ]] ||
|
|
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
|
-
|
|
53
|
+
ta_fail "$c declared in targets.yaml but no assertion implements it"
|
|
52
54
|
else
|
|
53
|
-
|
|
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
|
-
|
|
66
|
+
ta_pass "$t ships hooks-manifest.json"
|
|
65
67
|
else
|
|
66
|
-
|
|
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: $
|
|
73
|
-
[[ "$
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
48
|
+
ta_pass "validate-tombstones.sh reports clean when zero tombstones registered"
|
|
47
49
|
else
|
|
48
|
-
|
|
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
|
-
|
|
67
|
+
ta_pass "tombstone-skill.sh replaced SKILL.md with a stub"
|
|
66
68
|
else
|
|
67
|
-
|
|
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
|
-
|
|
73
|
+
ta_pass "tombstone-skill.sh preserved the old story tag"
|
|
72
74
|
else
|
|
73
|
-
|
|
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
|
-
|
|
79
|
+
ta_pass "tombstone-skill.sh registered the mapping in ${TOMBSTONES_FILE}"
|
|
78
80
|
else
|
|
79
|
-
|
|
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 |
|
|
84
|
-
|
|
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
|
-
|
|
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 |
|
|
100
|
-
|
|
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
|
-
|
|
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
|
-
|
|
113
|
+
ta_pass "tombstone-skill.sh rejects a path-traversal old-name"
|
|
112
114
|
else
|
|
113
|
-
|
|
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
|
-
|
|
120
|
+
ta_pass "tombstone-skill.sh rejects a path-traversal new-name"
|
|
119
121
|
else
|
|
120
|
-
|
|
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 |
|
|
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
|
-
|
|
138
|
+
ta_pass "validate-tombstones.sh rejects a path-traversal name read from the ledger"
|
|
137
139
|
else
|
|
138
|
-
|
|
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
|
-
|
|
149
|
-
|
|
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–
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
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–
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
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–
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
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–
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
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
|
|
8
|
-
|
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
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
|
-
|
|
|
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
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
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–
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
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–
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
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–
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
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–
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
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": "
|
|
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
|