bigpowers 2.10.0 → 2.11.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,7 +1,7 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "2.10.0",
4
- "description": "64 skills — 61 agent skills for spec-driven, test-first software development by solo developers",
3
+ "version": "2.11.0",
4
+ "description": "65 skills — 61 agent skills for spec-driven, test-first software development by solo developers",
5
5
  "keywords": [
6
6
  "pi-package"
7
7
  ],
@@ -0,0 +1,164 @@
1
+ ---
2
+ description: "Build → verify artifact → deploy → wait → smoke deployment pipeline. Platform-agnostic (MCP or CLI), with configurable timeout, retry with exponential backoff, and integrated health-check. The deploy half of CI/CD: run after build to push to production."
3
+ ---
4
+
5
+
6
+ # Deploy
7
+
8
+ > **HARD GATE** — Do not deploy without running tests first. Run `test` or your CI suite before this skill.
9
+ >
10
+ > **HARD GATE** — Use this skill from a CI/CD pipeline or post-merge on `main`/`master`. Never deploy from a feature branch.
11
+ >
12
+ > **HARD GATE** — The deploy skill orchestrates deployment; the `smoke-test` skill validates post-deploy health. Chain them: `deploy → smoke-test`.
13
+
14
+ Orchestrate a full build-to-deployment pipeline: build the artifact, verify it exists and is non-empty, invoke a platform deploy tool (MCP or CLI), poll until the deploy completes or times out, then run a baseline smoke test against the live URL.
15
+
16
+ ## Pipeline Stages
17
+
18
+ ```
19
+ build → verify artifact → deploy → wait/retry → smoke
20
+ ```
21
+
22
+ | Stage | Description | Failure mode |
23
+ |-------|-------------|-------------|
24
+ | Build | Execute the project's build command | Non-zero exit: report build error |
25
+ | Verify | Check artifact exists and is non-empty | Missing/empty: report artifact path |
26
+ | Deploy | Invoke platform deploy tool (MCP, Vercel CLI, rsync, etc.) | Non-zero exit: report deploy error |
27
+ | Wait | Poll deploy status every 30s up to `DEPLOY_TIMEOUT` (default 5 min) | Timeout: report exceeded |
28
+ | Smoke | `curl -sSf $DEPLOY_URL` as baseline health check | Non-200: report failure |
29
+
30
+ ## Process
31
+
32
+ ### 1. Detect build command
33
+
34
+ Read project manifest files in order to determine the build command:
35
+
36
+ | Manifest | Build command |
37
+ |----------|--------------|
38
+ | `package.json` | `npm run build` (or `scripts.build` value) |
39
+ | `Cargo.toml` | `cargo build --release` |
40
+ | `pyproject.toml` / `setup.py` | Depends on build backend (`poetry build`, `pip install -e .`, etc.) |
41
+ | `Makefile` | `make build` or first target named `build` |
42
+ | `AGENTS.md` / `CLAUDE.md` | Look for `build:` in project commands section |
43
+
44
+ If no manifest is found, prompt the user with: "No detected build command. Pass `--build 'npm run build'` or specify the command."
45
+
46
+ ### 2. Build the artifact
47
+
48
+ ```bash
49
+ npm run build
50
+ ```
51
+
52
+ Or the detected command from step 1. If the build fails, exit non-zero and report the build output.
53
+
54
+ ### 3. Verify the artifact
55
+
56
+ ```bash
57
+ ARTIFACT_DIR="${ARTIFACT_DIR:-dist}"
58
+ if [ ! -d "$ARTIFACT_DIR" ] || [ -z "$(ls -A "$ARTIFACT_DIR" 2>/dev/null)" ]; then
59
+ echo "FAIL: build artifact not found at $ARTIFACT_DIR"
60
+ exit 1
61
+ fi
62
+ ```
63
+
64
+ Configurable via `$ARTIFACT_DIR` environment variable (default: `dist/`).
65
+
66
+ ### 4. Deploy to platform
67
+
68
+ Platform-agnostic — supports multiple deployment targets via environment variables:
69
+
70
+ | Platform | Env var | Example |
71
+ |----------|---------|---------|
72
+ | Vercel | `VERCEL_TOKEN`, `VERCEL_PROJECT_ID` | `vercel deploy --prod --token $VERCEL_TOKEN` |
73
+ | Netlify | `NETLIFY_AUTH_TOKEN`, `NETLIFY_SITE_ID` | `netlify deploy --prod --auth $NETLIFY_AUTH_TOKEN --dir $ARTIFACT_DIR` |
74
+ | BigBase MCP | MCP tool call | `mcp deploy` via BigBase server |
75
+ | rsync/SSH | `DEPLOY_SSH_USER`, `DEPLOY_SSH_HOST`, `DEPLOY_SSH_PATH` | `rsync -avz $ARTIFACT_DIR/ $DEPLOY_SSH_USER@$DEPLOY_SSH_HOST:$DEPLOY_SSH_PATH` |
76
+ | Custom | `DEPLOY_COMMAND` | Run any deploy command string |
77
+
78
+ The deploy tool is selected by which environment variables are set. If none are configured:
79
+
80
+ ```bash
81
+ echo "No deploy target configured. Set one of: VERCEL_TOKEN, NETLIFY_AUTH_TOKEN, DEPLOY_SSH_USER+DEPLOY_SSH_HOST, DEPLOY_COMMAND, or MCP deploy tool."
82
+ exit 1
83
+ ```
84
+
85
+ ### 5. Wait and poll status
86
+
87
+ After invoking the deploy command, poll for completion:
88
+
89
+ ```bash
90
+ DEPLOY_TIMEOUT="${DEPLOY_TIMEOUT:-300}" # seconds (default 5 minutes)
91
+ DEPLOY_POLL_INTERVAL="${DEPLOY_POLL_INTERVAL:-30}" # seconds
92
+
93
+ start_time=$(date +%s)
94
+ while true; do
95
+ elapsed=$(( $(date +%s) - start_time ))
96
+ if [ "$elapsed" -ge "$DEPLOY_TIMEOUT" ]; then
97
+ echo "FAIL: deploy status polling timed out after ${DEPLOY_TIMEOUT}s"
98
+ exit 1
99
+ fi
100
+
101
+ status=$(get_deploy_status) # platform-specific status check
102
+ if [ "$status" = "ready" ] || [ "$status" = "done" ]; then
103
+ echo "Deploy completed in ${elapsed}s"
104
+ break
105
+ fi
106
+
107
+ sleep "$DEPLOY_POLL_INTERVAL"
108
+ done
109
+ ```
110
+
111
+ Use exponential backoff for retries on transient failures:
112
+
113
+ ```bash
114
+ RETRY_MAX="${RETRY_MAX:-3}"
115
+ base_delay=2
116
+ for attempt in $(seq 1 "$RETRY_MAX"); do
117
+ if deploy_command; then
118
+ break
119
+ fi
120
+ if [ "$attempt" -eq "$RETRY_MAX" ]; then
121
+ echo "FAIL: deploy failed after ${RETRY_MAX} attempts"
122
+ exit 1
123
+ fi
124
+ sleep $(( base_delay * 2 ** (attempt - 1) ))
125
+ done
126
+ ```
127
+
128
+ ### 6. Baseline smoke test
129
+
130
+ ```bash
131
+ DEPLOY_URL="${DEPLOY_URL:?DEPLOY_URL must be set}"
132
+ if curl -sSf "$DEPLOY_URL" > /dev/null 2>&1; then
133
+ echo "OK: $DEPLOY_URL responds with HTTP 200"
134
+ else
135
+ echo "FAIL: $DEPLOY_URL is not responding with HTTP 200"
136
+ exit 1
137
+ fi
138
+ ```
139
+
140
+ For comprehensive health-checking, chain to the `smoke-test` skill:
141
+
142
+ ```bash
143
+ # After deploy success
144
+ bash scripts/run-smoke.sh "$DEPLOY_URL"
145
+ ```
146
+
147
+ ## Configuration
148
+
149
+ | Variable | Default | Description |
150
+ |----------|---------|-------------|
151
+ | `ARTIFACT_DIR` | `dist` | Build output directory |
152
+ | `DEPLOY_URL` | *(required)* | Live URL for smoke test |
153
+ | `DEPLOY_TIMEOUT` | `300` | Max wait for deploy completion (seconds) |
154
+ | `DEPLOY_POLL_INTERVAL` | `30` | Polling interval (seconds) |
155
+ | `RETRY_MAX` | `3` | Max deploy retry attempts |
156
+ | `BUILD_COMMAND` | *(auto-detect)* | Override build command |
157
+
158
+ ## Verification
159
+
160
+ → verify: `test -f deploy/SKILL.md && grep -q 'name: deploy' deploy/SKILL.md && echo OK`
161
+ → verify: `grep -qi 'build\|artifact\|deploy\|smoke' deploy/SKILL.md && echo OK`
162
+ → verify: `grep -ci 'package.json\|Cargo.toml\|Makefile\|manifest' deploy/SKILL.md | awk '{if($1>=1) print "OK"; else print "FAIL"}'`
163
+ → verify: `grep -ci 'timeout\|poll\|status\|retry\|backoff' deploy/SKILL.md | awk '{if($1>=2) print "OK"; else print "FAIL"}'`
164
+ → verify: `grep -q 'curl.*DEPLOY_URL\|smoke\|health' deploy/SKILL.md && echo OK`
@@ -0,0 +1,166 @@
1
+ ---
2
+ name: deploy
3
+ description: "\"Build → verify artifact → deploy → wait → smoke deployment pipeline. Platform-agnostic (MCP or CLI), with configurable timeout, retry with exponential backoff, and integrated health-check. The deploy half of CI/CD: run after build to push to production.\""
4
+ model: sonnet
5
+ ---
6
+
7
+
8
+ # Deploy
9
+
10
+ > **HARD GATE** — Do not deploy without running tests first. Run `test` or your CI suite before this skill.
11
+ >
12
+ > **HARD GATE** — Use this skill from a CI/CD pipeline or post-merge on `main`/`master`. Never deploy from a feature branch.
13
+ >
14
+ > **HARD GATE** — The deploy skill orchestrates deployment; the `smoke-test` skill validates post-deploy health. Chain them: `deploy → smoke-test`.
15
+
16
+ Orchestrate a full build-to-deployment pipeline: build the artifact, verify it exists and is non-empty, invoke a platform deploy tool (MCP or CLI), poll until the deploy completes or times out, then run a baseline smoke test against the live URL.
17
+
18
+ ## Pipeline Stages
19
+
20
+ ```
21
+ build → verify artifact → deploy → wait/retry → smoke
22
+ ```
23
+
24
+ | Stage | Description | Failure mode |
25
+ |-------|-------------|-------------|
26
+ | Build | Execute the project's build command | Non-zero exit: report build error |
27
+ | Verify | Check artifact exists and is non-empty | Missing/empty: report artifact path |
28
+ | Deploy | Invoke platform deploy tool (MCP, Vercel CLI, rsync, etc.) | Non-zero exit: report deploy error |
29
+ | Wait | Poll deploy status every 30s up to `DEPLOY_TIMEOUT` (default 5 min) | Timeout: report exceeded |
30
+ | Smoke | `curl -sSf $DEPLOY_URL` as baseline health check | Non-200: report failure |
31
+
32
+ ## Process
33
+
34
+ ### 1. Detect build command
35
+
36
+ Read project manifest files in order to determine the build command:
37
+
38
+ | Manifest | Build command |
39
+ |----------|--------------|
40
+ | `package.json` | `npm run build` (or `scripts.build` value) |
41
+ | `Cargo.toml` | `cargo build --release` |
42
+ | `pyproject.toml` / `setup.py` | Depends on build backend (`poetry build`, `pip install -e .`, etc.) |
43
+ | `Makefile` | `make build` or first target named `build` |
44
+ | `AGENTS.md` / `CLAUDE.md` | Look for `build:` in project commands section |
45
+
46
+ If no manifest is found, prompt the user with: "No detected build command. Pass `--build 'npm run build'` or specify the command."
47
+
48
+ ### 2. Build the artifact
49
+
50
+ ```bash
51
+ npm run build
52
+ ```
53
+
54
+ Or the detected command from step 1. If the build fails, exit non-zero and report the build output.
55
+
56
+ ### 3. Verify the artifact
57
+
58
+ ```bash
59
+ ARTIFACT_DIR="${ARTIFACT_DIR:-dist}"
60
+ if [ ! -d "$ARTIFACT_DIR" ] || [ -z "$(ls -A "$ARTIFACT_DIR" 2>/dev/null)" ]; then
61
+ echo "FAIL: build artifact not found at $ARTIFACT_DIR"
62
+ exit 1
63
+ fi
64
+ ```
65
+
66
+ Configurable via `$ARTIFACT_DIR` environment variable (default: `dist/`).
67
+
68
+ ### 4. Deploy to platform
69
+
70
+ Platform-agnostic — supports multiple deployment targets via environment variables:
71
+
72
+ | Platform | Env var | Example |
73
+ |----------|---------|---------|
74
+ | Vercel | `VERCEL_TOKEN`, `VERCEL_PROJECT_ID` | `vercel deploy --prod --token $VERCEL_TOKEN` |
75
+ | Netlify | `NETLIFY_AUTH_TOKEN`, `NETLIFY_SITE_ID` | `netlify deploy --prod --auth $NETLIFY_AUTH_TOKEN --dir $ARTIFACT_DIR` |
76
+ | BigBase MCP | MCP tool call | `mcp deploy` via BigBase server |
77
+ | rsync/SSH | `DEPLOY_SSH_USER`, `DEPLOY_SSH_HOST`, `DEPLOY_SSH_PATH` | `rsync -avz $ARTIFACT_DIR/ $DEPLOY_SSH_USER@$DEPLOY_SSH_HOST:$DEPLOY_SSH_PATH` |
78
+ | Custom | `DEPLOY_COMMAND` | Run any deploy command string |
79
+
80
+ The deploy tool is selected by which environment variables are set. If none are configured:
81
+
82
+ ```bash
83
+ echo "No deploy target configured. Set one of: VERCEL_TOKEN, NETLIFY_AUTH_TOKEN, DEPLOY_SSH_USER+DEPLOY_SSH_HOST, DEPLOY_COMMAND, or MCP deploy tool."
84
+ exit 1
85
+ ```
86
+
87
+ ### 5. Wait and poll status
88
+
89
+ After invoking the deploy command, poll for completion:
90
+
91
+ ```bash
92
+ DEPLOY_TIMEOUT="${DEPLOY_TIMEOUT:-300}" # seconds (default 5 minutes)
93
+ DEPLOY_POLL_INTERVAL="${DEPLOY_POLL_INTERVAL:-30}" # seconds
94
+
95
+ start_time=$(date +%s)
96
+ while true; do
97
+ elapsed=$(( $(date +%s) - start_time ))
98
+ if [ "$elapsed" -ge "$DEPLOY_TIMEOUT" ]; then
99
+ echo "FAIL: deploy status polling timed out after ${DEPLOY_TIMEOUT}s"
100
+ exit 1
101
+ fi
102
+
103
+ status=$(get_deploy_status) # platform-specific status check
104
+ if [ "$status" = "ready" ] || [ "$status" = "done" ]; then
105
+ echo "Deploy completed in ${elapsed}s"
106
+ break
107
+ fi
108
+
109
+ sleep "$DEPLOY_POLL_INTERVAL"
110
+ done
111
+ ```
112
+
113
+ Use exponential backoff for retries on transient failures:
114
+
115
+ ```bash
116
+ RETRY_MAX="${RETRY_MAX:-3}"
117
+ base_delay=2
118
+ for attempt in $(seq 1 "$RETRY_MAX"); do
119
+ if deploy_command; then
120
+ break
121
+ fi
122
+ if [ "$attempt" -eq "$RETRY_MAX" ]; then
123
+ echo "FAIL: deploy failed after ${RETRY_MAX} attempts"
124
+ exit 1
125
+ fi
126
+ sleep $(( base_delay * 2 ** (attempt - 1) ))
127
+ done
128
+ ```
129
+
130
+ ### 6. Baseline smoke test
131
+
132
+ ```bash
133
+ DEPLOY_URL="${DEPLOY_URL:?DEPLOY_URL must be set}"
134
+ if curl -sSf "$DEPLOY_URL" > /dev/null 2>&1; then
135
+ echo "OK: $DEPLOY_URL responds with HTTP 200"
136
+ else
137
+ echo "FAIL: $DEPLOY_URL is not responding with HTTP 200"
138
+ exit 1
139
+ fi
140
+ ```
141
+
142
+ For comprehensive health-checking, chain to the `smoke-test` skill:
143
+
144
+ ```bash
145
+ # After deploy success
146
+ bash scripts/run-smoke.sh "$DEPLOY_URL"
147
+ ```
148
+
149
+ ## Configuration
150
+
151
+ | Variable | Default | Description |
152
+ |----------|---------|-------------|
153
+ | `ARTIFACT_DIR` | `dist` | Build output directory |
154
+ | `DEPLOY_URL` | *(required)* | Live URL for smoke test |
155
+ | `DEPLOY_TIMEOUT` | `300` | Max wait for deploy completion (seconds) |
156
+ | `DEPLOY_POLL_INTERVAL` | `30` | Polling interval (seconds) |
157
+ | `RETRY_MAX` | `3` | Max deploy retry attempts |
158
+ | `BUILD_COMMAND` | *(auto-detect)* | Override build command |
159
+
160
+ ## Verification
161
+
162
+ → verify: `test -f deploy/SKILL.md && grep -q 'name: deploy' deploy/SKILL.md && echo OK`
163
+ → verify: `grep -qi 'build\|artifact\|deploy\|smoke' deploy/SKILL.md && echo OK`
164
+ → verify: `grep -ci 'package.json\|Cargo.toml\|Makefile\|manifest' deploy/SKILL.md | awk '{if($1>=1) print "OK"; else print "FAIL"}'`
165
+ → verify: `grep -ci 'timeout\|poll\|status\|retry\|backoff' deploy/SKILL.md | awk '{if($1>=2) print "OK"; else print "FAIL"}'`
166
+ → verify: `grep -q 'curl.*DEPLOY_URL\|smoke\|health' deploy/SKILL.md && echo OK`
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # [2.11.0](https://github.com/danielvm-git/bigpowers/compare/v2.10.0...v2.11.0) (2026-06-20)
2
+
3
+
4
+ ### Features
5
+
6
+ * **skills:** add deploy pipeline — build, verify, deploy, wait, smoke ([35a8530](https://github.com/danielvm-git/bigpowers/commit/35a85309c7ded6faffbf7aad52838b1b9140087f))
7
+
1
8
  # [2.10.0](https://github.com/danielvm-git/bigpowers/compare/v2.9.0...v2.10.0) (2026-06-20)
2
9
 
3
10
 
package/CONVENTIONS.md CHANGED
@@ -205,5 +205,6 @@ name must return < 5 results across the repo.
205
205
  |-------|----------------------|-----------|
206
206
  | `terse-mode` | adjective-noun | `enable-terse` implies a toggle; `terse-mode` names a mode state |
207
207
  | `visual-dashboard` | adjective-noun | `view-dashboard` implies read-only; `show-dashboard` collides with `show` verbs |
208
+ | `deploy` | single verb | Well-known DevOps single-word concept; renames like `deploy-app` or `deploy-service` are redundant since deploy always targets an application |
208
209
 
209
210
  Any new exception requires an entry in this table before the skill is published.
package/SKILL-INDEX.md CHANGED
@@ -3,8 +3,8 @@
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-20T21:31:11Z
7
- **Skills:** 64
6
+ **Generated:** 2026-06-20T21:48:09Z
7
+ **Skills:** 65
8
8
 
9
9
  ---
10
10
 
@@ -15,11 +15,11 @@
15
15
  | Discover | 6 | `elaborate-spec, map-codebase, research-first, search-skills, survey-context, using-bigpowers` |
16
16
  | Design | 7 | `deepen-architecture, define-language, define-success, design-interface, grill-me, grill-with-docs, model-domain` |
17
17
  | Plan | 9 | `assess-impact, change-request, plan-refactor, plan-release, plan-work, run-planning, scope-work, seed-conventions, slice-tasks` |
18
- | Build | 14 | `align-grid, build-epic, craft-skill, develop-tdd, execute-plan, guard-git, hook-commits, kickoff-branch, orchestrate-project, publish-package, setup-environment, spike-prototype, wire-ci, wire-observability` |
18
+ | Build | 15 | `align-grid, build-epic, craft-skill, deploy, develop-tdd, execute-plan, guard-git, hook-commits, kickoff-branch, orchestrate-project, publish-package, setup-environment, spike-prototype, wire-ci, wire-observability` |
19
19
  | Verify | 12 | `audit-code, diagnose-root, enforce-first, fix-bug, inspect-quality, investigate-bug, request-review, respond-review, run-evals, trace-requirement, validate-fix, verify-work` |
20
20
  | Release | 2 | `commit-message, release-branch` |
21
21
  | Sustain | 13 | `compose-workflow, delegate-task, dispatch-agents, edit-document, evolve-skill, migrate-spec, organize-workspace, reset-baseline, session-state, simulate-agents, stocktake-skills, terse-mode, write-document` |
22
- | **TOTAL** | **63** | |
22
+ | **TOTAL** | **64** | |
23
23
 
24
24
  ---
25
25
 
@@ -52,46 +52,47 @@
52
52
  | 23 | Build | `align-grid` | "Build editorial/magazine/report webpages on a GENUINE Müller-Brockmann modular | ✅ Active |
53
53
  | 24 | Build | `build-epic` | Eight-step epic build cycle — reads state.yaml, execution-status.yaml, and one | ✅ Active |
54
54
  | 25 | Build | `craft-skill` | Create new bigpowers skills with proper structure, progressive disclosure, and b | ✅ Active |
55
- | 26 | Build | `develop-tdd` | Test-driven development with red-green-refactor loop using vertical slices. Use | ✅ Active |
56
- | 27 | Build | `execute-plan` | Batch-execute tasks from the active epic capsule sequentially, with a human chec | ✅ Active |
57
- | 28 | Build | `guard-git` | Block dangerous git commands (push, force push, reset --hard, clean, branch -D, | ✅ Active |
58
- | 29 | Build | `hook-commits` | Set up pre-commit hooks with lint-staged (Prettier), type checking, and tests in | ✅ Active |
59
- | 30 | Build | `kickoff-branch` | Create a git worktree and feature branch, then verify a clean test baseline befo | ✅ Active |
60
- | 31 | Build | `orchestrate-project` | Meta-skill that enforces the 6-phase core loop (discover elaborate plan | ✅ Active |
61
- | 32 | Build | `publish-package` | "Package registry publishing for npm, crates.io, PyPI, and Homebrew. Verifies pr | ✅ Active |
62
- | 33 | Build | `setup-environment` | Pre-install dependencies and configure tools before development work begins. Use | ✅ Active |
63
- | 34 | Build | `spike-prototype` | Throw-away prototype for unknown problem spaces. Output is learning notes in spe | ✅ Active |
64
- | 35 | Build | `wire-ci` | "CI pipeline setup with pre-built templates and local validation. Generates GitH | ✅ Active |
65
- | 36 | Build | `wire-observability` | Add structured JSON logging, observability commands, and idempotent setup script | ✅ Active |
66
- | 37 | Verify | `audit-code` | Self-review checklist for the coding agent to run before dispatching a reviewer. | ✅ Active |
67
- | 38 | Verify | `diagnose-root` | Run 4-phase root cause analysis reproduce, isolate, hypothesize, verify. Use | ✅ Active |
68
- | 39 | Verify | `enforce-first` | Apply the F.I.R.S.T test quality rubric (Fast, Independent, Repeatable, Self-Val | ✅ Active |
69
- | 40 | Verify | `fix-bug` | Bug fix orchestrator active_flow fix_bug; reads specs/bugs/BUG-*.md; chains | ✅ Active |
70
- | 41 | Verify | `inspect-quality` | Interactive QA session where user reports bugs or issues conversationally, and t | ✅ Active |
71
- | 42 | Verify | `investigate-bug` | Investigate a bug or issue by exploring the codebase to find root cause, then wr | ✅ Active |
72
- | 43 | Verify | `request-review` | Dispatch a fresh reviewer agent with a clean context to critique the code after | ✅ Active |
73
- | 44 | Verify | `respond-review` | Act on a reviewer agent's feedback systematically categorize findings, apply | ✅ Active |
74
- | 45 | Verify | `run-evals` | Eval-Driven Development define capability and regression evals before buildi | ✅ Active |
75
- | 46 | Verify | `trace-requirement` | Link story IDs from specs/release-plan.yaml + epic capsule directories to the im | ✅ Active |
76
- | 47 | Verify | `validate-fix` | Prove a fix works before declaring done re-run the failing test, run the ful | ✅ Active |
77
- | 48 | Verify | `verify-work` | Multi-phase UAT gatecold-start smoke, build, typecheck, lint, tests, step-b | ✅ Active |
78
- | 49 | Release | `commit-message` | Reviews working-tree changes, then drafts a Conventional Commits title/body and | ✅ Active |
79
- | 50 | Release | `release-branch` | Make the merge/PR/keep/discard decision for a feature branch, verify coverage ga | ✅ Active |
80
- | 51 | Sustain | `compose-workflow` | Chain multiple bigpowers skills into a custom workflow recipe saved in specs/. U | ✅ Active |
81
- | 52 | Sustain | `delegate-task` | Delegate one complex task to a single subagent, review its work in two stages be | ✅ Active |
82
- | 53 | Sustain | `dispatch-agents` | Dispatch multiple subagents in parallel on independent tasks. No waiting between | ✅ Active |
83
- | 54 | Sustain | `edit-document` | Edit and improve documents by restructuring sections, improving clarity, and tig | ✅ Active |
84
- | 55 | Sustain | `evolve-skill` | Benchmark-gated skill evolution consume bigpowers-benchmark report, propose | ✅ Active |
85
- | 56 | Sustain | `migrate-spec` | Detect GSD, spec-kit, or BMAD spec artifacts and transform them into bigpowers Y | ✅ Active |
86
- | 57 | Sustain | `organize-workspace` | Scans the active workspace for disposable artifacts—logs, caches, stale build | ✅ Active |
87
- | 58 | Sustain | `reset-baseline` | Restore the project to a known clean state between agent runs or experiments. Us | ✅ Active |
88
- | 59 | Sustain | `session-state` | Track implementation decisions and progress in specs/state.yaml to prevent conte | ✅ Active |
89
- | 60 | Sustain | `simulate-agents` | Run Mock User and Auditor agents against a feature in fresh contexts before huma | ✅ Active |
90
- | 61 | Sustain | `stocktake-skills` | Sequential subagent batch audit of the bigpowers skill catalog Quick Scan (c | ✅ Active |
91
- | 62 | Sustain | `terse-mode` | Fallback ultra-compressed communication mode. Cuts token usage ~75% by dropping | ✅ Active |
92
- | 63 | Sustain | `write-document` | Write, organize, and sync high-integrity technical documents using the BMAD meth | ✅ Active |
93
-
94
- **Total: 63 active skills.**
55
+ | 26 | Build | `deploy` | "Build verify artifact deploy wait → smoke deployment pipeline. Pl | ✅ Active |
56
+ | 27 | Build | `develop-tdd` | Test-driven development with red-green-refactor loop using vertical slices. Use | ✅ Active |
57
+ | 28 | Build | `execute-plan` | Batch-execute tasks from the active epic capsule sequentially, with a human chec | ✅ Active |
58
+ | 29 | Build | `guard-git` | Block dangerous git commands (push, force push, reset --hard, clean, branch -D, | ✅ Active |
59
+ | 30 | Build | `hook-commits` | Set up pre-commit hooks with lint-staged (Prettier), type checking, and tests in | ✅ Active |
60
+ | 31 | Build | `kickoff-branch` | Create a git worktree and feature branch, then verify a clean test baseline befo | ✅ Active |
61
+ | 32 | Build | `orchestrate-project` | Meta-skill that enforces the 6-phase core loop (discover elaborate plan | ✅ Active |
62
+ | 33 | Build | `publish-package` | "Package registry publishing for npm, crates.io, PyPI, and Homebrew. Verifies pr | ✅ Active |
63
+ | 34 | Build | `setup-environment` | Pre-install dependencies and configure tools before development work begins. Use | ✅ Active |
64
+ | 35 | Build | `spike-prototype` | Throw-away prototype for unknown problem spaces. Output is learning notes in spe | ✅ Active |
65
+ | 36 | Build | `wire-ci` | "CI pipeline setup with pre-built templates and local validation. Generates GitH | ✅ Active |
66
+ | 37 | Build | `wire-observability` | Add structured JSON logging, observability commands, and idempotent setup script | ✅ Active |
67
+ | 38 | Verify | `audit-code` | Self-review checklist for the coding agent to run before dispatching a reviewer. | ✅ Active |
68
+ | 39 | Verify | `diagnose-root` | Run 4-phase root cause analysis reproduce, isolate, hypothesize, verify. Use | ✅ Active |
69
+ | 40 | Verify | `enforce-first` | Apply the F.I.R.S.T test quality rubric (Fast, Independent, Repeatable, Self-Val | ✅ Active |
70
+ | 41 | Verify | `fix-bug` | Bug fix orchestrator active_flow fix_bug; reads specs/bugs/BUG-*.md; chains | ✅ Active |
71
+ | 42 | Verify | `inspect-quality` | Interactive QA session where user reports bugs or issues conversationally, and t | ✅ Active |
72
+ | 43 | Verify | `investigate-bug` | Investigate a bug or issue by exploring the codebase to find root cause, then wr | ✅ Active |
73
+ | 44 | Verify | `request-review` | Dispatch a fresh reviewer agent with a clean context to critique the code after | ✅ Active |
74
+ | 45 | Verify | `respond-review` | Act on a reviewer agent's feedback systematically categorize findings, apply | ✅ Active |
75
+ | 46 | Verify | `run-evals` | Eval-Driven Development define capability and regression evals before buildi | ✅ Active |
76
+ | 47 | Verify | `trace-requirement` | Link story IDs from specs/release-plan.yaml + epic capsule directories to the im | ✅ Active |
77
+ | 48 | Verify | `validate-fix` | Prove a fix works before declaring done re-run the failing test, run the ful | ✅ Active |
78
+ | 49 | Verify | `verify-work` | Multi-phase UAT gate — cold-start smoke, build, typecheck, lint, tests, step-b | ✅ Active |
79
+ | 50 | Release | `commit-message` | Reviews working-tree changes, then drafts a Conventional Commits title/body and | ✅ Active |
80
+ | 51 | Release | `release-branch` | Make the merge/PR/keep/discard decision for a feature branch, verify coverage ga | ✅ Active |
81
+ | 52 | Sustain | `compose-workflow` | Chain multiple bigpowers skills into a custom workflow recipe saved in specs/. U | ✅ Active |
82
+ | 53 | Sustain | `delegate-task` | Delegate one complex task to a single subagent, review its work in two stages be | ✅ Active |
83
+ | 54 | Sustain | `dispatch-agents` | Dispatch multiple subagents in parallel on independent tasks. No waiting between | ✅ Active |
84
+ | 55 | Sustain | `edit-document` | Edit and improve documents by restructuring sections, improving clarity, and tig | ✅ Active |
85
+ | 56 | Sustain | `evolve-skill` | Benchmark-gated skill evolution consume bigpowers-benchmark report, propose | ✅ Active |
86
+ | 57 | Sustain | `migrate-spec` | Detect GSD, spec-kit, or BMAD spec artifacts and transform them into bigpowers Y | ✅ Active |
87
+ | 58 | Sustain | `organize-workspace` | Scans the active workspace for disposable artifacts—logs, caches, stale build | ✅ Active |
88
+ | 59 | Sustain | `reset-baseline` | Restore the project to a known clean state between agent runs or experiments. Us | ✅ Active |
89
+ | 60 | Sustain | `session-state` | Track implementation decisions and progress in specs/state.yaml to prevent conte | ✅ Active |
90
+ | 61 | Sustain | `simulate-agents` | Run Mock User and Auditor agents against a feature in fresh contexts before huma | ✅ Active |
91
+ | 62 | Sustain | `stocktake-skills` | Sequential subagent batch audit of the bigpowers skill catalog — Quick Scan (c | ✅ Active |
92
+ | 63 | Sustain | `terse-mode` | Fallback ultra-compressed communication mode. Cuts token usage ~75% by dropping | ✅ Active |
93
+ | 64 | Sustain | `write-document` | Write, organize, and sync high-integrity technical documents using the BMAD meth | ✅ Active |
94
+
95
+ **Total: 64 active skills.**
95
96
 
96
97
  ---
97
98
 
@@ -0,0 +1,165 @@
1
+ ---
2
+ name: deploy
3
+ description: "Build → verify artifact → deploy → wait → smoke deployment pipeline. Platform-agnostic (MCP or CLI), with configurable timeout, retry with exponential backoff, and integrated health-check. The deploy half of CI/CD: run after build to push to production."
4
+ model: sonnet
5
+ ---
6
+
7
+ # Deploy
8
+
9
+ > **HARD GATE** — Do not deploy without running tests first. Run `test` or your CI suite before this skill.
10
+ >
11
+ > **HARD GATE** — Use this skill from a CI/CD pipeline or post-merge on `main`/`master`. Never deploy from a feature branch.
12
+ >
13
+ > **HARD GATE** — The deploy skill orchestrates deployment; the `smoke-test` skill validates post-deploy health. Chain them: `deploy → smoke-test`.
14
+
15
+ Orchestrate a full build-to-deployment pipeline: build the artifact, verify it exists and is non-empty, invoke a platform deploy tool (MCP or CLI), poll until the deploy completes or times out, then run a baseline smoke test against the live URL.
16
+
17
+ ## Pipeline Stages
18
+
19
+ ```
20
+ build → verify artifact → deploy → wait/retry → smoke
21
+ ```
22
+
23
+ | Stage | Description | Failure mode |
24
+ |-------|-------------|-------------|
25
+ | Build | Execute the project's build command | Non-zero exit: report build error |
26
+ | Verify | Check artifact exists and is non-empty | Missing/empty: report artifact path |
27
+ | Deploy | Invoke platform deploy tool (MCP, Vercel CLI, rsync, etc.) | Non-zero exit: report deploy error |
28
+ | Wait | Poll deploy status every 30s up to `DEPLOY_TIMEOUT` (default 5 min) | Timeout: report exceeded |
29
+ | Smoke | `curl -sSf $DEPLOY_URL` as baseline health check | Non-200: report failure |
30
+
31
+ ## Process
32
+
33
+ ### 1. Detect build command
34
+
35
+ Read project manifest files in order to determine the build command:
36
+
37
+ | Manifest | Build command |
38
+ |----------|--------------|
39
+ | `package.json` | `npm run build` (or `scripts.build` value) |
40
+ | `Cargo.toml` | `cargo build --release` |
41
+ | `pyproject.toml` / `setup.py` | Depends on build backend (`poetry build`, `pip install -e .`, etc.) |
42
+ | `Makefile` | `make build` or first target named `build` |
43
+ | `AGENTS.md` / `CLAUDE.md` | Look for `build:` in project commands section |
44
+
45
+ If no manifest is found, prompt the user with: "No detected build command. Pass `--build 'npm run build'` or specify the command."
46
+
47
+ ### 2. Build the artifact
48
+
49
+ ```bash
50
+ npm run build
51
+ ```
52
+
53
+ Or the detected command from step 1. If the build fails, exit non-zero and report the build output.
54
+
55
+ ### 3. Verify the artifact
56
+
57
+ ```bash
58
+ ARTIFACT_DIR="${ARTIFACT_DIR:-dist}"
59
+ if [ ! -d "$ARTIFACT_DIR" ] || [ -z "$(ls -A "$ARTIFACT_DIR" 2>/dev/null)" ]; then
60
+ echo "FAIL: build artifact not found at $ARTIFACT_DIR"
61
+ exit 1
62
+ fi
63
+ ```
64
+
65
+ Configurable via `$ARTIFACT_DIR` environment variable (default: `dist/`).
66
+
67
+ ### 4. Deploy to platform
68
+
69
+ Platform-agnostic — supports multiple deployment targets via environment variables:
70
+
71
+ | Platform | Env var | Example |
72
+ |----------|---------|---------|
73
+ | Vercel | `VERCEL_TOKEN`, `VERCEL_PROJECT_ID` | `vercel deploy --prod --token $VERCEL_TOKEN` |
74
+ | Netlify | `NETLIFY_AUTH_TOKEN`, `NETLIFY_SITE_ID` | `netlify deploy --prod --auth $NETLIFY_AUTH_TOKEN --dir $ARTIFACT_DIR` |
75
+ | BigBase MCP | MCP tool call | `mcp deploy` via BigBase server |
76
+ | rsync/SSH | `DEPLOY_SSH_USER`, `DEPLOY_SSH_HOST`, `DEPLOY_SSH_PATH` | `rsync -avz $ARTIFACT_DIR/ $DEPLOY_SSH_USER@$DEPLOY_SSH_HOST:$DEPLOY_SSH_PATH` |
77
+ | Custom | `DEPLOY_COMMAND` | Run any deploy command string |
78
+
79
+ The deploy tool is selected by which environment variables are set. If none are configured:
80
+
81
+ ```bash
82
+ echo "No deploy target configured. Set one of: VERCEL_TOKEN, NETLIFY_AUTH_TOKEN, DEPLOY_SSH_USER+DEPLOY_SSH_HOST, DEPLOY_COMMAND, or MCP deploy tool."
83
+ exit 1
84
+ ```
85
+
86
+ ### 5. Wait and poll status
87
+
88
+ After invoking the deploy command, poll for completion:
89
+
90
+ ```bash
91
+ DEPLOY_TIMEOUT="${DEPLOY_TIMEOUT:-300}" # seconds (default 5 minutes)
92
+ DEPLOY_POLL_INTERVAL="${DEPLOY_POLL_INTERVAL:-30}" # seconds
93
+
94
+ start_time=$(date +%s)
95
+ while true; do
96
+ elapsed=$(( $(date +%s) - start_time ))
97
+ if [ "$elapsed" -ge "$DEPLOY_TIMEOUT" ]; then
98
+ echo "FAIL: deploy status polling timed out after ${DEPLOY_TIMEOUT}s"
99
+ exit 1
100
+ fi
101
+
102
+ status=$(get_deploy_status) # platform-specific status check
103
+ if [ "$status" = "ready" ] || [ "$status" = "done" ]; then
104
+ echo "Deploy completed in ${elapsed}s"
105
+ break
106
+ fi
107
+
108
+ sleep "$DEPLOY_POLL_INTERVAL"
109
+ done
110
+ ```
111
+
112
+ Use exponential backoff for retries on transient failures:
113
+
114
+ ```bash
115
+ RETRY_MAX="${RETRY_MAX:-3}"
116
+ base_delay=2
117
+ for attempt in $(seq 1 "$RETRY_MAX"); do
118
+ if deploy_command; then
119
+ break
120
+ fi
121
+ if [ "$attempt" -eq "$RETRY_MAX" ]; then
122
+ echo "FAIL: deploy failed after ${RETRY_MAX} attempts"
123
+ exit 1
124
+ fi
125
+ sleep $(( base_delay * 2 ** (attempt - 1) ))
126
+ done
127
+ ```
128
+
129
+ ### 6. Baseline smoke test
130
+
131
+ ```bash
132
+ DEPLOY_URL="${DEPLOY_URL:?DEPLOY_URL must be set}"
133
+ if curl -sSf "$DEPLOY_URL" > /dev/null 2>&1; then
134
+ echo "OK: $DEPLOY_URL responds with HTTP 200"
135
+ else
136
+ echo "FAIL: $DEPLOY_URL is not responding with HTTP 200"
137
+ exit 1
138
+ fi
139
+ ```
140
+
141
+ For comprehensive health-checking, chain to the `smoke-test` skill:
142
+
143
+ ```bash
144
+ # After deploy success
145
+ bash scripts/run-smoke.sh "$DEPLOY_URL"
146
+ ```
147
+
148
+ ## Configuration
149
+
150
+ | Variable | Default | Description |
151
+ |----------|---------|-------------|
152
+ | `ARTIFACT_DIR` | `dist` | Build output directory |
153
+ | `DEPLOY_URL` | *(required)* | Live URL for smoke test |
154
+ | `DEPLOY_TIMEOUT` | `300` | Max wait for deploy completion (seconds) |
155
+ | `DEPLOY_POLL_INTERVAL` | `30` | Polling interval (seconds) |
156
+ | `RETRY_MAX` | `3` | Max deploy retry attempts |
157
+ | `BUILD_COMMAND` | *(auto-detect)* | Override build command |
158
+
159
+ ## Verification
160
+
161
+ → verify: `test -f deploy/SKILL.md && grep -q 'name: deploy' deploy/SKILL.md && echo OK`
162
+ → verify: `grep -qi 'build\|artifact\|deploy\|smoke' deploy/SKILL.md && echo OK`
163
+ → verify: `grep -ci 'package.json\|Cargo.toml\|Makefile\|manifest' deploy/SKILL.md | awk '{if($1>=1) print "OK"; else print "FAIL"}'`
164
+ → verify: `grep -ci 'timeout\|poll\|status\|retry\|backoff' deploy/SKILL.md | awk '{if($1>=2) print "OK"; else print "FAIL"}'`
165
+ → verify: `grep -q 'curl.*DEPLOY_URL\|smoke\|health' deploy/SKILL.md && echo OK`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "2.10.0",
3
+ "version": "2.11.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": {
@@ -56,6 +56,7 @@ PHASE_MAP=(
56
56
  [orchestrate-project]="Build"
57
57
  [guard-git]="Build"
58
58
  [hook-commits]="Build"
59
+ [deploy]="Build"
59
60
  # Verify
60
61
  [verify-work]="Verify"
61
62
  [validate-fix]="Verify"
package/skills-lock.json CHANGED
@@ -61,6 +61,11 @@
61
61
  "sha256": "9e3b8bd7274def42",
62
62
  "path": "delegate-task/SKILL.md"
63
63
  },
64
+ "deploy": {
65
+ "description": "\"Build → verify artifact → deploy → wait → smoke deployment pipeline. Platform-agnostic (MCP or CLI), with configurable timeout, retry with exponential backoff, and integrated health-check. The deploy half of CI/CD: run after build to push to production.\"",
66
+ "sha256": "260894aa4f869093",
67
+ "path": "deploy/SKILL.md"
68
+ },
64
69
  "design-interface": {
65
70
  "description": "Generate multiple radically different interface designs for a module using parallel sub-agents, then compare trade-offs. Based on \"Design It Twice\" from A Philosophy of Software Design. Use when user wants to design an API, explore interface options, compare module shapes, or mentions \"design it twice\".",
66
71
  "sha256": "c93e3fe065857cb8",