bigpowers 2.22.0 → 2.24.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/research-first.md +23 -2
- package/.pi/prompts/verify-work.md +4 -3
- package/.pi/skills/research-first/SKILL.md +23 -2
- package/.pi/skills/verify-work/SKILL.md +4 -3
- package/CHANGELOG.md +14 -0
- package/SKILL-INDEX.md +1 -1
- package/package.json +1 -1
- package/research-first/SKILL.md +23 -2
- package/scripts/bp-opensrc-check.sh +64 -0
- package/scripts/bp-read-agents.sh +60 -0
- package/skills-lock.json +2 -2
- package/verify-work/SKILL.md +4 -3
package/.pi/package.json
CHANGED
|
@@ -11,8 +11,29 @@ description: Look-before-build — search registries, repo, existing skills, and
|
|
|
11
11
|
|
|
12
12
|
1. Read `specs/product/SCOPE_LATEST.yaml`, `specs/release-plan.yaml + epic shards`, and the current task statement.
|
|
13
13
|
2. Search in order: this repo → bigpowers skills (`search-skills`) → package registries → web docs.
|
|
14
|
-
3.
|
|
15
|
-
4.
|
|
14
|
+
3. **Check opensrc cache** — if the task integrates an external library, run `bash scripts/bp-opensrc-check.sh` (or `npx opensrc search <pkg>`) to find locally-cached source. Read the `src/` directory for API shapes before writing any integration code.
|
|
15
|
+
4. For each candidate: note name, URL/path, fit (adopt | extend | compose | build).
|
|
16
|
+
5. Append `## Prior Art` to `requirements/SCOPE_LATEST.yaml` notes or the active epic story.
|
|
17
|
+
|
|
18
|
+
## opensrc Integration
|
|
19
|
+
|
|
20
|
+
`opensrc` is a local cache of 200+ open-source repos and npm/PyPI packages. Query it before building any external integration to avoid re-inventing documented API shapes.
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Check if a package is cached
|
|
24
|
+
npx opensrc search <package-name>
|
|
25
|
+
|
|
26
|
+
# Or use the bundled helper (checks all deps from package.json or requirements.txt)
|
|
27
|
+
bash scripts/bp-opensrc-check.sh [package.json|requirements.txt]
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
If opensrc finds a match, read its `src/` or source directory and append findings to the **Prior Art** section:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
opensrc: found <pkg> v<version> — exports <key classes/functions>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
If opensrc is not installed or the package is not cached, fall through to web docs normally.
|
|
16
37
|
|
|
17
38
|
## Outcome matrix
|
|
18
39
|
|
|
@@ -24,9 +24,10 @@ Review answers "is the code good?"; Verify answers "does the built thing do what
|
|
|
24
24
|
|
|
25
25
|
1. Read active story tasks from `specs/epics/<capsule>/eNNsYY-tasks.yaml` and story spec from `specs/epics/<capsule>/eNNsYY-<slug>.md` (countable-story-format, Gherkin in §17).
|
|
26
26
|
2. **Cold-start smoke** (if app): stop server, clear caches, boot from scratch.
|
|
27
|
-
3.
|
|
28
|
-
4.
|
|
29
|
-
5. **
|
|
27
|
+
3. **AGENTS.md preflight** — before running default checks, call `bash scripts/bp-read-agents.sh` to detect project-specific commands. If `BP_PREFLIGHT` is set, run it instead of the default mechanical gates (or in addition to them if the project requires both). Output: `"Using preflight from AGENTS.md: <cmd>"`. Fall back to `CLAUDE.md` commands if AGENTS.md is absent.
|
|
28
|
+
4. Mechanical gates: build → typecheck → lint → tests (from `CLAUDE.md` or AGENTS.md).
|
|
29
|
+
5. **Step-by-step UAT** — one user-observable action at a time.
|
|
30
|
+
6. **Gaps loop** — failures → log → `plan-work` → re-verify.
|
|
30
31
|
|
|
31
32
|
## Verify sub-operations
|
|
32
33
|
|
|
@@ -13,8 +13,29 @@ model: sonnet
|
|
|
13
13
|
|
|
14
14
|
1. Read `specs/product/SCOPE_LATEST.yaml`, `specs/release-plan.yaml + epic shards`, and the current task statement.
|
|
15
15
|
2. Search in order: this repo → bigpowers skills (`search-skills`) → package registries → web docs.
|
|
16
|
-
3.
|
|
17
|
-
4.
|
|
16
|
+
3. **Check opensrc cache** — if the task integrates an external library, run `bash scripts/bp-opensrc-check.sh` (or `npx opensrc search <pkg>`) to find locally-cached source. Read the `src/` directory for API shapes before writing any integration code.
|
|
17
|
+
4. For each candidate: note name, URL/path, fit (adopt | extend | compose | build).
|
|
18
|
+
5. Append `## Prior Art` to `requirements/SCOPE_LATEST.yaml` notes or the active epic story.
|
|
19
|
+
|
|
20
|
+
## opensrc Integration
|
|
21
|
+
|
|
22
|
+
`opensrc` is a local cache of 200+ open-source repos and npm/PyPI packages. Query it before building any external integration to avoid re-inventing documented API shapes.
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Check if a package is cached
|
|
26
|
+
npx opensrc search <package-name>
|
|
27
|
+
|
|
28
|
+
# Or use the bundled helper (checks all deps from package.json or requirements.txt)
|
|
29
|
+
bash scripts/bp-opensrc-check.sh [package.json|requirements.txt]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
If opensrc finds a match, read its `src/` or source directory and append findings to the **Prior Art** section:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
opensrc: found <pkg> v<version> — exports <key classes/functions>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
If opensrc is not installed or the package is not cached, fall through to web docs normally.
|
|
18
39
|
|
|
19
40
|
## Outcome matrix
|
|
20
41
|
|
|
@@ -26,9 +26,10 @@ Review answers "is the code good?"; Verify answers "does the built thing do what
|
|
|
26
26
|
|
|
27
27
|
1. Read active story tasks from `specs/epics/<capsule>/eNNsYY-tasks.yaml` and story spec from `specs/epics/<capsule>/eNNsYY-<slug>.md` (countable-story-format, Gherkin in §17).
|
|
28
28
|
2. **Cold-start smoke** (if app): stop server, clear caches, boot from scratch.
|
|
29
|
-
3.
|
|
30
|
-
4.
|
|
31
|
-
5. **
|
|
29
|
+
3. **AGENTS.md preflight** — before running default checks, call `bash scripts/bp-read-agents.sh` to detect project-specific commands. If `BP_PREFLIGHT` is set, run it instead of the default mechanical gates (or in addition to them if the project requires both). Output: `"Using preflight from AGENTS.md: <cmd>"`. Fall back to `CLAUDE.md` commands if AGENTS.md is absent.
|
|
30
|
+
4. Mechanical gates: build → typecheck → lint → tests (from `CLAUDE.md` or AGENTS.md).
|
|
31
|
+
5. **Step-by-step UAT** — one user-observable action at a time.
|
|
32
|
+
6. **Gaps loop** — failures → log → `plan-work` → re-verify.
|
|
32
33
|
|
|
33
34
|
## Verify sub-operations
|
|
34
35
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# [2.24.0](https://github.com/danielvm-git/bigpowers/compare/v2.23.0...v2.24.0) (2026-06-22)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **verify-work:** read preflight commands from AGENTS.md before running checks ([966963d](https://github.com/danielvm-git/bigpowers/commit/966963d41e5801a904693ce28037b25304333f25))
|
|
7
|
+
|
|
8
|
+
# [2.23.0](https://github.com/danielvm-git/bigpowers/compare/v2.22.0...v2.23.0) (2026-06-22)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **research-first:** add opensrc cache check before building ([9921db6](https://github.com/danielvm-git/bigpowers/commit/9921db68c05b914da8e924a3fbba0d03e6e9dd35))
|
|
14
|
+
|
|
1
15
|
# [2.22.0](https://github.com/danielvm-git/bigpowers/compare/v2.21.0...v2.22.0) (2026-06-22)
|
|
2
16
|
|
|
3
17
|
|
package/SKILL-INDEX.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> **DO NOT EDIT** — This file is auto-generated by `scripts/generate-skill-index.sh`.
|
|
4
4
|
> Edit `SKILL.md` source files or `skills-lock.json` instead. Run `bash scripts/sync-skills.sh` to regenerate.
|
|
5
5
|
|
|
6
|
-
**Generated:** 2026-06-22T02:
|
|
6
|
+
**Generated:** 2026-06-22T02:28:01Z
|
|
7
7
|
**Skills:** 68
|
|
8
8
|
|
|
9
9
|
---
|
package/package.json
CHANGED
package/research-first/SKILL.md
CHANGED
|
@@ -12,8 +12,29 @@ model: sonnet
|
|
|
12
12
|
|
|
13
13
|
1. Read `specs/product/SCOPE_LATEST.yaml`, `specs/release-plan.yaml + epic shards`, and the current task statement.
|
|
14
14
|
2. Search in order: this repo → bigpowers skills (`search-skills`) → package registries → web docs.
|
|
15
|
-
3.
|
|
16
|
-
4.
|
|
15
|
+
3. **Check opensrc cache** — if the task integrates an external library, run `bash scripts/bp-opensrc-check.sh` (or `npx opensrc search <pkg>`) to find locally-cached source. Read the `src/` directory for API shapes before writing any integration code.
|
|
16
|
+
4. For each candidate: note name, URL/path, fit (adopt | extend | compose | build).
|
|
17
|
+
5. Append `## Prior Art` to `requirements/SCOPE_LATEST.yaml` notes or the active epic story.
|
|
18
|
+
|
|
19
|
+
## opensrc Integration
|
|
20
|
+
|
|
21
|
+
`opensrc` is a local cache of 200+ open-source repos and npm/PyPI packages. Query it before building any external integration to avoid re-inventing documented API shapes.
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Check if a package is cached
|
|
25
|
+
npx opensrc search <package-name>
|
|
26
|
+
|
|
27
|
+
# Or use the bundled helper (checks all deps from package.json or requirements.txt)
|
|
28
|
+
bash scripts/bp-opensrc-check.sh [package.json|requirements.txt]
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
If opensrc finds a match, read its `src/` or source directory and append findings to the **Prior Art** section:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
opensrc: found <pkg> v<version> — exports <key classes/functions>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
If opensrc is not installed or the package is not cached, fall through to web docs normally.
|
|
17
38
|
|
|
18
39
|
## Outcome matrix
|
|
19
40
|
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# bp-opensrc-check.sh — Check project dependencies against the local opensrc cache.
|
|
3
|
+
# Usage: bash scripts/bp-opensrc-check.sh [package.json|requirements.txt]
|
|
4
|
+
# Output: one line per dependency — FOUND or NOT CACHED, with local path when found.
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
INPUT="${1:-package.json}"
|
|
8
|
+
|
|
9
|
+
if ! command -v npx >/dev/null 2>&1; then
|
|
10
|
+
echo "SKIP: npx not found — opensrc requires Node.js" >&2
|
|
11
|
+
exit 0
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
if ! npx opensrc --version >/dev/null 2>&1; then
|
|
15
|
+
echo "SKIP: opensrc not installed — run: npm install -g opensrc" >&2
|
|
16
|
+
exit 0
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
extract_deps() {
|
|
20
|
+
local file="$1"
|
|
21
|
+
case "$file" in
|
|
22
|
+
*.json)
|
|
23
|
+
python3 -c "
|
|
24
|
+
import json, sys
|
|
25
|
+
data = json.load(open('$file'))
|
|
26
|
+
deps = list(data.get('dependencies', {}).keys()) + list(data.get('devDependencies', {}).keys())
|
|
27
|
+
print('\n'.join(deps))
|
|
28
|
+
" 2>/dev/null || true
|
|
29
|
+
;;
|
|
30
|
+
requirements*.txt)
|
|
31
|
+
grep -v '^#' "$file" | grep -v '^$' | sed 's/[>=<!].*//' | tr -d ' ' || true
|
|
32
|
+
;;
|
|
33
|
+
*)
|
|
34
|
+
echo "WARN: unsupported file type: $file — pass package.json or requirements.txt" >&2
|
|
35
|
+
exit 1
|
|
36
|
+
;;
|
|
37
|
+
esac
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if [ ! -f "$INPUT" ]; then
|
|
41
|
+
echo "WARN: $INPUT not found" >&2
|
|
42
|
+
exit 0
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
echo "opensrc cache check: $INPUT"
|
|
46
|
+
echo "---"
|
|
47
|
+
|
|
48
|
+
FOUND=0
|
|
49
|
+
MISSING=0
|
|
50
|
+
|
|
51
|
+
while IFS= read -r dep; do
|
|
52
|
+
[ -z "$dep" ] && continue
|
|
53
|
+
result=$(npx opensrc search "$dep" 2>/dev/null | head -1 || true)
|
|
54
|
+
if [ -n "$result" ]; then
|
|
55
|
+
echo "FOUND $dep — $result"
|
|
56
|
+
FOUND=$((FOUND + 1))
|
|
57
|
+
else
|
|
58
|
+
echo "NOT CACHED $dep"
|
|
59
|
+
MISSING=$((MISSING + 1))
|
|
60
|
+
fi
|
|
61
|
+
done < <(extract_deps "$INPUT")
|
|
62
|
+
|
|
63
|
+
echo "---"
|
|
64
|
+
echo "Summary: $FOUND cached, $MISSING not cached"
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# bp-read-agents.sh — Extract preflight/test/build/lint/deploy commands from AGENTS.md.
|
|
3
|
+
# Outputs env-var exports: BP_PREFLIGHT, BP_TEST, BP_BUILD, BP_LINT, BP_DEPLOY
|
|
4
|
+
# Usage: eval "$(bash scripts/bp-read-agents.sh)" # imports env vars
|
|
5
|
+
# bash scripts/bp-read-agents.sh --print # prints discovered commands
|
|
6
|
+
set -euo pipefail
|
|
7
|
+
|
|
8
|
+
PRINT_MODE=false
|
|
9
|
+
if [ "${1:-}" = "--print" ]; then
|
|
10
|
+
PRINT_MODE=true
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
AGENTS_FILES=("AGENTS.md" "CLAUDE.md" "CURSOR.md")
|
|
14
|
+
FOUND_FILE=""
|
|
15
|
+
|
|
16
|
+
for f in "${AGENTS_FILES[@]}"; do
|
|
17
|
+
if [ -f "$f" ]; then
|
|
18
|
+
FOUND_FILE="$f"
|
|
19
|
+
break
|
|
20
|
+
fi
|
|
21
|
+
done
|
|
22
|
+
|
|
23
|
+
if [ -z "$FOUND_FILE" ]; then
|
|
24
|
+
if $PRINT_MODE; then echo "No AGENTS.md found — using defaults" >&2; fi
|
|
25
|
+
exit 0
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
extract_command() {
|
|
29
|
+
local section="$1"
|
|
30
|
+
local file="$2"
|
|
31
|
+
# Extract the first non-empty, non-comment line after a ## <section> heading
|
|
32
|
+
awk "
|
|
33
|
+
/^## $section/ { found=1; next }
|
|
34
|
+
found && /^## / { found=0 }
|
|
35
|
+
found && /^\`\`\`/ { in_block=!in_block; next }
|
|
36
|
+
found && in_block && /^[a-zA-Z]/ { print; exit }
|
|
37
|
+
found && !/^\`\`\`/ && /^[a-zA-Z]/ && !in_block { print; exit }
|
|
38
|
+
" "$file" 2>/dev/null | head -1 | tr -d '\r' || true
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
BP_PREFLIGHT=$(extract_command "Preflight" "$FOUND_FILE")
|
|
42
|
+
BP_TEST=$(extract_command "Test" "$FOUND_FILE")
|
|
43
|
+
BP_BUILD=$(extract_command "Build" "$FOUND_FILE")
|
|
44
|
+
BP_LINT=$(extract_command "Lint" "$FOUND_FILE")
|
|
45
|
+
BP_DEPLOY=$(extract_command "Deploy" "$FOUND_FILE")
|
|
46
|
+
|
|
47
|
+
if $PRINT_MODE; then
|
|
48
|
+
echo "Source: $FOUND_FILE"
|
|
49
|
+
if [ -n "$BP_PREFLIGHT" ]; then echo "Preflight: $BP_PREFLIGHT"; fi
|
|
50
|
+
if [ -n "$BP_TEST" ]; then echo "Test: $BP_TEST"; fi
|
|
51
|
+
if [ -n "$BP_BUILD" ]; then echo "Build: $BP_BUILD"; fi
|
|
52
|
+
if [ -n "$BP_LINT" ]; then echo "Lint: $BP_LINT"; fi
|
|
53
|
+
if [ -n "$BP_DEPLOY" ]; then echo "Deploy: $BP_DEPLOY"; fi
|
|
54
|
+
else
|
|
55
|
+
if [ -n "$BP_PREFLIGHT" ]; then echo "export BP_PREFLIGHT='$BP_PREFLIGHT'"; fi
|
|
56
|
+
if [ -n "$BP_TEST" ]; then echo "export BP_TEST='$BP_TEST'"; fi
|
|
57
|
+
if [ -n "$BP_BUILD" ]; then echo "export BP_BUILD='$BP_BUILD'"; fi
|
|
58
|
+
if [ -n "$BP_LINT" ]; then echo "export BP_LINT='$BP_LINT'"; fi
|
|
59
|
+
if [ -n "$BP_DEPLOY" ]; then echo "export BP_DEPLOY='$BP_DEPLOY'"; fi
|
|
60
|
+
fi
|
package/skills-lock.json
CHANGED
|
@@ -213,7 +213,7 @@
|
|
|
213
213
|
},
|
|
214
214
|
"research-first": {
|
|
215
215
|
"description": "Look-before-build — search registries, repo, existing skills, and web for prior art before implementing. Appends Prior Art to the spec. Use after survey-context and before elaborate-spec, when adding dependencies, or when the task may already be solved.",
|
|
216
|
-
"sha256": "
|
|
216
|
+
"sha256": "8c6928fce1c896b8",
|
|
217
217
|
"path": "research-first/SKILL.md"
|
|
218
218
|
},
|
|
219
219
|
"reset-baseline": {
|
|
@@ -318,7 +318,7 @@
|
|
|
318
318
|
},
|
|
319
319
|
"verify-work": {
|
|
320
320
|
"description": "Multi-phase UAT gate — cold-start smoke, build, typecheck, lint, tests, step-by-step manual verification, gaps-closure loop. Use after execute-plan or develop-tdd, before audit-code.",
|
|
321
|
-
"sha256": "
|
|
321
|
+
"sha256": "d1aeab669a9c5621",
|
|
322
322
|
"path": "verify-work/SKILL.md"
|
|
323
323
|
},
|
|
324
324
|
"visual-dashboard": {
|
package/verify-work/SKILL.md
CHANGED
|
@@ -25,9 +25,10 @@ Review answers "is the code good?"; Verify answers "does the built thing do what
|
|
|
25
25
|
|
|
26
26
|
1. Read active story tasks from `specs/epics/<capsule>/eNNsYY-tasks.yaml` and story spec from `specs/epics/<capsule>/eNNsYY-<slug>.md` (countable-story-format, Gherkin in §17).
|
|
27
27
|
2. **Cold-start smoke** (if app): stop server, clear caches, boot from scratch.
|
|
28
|
-
3.
|
|
29
|
-
4.
|
|
30
|
-
5. **
|
|
28
|
+
3. **AGENTS.md preflight** — before running default checks, call `bash scripts/bp-read-agents.sh` to detect project-specific commands. If `BP_PREFLIGHT` is set, run it instead of the default mechanical gates (or in addition to them if the project requires both). Output: `"Using preflight from AGENTS.md: <cmd>"`. Fall back to `CLAUDE.md` commands if AGENTS.md is absent.
|
|
29
|
+
4. Mechanical gates: build → typecheck → lint → tests (from `CLAUDE.md` or AGENTS.md).
|
|
30
|
+
5. **Step-by-step UAT** — one user-observable action at a time.
|
|
31
|
+
6. **Gaps loop** — failures → log → `plan-work` → re-verify.
|
|
31
32
|
|
|
32
33
|
## Verify sub-operations
|
|
33
34
|
|