bigpowers 2.22.0 → 2.23.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.23.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
 
@@ -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
 
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # [2.23.0](https://github.com/danielvm-git/bigpowers/compare/v2.22.0...v2.23.0) (2026-06-22)
2
+
3
+
4
+ ### Features
5
+
6
+ * **research-first:** add opensrc cache check before building ([9921db6](https://github.com/danielvm-git/bigpowers/commit/9921db68c05b914da8e924a3fbba0d03e6e9dd35))
7
+
1
8
  # [2.22.0](https://github.com/danielvm-git/bigpowers/compare/v2.21.0...v2.22.0) (2026-06-22)
2
9
 
3
10
 
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:23:04Z
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.23.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"
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": {