bigpowers 1.3.1 → 1.3.2

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/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [1.3.2](https://github.com/danielvm-git/bigpowers/compare/v1.3.1...v1.3.2) (2026-06-02)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **ci:** guard sync-skills description and manifest version ([f1d5ac3](https://github.com/danielvm-git/bigpowers/commit/f1d5ac35c2fe543aa5b65ab8cb6e929476e357e3))
7
+
1
8
  ## [1.3.1](https://github.com/danielvm-git/bigpowers/compare/v1.3.0...v1.3.1) (2026-06-02)
2
9
 
3
10
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "1.3.1",
3
+ "version": "1.3.2",
4
4
  "description": "61 agent skills for spec-driven, test-first software development by solo developers",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -27,16 +27,18 @@ for path in sorted(bugs_dir.glob("BUG-*.md")):
27
27
  k, _, v = line.partition(":")
28
28
  data[k.strip()] = v.strip().strip('"').strip("'")
29
29
  bug_id = data.get("bug_id") or path.stem
30
- entries.append(
31
- {
32
- "id": bug_id,
33
- "status": data.get("status", "open"),
34
- "severity": data.get("severity", "medium"),
35
- "scope": data.get("scope", "general"),
36
- "title": data.get("title", path.stem),
37
- "file": f"bugs/{path.name}",
38
- }
39
- )
30
+ entry = {
31
+ "id": bug_id,
32
+ "status": data.get("status", "open"),
33
+ "severity": data.get("severity", "medium"),
34
+ "scope": data.get("scope", "general"),
35
+ "title": data.get("title", path.stem),
36
+ "file": f"bugs/{path.name}",
37
+ }
38
+ for opt in ("files_changed", "approach", "risk_level", "commit_message"):
39
+ if data.get(opt):
40
+ entry[opt] = data[opt]
41
+ entries.append(entry)
40
42
 
41
43
  out = bugs_dir / "registry.yaml"
42
44
  lines = ["# AUTO-GENERATED — sync-bugs-registry.sh", "bugs:"]
@@ -47,6 +49,10 @@ for e in entries:
47
49
  lines.append(f" scope: {e['scope']}")
48
50
  lines.append(f" title: \"{e['title'].replace(chr(34), '')}\"")
49
51
  lines.append(f" file: {e['file']}")
52
+ for opt in ("files_changed", "approach", "risk_level", "commit_message"):
53
+ if e.get(opt):
54
+ val = e[opt].replace('"', "'")
55
+ lines.append(f' {opt}: "{val}"')
50
56
  lines.append("")
51
57
  out.write_text("\n".join(lines), encoding="utf-8")
52
58
  print(f"sync-bugs-registry: {len(entries)} bugs -> {out}")
@@ -142,4 +142,23 @@ echo " → .gemini/extensions/bigpowers/commands/ (Slash Commands)"
142
142
  echo " → .gemini/extensions/bigpowers/gemini-extension.json"
143
143
  echo " → opencode.json (CLAUDE.md + CONVENTIONS.md instructions)"
144
144
  [[ -n "$OPN_TARGET" ]] && echo " → bigpowers-opencode: $opencode_count skills"
145
+
146
+ # Regression guard (BUG-2026-06-02T164500): BSD sed without -E strips '+' from descriptions
147
+ trace_mdc="$REPO_ROOT/.cursor/rules/trace-requirement.mdc"
148
+ if [[ -f "$trace_mdc" ]] && ! grep -q 'release-plan.yaml + epic' "$trace_mdc"; then
149
+ echo "sync-skills: FAIL — '+' missing from trace-requirement; use sed -E for whitespace collapse" >&2
150
+ exit 1
151
+ fi
152
+ manifest="$REPO_ROOT/.gemini/extensions/bigpowers/gemini-extension.json"
153
+ if [[ -f "$manifest" ]]; then
154
+ ext_ver=$(jq -r '.version // empty' "$manifest")
155
+ pkg_ver=$(jq -r '.version // empty' "$REPO_ROOT/package.json")
156
+ if [[ -z "$ext_ver" || -z "$pkg_ver" ]]; then
157
+ : # skip version compare when either field is missing
158
+ elif [[ "$ext_ver" != "$pkg_ver" ]]; then
159
+ echo "sync-skills: FAIL — gemini-extension.json version ($ext_ver) != package.json ($pkg_ver)" >&2
160
+ exit 1
161
+ fi
162
+ fi
163
+
145
164
  exit 0