bigpowers 2.43.5 → 2.44.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/using-bigpowers.md +1 -1
- package/.pi/skills/using-bigpowers/SKILL.md +1 -1
- package/CHANGELOG.md +7 -0
- package/CLAUDE.md +3 -3
- package/CONTRIBUTING.md +1 -1
- package/CONVENTIONS.md +2 -1
- package/README.md +204 -104
- package/SKILL-INDEX.md +1 -2
- package/package.json +1 -1
- package/scripts/add-model-frontmatter.sh +4 -1
- package/scripts/audit-catalog.sh +10 -7
- package/scripts/check-skill-size.sh +5 -2
- package/scripts/generate-reference-tables.sh +5 -2
- package/scripts/generate-skill-index.sh +7 -2
- package/scripts/install.sh +4 -1
- package/scripts/regenerate-lockfile.sh +4 -1
- package/scripts/run-skill-verify.sh +4 -1
- package/scripts/sync-skills.sh +28 -2
- package/{using-bigpowers → skills/using-bigpowers}/SKILL.md +1 -1
- package/skills-lock.json +73 -73
- package/COMMIT-MESSAGE.md +0 -34
- package/RELEASE.md +0 -133
- /package/{align-grid → skills/align-grid}/SKILL.md +0 -0
- /package/{align-grid → skills/align-grid}/scripts/grid_tokens.py +0 -0
- /package/{align-grid → skills/align-grid}/scripts/verify_grid.js +0 -0
- /package/{assess-impact → skills/assess-impact}/SKILL.md +0 -0
- /package/{audit-code → skills/audit-code}/HEURISTICS.md +0 -0
- /package/{audit-code → skills/audit-code}/SKILL.md +0 -0
- /package/{audit-plan → skills/audit-plan}/SKILL.md +0 -0
- /package/{build-epic → skills/build-epic}/SKILL.md +0 -0
- /package/{change-request → skills/change-request}/REFERENCE.md +0 -0
- /package/{change-request → skills/change-request}/SKILL.md +0 -0
- /package/{commit-message → skills/commit-message}/REFERENCE.md +0 -0
- /package/{commit-message → skills/commit-message}/SKILL.md +0 -0
- /package/{compose-workflow → skills/compose-workflow}/REFERENCE.md +0 -0
- /package/{compose-workflow → skills/compose-workflow}/SKILL.md +0 -0
- /package/{craft-skill → skills/craft-skill}/REFERENCE.md +0 -0
- /package/{craft-skill → skills/craft-skill}/SKILL.md +0 -0
- /package/{deepen-architecture → skills/deepen-architecture}/DEEPENING.md +0 -0
- /package/{deepen-architecture → skills/deepen-architecture}/INTERFACE-DESIGN.md +0 -0
- /package/{deepen-architecture → skills/deepen-architecture}/LANGUAGE.md +0 -0
- /package/{deepen-architecture → skills/deepen-architecture}/SKILL.md +0 -0
- /package/{define-language → skills/define-language}/SKILL.md +0 -0
- /package/{define-success → skills/define-success}/SKILL.md +0 -0
- /package/{delegate-task → skills/delegate-task}/SKILL.md +0 -0
- /package/{deploy → skills/deploy}/REFERENCE.md +0 -0
- /package/{deploy → skills/deploy}/SKILL.md +0 -0
- /package/{design-interface → skills/design-interface}/SKILL.md +0 -0
- /package/{develop-tdd → skills/develop-tdd}/REFERENCE.md +0 -0
- /package/{develop-tdd → skills/develop-tdd}/SKILL.md +0 -0
- /package/{develop-tdd → skills/develop-tdd}/deep-modules.md +0 -0
- /package/{develop-tdd → skills/develop-tdd}/interface-design.md +0 -0
- /package/{develop-tdd → skills/develop-tdd}/mocking.md +0 -0
- /package/{develop-tdd → skills/develop-tdd}/refactoring.md +0 -0
- /package/{develop-tdd → skills/develop-tdd}/tests.md +0 -0
- /package/{diagnose-root → skills/diagnose-root}/SKILL.md +0 -0
- /package/{dispatch-agents → skills/dispatch-agents}/SKILL.md +0 -0
- /package/{edit-document → skills/edit-document}/SKILL.md +0 -0
- /package/{elaborate-spec → skills/elaborate-spec}/SKILL.md +0 -0
- /package/{enforce-first → skills/enforce-first}/SKILL.md +0 -0
- /package/{evolve-skill → skills/evolve-skill}/REFERENCE.md +0 -0
- /package/{evolve-skill → skills/evolve-skill}/SKILL.md +0 -0
- /package/{execute-plan → skills/execute-plan}/SKILL.md +0 -0
- /package/{extract-design → skills/extract-design}/REFERENCE.md +0 -0
- /package/{extract-design → skills/extract-design}/SKILL.md +0 -0
- /package/{extract-design → skills/extract-design}/extract-design.feature +0 -0
- /package/{extract-design → skills/extract-design}/scripts/classify-colors.js +0 -0
- /package/{extract-design → skills/extract-design}/scripts/classify-rounded.js +0 -0
- /package/{extract-design → skills/extract-design}/scripts/classify-spacing.js +0 -0
- /package/{extract-design → skills/extract-design}/scripts/classify-typography.js +0 -0
- /package/{extract-design → skills/extract-design}/scripts/collect-styles.js +0 -0
- /package/{extract-design → skills/extract-design}/scripts/detect-components.js +0 -0
- /package/{extract-design → skills/extract-design}/scripts/extract.js +0 -0
- /package/{extract-design → skills/extract-design}/scripts/generate-prose.js +0 -0
- /package/{extract-design → skills/extract-design}/scripts/lib/browser.js +0 -0
- /package/{extract-design → skills/extract-design}/scripts/lib/constants.js +0 -0
- /package/{extract-design → skills/extract-design}/scripts/lib/logging.js +0 -0
- /package/{extract-design → skills/extract-design}/scripts/lib/retry.js +0 -0
- /package/{extract-design → skills/extract-design}/scripts/lib/state.js +0 -0
- /package/{extract-design → skills/extract-design}/scripts/lib/validator.js +0 -0
- /package/{extract-design → skills/extract-design}/scripts/write-designd.js +0 -0
- /package/{extract-design → skills/extract-design}/tests/fixtures/glassmorphism-dark/expected-tokens.json +0 -0
- /package/{extract-design → skills/extract-design}/tests/fixtures/glassmorphism-dark/prototype.html +0 -0
- /package/{extract-design → skills/extract-design}/tests/fixtures/minimal-no-styles/expected-tokens.json +0 -0
- /package/{extract-design → skills/extract-design}/tests/fixtures/minimal-no-styles/prototype.html +0 -0
- /package/{extract-design → skills/extract-design}/tests/fixtures/swiss-grid/expected-tokens.json +0 -0
- /package/{extract-design → skills/extract-design}/tests/fixtures/swiss-grid/prototype.html +0 -0
- /package/{extract-design → skills/extract-design}/tests/test-extraction.js +0 -0
- /package/{fix-bug → skills/fix-bug}/SKILL.md +0 -0
- /package/{grill-me → skills/grill-me}/REFERENCE.md +0 -0
- /package/{grill-me → skills/grill-me}/SKILL.md +0 -0
- /package/{grill-with-docs → skills/grill-with-docs}/REFERENCE.md +0 -0
- /package/{grill-with-docs → skills/grill-with-docs}/SKILL.md +0 -0
- /package/{guard-git → skills/guard-git}/REFERENCE.md +0 -0
- /package/{guard-git → skills/guard-git}/SKILL.md +0 -0
- /package/{guard-git → skills/guard-git}/scripts/block-dangerous-git.sh +0 -0
- /package/{guard-git → skills/guard-git}/scripts/lib/git-guardrails-core.sh +0 -0
- /package/{hook-commits → skills/hook-commits}/SKILL.md +0 -0
- /package/{inspect-quality → skills/inspect-quality}/SKILL.md +0 -0
- /package/{investigate-bug → skills/investigate-bug}/SKILL.md +0 -0
- /package/{kickoff-branch → skills/kickoff-branch}/SKILL.md +0 -0
- /package/{map-codebase → skills/map-codebase}/SKILL.md +0 -0
- /package/{migrate-spec → skills/migrate-spec}/REFERENCE-GSD.md +0 -0
- /package/{migrate-spec → skills/migrate-spec}/REFERENCE.md +0 -0
- /package/{migrate-spec → skills/migrate-spec}/SKILL.md +0 -0
- /package/{migrate-spec → skills/migrate-spec}/templates/METHODOLOGY_LATEST.md +0 -0
- /package/{migrate-spec → skills/migrate-spec}/templates/REQUIREMENTS_TRACE.yaml +0 -0
- /package/{model-domain → skills/model-domain}/ADR-FORMAT.md +0 -0
- /package/{model-domain → skills/model-domain}/CONTEXT-FORMAT.md +0 -0
- /package/{model-domain → skills/model-domain}/SKILL.md +0 -0
- /package/{orchestrate-project → skills/orchestrate-project}/REFERENCE.md +0 -0
- /package/{orchestrate-project → skills/orchestrate-project}/SKILL.md +0 -0
- /package/{organize-workspace → skills/organize-workspace}/REFERENCE.md +0 -0
- /package/{organize-workspace → skills/organize-workspace}/SKILL.md +0 -0
- /package/{plan-refactor → skills/plan-refactor}/SKILL.md +0 -0
- /package/{plan-release → skills/plan-release}/SKILL.md +0 -0
- /package/{plan-work → skills/plan-work}/REFERENCE.md +0 -0
- /package/{plan-work → skills/plan-work}/SKILL.md +0 -0
- /package/{publish-package → skills/publish-package}/REFERENCE.md +0 -0
- /package/{publish-package → skills/publish-package}/SKILL.md +0 -0
- /package/{quick-fix → skills/quick-fix}/SKILL.md +0 -0
- /package/{release-branch → skills/release-branch}/REFERENCE.md +0 -0
- /package/{release-branch → skills/release-branch}/SKILL.md +0 -0
- /package/{request-review → skills/request-review}/SKILL.md +0 -0
- /package/{research-first → skills/research-first}/REFERENCE.md +0 -0
- /package/{research-first → skills/research-first}/SKILL.md +0 -0
- /package/{reset-baseline → skills/reset-baseline}/SKILL.md +0 -0
- /package/{respond-review → skills/respond-review}/SKILL.md +0 -0
- /package/{run-benchmark → skills/run-benchmark}/SKILL.md +0 -0
- /package/{run-evals → skills/run-evals}/REFERENCE.md +0 -0
- /package/{run-evals → skills/run-evals}/SKILL.md +0 -0
- /package/{run-planning → skills/run-planning}/SKILL.md +0 -0
- /package/{scope-work → skills/scope-work}/SKILL.md +0 -0
- /package/{search-skills → skills/search-skills}/SKILL.md +0 -0
- /package/{security-review → skills/security-review}/REFERENCE-confidence-rubric.md +0 -0
- /package/{security-review → skills/security-review}/REFERENCE-false-positives.md +0 -0
- /package/{security-review → skills/security-review}/REFERENCE-vuln-categories.md +0 -0
- /package/{security-review → skills/security-review}/SKILL.md +0 -0
- /package/{seed-conventions → skills/seed-conventions}/REFERENCE.md +0 -0
- /package/{seed-conventions → skills/seed-conventions}/SKILL.md +0 -0
- /package/{session-state → skills/session-state}/SKILL.md +0 -0
- /package/{setup-environment → skills/setup-environment}/SKILL.md +0 -0
- /package/{simulate-agents → skills/simulate-agents}/SKILL.md +0 -0
- /package/{slice-tasks → skills/slice-tasks}/SKILL.md +0 -0
- /package/{smoke-test → skills/smoke-test}/REFERENCE.md +0 -0
- /package/{smoke-test → skills/smoke-test}/SKILL.md +0 -0
- /package/{spike-prototype → skills/spike-prototype}/SKILL.md +0 -0
- /package/{stocktake-skills → skills/stocktake-skills}/REFERENCE.md +0 -0
- /package/{stocktake-skills → skills/stocktake-skills}/SKILL.md +0 -0
- /package/{survey-context → skills/survey-context}/SKILL.md +0 -0
- /package/{terse-mode → skills/terse-mode}/SKILL.md +0 -0
- /package/{trace-requirement → skills/trace-requirement}/SKILL.md +0 -0
- /package/{validate-contracts → skills/validate-contracts}/REFERENCE.md +0 -0
- /package/{validate-contracts → skills/validate-contracts}/SKILL.md +0 -0
- /package/{validate-fix → skills/validate-fix}/SKILL.md +0 -0
- /package/{verify-work → skills/verify-work}/REFERENCE.md +0 -0
- /package/{verify-work → skills/verify-work}/SKILL.md +0 -0
- /package/{visual-dashboard → skills/visual-dashboard}/SKILL.md +0 -0
- /package/{visual-dashboard → skills/visual-dashboard}/scripts/cockpit.html +0 -0
- /package/{visual-dashboard → skills/visual-dashboard}/scripts/frame-template.html +0 -0
- /package/{visual-dashboard → skills/visual-dashboard}/scripts/helper.js +0 -0
- /package/{visual-dashboard → skills/visual-dashboard}/scripts/read-specs-status.cjs +0 -0
- /package/{visual-dashboard → skills/visual-dashboard}/scripts/server.cjs +0 -0
- /package/{visual-dashboard → skills/visual-dashboard}/scripts/start-server.sh +0 -0
- /package/{visual-dashboard → skills/visual-dashboard}/scripts/stop-server.sh +0 -0
- /package/{wire-ci → skills/wire-ci}/REFERENCE.md +0 -0
- /package/{wire-ci → skills/wire-ci}/SKILL.md +0 -0
- /package/{wire-observability → skills/wire-observability}/SKILL.md +0 -0
- /package/{write-document → skills/write-document}/REFERENCE.md +0 -0
- /package/{write-document → skills/write-document}/SKILL.md +0 -0
package/.pi/package.json
CHANGED
|
@@ -98,7 +98,7 @@ Start the HTTP dashboard with `visual-dashboard` → `GET /api/status?projectDir
|
|
|
98
98
|
- **Integrate:** team default is `gh pr` (team-pr); solo profile uses `land-branch.sh`. Never create GitHub issues from skills — use local Markdown files instead.
|
|
99
99
|
- **One skill, one thing.** If you're unsure which skill to call, call `survey-context` — it reads your current state and recommends the next step.
|
|
100
100
|
- **verify: every step.** Every epic task must have `verify: <runnable command>`. Evidence over claims.
|
|
101
|
-
- **
|
|
101
|
+
- **The full catalog is auto-generated.** See `SKILL-INDEX.md`; find skills with `search-skills`.
|
|
102
102
|
|
|
103
103
|
## After this
|
|
104
104
|
|
|
@@ -100,7 +100,7 @@ Start the HTTP dashboard with `visual-dashboard` → `GET /api/status?projectDir
|
|
|
100
100
|
- **Integrate:** team default is `gh pr` (team-pr); solo profile uses `land-branch.sh`. Never create GitHub issues from skills — use local Markdown files instead.
|
|
101
101
|
- **One skill, one thing.** If you're unsure which skill to call, call `survey-context` — it reads your current state and recommends the next step.
|
|
102
102
|
- **verify: every step.** Every epic task must have `verify: <runnable command>`. Evidence over claims.
|
|
103
|
-
- **
|
|
103
|
+
- **The full catalog is auto-generated.** See `SKILL-INDEX.md`; find skills with `search-skills`.
|
|
104
104
|
|
|
105
105
|
## After this
|
|
106
106
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [2.44.0](https://github.com/danielvm-git/bigpowers/compare/v2.43.5...v2.44.0) (2026-07-02)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **repo:** move 72 skill sources to skills/ directory ([89ab1d9](https://github.com/danielvm-git/bigpowers/commit/89ab1d9d588bcac74b7186b7bd8170c3c4df8242))
|
|
7
|
+
|
|
1
8
|
## [2.43.5](https://github.com/danielvm-git/bigpowers/compare/v2.43.4...v2.43.5) (2026-07-02)
|
|
2
9
|
|
|
3
10
|
|
package/CLAUDE.md
CHANGED
|
@@ -4,7 +4,7 @@ Read CONVENTIONS.md before any GitHub or git operation.
|
|
|
4
4
|
|
|
5
5
|
## Project
|
|
6
6
|
|
|
7
|
-
bigpowers —
|
|
7
|
+
bigpowers — agent skills for spec-driven, test-first software development by solo developers (skill count and catalog are auto-generated in `SKILL-INDEX.md`; never hardcode the count in docs).
|
|
8
8
|
Stack: Markdown / Bash (documentation-based; skills integrate with Claude Code, Cursor, Gemini CLI)
|
|
9
9
|
|
|
10
10
|
## Commands
|
|
@@ -21,11 +21,11 @@ Stack: Markdown / Bash (documentation-based; skills integrate with Claude Code,
|
|
|
21
21
|
|
|
22
22
|
## Architecture
|
|
23
23
|
|
|
24
|
-
Collection of
|
|
24
|
+
Collection of verb-noun skills under `skills/`, each with a SKILL.md source file and supporting documentation. Runtime specs live in `specs/state.yaml`, `specs/release-plan.yaml`, and `specs/execution-status.yaml`; intent in `specs/product/`; epic shards in `specs/epics/`. The sync-skills.sh script auto-generates artifacts for Cursor (.cursor/rules) and Gemini CLI (.gemini/extensions/bigpowers/) from SKILL.md sources. All planning output goes to specs/ at the project root.
|
|
25
25
|
|
|
26
26
|
## Conventions
|
|
27
27
|
|
|
28
|
-
- Skill directories use verb-noun naming (two words, kebab-case)
|
|
28
|
+
- Skill directories under `skills/` use verb-noun naming (two words, kebab-case)
|
|
29
29
|
- Every skill has a single SKILL.md file as its source of truth
|
|
30
30
|
- All planning/spec output goes to specs/ at project root
|
|
31
31
|
- Artifacts in .cursor/rules and .gemini/ are auto-generated; edit SKILL.md, not artifacts
|
package/CONTRIBUTING.md
CHANGED
|
@@ -85,7 +85,7 @@ npm run sync
|
|
|
85
85
|
|
|
86
86
|
```
|
|
87
87
|
bigpowers/
|
|
88
|
-
├── [skill-name]/
|
|
88
|
+
├── skills/[skill-name]/ # Each skill has its own directory with SKILL.md
|
|
89
89
|
├── scripts/ # Install, sync, validation, and compliance scripts
|
|
90
90
|
├── specs/ # YAML cockpit — state.yaml, release-plan.yaml, epics/
|
|
91
91
|
├── docs/ # Guides and references
|
package/CONVENTIONS.md
CHANGED
|
@@ -202,7 +202,7 @@ The agent implements defensive code only for categories explicitly listed here.
|
|
|
202
202
|
|
|
203
203
|
## Skill Naming — Conventions and Exceptions
|
|
204
204
|
|
|
205
|
-
All skill directories use a two-word `verb-noun` kebab-case pair (ADR-0001). Grep for any skill
|
|
205
|
+
All skill directories under `skills/` use a two-word `verb-noun` kebab-case pair (ADR-0001). Grep for any skill
|
|
206
206
|
name must return < 5 results across the repo.
|
|
207
207
|
|
|
208
208
|
**Documented exceptions** (adjective-noun retained for clarity; renaming would reduce usability):
|
|
@@ -212,5 +212,6 @@ name must return < 5 results across the repo.
|
|
|
212
212
|
| `terse-mode` | adjective-noun | `enable-terse` implies a toggle; `terse-mode` names a mode state |
|
|
213
213
|
| `visual-dashboard` | adjective-noun | `view-dashboard` implies read-only; `show-dashboard` collides with `show` verbs |
|
|
214
214
|
| `deploy` | single verb | Well-known DevOps single-word concept; renames like `deploy-app` or `deploy-service` are redundant since deploy always targets an application |
|
|
215
|
+
| `grill-with-docs` | three-word verb-prep-noun | Variant of `grill-me`; the `-with-docs` suffix is the distinguishing feature — collapsing it would hide the doc-grounded contract |
|
|
215
216
|
|
|
216
217
|
Any new exception requires an entry in this table before the skill is published.
|
package/README.md
CHANGED
|
@@ -1,108 +1,121 @@
|
|
|
1
|
-
# bigpowers
|
|
1
|
+
# bigpowers — Best-in-Class Agentic Skills
|
|
2
2
|
|
|
3
3
|

|
|
4
|
+

|
|
5
|
+

|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
**Agent skills synthesizing 17 years of software engineering discipline — from Clean Code to AI-native architecture — into a single, prescriptive methodology for solo developers.**
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
`bigpowers` provides a prescriptive, vertical-slice methodology for building software with AI agents (Claude Code, Gemini CLI, Cursor, pi). It bridges the gap between raw LLM capabilities and professional engineering standards.
|
|
10
|
+
|
|
11
|
+
It is not a random collection of best practices. It is a chronological layer cake of ideas — each wave of thinking (Uncle Bob → Ousterhout → Karpathy → Wasowski → Akita) builds on and resolves tensions from the last, culminating in a 6-phase lifecycle with hard gates, a 94% quality threshold, and a YAML cockpit (`specs/state.yaml`) that keeps both human and agent aligned across sessions.
|
|
12
|
+
|
|
13
|
+
Published on npm: [bigpowers](https://www.npmjs.com/package/bigpowers). The skill count in the badge above is stamped automatically by `sync-skills.sh`; the canonical catalog is [`SKILL-INDEX.md`](SKILL-INDEX.md).
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 🗺 How to Read This README
|
|
8
18
|
|
|
9
|
-
|
|
19
|
+
This README is a guided path, not a wall of reference. Start where you are:
|
|
10
20
|
|
|
11
|
-
|
|
21
|
+
| You want to… | Go to |
|
|
22
|
+
|:---|:---|
|
|
23
|
+
| Try it in 30 seconds | [Quick Start](#-quick-start) |
|
|
24
|
+
| Understand what it actually does | [Features](#-features) and [The v2.0.0 Lifecycle](#-the-v200-lifecycle) |
|
|
25
|
+
| Learn the ideas behind it | [Philosophical Stack](#-philosophical-stack--how-these-ideas-concatenate) |
|
|
26
|
+
| Look something up | [Hierarchy of Truth](#-hierarchy-of-truth) and [Project Structure](#-project-structure) |
|
|
27
|
+
| Wire it into pi or MCP | [pi Support](#-pi-support) and [MCP Server](#-mcp-server-model-context-protocol) |
|
|
28
|
+
| Contribute or hack on it | [Development](#-development) and [Contributing](#-contributing) |
|
|
12
29
|
|
|
13
|
-
|
|
30
|
+
After installing, ask your agent to run the `using-bigpowers` skill — it is the one-time bootstrap that explains the lifecycle and tells you which skill to call first for your situation.
|
|
14
31
|
|
|
15
|
-
|
|
32
|
+
---
|
|
16
33
|
|
|
17
|
-
|
|
18
|
-
- **Environment**: Bash (required for all internal scripts)
|
|
19
|
-
- **Tooling**: jq (highly recommended for configuration)
|
|
20
|
-
- **AI Tools**: Claude Code, Gemini CLI, Cursor, or pi
|
|
34
|
+
## 🚀 Quick Start
|
|
21
35
|
|
|
22
|
-
|
|
36
|
+
### npm (recommended)
|
|
23
37
|
|
|
24
38
|
```bash
|
|
25
|
-
# One-shot setup
|
|
39
|
+
# One-shot setup — downloads, syncs artifacts, and links skills to your tools
|
|
26
40
|
npx bigpowers
|
|
27
41
|
|
|
28
|
-
# Or install globally
|
|
42
|
+
# Or install globally and run the setup command anytime
|
|
29
43
|
npm install -g bigpowers
|
|
30
44
|
bigpowers
|
|
31
45
|
```
|
|
32
46
|
|
|
33
|
-
|
|
47
|
+
Both commands sync skill artifacts and link them to Claude Code, Gemini CLI, and Cursor (see [Prerequisites](#-prerequisites)).
|
|
48
|
+
|
|
49
|
+
### From source (contributors)
|
|
34
50
|
|
|
35
51
|
```bash
|
|
36
|
-
|
|
37
|
-
npm
|
|
38
|
-
|
|
52
|
+
git clone https://github.com/danielvm-git/bigpowers.git && cd bigpowers
|
|
53
|
+
npm install # runs postinstall: sync + link
|
|
54
|
+
# or manually:
|
|
55
|
+
bash scripts/install.sh
|
|
56
|
+
npm run sync
|
|
39
57
|
```
|
|
40
58
|
|
|
41
|
-
|
|
59
|
+
---
|
|
42
60
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
61
|
+
## 🛠 Prerequisites
|
|
62
|
+
|
|
63
|
+
- **Bash**: Required for all scripts.
|
|
64
|
+
- **Node.js**: v14+ (required for npm/npx).
|
|
65
|
+
- **jq**: (Highly Recommended) Used for robust configuration of tool settings.
|
|
66
|
+
- **AI Tools**: One or more of:
|
|
67
|
+
- [Claude Code](https://claude.ai/code)
|
|
68
|
+
- [Gemini CLI](https://github.com/google/gemini-cli)
|
|
69
|
+
- [Cursor](https://cursor.sh/)
|
|
70
|
+
- [pi](https://pi.dev/) — coding agent harness
|
|
46
71
|
|
|
47
|
-
|
|
72
|
+
---
|
|
48
73
|
|
|
49
|
-
|
|
74
|
+
## ✨ Features
|
|
75
|
+
|
|
76
|
+
- **Purpose-Built Skills**: From `survey-context` to `develop-tdd`, each skill is a targeted tool for a specific phase of development. See [`SKILL-INDEX.md`](SKILL-INDEX.md) for the full auto-generated catalog.
|
|
50
77
|
- **Spec-Driven Cockpit**: Uses `specs/state.yaml` and `release-plan.yaml` to maintain state across agent sessions, preventing context drift.
|
|
51
78
|
- **Native IDE Support**: Automatically generates configurations for Cursor (`.cursor/rules`), Gemini CLI, and pi.
|
|
52
79
|
- **Model Context Protocol (MCP)**: Dynamic tool discovery and invocation via the included MCP server.
|
|
53
80
|
- **Built-in Quality Gates**: Strict verification standards (e.g., F.I.R.S.T tests, BCP accounting) enforced before any code is merged.
|
|
54
81
|
|
|
55
|
-
|
|
82
|
+
---
|
|
56
83
|
|
|
57
|
-
|
|
84
|
+
## 🏗 The v2.0.0 Lifecycle
|
|
58
85
|
|
|
59
|
-
|
|
86
|
+
Every project follows the **orchestrate-project 6-phase model** (full SOP: [`docs/WORKFLOW-SOP-v2.md`](docs/WORKFLOW-SOP-v2.md)):
|
|
60
87
|
|
|
88
|
+
```
|
|
89
|
+
ONE TIME seed-conventions (CLAUDE.md, .claude/, .gemini/, agents/, skill sync)
|
|
61
90
|
↓
|
|
62
|
-
|
|
63
91
|
ONCE/PROJECT orchestrate-project
|
|
64
|
-
|
|
65
92
|
│
|
|
66
|
-
|
|
67
93
|
├─ Ph1 DISCOVER survey-context, research-first, elaborate-spec
|
|
68
|
-
|
|
69
94
|
├─ Ph2 ELABORATE model-domain, grill-me, define-language, deepen-architecture
|
|
70
|
-
|
|
71
95
|
├─ Ph3 PLAN scope-work, slice-tasks, plan-work → release-plan.yaml (BCP baseline)
|
|
72
|
-
|
|
73
96
|
├─ Ph4 BUILD build-epic × N stories
|
|
74
|
-
|
|
75
97
|
│
|
|
76
|
-
|
|
77
98
|
│ Per story — 8-step build-epic cycle:
|
|
78
|
-
|
|
79
99
|
│ 1. survey-context ← stamps story_start in state.yaml
|
|
80
|
-
|
|
81
100
|
│ 2. plan-work ← [BCP N] tasks + verify: commands
|
|
82
|
-
|
|
83
101
|
│ 3. kickoff-branch ← worktree + feature branch
|
|
84
|
-
|
|
85
102
|
│ 4. develop-tdd ← RED → GREEN → REFACTOR
|
|
86
|
-
|
|
87
103
|
│ 5. verify-work ← UAT gate
|
|
88
|
-
|
|
89
104
|
│ 6. audit-code ← quality gate ≥ 94%
|
|
90
|
-
|
|
91
105
|
│ 7. commit-message ← Conventional Commits + semver
|
|
92
|
-
|
|
93
106
|
│ 8. release-branch ← land to main; writes story_end + cycle-times.yaml
|
|
94
|
-
|
|
95
107
|
│
|
|
96
|
-
|
|
97
108
|
├─ Ph5 VERIFY run-evals, verify-work (project-level)
|
|
98
|
-
|
|
99
109
|
└─ Ph6 RELEASE semantic-release → v1.0.0 MVP tag
|
|
110
|
+
```
|
|
100
111
|
|
|
101
|
-
Semver
|
|
112
|
+
**Semver:** projects start at `0.0.0-β`; each `feat:` story → minor bump; developer declares MVP → `1.0.0`.
|
|
102
113
|
|
|
103
|
-
BCP accounting
|
|
114
|
+
**BCP accounting:** every task labeled `[BCP N]`; story total in `state.yaml`; BCP/hr logged to `specs/metrics/cycle-times.yaml`.
|
|
104
115
|
|
|
105
|
-
next_skill signaling
|
|
116
|
+
**next_skill signaling:** each critical-path skill writes `handoff.next_skill` to `state.yaml`. Call `survey-context` after any interruption to resume exactly where you left off.
|
|
117
|
+
|
|
118
|
+
---
|
|
106
119
|
|
|
107
120
|
## 🧠 Philosophical Stack — How These Ideas Concatenate
|
|
108
121
|
|
|
@@ -110,96 +123,174 @@ next_skill signaling: each critical-path skill writes [handoff.next](http://hand
|
|
|
110
123
|
|
|
111
124
|

|
|
112
125
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
|
116
|
-
| **
|
|
117
|
-
| **
|
|
118
|
-
| **
|
|
119
|
-
| **
|
|
120
|
-
| **
|
|
121
|
-
| **Synthesis** | BMAD + GSD (self-authored) | 6-phase lifecycle, hard gates, 94% quality threshold, `specs/state.yaml` cockpit | All the above are principles; bigpowers turns them into an executable discipline |
|
|
122
|
-
|
|
126
|
+
| Era | Source | Contribution | Tension Resolved |
|
|
127
|
+
|:---|:---|:---|:---|
|
|
128
|
+
| **2008** | [Uncle Bob](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) (Clean Code) | SRP, Boy Scout Rule, F.I.R.S.T. tests, intention-revealing names | — (foundation) |
|
|
129
|
+
| **2018** | [Ousterhout](https://www.amazon.com/Philosophy-Software-Design-John-Ousterhout/dp/1732102201) (*A Philosophy of Software Design*) | Deep modules, information hiding, define errors out of existence | Small functions alone create shallow modules with bloated interfaces |
|
|
130
|
+
| **2023–24** | [Karpathy](https://github.com/multica-ai/andrej-karpathy-skills), [Superpowers](https://github.com/obra/superpowers), [Pocock](https://github.com/mattpocock/skills) | Think-first planning, verb-noun skill architecture, zoom-out strategy | Raw LLMs have no discipline — they need orchestration, not raw prompting |
|
|
131
|
+
| **2024** | [Wasowski](https://medium.com/@wasowski.jarek/sdd-writing-specifications-for-ai-bdd-as-the-missing-link-spec-driven-development-ad1b540b7f75) (SDD), [BCP](https://github.com/flow-ciandt/bcp-agent) | Specs as the human-agent interface; business complexity as a pre-build sizing unit | Agents drift without a verifiable spec — BDD Gherkin closes the loop |
|
|
132
|
+
| **2026** | [Akita](https://akitaonrails.com/2026/04/20/clean-code-para-agentes-de-ia/) (*Clean Code for AI Agents*) | Grep-ability, structured JSON logging, token economy, remediation hints in errors | Uncle Bob's rules were written for humans — agents need different code hygiene |
|
|
133
|
+
| **Synthesis** | BMAD + GSD (self-authored) | 6-phase lifecycle, hard gates, 94% quality threshold, `specs/state.yaml` cockpit | All the above are principles; bigpowers turns them into an executable discipline |
|
|
123
134
|
|
|
124
135
|
### How to see the concatenation in action
|
|
125
136
|
|
|
126
137
|
Each philosophical pillar has a corresponding Gherkin `.feature` file in [`specs/verifications/features/`](specs/verifications/features/) that empirically proves compliance:
|
|
127
138
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
|
131
|
-
|
|
|
132
|
-
|
|
|
133
|
-
| Behavioral Integrity | `karpathy.feature` |
|
|
139
|
+
| Pillar | Verification |
|
|
140
|
+
|:---|:---|
|
|
141
|
+
| Classical Craftsmanship | `cleancode.feature` |
|
|
142
|
+
| Complexity Management | `pocock.feature` |
|
|
143
|
+
| Behavioral Integrity | `karpathy.feature` |
|
|
134
144
|
| Spec-Driven Development | Implicit in SDD workflow |
|
|
135
|
-
| Agentic Standard
|
|
136
|
-
| Project Conventions
|
|
137
|
-
| Original Baseline
|
|
145
|
+
| Agentic Standard | `akita.feature` |
|
|
146
|
+
| Project Conventions | `conventions.feature` |
|
|
147
|
+
| Original Baseline | `superpowers.feature` |
|
|
148
|
+
|
|
149
|
+
Run `npm run compliance` to audit all features. Score < 94% = hard stop.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## 📖 Hierarchy of Truth
|
|
154
|
+
|
|
155
|
+
| Level | Document | Responsibility |
|
|
156
|
+
| :--- | :--- | :--- |
|
|
157
|
+
| **Vision** | `docs/PRINCIPLES.md` | Philosophical foundations and evolution. |
|
|
158
|
+
| **Context** | `specs/tech-architecture/TECH_STACK_LATEST.md` | Tech stack, architecture, and domain notes. |
|
|
159
|
+
| **Scope** | `specs/product/SCOPE_LATEST.yaml` | In-scope / out-of-scope and success criteria. |
|
|
160
|
+
| **Vision** | `specs/product/VISION_LATEST.yaml` | North star and initiative success criteria. |
|
|
161
|
+
| **Decisions** | `specs/adr/` | Architectural Decision Records (irreversible choices). |
|
|
162
|
+
| **Roadmap** | `specs/release-plan.yaml` + `specs/epics/` | WSJF-prioritized epics and stories with BCP baseline. |
|
|
163
|
+
| **Current** | `specs/state.yaml` | Session flow, active epic, `handoff.next_skill`, timestamps. |
|
|
164
|
+
| **Metrics** | `specs/metrics/cycle-times.yaml` | Per-story BCPs, cycle minutes, BCP/hr (v2.0.0). |
|
|
165
|
+
| **Index** | `SKILL-INDEX.md` | Canonical list of all active skills (auto-generated). |
|
|
166
|
+
| **Style** | `CONVENTIONS.md` | Coding, testing, and naming standards. |
|
|
138
167
|
|
|
168
|
+
---
|
|
139
169
|
|
|
140
|
-
|
|
170
|
+
## 📁 Project Structure
|
|
141
171
|
|
|
172
|
+
- `skills/[skill-name]/`: Source files for each of the 72 skills.
|
|
173
|
+
- `scripts/`: Installation, syncing, and compliance tools.
|
|
174
|
+
- `specs/`: YAML cockpit — `state.yaml`, `release-plan.yaml`, `epics/`, `execution-status.yaml`, `requirements/`.
|
|
175
|
+
- `specs/metrics/`: Cycle-time ledger (`cycle-times.yaml`) — per-story BCPs, timestamps, BCP/hr (v2.0.0).
|
|
176
|
+
- `dashboard/`: Live monitoring tool — TUI (`npm run dashboard`) and web (`npm run dashboard:web`, port 7742).
|
|
177
|
+
- `docs/`: Guides including `WORKFLOW-SOP-v2.md` (full SDLC SOP) and `using-bigpowers.md`.
|
|
178
|
+
- `docs/references/`: Theoretical foundations (Uncle Bob, Ousterhout, Karpathy, etc.).
|
|
142
179
|
|
|
180
|
+
---
|
|
143
181
|
|
|
144
|
-
|
|
182
|
+
## 🔌 pi Support
|
|
145
183
|
|
|
146
|
-
bigpowers
|
|
184
|
+
bigpowers generates pi Agent Skills and prompt templates alongside Cursor and Gemini artifacts via `sync-skills.sh`.
|
|
147
185
|
|
|
148
|
-
|
|
186
|
+
### Install as a pi package
|
|
149
187
|
|
|
188
|
+
```bash
|
|
189
|
+
# Clone and sync to generate pi artifacts
|
|
190
|
+
cd bigpowers
|
|
191
|
+
bash scripts/sync-skills.sh
|
|
192
|
+
|
|
193
|
+
# Install from local path as a pi package
|
|
194
|
+
pi install .
|
|
195
|
+
|
|
196
|
+
# Or install as a pi npm package (once published with pi-package keyword)
|
|
197
|
+
pi install npm:bigpowers
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**What you get:**
|
|
201
|
+
- **pi skills** in `.pi/skills/` (one per SKILL.md) — loaded automatically into pi's system prompt as `<available_skills>`
|
|
202
|
+
- **pi prompt templates** in `.pi/prompts/` — slash commands like `/survey-context`, `/plan-work`
|
|
203
|
+
- **pi package manifest** in `.pi/package.json` — enables `pi install` with auto-discovery
|
|
204
|
+
|
|
205
|
+
Skills are loaded on-demand via progressive disclosure: only descriptions are always in context; the full SKILL.md loads when the agent reads it. Prompt templates expand in pi's editor with autocomplete.
|
|
206
|
+
|
|
207
|
+
## 🔧 MCP Server (Model Context Protocol)
|
|
208
|
+
|
|
209
|
+
bigpowers **includes** an MCP server (`scripts/mcp-server.js`) that exposes the skill catalog as callable MCP tools, so agents can discover and invoke skills dynamically instead of relying on a static system prompt. It is not active until you register it with your agent — see below.
|
|
210
|
+
|
|
211
|
+
### Start the server
|
|
212
|
+
|
|
213
|
+
```bash
|
|
150
214
|
node scripts/mcp-server.js
|
|
215
|
+
```
|
|
151
216
|
|
|
152
|
-
Add to Claude Code
|
|
217
|
+
### Add to Claude Code
|
|
153
218
|
|
|
219
|
+
```bash
|
|
154
220
|
claude mcp add bigpowers node /path/to/bigpowers/scripts/mcp-server.js
|
|
221
|
+
```
|
|
155
222
|
|
|
156
|
-
Or add manually to
|
|
223
|
+
Or add manually to `.claude/settings.json`:
|
|
157
224
|
|
|
225
|
+
```json
|
|
158
226
|
{
|
|
159
|
-
|
|
160
227
|
"mcpServers": {
|
|
161
|
-
|
|
162
228
|
"bigpowers": {
|
|
163
|
-
|
|
164
229
|
"command": "node",
|
|
165
|
-
|
|
166
230
|
"args": ["/path/to/bigpowers/scripts/mcp-server.js"]
|
|
167
|
-
|
|
168
231
|
}
|
|
169
|
-
|
|
170
232
|
}
|
|
171
|
-
|
|
172
233
|
}
|
|
234
|
+
```
|
|
173
235
|
|
|
174
|
-
Available MCP tools
|
|
236
|
+
### Available MCP tools
|
|
175
237
|
|
|
176
|
-
Tool
|
|
238
|
+
| Tool | Description |
|
|
239
|
+
|------|-------------|
|
|
240
|
+
| `bigpowers_list_skills` | List all skills with name, description, phase. Optional `phase` filter. |
|
|
241
|
+
| `bigpowers_get_skill` | Get full SKILL.md content for any skill by name. |
|
|
242
|
+
| `bigpowers_search_skills` | Keyword/semantic search — returns ranked matches for a query. |
|
|
243
|
+
| `bigpowers_get_state` | Get current `specs/state.yaml` (active flow, epic, step). |
|
|
244
|
+
| `bigpowers_invoke_skill` | Get skill instructions with optional context for agent invocation. |
|
|
177
245
|
|
|
178
|
-
|
|
246
|
+
---
|
|
179
247
|
|
|
180
|
-
|
|
248
|
+
## 🔄 Maintenance (Update & Uninstall)
|
|
181
249
|
|
|
182
|
-
|
|
250
|
+
### Update
|
|
183
251
|
|
|
184
|
-
|
|
252
|
+
**npm install:**
|
|
185
253
|
|
|
186
|
-
|
|
254
|
+
```bash
|
|
255
|
+
npm update -g bigpowers
|
|
256
|
+
bigpowers # re-sync and refresh symlinks
|
|
257
|
+
```
|
|
187
258
|
|
|
188
|
-
|
|
259
|
+
**git clone:**
|
|
189
260
|
|
|
190
|
-
|
|
261
|
+
```bash
|
|
262
|
+
git pull
|
|
263
|
+
npm run sync
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
*Install uses symlinks — re-running setup refreshes links without duplicating files.*
|
|
267
|
+
|
|
268
|
+
### Uninstall
|
|
191
269
|
|
|
192
|
-
|
|
270
|
+
**npm install:**
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
bash "$(npm root -g)/bigpowers/scripts/install.sh" --uninstall
|
|
274
|
+
npm uninstall -g bigpowers
|
|
275
|
+
```
|
|
193
276
|
|
|
194
|
-
|
|
277
|
+
**git clone:**
|
|
195
278
|
|
|
196
|
-
|
|
279
|
+
```bash
|
|
280
|
+
bash scripts/install.sh --uninstall
|
|
281
|
+
```
|
|
197
282
|
|
|
198
|
-
|
|
283
|
+
### Reinstall
|
|
199
284
|
|
|
285
|
+
```bash
|
|
286
|
+
npx bigpowers
|
|
287
|
+
# or, if installed globally:
|
|
288
|
+
bigpowers
|
|
289
|
+
```
|
|
200
290
|
|
|
291
|
+
---
|
|
201
292
|
|
|
202
|
-
## Development
|
|
293
|
+
## 🧪 Development
|
|
203
294
|
|
|
204
295
|
```bash
|
|
205
296
|
git clone https://github.com/danielvm-git/bigpowers.git
|
|
@@ -209,7 +300,7 @@ npm install
|
|
|
209
300
|
npm run sync
|
|
210
301
|
```
|
|
211
302
|
|
|
212
|
-
|
|
303
|
+
### Tests
|
|
213
304
|
|
|
214
305
|
```bash
|
|
215
306
|
# Run compliance verification against Gherkin features
|
|
@@ -220,7 +311,9 @@ npm run doctrine
|
|
|
220
311
|
npm run validate-specs
|
|
221
312
|
```
|
|
222
313
|
|
|
223
|
-
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## 🤝 Contributing
|
|
224
317
|
|
|
225
318
|
1. Fork the repo.
|
|
226
319
|
2. Create a feature branch (`git checkout -b feature/my-thing`).
|
|
@@ -229,16 +322,18 @@ npm run validate-specs
|
|
|
229
322
|
5. Push to the branch (`git push origin feature/my-thing`).
|
|
230
323
|
6. Open a Pull Request.
|
|
231
324
|
|
|
232
|
-
|
|
325
|
+
### Changelog
|
|
233
326
|
|
|
234
327
|
See [CHANGELOG.md](CHANGELOG.md) or [Releases](https://github.com/danielvm-git/bigpowers/releases).
|
|
235
328
|
|
|
236
|
-
|
|
329
|
+
### Links
|
|
330
|
+
|
|
331
|
+
- **Repository**: https://github.com/danielvm-git/bigpowers
|
|
332
|
+
- **Issue Tracker**: https://github.com/danielvm-git/bigpowers/issues
|
|
237
333
|
|
|
238
|
-
|
|
239
|
-
- **Issue Tracker**: [https://github.com/danielvm-git/bigpowers/issues](https://github.com/danielvm-git/bigpowers/issues)
|
|
334
|
+
---
|
|
240
335
|
|
|
241
|
-
## Acknowledgements
|
|
336
|
+
## 🙏 Acknowledgements
|
|
242
337
|
|
|
243
338
|
This project is a synthesis of decades of software engineering thought. It would not be possible without the foundational work of the authors who wrote the inspirational articles and books that shaped this methodology:
|
|
244
339
|
|
|
@@ -248,6 +343,11 @@ This project is a synthesis of decades of software engineering thought. It would
|
|
|
248
343
|
- **Jarek Wasowski** for identifying Spec-Driven Development (SDD) as the missing link for AI agents.
|
|
249
344
|
- **AkitaOnRails** for adapting classical clean code principles to the reality of the AI token economy.
|
|
250
345
|
|
|
251
|
-
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## 📄 License
|
|
349
|
+
|
|
350
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
252
351
|
|
|
253
|
-
|
|
352
|
+
---
|
|
353
|
+
*“Simplicity is the ultimate sophistication, but integrity is the ultimate requirement.”*
|
package/SKILL-INDEX.md
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
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-07-02T16:00:53Z
|
|
7
6
|
**Skills:** 72
|
|
8
7
|
|
|
9
8
|
---
|
|
@@ -160,5 +159,5 @@ All skills follow `verb-noun` kebab-case (ADR-0001). Documented exceptions:
|
|
|
160
159
|
1. Run `bash scripts/sync-skills.sh` to regenerate this file and all artifacts.
|
|
161
160
|
2. Or run `bash scripts/generate-skill-index.sh` to only regenerate this index.
|
|
162
161
|
|
|
163
|
-
→ verify: `find . -maxdepth 2 -name "SKILL.md" | grep -v ".git\|.cursor\|.gemini" | wc -l`
|
|
162
|
+
→ verify: `find . skills -maxdepth 2 -name "SKILL.md" 2>/dev/null | grep -v ".git\|.cursor\|.gemini\|.pi" | sort -u | wc -l`
|
|
164
163
|
|
package/package.json
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
# add-model-frontmatter.sh — one-time helper; idempotent model: injection
|
|
3
3
|
set -euo pipefail
|
|
4
4
|
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
5
|
+
# SKILLS_ROOT: use skills/ when it exists, fall back to repo root
|
|
6
|
+
SKILLS_ROOT="$REPO_ROOT"
|
|
7
|
+
[[ -d "$REPO_ROOT/skills" ]] && SKILLS_ROOT="$REPO_ROOT/skills"
|
|
5
8
|
|
|
6
9
|
# Bash 3.2-compatible model mapping (no declare -A)
|
|
7
10
|
get_model() {
|
|
@@ -12,7 +15,7 @@ get_model() {
|
|
|
12
15
|
esac
|
|
13
16
|
}
|
|
14
17
|
|
|
15
|
-
for skill_dir in "$
|
|
18
|
+
for skill_dir in "$SKILLS_ROOT"/*/; do
|
|
16
19
|
skill_md="$skill_dir/SKILL.md"
|
|
17
20
|
[[ -f "$skill_md" ]] || continue
|
|
18
21
|
name=$(basename "$skill_dir")
|
package/scripts/audit-catalog.sh
CHANGED
|
@@ -7,21 +7,24 @@ set -euo pipefail
|
|
|
7
7
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
8
|
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
9
9
|
cd "$REPO_ROOT"
|
|
10
|
+
# SKILLS_ROOT: use skills/ when it exists, fall back to repo root
|
|
11
|
+
SKILLS_ROOT="$REPO_ROOT"
|
|
12
|
+
[[ -d "$REPO_ROOT/skills" ]] && SKILLS_ROOT="$REPO_ROOT/skills"
|
|
10
13
|
|
|
11
14
|
ORPHANS=()
|
|
12
15
|
MISSING=()
|
|
13
16
|
|
|
14
|
-
# Check: every .pi/skills/<name>/ dir must have a matching
|
|
17
|
+
# Check: every .pi/skills/<name>/ dir must have a matching source SKILL.md
|
|
15
18
|
for d in .pi/skills/*/; do
|
|
16
19
|
name=$(basename "$d")
|
|
17
|
-
if [ ! -f "$name/SKILL.md" ]; then
|
|
20
|
+
if [ ! -f "$SKILLS_ROOT/$name/SKILL.md" ]; then
|
|
18
21
|
ORPHANS+=("$name")
|
|
19
22
|
fi
|
|
20
23
|
done
|
|
21
24
|
|
|
22
|
-
# Check: every
|
|
23
|
-
for f in
|
|
24
|
-
name=$(
|
|
25
|
+
# Check: every SKILLS_ROOT SKILL.md dir must have a matching .pi/skills/<name>/SKILL.md
|
|
26
|
+
for f in "$SKILLS_ROOT"/*/SKILL.md; do
|
|
27
|
+
name=$(basename "$(dirname "$f")")
|
|
25
28
|
# Skip non-skill directories
|
|
26
29
|
case "$name" in
|
|
27
30
|
docs|node_modules|scripts|specs|dashboard|test) continue ;;
|
|
@@ -33,8 +36,8 @@ done
|
|
|
33
36
|
|
|
34
37
|
PI_COUNT=$(ls -d .pi/skills/*/ 2>/dev/null | wc -l | tr -d ' ')
|
|
35
38
|
SRC_COUNT=0
|
|
36
|
-
for f in
|
|
37
|
-
name=$(
|
|
39
|
+
for f in "$SKILLS_ROOT"/*/SKILL.md; do
|
|
40
|
+
name=$(basename "$(dirname "$f")")
|
|
38
41
|
case "$name" in
|
|
39
42
|
docs|node_modules|scripts|specs|dashboard|test) continue ;;
|
|
40
43
|
esac
|