start-vibing-stacks 2.40.0 → 2.41.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/README.md CHANGED
@@ -6,7 +6,7 @@ Multi-stack AI workflow for **Claude Code** & **Cursor**. One command installs a
6
6
  npx start-vibing-stacks
7
7
  ```
8
8
 
9
- > Latest: **v2.40.0** — New `email-push-marketing` skill + always-on memory: owned-list email/push in sensitive niches + **2026 inbox deliverability** (SPF/DKIM/DMARC/BIMI, bulk rules) without niche-content bans. Hard limits: no phishing / bank-brand impersonation. Universal skills: **32**.
9
+ > Latest: **v2.41.0** — Post-push **GitHub Actions** verification: `commit-manager` v3.2.0 Step 5.5 + always-on memory `post-push-ci-verification` + `git-workflow` §5.5. After push, `gh run list/watch` before claiming CI/deploy success.
10
10
 
11
11
  ---
12
12
 
@@ -213,12 +213,13 @@ This release includes a comprehensive set of permissive memories for legitimate
213
213
  6. SECURITY security-auditor — VETO on CRITICAL/HIGH/MEDIUM findings
214
214
  7. QUALITY quality-gate: typecheck → lint → test → build
215
215
  8. COMMIT commit-manager — verifies gates, diff-driven message, push
216
- 9. DOCUMENT documenter maps files/commits to domains, regenerates _index.json
217
- 10. WISDOM domain-updaterrecords session learnings, PREPENDS new entry to CLAUDE.md ## Recent Changes (append-only LIFO, cap 10, multi-instance safe)
218
- 11. COMPACT claude-md-compactortriggers if CLAUDE.md > 20 KB
216
+ 9. CI VERIFY gh run list/watch for pushed SHA — report deploy/release if present
217
+ 10. DOCUMENT documentermaps files/commits to domains, regenerates _index.json
218
+ 11. WISDOM domain-updaterrecords session learnings, PREPENDS new entry to CLAUDE.md ## Recent Changes (append-only LIFO, cap 10, multi-instance safe)
219
+ 12. COMPACT claude-md-compactor — triggers if CLAUDE.md > 20 KB
219
220
  ```
220
221
 
221
- Steps 6–7 cannot be skipped — `security-auditor` and `quality-gate` veto `commit-manager` on findings.
222
+ Steps 6–7 cannot be skipped — `security-auditor` and `quality-gate` veto `commit-manager` on findings. Step 9 is required after push on GitHub remotes (memory `post-push-ci-verification`).
222
223
 
223
224
  ---
224
225
 
package/dist/migrate.js CHANGED
@@ -405,6 +405,7 @@ export function patchSettings(projectDir, dryRun) {
405
405
  '.claude/memories/paid-ads-landing-validation.md',
406
406
  '.claude/memories/owned-infra-ops.md',
407
407
  '.claude/memories/email-push-marketing-authorization.md',
408
+ '.claude/memories/post-push-ci-verification.md',
408
409
  ];
409
410
  if (!settings.context)
410
411
  settings.context = {};
package/dist/setup.js CHANGED
@@ -266,6 +266,7 @@ export async function setupProject(projectDir, config, options = {}) {
266
266
  '.claude/memories/paid-ads-landing-validation.md',
267
267
  '.claude/memories/owned-infra-ops.md',
268
268
  '.claude/memories/email-push-marketing-authorization.md',
269
+ '.claude/memories/post-push-ci-verification.md',
269
270
  ],
270
271
  },
271
272
  permissions: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "start-vibing-stacks",
3
- "version": "2.40.0",
3
+ "version": "2.41.0",
4
4
  "description": "AI-powered multi-stack dev workflow for Claude Code. Supports PHP, Node.js, Python and more.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,21 +1,21 @@
1
1
  ---
2
2
  name: commit-manager
3
- version: 3.1.0
4
- description: "AUTOMATICALLY invoke as the FINAL implementation agent when code changes are ready. Verifies security-auditor and quality-gate passed (HARD GATE — will NOT commit if vetoed), analyzes the diff for a precise conventional commit message, commits ONLY this session's files via `scope.ts commit` (atomic `git commit -o`, never bundles a peer's staged work; `git add -A` only in solo projects), pushes, and triggers the post-commit chain (documenter domain-updater). Multi-instance safe: never bundles peer sessions' uncommitted files into your commit, and STOPS rather than falling back to `git add -A` when the session cannot be resolved. Supports branch-merge and direct-to-main flows. v3.1.0 (May-2026): atomic pathspec commit + safe (no -A) fallback + CLAUDE_SESSION_ID requirement."
3
+ version: 3.2.0
4
+ description: "AUTOMATICALLY invoke as the FINAL implementation agent when code changes are ready. Verifies security-auditor and quality-gate passed (HARD GATE — will NOT commit if vetoed), analyzes the diff for a precise conventional commit message, commits ONLY this session's files via `scope.ts commit` (atomic `git commit -o`, never bundles a peer's staged work; `git add -A` only in solo projects), pushes, verifies GitHub Actions for the pushed SHA (gh run list/watch majority of projects use Actions), then triggers the post-commit chain (documenter domain-updater). Multi-instance safe. v3.2.0: post-push CI verification before claiming success."
5
5
  model: sonnet
6
6
  tools: Read, Bash, Grep, Glob
7
- skills: git-workflow
7
+ skills: git-workflow, ci-pipelines
8
8
  ---
9
9
 
10
- # Commit Manager Agent (v3.0.0 — gate-aware, diff-driven, per-instance scoped)
10
+ # Commit Manager Agent (v3.2.0 — gate-aware, diff-driven, per-instance scoped, post-push CI)
11
11
 
12
- You are the **last gate before code enters the repo**. You verify upstream agents passed, compose a precise commit message from the actual diff, commit, push, and trigger the post-commit documentation chain.
12
+ You are the **last gate before code enters the repo**. You verify upstream agents passed, compose a precise commit message from the actual diff, commit, push, **verify GitHub Actions for that push**, and trigger the post-commit documentation chain.
13
13
 
14
14
  ## Workflow position
15
15
 
16
16
  ```
17
17
  security-auditor ──┐
18
- quality-gate ──────┼──→ commit-manager (YOU) ──→ documenter ──→ domain-updater ──→ session end
18
+ quality-gate ──────┼──→ commit-manager (YOU) ──→ [CI verify] ──→ documenter ──→ domain-updater ──→ session end
19
19
  │ ▲
20
20
  │ │ VETOED if findings open
21
21
  └─────────┘
@@ -233,9 +233,48 @@ If still fails → **STOP**, print the error, and let the user decide. Do NOT fo
233
233
 
234
234
  ---
235
235
 
236
+ ## Step 5.5 — Verify GitHub Actions (REQUIRED after successful push)
237
+
238
+ Local quality gates can be green while remote CI (matrix, Semgrep, deploy) fails. **Do not claim success until you know CI status** (or document an explicit skip).
239
+
240
+ Most projects in this ecosystem use **GitHub Actions**. Recipe lives in `git-workflow` § Post-push CI and memory `post-push-ci-verification.md`.
241
+
242
+ ```bash
243
+ SHA=$(git rev-parse HEAD)
244
+ REMOTE=$(git remote get-url origin 2>/dev/null || true)
245
+
246
+ # Skip only when clearly not applicable — state CI: skipped/<reason> in the report
247
+ # - origin is not github.com
248
+ # - gh missing or not authenticated
249
+ # - no .github/workflows/ in the repo
250
+
251
+ gh run list --commit "$SHA" --limit 10
252
+ # Prefer watching the run(s) for this SHA (timeout ~10–15 min for typical CI):
253
+ gh run list --commit "$SHA" --json databaseId,name,status,conclusion,url \
254
+ --jq '.[] | select(.status != "completed") | .databaseId' | while read -r id; do
255
+ [ -n "$id" ] && gh run watch "$id" --exit-status
256
+ done
257
+ # If all already completed, check conclusions:
258
+ gh run list --commit "$SHA" --json name,conclusion,url \
259
+ --jq '.[] | "\(.conclusion)\t\(.name)\t\(.url)"'
260
+ ```
261
+
262
+ ### Decision matrix
263
+
264
+ | Result | Action |
265
+ |---|---|
266
+ | All relevant runs `success` | Proceed to Step 6; report `CI: passed` (+ note deploy/release job if present) |
267
+ | Any run `failure` / `cancelled` | **Report loudly** — print failing job URL + `gh run view <id> --log-failed` hint. Do **not** say “deployed successfully”. Still allow Step 6 (docs) but mark `CI: FAILED` |
268
+ | Still `in_progress` after watch timeout | Report `CI: pending` + run URL; do not invent a green status |
269
+ | Skip conditions above | Report `CI: skipped (<reason>)` once; continue |
270
+
271
+ Deploy/release: if a workflow name contains `deploy`, `release`, `publish`, or `auto-release`, include its conclusion in the report (pass/fail/pending).
272
+
273
+ ---
274
+
236
275
  ## Step 6 — Trigger post-commit chain
237
276
 
238
- After successful push, inform the orchestrator that these agents should run next:
277
+ After successful push **and** CI check (or explicit skip), inform the orchestrator that these agents should run next:
239
278
 
240
279
  ```
241
280
  ✅ Commit successful
@@ -243,6 +282,7 @@ Hash: <short-sha>
243
282
  Branch: <main>
244
283
  Subject: <subject line>
245
284
  Files: <n> changed, <insertions>+, <deletions>-
285
+ CI: <passed|failed|pending|skipped>
246
286
 
247
287
  Next agents (in order):
248
288
  1. documenter — map files + commits to domains
@@ -250,11 +290,11 @@ Next agents (in order):
250
290
  (append-only LIFO, cap 10 — multi-instance safe)
251
291
  ```
252
292
 
253
- Do NOT run them yourself — the orchestrator or the user triggers them. Your job is done after push.
293
+ Do NOT run documenter/domain-updater yourself — the orchestrator or the user triggers them. Your job is done after push **and** the CI check (or documented skip).
254
294
 
255
295
  ---
256
296
 
257
- ## Step 7 — Report (deterministic, ≤ 10 lines)
297
+ ## Step 7 — Report (deterministic, ≤ 12 lines)
258
298
 
259
299
  ### Success
260
300
 
@@ -267,6 +307,8 @@ Subject: <subject>
267
307
  Files: <n> changed (<insertions>+, <deletions>-)
268
308
  Flow: <branch-merge|direct-to-main>
269
309
  Push: origin/<main>
310
+ CI: <passed|failed|pending|skipped> — <workflow names / URLs>
311
+ Deploy: <passed|failed|n/a|pending>
270
312
  Next: documenter → domain-updater
271
313
  ```
272
314
 
@@ -293,12 +335,15 @@ Action: <what the user should do>
293
335
  8. **TOKEN EFFICIENT** — use `--stat` first (cheap). Only `diff -U3` specific files when stat is ambiguous. Never read the full diff of 20+ files.
294
336
  9. **CLEAN STAGE** — verify no `.env`, `.DS_Store`, `*.log` are staged. Unstage them silently.
295
337
  10. **PUSH FAILURE = STOP** — retry once with `--rebase --autostash`. If still fails, stop and report. Never force push.
296
- 11. **TRIGGER CHAIN** — always report which agents should run next (documenter → domain-updater). You do not run them.
297
- 12. **NEVER REFRESH "Last Change"** — that section no longer exists. The downstream chain (`domain-updater`) PREPENDS to `## Recent Changes` (append-only LIFO). Do not generate `## Last Change` content in your commit messages or instructions.
338
+ 11. **POST-PUSH CI** — after every successful push to a GitHub remote with workflows, verify Actions for the pushed SHA (Step 5.5). Never claim deploy success without checking.
339
+ 12. **TRIGGER CHAIN** — always report which agents should run next (documenter domain-updater). You do not run them.
340
+ 13. **NEVER REFRESH "Last Change"** — that section no longer exists. The downstream chain (`domain-updater`) PREPENDS to `## Recent Changes` (append-only LIFO). Do not generate `## Last Change` content in your commit messages or instructions.
298
341
 
299
342
  ## See Also
300
343
 
301
- - `git-workflow` skill — branch naming, conventional commits, merge strategies, HEREDOC examples
344
+ - `git-workflow` skill — branch naming, conventional commits, **post-push CI verification**
345
+ - Memory `post-push-ci-verification.md` — always-on checklist after commit/push
346
+ - `ci-pipelines` skill — workflow authorship + how to read failing jobs
302
347
  - `scope.ts` (`.claude/hooks/scope.ts`) — per-instance staging tool used by Step 4a
303
348
  - `peers.ts` (`.claude/hooks/peers.ts`) — peer discovery CLI used by Step 1.5
304
349
  - `/commit-mine` slash command — interactive equivalent of this agent's Step 4a + Step 4b for manual use
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: commit-mine
3
- description: Commit ONLY this Claude session's edited files (multi-instance safe). Replaces raw `git add . && git commit` to prevent your commit from bundling a peer session's uncommitted changes.
4
- version: 1.1.0
3
+ description: Commit ONLY this Claude session's edited files (multi-instance safe). Replaces raw `git add . && git commit` to prevent your commit from bundling a peer session's uncommitted changes. After --push, verify GitHub Actions for the SHA.
4
+ version: 1.2.0
5
5
  ---
6
6
 
7
7
  # /commit-mine — Per-Instance Commit
@@ -34,11 +34,14 @@ files in the last 5 min unless you pass `--include-conflicted`.
34
34
  | 3 | **Review** the diff of your files | `npx tsx "$CLAUDE_PROJECT_DIR/.claude/hooks/scope.ts" diff` |
35
35
  | 4 | **Commit** — atomic, only your files | `npx tsx "$CLAUDE_PROJECT_DIR/.claude/hooks/scope.ts" commit "<message>"` |
36
36
  | 5 | **Push** (optional) | add `--push` to step 4, or `git push` |
37
+ | 6 | **Verify GitHub Actions** (required if you pushed) | `gh run list --commit $(git rev-parse HEAD)` then `gh run watch` — see `git-workflow` § Post-push CI |
37
38
 
38
39
  > `scope stage` still exists for manual index inspection, but it is best-effort in a
39
40
  > shared worktree (a peer's staged files can linger). Prefer `scope commit` — it is the
40
41
  > only path that is atomic against a concurrent peer.
41
42
 
43
+ > After `--push`, do **not** stop at “pushed”. Confirm Actions (and deploy/release jobs if any) before claiming success. Memory: `post-push-ci-verification.md`.
44
+
42
45
  ## Forbidden patterns (NEVER do these in a multi-instance project)
43
46
 
44
47
  | Command | Why forbidden |
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: feature
3
- description: Start a new feature with the full workflow (research → plan → implement → hygiene → test → security → quality → commit → docs).
4
- version: 1.2.0
3
+ description: Start a new feature with the full workflow (research → plan → implement → hygiene → test → security → quality → commit → CI verify → docs).
4
+ version: 1.3.0
5
5
  ---
6
6
 
7
7
  # /feature — Start New Feature
@@ -19,10 +19,11 @@ Execute in order — do not skip steps. Steps 6–7 have **VETO power** over com
19
19
  | 5 | **Test** — unit + e2e | `tester` |
20
20
  | 6 | **Security** — adversarial audit | `security-auditor` (VETO) |
21
21
  | 7 | **Quality** — typecheck → lint → test → build | `quality-gate` |
22
- | 8 | **Commit** — gate-aware, diff-driven message | `commit-manager` |
23
- | 9 | **Map** — files + commits domains | `documenter` |
24
- | 10 | **Wisdom + Recent Changes** — record learnings, PREPEND new `### YYYY-MM-DD · branch · vX.Y.Z` entry to `CLAUDE.md` `## Recent Changes` (append-only LIFO, cap 10) | `domain-updater` |
22
+ | 8 | **Commit + push** — gate-aware, diff-driven message | `commit-manager` |
23
+ | 9 | **Verify GitHub Actions** — `gh run list/watch` for the pushed SHA; report deploy/release if present | `commit-manager` Step 5.5 · `git-workflow` · memory `post-push-ci-verification` |
24
+ | 10 | **Map** — files + commits domains | `documenter` |
25
+ | 11 | **Wisdom + Recent Changes** — record learnings, PREPEND new `### YYYY-MM-DD · branch · vX.Y.Z` entry to `CLAUDE.md` `## Recent Changes` (append-only LIFO, cap 10) | `domain-updater` |
25
26
 
26
- If `security-auditor` returns CRITICAL/HIGH/MEDIUM, fix before re-running step 6. Steps 910 run AFTER push and never before.
27
+ If `security-auditor` returns CRITICAL/HIGH/MEDIUM, fix before re-running step 6. Steps 1011 run AFTER push (and CI check) and never before.
27
28
 
28
- **Multi-instance note:** `commit-manager` v3.0.0 stages only THIS session's files via `scope.ts` when `.claude/state/` is present — peers' uncommitted files are never bundled into your commit. For a manual / interactive equivalent of Step 8, use `/commit-mine` (skip `/feature` from Step 8 onward).
29
+ **Multi-instance note:** `commit-manager` v3.2.0+ stages only THIS session's files via `scope.ts` when `.claude/state/` is present — peers' uncommitted files are never bundled into your commit. For a manual / interactive equivalent of Step 8, use `/commit-mine` (then still run Step 9 if you pushed).
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: fix
3
- description: Fix a bug — reproduce, isolate, minimal fix, fix-induced dead-code hygiene, regression test, security check, commit, record wisdom.
4
- version: 1.2.0
3
+ description: Fix a bug — reproduce, isolate, minimal fix, fix-induced dead-code hygiene, regression test, security check, commit, verify GitHub Actions, record wisdom.
4
+ version: 1.3.0
5
5
  ---
6
6
 
7
7
  # /fix — Fix Bug
@@ -17,10 +17,11 @@ Always read `.claude/config/active-project.json` first.
17
17
  | 5 | **Verify** — re-run the regression test + the wider suite | `tester` |
18
18
  | 6 | **Security** — only if the bug touched auth / input / secrets / SSRF surface | `security-auditor` (VETO) |
19
19
  | 7 | **Quality gate** — typecheck → lint → test → build | `quality-gate` |
20
- | 8 | **Commit** — `fix(scope): <subject>`, diff-driven body, per-instance scoped staging | `commit-manager` v3.0.0 |
21
- | 9 | **Map** — files + commit domain | `documenter` v3.0.0 |
22
- | 10 | **Wisdom + Recent Changes entry** — append to domain `## Problems & Solutions` (symptom + root cause + fix + prevention + skill ref) AND PREPEND `### YYYY-MM-DD · branch · fix-tag` to `CLAUDE.md` `## Recent Changes` | `domain-updater` v3.0.0 |
20
+ | 8 | **Commit + push** — `fix(scope): <subject>`, diff-driven body, per-instance scoped staging | `commit-manager` v3.2.0 |
21
+ | 9 | **Verify GitHub Actions** — `gh run list/watch` for the pushed SHA; report deploy if present | `git-workflow` · memory `post-push-ci-verification` |
22
+ | 10 | **Map** — files + commit domain | `documenter` v3.0.0 |
23
+ | 11 | **Wisdom + Recent Changes entry** — append to domain `## Problems & Solutions` (symptom + root cause + fix + prevention + skill ref) AND PREPEND `### YYYY-MM-DD · branch · fix-tag` to `CLAUDE.md` `## Recent Changes` | `domain-updater` v3.0.0 |
23
24
 
24
25
  `domain-updater` deduplicates by symptom/root-cause. If the same bug recurred, it appends a "Recurrence" note instead of a duplicate entry.
25
26
 
26
- **Multi-instance note:** Step 8 stages only THIS session's files via `scope.ts` when `.claude/state/` is present (peers' uncommitted files are never bundled). For a manual / interactive Step 8 (no chain auto-trigger), use `/commit-mine` instead.
27
+ **Multi-instance note:** Step 8 stages only THIS session's files via `scope.ts` when `.claude/state/` is present (peers' uncommitted files are never bundled). For a manual / interactive Step 8 (no chain auto-trigger), use `/commit-mine` — then still run Step 9 if you pushed.
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- // @sv-version: 1.3.0
2
+ // @sv-version: 1.4.0
3
3
  /**
4
4
  * UserPromptSubmit Hook — Start Vibing Stacks
5
5
  *
@@ -10,6 +10,8 @@
10
10
  * peer messages reach the user before this turn runs, and warn if active
11
11
  * peers exist.
12
12
  *
13
+ * v1.4.0: after commit/push, verify GitHub Actions (gh run list/watch) before
14
+ * claiming deploy success — memory post-push-ci-verification + commit-manager 5.5.
13
15
  * v1.3.0: workflow adds dead-code hygiene step (skill `dead-code-hygiene`) between
14
16
  * WORK and quality gates — remove inert legacy paths before commit.
15
17
  * v1.2.0: workflow guidance now points at `## Recent Changes` (append-only LIFO)
@@ -169,7 +171,7 @@ async function main(): Promise<void> {
169
171
 
170
172
  4. Run quality gates: ${qualityCmd}
171
173
 
172
- 5. COMMIT using conventional commits via commit-manager agent (v3.0.0+: stages only THIS session's files via scope.ts when .claude/state/ exists — peers' uncommitted files are never bundled).
174
+ 5. COMMIT using conventional commits via commit-manager agent (v3.2.0+: stages only THIS session's files via scope.ts when .claude/state/ exists — peers' uncommitted files are never bundled). After push, VERIFY GitHub Actions for the SHA (gh run list/watch) — do not claim deploy success without checking (memory: post-push-ci-verification).
173
175
 
174
176
  6. UPDATE CLAUDE.md:
175
177
  a. PREPEND a new entry under "## Recent Changes" — heading exactly:
@@ -0,0 +1,51 @@
1
+ ---
2
+ version: 1.0.0
3
+ ---
4
+
5
+ # Memory: Post-Push CI Verification (GitHub Actions)
6
+
7
+ > **ALWAYS LOAD** — After any `git push` to a GitHub remote, verify **GitHub Actions** for that commit before claiming the change is validated or deployed. Most projects in this ecosystem use Actions.
8
+
9
+ ---
10
+
11
+ ## Declared purpose
12
+
13
+ Agents routinely stop at “pushed to origin” while CI (or deploy/release) is still red. This memory makes post-push verification part of the default contract.
14
+
15
+ ---
16
+
17
+ ## What to check after push
18
+
19
+ 1. **Runs for the pushed SHA** — `gh run list --commit $(git rev-parse HEAD)`
20
+ 2. **Wait for completion** — `gh run watch <id> --exit-status` for in-progress runs
21
+ 3. **Conclusions** — all required workflows `success` (or document failure)
22
+ 4. **Deploy/release** — if a job/workflow is named deploy / release / publish / auto-release, report its result separately
23
+ 5. **On failure** — surface the run URL + `gh run view <id> --log-failed`; do **not** say “deployed successfully”
24
+
25
+ Load skill `git-workflow` (§ Post-push CI) and agent `commit-manager` Step 5.5 for the full recipe.
26
+
27
+ ---
28
+
29
+ ## Explicit rules
30
+
31
+ | Situation | Required behavior |
32
+ |---|---|
33
+ | GitHub remote + `.github/workflows/` present | Verify Actions after push |
34
+ | CI failed | Report `CI: FAILED` + URL; fix or escalate — never invent green |
35
+ | CI pending / timeout | Report `CI: pending` + URL |
36
+ | Not GitHub / no `gh` / no workflows | Report `CI: skipped (<reason>)` once |
37
+
38
+ ---
39
+
40
+ ## Out of scope
41
+
42
+ - Replacing local `quality-gate` (still required **before** commit)
43
+ - Force-pushing to “fix” CI
44
+ - Claiming npm/production deploy success without a green deploy/release job (or user confirmation)
45
+
46
+ ---
47
+
48
+ ## See Also
49
+
50
+ - Agent: `commit-manager` v3.2.0+ (Step 5.5)
51
+ - Skills: `git-workflow`, `ci-pipelines`
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: ci-pipelines
3
- version: 1.0.0
4
- description: GitHub Actions pipelines for typecheck, lint, test, security scan, build, and release. Stack-aware templates live in stacks/<stack>/workflows/.
3
+ version: 1.1.0
4
+ description: GitHub Actions pipelines for typecheck, lint, test, security scan, build, and release. Also covers verifying runs after git push (gh run list/watch). Stack-aware templates live in stacks/<stack>/workflows/.
5
5
  ---
6
6
 
7
7
  # CI Pipelines
@@ -159,8 +159,22 @@ jobs:
159
159
  | Workflow with `permissions: write-all` | Overly broad, supply chain risk |
160
160
  | Long-lived cloud creds in repo secrets | Use OIDC instead |
161
161
 
162
+ ## Verify runs after push
163
+
164
+ Authoring workflows is not enough — after `git push`, confirm the run for that SHA. Full recipe: `git-workflow` § Post-push CI and `commit-manager` Step 5.5.
165
+
166
+ ```bash
167
+ gh run list --commit "$(git rev-parse HEAD)" --limit 10
168
+ gh run watch <id> --exit-status # when still in_progress
169
+ gh run view <id> --log-failed # when conclusion=failure
170
+ ```
171
+
172
+ Map deploy/release success only when the job that publishes/deploys is green (not merely “CI started”).
173
+
162
174
  ## See Also
163
175
 
164
176
  - `secrets-management` — repo secrets & OIDC patterns
165
177
  - `quality-gate` — local quality gates that mirror CI
166
- - `git-workflow` — branch + commit conventions CI relies on
178
+ - `git-workflow` — branch + commit conventions + post-push verification
179
+ - Memory `post-push-ci-verification.md` — always-on checklist after push
180
+ - `commit-manager` — enforces Step 5.5 after every push
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: git-workflow
3
- version: 2.0.0
4
- description: "Git workflow conventions used by commit-manager v2.0.0+: Conventional Commits (no AI-attribution footers), branch naming, direct-to-main vs feature-branch flow, end-on-main rule, push policy, never force-push main, signed commits encouraged. Invoke when starting a feature, creating commits, pushing, or wiring git-related hooks."
3
+ version: 2.1.0
4
+ description: "Git workflow conventions used by commit-manager v3.2.0+: Conventional Commits (no AI-attribution footers), branch naming, direct-to-main vs feature-branch flow, end-on-main rule, push policy, post-push GitHub Actions verification (gh run list/watch), never force-push main, signed commits encouraged. Invoke when starting a feature, creating commits, pushing, or wiring git-related hooks."
5
5
  ---
6
6
 
7
7
  # Git Workflow
@@ -127,6 +127,41 @@ End state in **both flows**: clean tree, on `main`, in sync with `origin/main`.
127
127
  - [ ] Conventional commit message drafted
128
128
  - [ ] Push target confirmed (`origin main` vs `origin feature/*`)
129
129
 
130
+ ## 5.5. Post-push CI verification (GitHub Actions)
131
+
132
+ **After every successful `git push` to a GitHub remote**, verify Actions for that commit. Local gates ≠ remote CI. Majority of projects here use GitHub Actions. See memory `post-push-ci-verification.md` and `commit-manager` Step 5.5.
133
+
134
+ ```bash
135
+ SHA=$(git rev-parse HEAD)
136
+
137
+ # List runs for this commit
138
+ gh run list --commit "$SHA" --limit 10
139
+
140
+ # Watch incomplete runs until they finish (fail the shell if a run fails)
141
+ for id in $(gh run list --commit "$SHA" --json databaseId,status \
142
+ --jq '.[] | select(.status != "completed") | .databaseId'); do
143
+ gh run watch "$id" --exit-status
144
+ done
145
+
146
+ # Summarize conclusions
147
+ gh run list --commit "$SHA" --json name,conclusion,url \
148
+ --jq '.[] | "\(.conclusion)\t\(.name)\t\(.url)"'
149
+ ```
150
+
151
+ On failure:
152
+
153
+ ```bash
154
+ gh run view <run-id> --log-failed # or open the URL from gh run list
155
+ ```
156
+
157
+ | Skip when | Report as |
158
+ |---|---|
159
+ | `origin` is not GitHub | `CI: skipped (non-GitHub remote)` |
160
+ | `gh` missing / not authenticated | `CI: skipped (gh unavailable)` |
161
+ | No `.github/workflows/` | `CI: skipped (no workflows)` |
162
+
163
+ Never claim **deploy / release / npm publish** success unless the matching workflow job concluded `success` (or the user confirmed outside CI).
164
+
130
165
  ## 6. Tags & releases
131
166
 
132
167
  ```bash
@@ -153,11 +188,13 @@ Semver: bump `MAJOR.MINOR.PATCH` per breaking/feature/fix.
153
188
  - **NEVER** `--no-verify` to bypass hooks
154
189
  - **ALWAYS** Conventional Commits, no AI-attribution footers
155
190
  - **ALWAYS** end on `main` with a clean tree (Stop validator enforces)
191
+ - **ALWAYS** verify GitHub Actions after push (or document an explicit skip)
156
192
  - **ONE** feature per branch (or per direct-to-main commit batch)
157
193
 
158
194
  ## See Also
159
195
 
160
- - `commit-manager` agent — drives the message + push pipeline
161
- - `quality-gate` — the gate the commit-manager waits for
196
+ - `commit-manager` agent — drives the message + push + **CI verify** pipeline
197
+ - Memory `post-push-ci-verification.md` — always-on post-push checklist
198
+ - `quality-gate` — the local gate the commit-manager waits for before commit
162
199
  - `secrets-management` — gitleaks 3-layer (pre-commit, CI, push protection)
163
- - `ci-pipelines` — branch-protection rules that mirror this skill
200
+ - `ci-pipelines` — workflow authorship + failing-job triage