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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "2.22.0",
3
+ "version": "2.24.0",
4
4
  "description": "68 skills — 61 agent skills for spec-driven, test-first software development by solo developers",
5
5
  "keywords": [
6
6
  "pi-package"
@@ -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. For each candidate: note name, URL/path, fit (adopt | extend | compose | build).
15
- 4. Append `## Prior Art` to `requirements/SCOPE_LATEST.yaml` notes or the active epic story.
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. Mechanical gates: build typecheck lint tests (from `CLAUDE.md`).
28
- 4. **Step-by-step UAT** one user-observable action at a time.
29
- 5. **Gaps loop** — failures log `plan-work` → re-verify.
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. For each candidate: note name, URL/path, fit (adopt | extend | compose | build).
17
- 4. Append `## Prior Art` to `requirements/SCOPE_LATEST.yaml` notes or the active epic story.
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. Mechanical gates: build typecheck lint tests (from `CLAUDE.md`).
30
- 4. **Step-by-step UAT** one user-observable action at a time.
31
- 5. **Gaps loop** — failures log `plan-work` → re-verify.
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:11:51Z
6
+ **Generated:** 2026-06-22T02:28:01Z
7
7
  **Skills:** 68
8
8
 
9
9
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "2.22.0",
3
+ "version": "2.24.0",
4
4
  "description": "61 agent skills for spec-driven, test-first software development by solo developers",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -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. For each candidate: note name, URL/path, fit (adopt | extend | compose | build).
16
- 4. Append `## Prior Art` to `requirements/SCOPE_LATEST.yaml` notes or the active epic story.
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": "2d11dadf63b9dbd3",
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": "a05a1d7ab2a959aa",
321
+ "sha256": "d1aeab669a9c5621",
322
322
  "path": "verify-work/SKILL.md"
323
323
  },
324
324
  "visual-dashboard": {
@@ -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. Mechanical gates: build typecheck lint tests (from `CLAUDE.md`).
29
- 4. **Step-by-step UAT** one user-observable action at a time.
30
- 5. **Gaps loop** — failures log `plan-work` → re-verify.
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