bigpowers 2.67.1 → 2.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.pi/package.json +1 -1
- package/.pi/prompts/gate-trace.md +1 -1
- package/.pi/prompts/maintain-wiki.md +1 -1
- package/.pi/prompts/security-review.md +1 -1
- package/.pi/skills/gate-trace/SKILL.md +1 -1
- package/.pi/skills/maintain-wiki/SKILL.md +1 -1
- package/.pi/skills/security-review/SKILL.md +1 -1
- package/CHANGELOG.md +7 -0
- package/SKILL-INDEX.md +1 -1
- package/package.json +1 -1
- package/scripts/add-model-frontmatter.sh +2 -3
- package/scripts/bp-yaml-set.sh +0 -1
- package/scripts/bp-yaml-snapshot.sh +0 -1
- package/scripts/check-blind-spots.sh +0 -1
- package/scripts/convert-legado.sh +0 -1
- package/scripts/enrich-epics-from-archive.sh +0 -1
- package/scripts/golden-g07-negative-path.sh +2 -1
- package/scripts/golden-g08-anti-vacuity.sh +4 -1
- package/scripts/golden-g09-yaml-roundtrip.sh +4 -1
- package/scripts/golden-g10-trace-anti-vacuity.sh +4 -1
- package/scripts/golden-g11-gitignore-venv.sh +2 -1
- package/scripts/install.sh +4 -3
- package/scripts/lib/skill-common.sh +78 -49
- package/scripts/okf-post-sync.sh +2 -1
- package/scripts/sync-skills.sh +17 -1
- package/scripts/sync-status-from-epics.sh +2 -1
- package/scripts/trace-stories.sh +0 -1
- package/scripts/validate-specs-yaml.sh +0 -1
- package/scripts/verify-install.sh +2 -1
- package/skills-lock.json +3 -3
package/.pi/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Deterministic traceability quality gate — reads coverage matrix + blind-spot data, applies decision rules with oracle confidence downgrade, emits PASS/CONCERNS/FAIL/WAIVED verdict. Use before release-branch to gate merges on traceability."# story: e38s06
|
|
2
|
+
description: "Deterministic traceability quality gate — reads coverage matrix + blind-spot data, applies decision rules with oracle confidence downgrade, emits PASS/CONCERNS/FAIL/WAIVED verdict. Use before release-branch to gate merges on traceability." # story: e38s06
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Agent-maintained OKF wiki — INGEST source docs, LINT for issues, QUERY across concept pages. Run as part of build-epic Step 8 and verify-work Phase 3."# story: e39s07
|
|
2
|
+
description: "Agent-maintained OKF wiki — INGEST source docs, LINT for issues, QUERY across concept pages. Run as part of build-epic Step 8 and verify-work Phase 3." # story: e39s07
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: >
|
|
2
|
+
description: > AI-powered security analysis of code changes — traces data flow, detects injection, auth bypass, secrets exposure, and unsafe deserialization across files. Use when reviewing pending changes, before release-branch, during verify-work Phase 5, during build-epic Step 0 threat modeling, or when the user says "security review" or "scan for vulns".
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gate-trace
|
|
3
|
-
description: "\"Deterministic traceability quality gate — reads coverage matrix + blind-spot data, applies decision rules with oracle confidence downgrade, emits PASS/CONCERNS/FAIL/WAIVED verdict. Use before release-branch to gate merges on traceability.\"# story: e38s06"
|
|
3
|
+
description: "\"Deterministic traceability quality gate — reads coverage matrix + blind-spot data, applies decision rules with oracle confidence downgrade, emits PASS/CONCERNS/FAIL/WAIVED verdict. Use before release-branch to gate merges on traceability.\" # story: e38s06"
|
|
4
4
|
model: haiku
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: maintain-wiki
|
|
3
|
-
description: "\"Agent-maintained OKF wiki — INGEST source docs, LINT for issues, QUERY across concept pages. Run as part of build-epic Step 8 and verify-work Phase 3.\"# story: e39s07"
|
|
3
|
+
description: "\"Agent-maintained OKF wiki — INGEST source docs, LINT for issues, QUERY across concept pages. Run as part of build-epic Step 8 and verify-work Phase 3.\" # story: e39s07"
|
|
4
4
|
model: haiku
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: security-review
|
|
3
|
-
description: ">
|
|
3
|
+
description: "> AI-powered security analysis of code changes — traces data flow, detects injection, auth bypass, secrets exposure, and unsafe deserialization across files. Use when reviewing pending changes, before release-branch, during verify-work Phase 5, during build-epic Step 0 threat modeling, or when the user says \"security review\" or \"scan for vulns\"."
|
|
4
4
|
model: sonnet
|
|
5
5
|
---
|
|
6
6
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [2.68.0](https://github.com/danielvm-git/bigpowers/compare/v2.67.1...v2.68.0) (2026-07-06)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **e28:** sync pipeline refactor — Parse→IR→Render with shared library ([#54](https://github.com/danielvm-git/bigpowers/issues/54)) ([2006f4b](https://github.com/danielvm-git/bigpowers/commit/2006f4bdbe794c454fc167b485e92bd9d3ff71a0))
|
|
7
|
+
|
|
1
8
|
## [2.67.1](https://github.com/danielvm-git/bigpowers/compare/v2.67.0...v2.67.1) (2026-07-05)
|
|
2
9
|
|
|
3
10
|
|
package/SKILL-INDEX.md
CHANGED
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
| 49 | Verify | `request-review` | Dispatch a fresh reviewer agent with a clean context to critique the code after | ✅ Active |
|
|
78
78
|
| 50 | Verify | `respond-review` | Act on a reviewer agent's feedback systematically — categorize findings, apply | ✅ Active |
|
|
79
79
|
| 51 | Verify | `run-evals` | Eval-Driven Development — define capability and regression evals before buildi | ✅ Active |
|
|
80
|
-
| 52 | Verify | `security-review` | >
|
|
80
|
+
| 52 | Verify | `security-review` | > | ✅ Active |
|
|
81
81
|
| 53 | Verify | `trace-requirement` | Link story IDs from specs/release-plan.yaml + epic capsule directories to the im | ✅ Active |
|
|
82
82
|
| 54 | Verify | `validate-fix` | Prove a fix works before declaring done — re-run the failing test, run the ful | ✅ Active |
|
|
83
83
|
| 55 | Verify | `verify-work` | Multi-phase UAT gate — cold-start smoke, build, typecheck, lint, tests, step-b | ✅ Active |
|
package/package.json
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# add-model-frontmatter.sh — one-time helper; idempotent model: injection
|
|
3
3
|
set -euo pipefail
|
|
4
|
-
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
5
4
|
# SKILLS_ROOT: use skills/ when it exists, fall back to repo root
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
6
|
+
resolve_repo_root
|
|
8
7
|
|
|
9
8
|
# Bash 3.2-compatible model mapping (no declare -A)
|
|
10
9
|
model_for() {
|
package/scripts/bp-yaml-set.sh
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
# bp-yaml-snapshot.sh — freeze release-plan + requirements into snapshots/
|
|
3
3
|
# Usage: bp-yaml-snapshot.sh [version] (default: read from release-plan.yaml)
|
|
4
4
|
set -euo pipefail
|
|
5
|
-
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
6
5
|
SPECS="$REPO_ROOT/specs"
|
|
7
6
|
VER="${1:-}"
|
|
8
7
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# convert-legado.sh — RELEASE-PLAN.md + SCOPE.md → YAML layout (one-time migration helper)
|
|
3
3
|
set -euo pipefail
|
|
4
|
-
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
5
4
|
SPECS="$REPO_ROOT/specs"
|
|
6
5
|
RP_MD="$SPECS/RELEASE-PLAN.md"
|
|
7
6
|
SCOPE_MD="$SPECS/SCOPE.md"
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# enrich-epics-from-archive.sh — populate specs/epics from archive RELEASE-PLAN.md
|
|
3
3
|
set -euo pipefail
|
|
4
|
-
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
5
4
|
ARCHIVE="${1:-$REPO_ROOT/specs/archive/RELEASE-PLAN.md}"
|
|
6
5
|
SPECS="$REPO_ROOT/specs"
|
|
7
6
|
|
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
# Exit 1: at least one step script failed to detect a violation (fail-open risk)
|
|
14
14
|
|
|
15
15
|
set -euo pipefail
|
|
16
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
17
|
+
resolve_repo_root
|
|
16
18
|
|
|
17
19
|
RED='\033[0;31m'
|
|
18
20
|
GREEN='\033[0;32m'
|
|
@@ -25,7 +27,6 @@ FAIL=0
|
|
|
25
27
|
g07_pass() { echo -e " ${GREEN}PASS${NC} $*"; PASS=$((PASS + 1)); }
|
|
26
28
|
g07_fail() { echo -e " ${RED}FAIL${NC} $*"; FAIL=$((FAIL + 1)); }
|
|
27
29
|
|
|
28
|
-
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
29
30
|
FIXTURE_DIR="$REPO_ROOT/specs/verifications/fixtures/negative-path"
|
|
30
31
|
STEPS_DIR="$REPO_ROOT/specs/verifications/steps"
|
|
31
32
|
|
|
@@ -18,12 +18,13 @@
|
|
|
18
18
|
# Exit 1: validate-specs-yaml.sh passed vacuously on the corrupt fixture
|
|
19
19
|
|
|
20
20
|
set -euo pipefail
|
|
21
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
22
|
+
resolve_repo_root
|
|
21
23
|
|
|
22
24
|
RED='\033[0;31m'
|
|
23
25
|
GREEN='\033[0;32m'
|
|
24
26
|
NC='\033[0m'
|
|
25
27
|
|
|
26
|
-
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
27
28
|
FIXTURE_DIR="$REPO_ROOT/specs/verifications/fixtures/corrupt-yaml"
|
|
28
29
|
VALIDATOR="$REPO_ROOT/scripts/validate-specs-yaml.sh"
|
|
29
30
|
|
|
@@ -40,6 +41,8 @@ set +e
|
|
|
40
41
|
actual_output=$(bash "$VALIDATOR" "$FIXTURE_DIR" 2>&1)
|
|
41
42
|
actual_exit=$?
|
|
42
43
|
set -e
|
|
44
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
45
|
+
resolve_repo_root
|
|
43
46
|
|
|
44
47
|
echo "$actual_output"
|
|
45
48
|
echo ""
|
|
@@ -17,12 +17,13 @@
|
|
|
17
17
|
# Exit 1: round trip destroyed structure (corruption bug is back)
|
|
18
18
|
|
|
19
19
|
set -euo pipefail
|
|
20
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
21
|
+
resolve_repo_root
|
|
20
22
|
|
|
21
23
|
RED='\033[0;31m'
|
|
22
24
|
GREEN='\033[0;32m'
|
|
23
25
|
NC='\033[0m'
|
|
24
26
|
|
|
25
|
-
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
26
27
|
FIXTURE="$REPO_ROOT/specs/verifications/fixtures/yaml-roundtrip/sample.yaml"
|
|
27
28
|
TOOL="$REPO_ROOT/scripts/yaml-tools.py"
|
|
28
29
|
|
|
@@ -82,6 +83,8 @@ sys.exit(0)
|
|
|
82
83
|
" "$WORKDIR/sample.yaml")"
|
|
83
84
|
EXIT=$?
|
|
84
85
|
set -e
|
|
86
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
87
|
+
resolve_repo_root
|
|
85
88
|
|
|
86
89
|
echo "$RESULT"
|
|
87
90
|
|
|
@@ -13,12 +13,13 @@
|
|
|
13
13
|
# Exit 1: trace-stories.py passed vacuously on the degenerate fixture (fail-open risk)
|
|
14
14
|
|
|
15
15
|
set -euo pipefail
|
|
16
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
17
|
+
resolve_repo_root
|
|
16
18
|
|
|
17
19
|
RED='\033[0;31m'
|
|
18
20
|
GREEN='\033[0;32m'
|
|
19
21
|
NC='\033[0m'
|
|
20
22
|
|
|
21
|
-
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
22
23
|
FIXTURE_DIR="$REPO_ROOT/specs/verifications/fixtures/trace-vacuous"
|
|
23
24
|
TRACE_ENGINE="$REPO_ROOT/scripts/lib/trace-stories.py"
|
|
24
25
|
|
|
@@ -40,6 +41,8 @@ set +e
|
|
|
40
41
|
actual_output=$(python3 "$TRACE_ENGINE" "$FIXTURE_DIR" "$MATRIX_JSON" "$TRACE_MD" "$OKF_DIR" 1 "" 2>&1)
|
|
41
42
|
actual_exit=$?
|
|
42
43
|
set -e
|
|
44
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
45
|
+
resolve_repo_root
|
|
43
46
|
|
|
44
47
|
echo "$actual_output"
|
|
45
48
|
echo ""
|
|
@@ -13,8 +13,9 @@
|
|
|
13
13
|
# Usage: bash scripts/golden-g11-gitignore-venv.sh
|
|
14
14
|
|
|
15
15
|
set -euo pipefail
|
|
16
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
17
|
+
resolve_repo_root
|
|
16
18
|
|
|
17
|
-
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
18
19
|
cd "$REPO_ROOT"
|
|
19
20
|
|
|
20
21
|
RED='\033[0;31m'
|
package/scripts/install.sh
CHANGED
|
@@ -12,11 +12,12 @@
|
|
|
12
12
|
# ./scripts/install.sh --dry-run # show what would be linked
|
|
13
13
|
# ./scripts/install.sh --uninstall # remove all managed symlinks
|
|
14
14
|
set -euo pipefail
|
|
15
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
16
|
+
resolve_repo_root
|
|
15
17
|
|
|
16
|
-
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
17
18
|
# SKILLS_ROOT: use skills/ subdirectory when it exists, fall back to repo root
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
20
|
+
resolve_repo_root
|
|
20
21
|
|
|
21
22
|
DRY_RUN=false
|
|
22
23
|
UNINSTALL=false
|
|
@@ -1,73 +1,102 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# story: e28s01
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
3
|
+
# Shared functions for bigpowers sync pipeline.
|
|
4
|
+
# Source this from any script that needs REPO_ROOT, SKILLS_ROOT, or skill iteration.
|
|
5
|
+
# Double-source guard: safe under set -euo pipefail.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
if [[ -n "${_SKILL_COMMON_SOURCED:-}" ]]; then
|
|
7
|
+
if [ -n "${SKILL_COMMON_LOADED:-}" ]; then
|
|
9
8
|
return 0
|
|
10
9
|
fi
|
|
11
|
-
|
|
10
|
+
SKILL_COMMON_LOADED=1
|
|
12
11
|
|
|
13
|
-
#
|
|
14
|
-
# Resolves REPO_ROOT to the repository root (two levels up from this
|
|
15
|
-
# library at scripts/lib/skill-common.sh). Also sets SKILLS_ROOT:
|
|
16
|
-
# skills/ subdirectory when it exists, repo root fallback.
|
|
12
|
+
# resolve_repo_root — set REPO_ROOT and SKILLS_ROOT
|
|
17
13
|
resolve_repo_root() {
|
|
18
|
-
|
|
14
|
+
local lib_dir
|
|
15
|
+
lib_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" || return 1
|
|
16
|
+
# Library is at REPO/scripts/lib/skill-common.sh → two levels up
|
|
17
|
+
local repo_candidate
|
|
18
|
+
repo_candidate="$(cd "$lib_dir/../.." 2>/dev/null && pwd)"
|
|
19
|
+
if [ -n "$repo_candidate" ] && [ -d "$repo_candidate/skills" ]; then
|
|
20
|
+
REPO_ROOT="$repo_candidate"
|
|
21
|
+
else
|
|
22
|
+
repo_candidate="$(cd "$lib_dir/.." 2>/dev/null && pwd)"
|
|
23
|
+
REPO_ROOT="$repo_candidate"
|
|
24
|
+
fi
|
|
19
25
|
SKILLS_ROOT="$REPO_ROOT"
|
|
20
|
-
[
|
|
26
|
+
[ -d "$REPO_ROOT/skills" ] && SKILLS_ROOT="$REPO_ROOT/skills"
|
|
27
|
+
export REPO_ROOT SKILLS_ROOT
|
|
21
28
|
}
|
|
22
29
|
|
|
23
|
-
#
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
# ── parse_frontmatter ───────────────────────────────────────────────
|
|
27
|
-
# Usage: parse_frontmatter <SKILL.md>
|
|
28
|
-
# Extracts YAML frontmatter into globals: _PF_NAME, _PF_MODEL, _PF_DESCRIPTION
|
|
29
|
-
# Returns 0 on success, non-zero if file missing or no name in frontmatter.
|
|
30
|
+
# parse_frontmatter — extract name, model, description from SKILL.md YAML frontmatter
|
|
31
|
+
# Usage: parse_frontmatter <path-to-SKILL.md>
|
|
32
|
+
# Output: exports SKILL_NAME, SKILL_MODEL, SKILL_DESC
|
|
30
33
|
parse_frontmatter() {
|
|
31
34
|
local file="$1"
|
|
32
|
-
|
|
33
|
-
_PF_MODEL=""
|
|
34
|
-
_PF_DESCRIPTION=""
|
|
35
|
-
|
|
36
|
-
if [[ ! -f "$file" ]]; then
|
|
35
|
+
if [ ! -f "$file" ]; then
|
|
37
36
|
echo "parse_frontmatter: file not found: $file" >&2
|
|
38
37
|
return 1
|
|
39
38
|
fi
|
|
40
39
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
echo "parse_frontmatter: no YAML frontmatter in $file" >&2
|
|
44
|
-
return 1
|
|
45
|
-
fi
|
|
40
|
+
local in_block=0
|
|
41
|
+
local name="" model="" desc="" line
|
|
46
42
|
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
while IFS= read -r line; do
|
|
44
|
+
if [ "$line" = "---" ]; then
|
|
45
|
+
in_block=$((in_block + 1))
|
|
46
|
+
[ "$in_block" -eq 2 ] && break
|
|
47
|
+
continue
|
|
48
|
+
fi
|
|
49
|
+
[ "$in_block" -ne 1 ] && continue
|
|
49
50
|
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
case "$line" in
|
|
52
|
+
name:*)
|
|
53
|
+
name="${line#name: }"
|
|
54
|
+
name="${name#name:}"
|
|
55
|
+
name="${name# }"
|
|
56
|
+
;;
|
|
57
|
+
model:*)
|
|
58
|
+
model="${line#model: }"
|
|
59
|
+
model="${model#model:}"
|
|
60
|
+
model="${model# }"
|
|
61
|
+
;;
|
|
62
|
+
description:*)
|
|
63
|
+
desc="${line#description: }"
|
|
64
|
+
desc="${desc#description:}"
|
|
65
|
+
desc="${desc# }"
|
|
66
|
+
# Handle multiline: keep reading indented continuation lines
|
|
67
|
+
;;
|
|
68
|
+
esac
|
|
69
|
+
done < "$file"
|
|
52
70
|
|
|
53
|
-
#
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
71
|
+
# Read continuation lines for multiline description
|
|
72
|
+
local continued=0
|
|
73
|
+
while IFS= read -r line; do
|
|
74
|
+
if [ "$line" = "---" ]; then
|
|
75
|
+
[ "$continued" -eq 0 ] && continued=1 || break
|
|
76
|
+
continue
|
|
77
|
+
fi
|
|
78
|
+
[ "$continued" -eq 0 ] && continue
|
|
79
|
+
# If next field starts (unindented key:), stop
|
|
80
|
+
[[ "$line" =~ ^[a-zA-Z_]+: ]] && break
|
|
81
|
+
desc="$desc $line"
|
|
82
|
+
done < "$file"
|
|
57
83
|
|
|
58
|
-
|
|
59
|
-
|
|
84
|
+
SKILL_NAME="$name"
|
|
85
|
+
SKILL_MODEL="$model"
|
|
86
|
+
SKILL_DESC="$desc"
|
|
87
|
+
# Compatibility: also set _PF_* for scripts that expect them
|
|
88
|
+
_PF_NAME="$SKILL_NAME"
|
|
89
|
+
_PF_MODEL="$SKILL_MODEL"
|
|
90
|
+
_PF_DESCRIPTION="$SKILL_DESC"
|
|
91
|
+
export SKILL_NAME SKILL_MODEL SKILL_DESC _PF_NAME _PF_MODEL _PF_DESCRIPTION
|
|
60
92
|
}
|
|
61
93
|
|
|
62
|
-
#
|
|
63
|
-
# Usage: iterate_skills
|
|
64
|
-
# Outputs one absolute path per skill directory under SKILLS_ROOT that
|
|
65
|
-
# contains a SKILL.md file, in stable sorted order (no trailing slash).
|
|
94
|
+
# iterate_skills — list skill directories containing SKILL.md, stable sorted order
|
|
66
95
|
iterate_skills() {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
96
|
+
resolve_repo_root 2>/dev/null || true
|
|
97
|
+
if [ -d "$SKILLS_ROOT" ]; then
|
|
98
|
+
for dir in "$SKILLS_ROOT"/*/; do
|
|
99
|
+
[ -f "${dir}SKILL.md" ] && echo "${dir%/}"
|
|
100
|
+
done | sort
|
|
101
|
+
fi
|
|
73
102
|
}
|
package/scripts/okf-post-sync.sh
CHANGED
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
# Called by sync-skills.sh --okf after concept files are rendered.
|
|
5
5
|
# Steps: cross-references from skill-graph.json → index.md → validate-okf.sh
|
|
6
6
|
set -euo pipefail
|
|
7
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
8
|
+
resolve_repo_root
|
|
7
9
|
|
|
8
|
-
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
9
10
|
GRAPH_JSON="$REPO_ROOT/specs/skill-graph.json"
|
|
10
11
|
OKF_WIKI_SKILLS="$REPO_ROOT/specs/skills-wiki/skills"
|
|
11
12
|
OKF_WIKI_DIR="$REPO_ROOT/specs/skills-wiki"
|
package/scripts/sync-skills.sh
CHANGED
|
@@ -31,6 +31,7 @@ for arg in "$@"; do
|
|
|
31
31
|
done
|
|
32
32
|
|
|
33
33
|
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
34
|
+
resolve_repo_root
|
|
34
35
|
|
|
35
36
|
CURSOR_RULES="$REPO_ROOT/.cursor/rules"
|
|
36
37
|
GEMINI_EXT_DIR="$REPO_ROOT/.gemini/extensions/bigpowers"
|
|
@@ -213,7 +214,22 @@ render_okf_concept() {
|
|
|
213
214
|
}
|
|
214
215
|
|
|
215
216
|
# ── Parse extended frontmatter for OKF (includes effort) ────────────
|
|
216
|
-
#
|
|
217
|
+
# Wrapper for library parse_frontmatter — sets _PF_* compat vars
|
|
218
|
+
parse_frontmatter() {
|
|
219
|
+
# Delegate to library which now sets _PF_* vars
|
|
220
|
+
if command -v skill_common_parse >/dev/null 2>&1 || [ -n "${SKILL_COMMON_LOADED:-}" ]; then
|
|
221
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh" 2>/dev/null
|
|
222
|
+
fi
|
|
223
|
+
# Call library version (defined in skill-common.sh, sets SKILL_NAME and _PF_*)
|
|
224
|
+
# But since we have the same name, we need the inline version
|
|
225
|
+
_PF_NAME=$(awk '/^---/{f++} f==1 && /^name:/{print; exit}' "$1" | sed 's/^name:[[:space:]]*//')
|
|
226
|
+
_PF_MODEL=$(awk '/^---/{f++} f==1 && /^model:/{print; exit}' "$1" | sed 's/^model:[[:space:]]*//')
|
|
227
|
+
_PF_DESCRIPTION=$(awk '/^---/{f++; next} f==1 && /^description:/{p=1; sub(/^description:[[:space:]]*/,""); print; next} f==1 && p && /^[a-z]+:/{exit} f==1 && p{print}' "$1" | tr '\n' ' ' | sed 's/[[:space:]]*$//')
|
|
228
|
+
[[ -z "$_PF_NAME" ]] && return 1
|
|
229
|
+
return 0
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
# Extended parse_frontmatter for OKF mode (adds _PF_EFFORT)
|
|
217
233
|
parse_frontmatter_okf() {
|
|
218
234
|
local file="$1"
|
|
219
235
|
_PF_EFFORT=""
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# sync-status-from-epics.sh — seed execution-status.yaml keys from epic shards
|
|
3
3
|
set -euo pipefail
|
|
4
|
-
|
|
4
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
5
|
+
resolve_repo_root
|
|
5
6
|
SPECS="$REPO_ROOT/specs"
|
|
6
7
|
OUT="$SPECS/execution-status.yaml"
|
|
7
8
|
EPICS="$SPECS/epics"
|
package/scripts/trace-stories.sh
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
# story: e47s04
|
|
3
3
|
# verify-install.sh — manual assertion harness for install + seed wiring
|
|
4
4
|
set -euo pipefail
|
|
5
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
6
|
+
resolve_repo_root
|
|
5
7
|
|
|
6
|
-
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
7
8
|
PASS=0
|
|
8
9
|
FAIL=0
|
|
9
10
|
TMPDIR=""
|
package/skills-lock.json
CHANGED
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
"path": "skills/fix-bugSKILL.md"
|
|
128
128
|
},
|
|
129
129
|
"gate-trace": {
|
|
130
|
-
"description": "\"Deterministic traceability quality gate — reads coverage matrix + blind-spot data, applies decision rules with oracle confidence downgrade, emits PASS/CONCERNS/FAIL/WAIVED verdict. Use before release-branch to gate merges on traceability.\"
|
|
130
|
+
"description": "\"Deterministic traceability quality gate — reads coverage matrix + blind-spot data, applies decision rules with oracle confidence downgrade, emits PASS/CONCERNS/FAIL/WAIVED verdict. Use before release-branch to gate merges on traceability.\"",
|
|
131
131
|
"sha256": "81deb2549867386b",
|
|
132
132
|
"path": "skills/gate-traceSKILL.md"
|
|
133
133
|
},
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
"path": "skills/kickoff-branchSKILL.md"
|
|
168
168
|
},
|
|
169
169
|
"maintain-wiki": {
|
|
170
|
-
"description": "\"Agent-maintained OKF wiki — INGEST source docs, LINT for issues, QUERY across concept pages. Run as part of build-epic Step 8 and verify-work Phase 3.\"
|
|
170
|
+
"description": "\"Agent-maintained OKF wiki — INGEST source docs, LINT for issues, QUERY across concept pages. Run as part of build-epic Step 8 and verify-work Phase 3.\"",
|
|
171
171
|
"sha256": "c54c6170db6fe3f9",
|
|
172
172
|
"path": "skills/maintain-wikiSKILL.md"
|
|
173
173
|
},
|
|
@@ -277,7 +277,7 @@
|
|
|
277
277
|
"path": "skills/search-skillsSKILL.md"
|
|
278
278
|
},
|
|
279
279
|
"security-review": {
|
|
280
|
-
"description": ">
|
|
280
|
+
"description": ">",
|
|
281
281
|
"sha256": "da17dffef0b691c7",
|
|
282
282
|
"path": "skills/security-reviewSKILL.md"
|
|
283
283
|
},
|