mandrel 1.70.0 → 1.72.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/.agents/README.md +6 -6
- package/.agents/docs/SDLC.md +4 -5
- package/.agents/docs/configuration.md +9 -9
- package/.agents/docs/workflows.md +4 -6
- package/.agents/schemas/qa-finding.schema.json +1 -1
- package/.agents/scripts/apply-quality-bootstrap.js +2 -2
- package/.agents/scripts/lib/bootstrap/ci-workflow-template.js +1 -1
- package/.agents/scripts/lib/bootstrap/quality-bootstrap.js +1 -1
- package/.agents/scripts/lib/config/defaults.js +1 -1
- package/.agents/scripts/lib/config/sync-agentrc.js +1 -1
- package/.agents/scripts/lib/config-resolver.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +35 -5
- package/.agents/scripts/lib/qa/qa-context-hydrator.js +1 -1
- package/.agents/scripts/lib/qa/resolve-qa-contract.js +1 -1
- package/.agents/scripts/{agents-update-preflight.js → mandrel-update-preflight.js} +11 -11
- package/.agents/scripts/sync-agentrc.js +2 -2
- package/.agents/skills/skills.index.json +2 -2
- package/.agents/skills/stack/qa/playwright-bdd/SKILL.md +3 -3
- package/.agents/skills/stack/qa/qa-harness/SKILL.md +4 -4
- package/.agents/workflows/git-deliver.md +298 -0
- package/.agents/workflows/helpers/epic-testing.md +6 -6
- package/.agents/workflows/helpers/{agents-sync-config.md → mandrel-sync-config.md} +5 -4
- package/.agents/workflows/helpers/plan-epic.md +51 -8
- package/.agents/workflows/helpers/plan-story.md +18 -2
- package/.agents/workflows/{agents-update.md → mandrel-update.md} +8 -8
- package/.agents/workflows/plan.md +71 -3
- package/.agents/workflows/qa-explore.md +1 -1
- package/.agents/workflows/{qa-run-harness.md → qa-run.md} +5 -5
- package/README.md +20 -0
- package/docs/CHANGELOG.md +23 -0
- package/package.json +1 -1
- package/.agents/workflows/git-commit-all.md +0 -15
- package/.agents/workflows/git-pr-all.md +0 -281
- package/.agents/workflows/git-push.md +0 -63
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
description: Drive Gherkin scenarios through a real browser as an agent-driven QA sweep
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
# /qa-run
|
|
5
|
+
# /qa-run
|
|
6
6
|
|
|
7
7
|
Execute a consumer's Gherkin `.feature` scenarios through a **real browser**
|
|
8
8
|
(the chrome-devtools MCP surface), with the agent acting as the step executor
|
|
@@ -31,7 +31,7 @@ console filtering.
|
|
|
31
31
|
## Slash Command
|
|
32
32
|
|
|
33
33
|
```text
|
|
34
|
-
/qa-run
|
|
34
|
+
/qa-run <selector>
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
### Arguments
|
|
@@ -58,9 +58,9 @@ deterministic, `(file, line)`-sorted scenario set under the contract's
|
|
|
58
58
|
### Examples
|
|
59
59
|
|
|
60
60
|
```text
|
|
61
|
-
/qa-run
|
|
62
|
-
/qa-run
|
|
63
|
-
/qa-run
|
|
61
|
+
/qa-run feature:login
|
|
62
|
+
/qa-run "tag:@smoke and not @wip"
|
|
63
|
+
/qa-run domain:billing
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
The canonical tag taxonomy — `@smoke`, `@risk-high`, `@platform-web`,
|
package/README.md
CHANGED
|
@@ -158,6 +158,26 @@ npx mandrel sync # re-materialize ./.agents/
|
|
|
158
158
|
npx mandrel doctor # verify the install
|
|
159
159
|
```
|
|
160
160
|
|
|
161
|
+
## Benchmarking
|
|
162
|
+
|
|
163
|
+
Mandrel's effectiveness is measured by a separate companion repo,
|
|
164
|
+
**[mandrel-bench](https://github.com/dsj1984/mandrel-bench)** — a *consumer* of
|
|
165
|
+
the published `mandrel` package. It pins a specific framework version,
|
|
166
|
+
materializes it via `mandrel sync`, and drives Mandrel's own `/plan`→`/deliver`
|
|
167
|
+
pipeline (plus a bare-model control) over a scenario corpus. Each run is scored
|
|
168
|
+
across five dimensions — Quality, Planning fidelity, and Autonomy (what the
|
|
169
|
+
scaffolding *buys*) versus Efficiency and Overhead ratio (what it *costs*) —
|
|
170
|
+
reported as distributions with a noise-band, tracking the framework's
|
|
171
|
+
**value-add over the bare-model baseline** across versions and models.
|
|
172
|
+
|
|
173
|
+
The benchmark lives in its own repo on purpose: holding the harness fixed while
|
|
174
|
+
varying the pinned `mandrel` version cleanly decouples harness-version from
|
|
175
|
+
framework-version, and running through the published-package + `mandrel sync`
|
|
176
|
+
path exercises the real consumer contract. The dependency is one-directional —
|
|
177
|
+
`mandrel-bench` depends on `mandrel`, never the reverse. See the
|
|
178
|
+
[mandrel-bench README](https://github.com/dsj1984/mandrel-bench#readme) for the
|
|
179
|
+
dimensions, run model, and how to benchmark a new version.
|
|
180
|
+
|
|
161
181
|
## Contributors
|
|
162
182
|
|
|
163
183
|
Only `.agents/` is distributed to consumers — it ships inside the
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.72.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.71.0...mandrel-v1.72.0) (2026-06-17)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
* **plan:** add a headless/non-interactive flag to suppress the ideation one-pager + Phase-7 review gate ([#4223](https://github.com/dsj1984/mandrel/issues/4223)) ([#4226](https://github.com/dsj1984/mandrel/issues/4226)) ([9ffa355](https://github.com/dsj1984/mandrel/commit/9ffa35543f897199c096ad45a568de39b0424ba7))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
* **deliver:** fail open on unparseable code-review severity bullets in auto-merge gate (refs [#4222](https://github.com/dsj1984/mandrel/issues/4222)) ([#4224](https://github.com/dsj1984/mandrel/issues/4224)) ([ca949bd](https://github.com/dsj1984/mandrel/commit/ca949bd7d98eea440571db6636f8be2f2128c3b9))
|
|
16
|
+
|
|
17
|
+
## [1.71.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.70.0...mandrel-v1.71.0) (2026-06-16)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### ⚠ BREAKING CHANGES
|
|
21
|
+
|
|
22
|
+
* **workflows:** three operator-facing slash commands are renamed and three git commands are consolidated. Consumers must update muscle memory and any scripts: `/agents-update`→`/mandrel-update`, `/qa-run-harness`→`/qa-run`, and `/git-commit-all` / `/git-push` / `/git-pr-all`→`/git-deliver` (detection picks the old behavior by default; `--no-push` reproduces `/git-commit-all`, a feature-branch run reproduces `/git-push`, and a base-branch run or `--pr` reproduces `/git-pr-all`).
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
* **workflows:** rename agents-update→mandrel-update, qa-run-harness→qa-run; collapse 3 git commands into git-deliver ([#4209](https://github.com/dsj1984/mandrel/issues/4209)) ([fc30a3d](https://github.com/dsj1984/mandrel/commit/fc30a3d579d80fd854217e066f97899b813c6be9))
|
|
27
|
+
|
|
5
28
|
## [1.70.0](https://github.com/dsj1984/mandrel/compare/mandrel-v1.69.0...mandrel-v1.70.0) (2026-06-16)
|
|
6
29
|
|
|
7
30
|
|
package/package.json
CHANGED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Stage every untracked and modified file, then create a single conventional-commit on the current branch (no push).
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /git-commit-all [Message]
|
|
6
|
-
|
|
7
|
-
This is a compatibility alias for [`/git-push --no-push`](git-push.md) — it
|
|
8
|
-
stages and commits all outstanding changes without pushing. See
|
|
9
|
-
[`git-push.md`](git-push.md) for the canonical procedure, hook-failure guidance,
|
|
10
|
-
and the parallel-execution warning.
|
|
11
|
-
|
|
12
|
-
## Constraint
|
|
13
|
-
|
|
14
|
-
Follow every constraint in [`git-push.md`](git-push.md) — this alias does not
|
|
15
|
-
relax any of them.
|
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: >-
|
|
3
|
-
Stage all outstanding changes, commit, push to a feature branch, and open a
|
|
4
|
-
pull request with native auto-merge enabled.
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# /git-pr-all [Message] [--draft] [--no-auto-merge] [--branch <name>] [--base <branch>]
|
|
8
|
-
|
|
9
|
-
This workflow is the **ad-hoc PR ergonomics** counterpart to the heavyweight
|
|
10
|
-
`/deliver` pipeline. Use it when you have outstanding changes that do not
|
|
11
|
-
belong to a planned Epic (typo fixes, file deletions, doc tweaks, dependency
|
|
12
|
-
bumps, operator housekeeping) and you want a single command to take them from
|
|
13
|
-
the working tree to a PR queued for auto-merge.
|
|
14
|
-
|
|
15
|
-
It composes the three steps that used to live in
|
|
16
|
-
[`/git-commit-all`](git-commit-all.md), [`/git-push`](git-push.md), and a
|
|
17
|
-
manual `gh pr create` — no more dance, no more manually slugging branch
|
|
18
|
-
names. Quality gates remain enforced by the existing pre-push hook; this
|
|
19
|
-
workflow does not bypass them.
|
|
20
|
-
|
|
21
|
-
> **When to run**: After making changes on `main` (or any base branch) that
|
|
22
|
-
> are too small or too out-of-band for `/plan` + `/deliver` but
|
|
23
|
-
> still need to land via the PR-required flow.
|
|
24
|
-
>
|
|
25
|
-
> **Persona**: `devops-engineer` · **Skills**:
|
|
26
|
-
> `core/git-workflow-and-versioning`
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## Arguments
|
|
31
|
-
|
|
32
|
-
```text
|
|
33
|
-
/git-pr-all [Message] [--draft] [--no-auto-merge] [--branch <name>] [--base <branch>]
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
- `Message` — the commit subject. First line becomes the PR title; if
|
|
37
|
-
the message contains a blank line, everything after the blank line
|
|
38
|
-
becomes the PR body. When omitted, an interactive prompt is suppressed
|
|
39
|
-
and a timestamped fallback (`chore: ad-hoc changes <ISO>`) is used.
|
|
40
|
-
- `--draft` — open the PR in draft state and skip the auto-merge enable
|
|
41
|
-
step. Useful when you want CI to run before flipping to ready-for-review.
|
|
42
|
-
- `--no-auto-merge` — open a normal (non-draft) PR but do not enable
|
|
43
|
-
GitHub's native auto-merge queue. The operator merges through the UI
|
|
44
|
-
when ready. Default behaviour is `gh pr merge --auto --squash --delete-branch`.
|
|
45
|
-
- `--branch <name>` — override the auto-generated feature branch name.
|
|
46
|
-
When omitted, the branch is slugged from the commit subject (see
|
|
47
|
-
Step 2).
|
|
48
|
-
- `--base <branch>` — override the merge target. When omitted, reads
|
|
49
|
-
`project.baseBranch` from `.agentrc.json` (default `main`).
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## Step 0 — Resolve Context
|
|
54
|
-
|
|
55
|
-
1. Resolve `[BASE_BRANCH]` from `--base` or `.agentrc.json` →
|
|
56
|
-
`project.baseBranch` (default `main`).
|
|
57
|
-
2. Read the current branch with `git rev-parse --abbrev-ref HEAD`.
|
|
58
|
-
3. Determine the operating mode:
|
|
59
|
-
- **`from-base` mode** — current branch equals `[BASE_BRANCH]`. The
|
|
60
|
-
workflow must cut a feature branch in Step 2 before committing.
|
|
61
|
-
- **`from-feature` mode** — current branch is anything else. The
|
|
62
|
-
workflow commits + pushes to the existing branch in Step 3 and
|
|
63
|
-
opens (or updates) a PR from it.
|
|
64
|
-
4. Verify the working tree has outstanding changes with
|
|
65
|
-
`git status --porcelain`. If the output is empty: **STOP** and tell
|
|
66
|
-
the operator there is nothing to PR.
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Step 1 — Compose Commit Message
|
|
71
|
-
|
|
72
|
-
If the operator passed `[Message]`, use it verbatim. Otherwise, fall back
|
|
73
|
-
to `chore: ad-hoc changes <ISO 8601 timestamp>` so the commit is never
|
|
74
|
-
unmessageable.
|
|
75
|
-
|
|
76
|
-
Split the message on the first blank line:
|
|
77
|
-
|
|
78
|
-
- **Subject** — the first line, used as the commit subject AND the PR
|
|
79
|
-
title.
|
|
80
|
-
- **Body** — everything after the first blank line, used as the commit
|
|
81
|
-
body AND the PR body. May be empty.
|
|
82
|
-
|
|
83
|
-
---
|
|
84
|
-
|
|
85
|
-
## Step 2 — Cut Feature Branch (from-base mode only)
|
|
86
|
-
|
|
87
|
-
Skip this step in `from-feature` mode — the branch already exists.
|
|
88
|
-
|
|
89
|
-
When `--branch <name>` is set, use it verbatim. Otherwise generate a
|
|
90
|
-
branch slug from the commit subject:
|
|
91
|
-
|
|
92
|
-
1. Detect the Conventional Commit type prefix (`<type>(<scope>): …`).
|
|
93
|
-
If matched, use `<type>` as the branch namespace. Allowed types:
|
|
94
|
-
`feat`, `fix`, `chore`, `docs`, `refactor`, `test`, `build`, `ci`,
|
|
95
|
-
`perf`, `style`. Anything else (or no prefix) → `chore`.
|
|
96
|
-
2. Strip the type prefix and any leading punctuation from the subject.
|
|
97
|
-
3. Lowercase, replace non-alphanumeric runs with `-`, collapse repeated
|
|
98
|
-
hyphens, trim leading/trailing hyphens.
|
|
99
|
-
4. Truncate to 50 chars on a word boundary.
|
|
100
|
-
5. Combine: `<type>/<slug>`. Example: `"Delete unused files"` →
|
|
101
|
-
`chore/delete-unused-files`. `"fix(observability): drop stale handler"`
|
|
102
|
-
→ `fix/observability-drop-stale-handler`.
|
|
103
|
-
|
|
104
|
-
Cut and check out the branch:
|
|
105
|
-
|
|
106
|
-
```powershell
|
|
107
|
-
git checkout -b <branch-name>
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
If a local branch with that name already exists: pick a fresh name by
|
|
111
|
-
appending `-2` (then `-3`, etc.) until `git rev-parse --verify` returns
|
|
112
|
-
non-zero, and check that out instead.
|
|
113
|
-
|
|
114
|
-
---
|
|
115
|
-
|
|
116
|
-
## Step 3 — Stage + Commit
|
|
117
|
-
|
|
118
|
-
Stage all outstanding changes:
|
|
119
|
-
|
|
120
|
-
```powershell
|
|
121
|
-
git add -A
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
> **Why `-A` and not explicit paths?** `/git-pr-all` is operator-driven
|
|
125
|
-
> (not parallel-agent-driven), so the single-tree assumption that
|
|
126
|
-
> blocks `git add .` inside `/deliver` does not apply here. See
|
|
127
|
-
> the parallel-execution warning at the bottom of this file.
|
|
128
|
-
|
|
129
|
-
Commit:
|
|
130
|
-
|
|
131
|
-
```powershell
|
|
132
|
-
git commit -m "<subject>" -m "<body>"
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
If the body is empty, omit the second `-m`. If the pre-commit hook
|
|
136
|
-
fails:
|
|
137
|
-
|
|
138
|
-
1. Read the failure output.
|
|
139
|
-
2. Fix the issue (run `npm run format`, fix lint errors, etc.).
|
|
140
|
-
3. `git add -A` again.
|
|
141
|
-
4. Re-run `git commit` (do **not** pass `--no-verify`).
|
|
142
|
-
|
|
143
|
-
---
|
|
144
|
-
|
|
145
|
-
## Step 4 — Push with Upstream
|
|
146
|
-
|
|
147
|
-
Push the branch and set its upstream so subsequent pushes do not need
|
|
148
|
-
the explicit ref:
|
|
149
|
-
|
|
150
|
-
```powershell
|
|
151
|
-
git push -u origin <branch-name>
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
If the pre-push hook fails:
|
|
155
|
-
|
|
156
|
-
1. Read the failure output.
|
|
157
|
-
2. Fix the offending baseline / test / lint issue in the working tree.
|
|
158
|
-
3. `git add -A`, `git commit --amend --no-edit` (the original commit
|
|
159
|
-
has not been pushed yet, so amend is safe).
|
|
160
|
-
4. Re-run the push.
|
|
161
|
-
|
|
162
|
-
If the pre-push hook is correctly blocking a real regression, fix the
|
|
163
|
-
regression — never bypass the hook with `--no-verify`.
|
|
164
|
-
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
## Step 5 — Open PR
|
|
168
|
-
|
|
169
|
-
```powershell
|
|
170
|
-
gh pr create --base <BASE_BRANCH> --head <branch-name> \
|
|
171
|
-
--title "<subject>" --body "<body-or-default>"
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
When `--body` would otherwise be empty, fall back to a single line:
|
|
175
|
-
`Opened via /git-pr-all`. Pass `--draft` to `gh pr create` when the
|
|
176
|
-
operator set the `--draft` flag.
|
|
177
|
-
|
|
178
|
-
Capture the resulting PR URL from `gh pr create`'s stdout for the
|
|
179
|
-
final summary.
|
|
180
|
-
|
|
181
|
-
---
|
|
182
|
-
|
|
183
|
-
## Step 6 — Enable Auto-Merge (default)
|
|
184
|
-
|
|
185
|
-
Skip this step when `--draft` or `--no-auto-merge` is set.
|
|
186
|
-
|
|
187
|
-
```powershell
|
|
188
|
-
gh pr merge <PR_NUMBER> --auto --squash --delete-branch
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
This queues the PR for merge as soon as required checks turn green and
|
|
192
|
-
schedules deletion of the head branch on merge. Auto-merge requires
|
|
193
|
-
`allow_auto_merge: true` on the repo (set by `/agents-bootstrap-github`,
|
|
194
|
-
Story #1239).
|
|
195
|
-
|
|
196
|
-
If `gh pr merge --auto` fails (missing repo feature, insufficient
|
|
197
|
-
token scope), log the failure and surface it to the operator — the PR
|
|
198
|
-
itself remains open and mergeable through the GitHub UI.
|
|
199
|
-
|
|
200
|
-
---
|
|
201
|
-
|
|
202
|
-
## Step 7 — Summary
|
|
203
|
-
|
|
204
|
-
Print a single block to the operator:
|
|
205
|
-
|
|
206
|
-
```text
|
|
207
|
-
✅ Opened PR #<PR_NUMBER>: <subject>
|
|
208
|
-
<PR_URL>
|
|
209
|
-
branch: <branch-name> → <BASE_BRANCH>
|
|
210
|
-
auto-merge: <enabled | draft | disabled>
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
Do **not** poll CI. That is the `/deliver` Phase 7 job and is
|
|
214
|
-
overkill for ad-hoc changes. The operator (or GitHub's email
|
|
215
|
-
notification) is the next watcher.
|
|
216
|
-
|
|
217
|
-
---
|
|
218
|
-
|
|
219
|
-
## Troubleshooting
|
|
220
|
-
|
|
221
|
-
- **Hook failures**: Treat the same way `/git-push` does — read the
|
|
222
|
-
output, fix the underlying issue, never `--no-verify`. The pre-push
|
|
223
|
-
hook (lint + format + maintainability + audit + coverage + CRAP) is
|
|
224
|
-
the same gate every PR has to pass eventually; failing here lets you
|
|
225
|
-
fix it before opening the PR rather than after CI fails.
|
|
226
|
-
- **Branch already exists locally**: appended `-2`/`-3` per Step 2; this
|
|
227
|
-
is the same behaviour `gh repo` uses. If you want a specific name,
|
|
228
|
-
pass `--branch <name>` explicitly.
|
|
229
|
-
- **`gh pr create` fails with "no commits between branches"**: the push
|
|
230
|
-
in Step 4 did not actually move the branch (e.g., it was already at
|
|
231
|
-
the same SHA as `[BASE_BRANCH]`). Verify `git log <BASE_BRANCH>..HEAD`
|
|
232
|
-
shows commits before re-running.
|
|
233
|
-
- **PR template wins over `--body`**: if `.github/pull_request_template.md`
|
|
234
|
-
exists, `gh pr create --body` overrides it. To opt into the template
|
|
235
|
-
flow, drop the `--body` flag in Step 5 and pass `--editor` instead —
|
|
236
|
-
but that requires an interactive session. For ad-hoc PRs the explicit
|
|
237
|
-
body is the right default.
|
|
238
|
-
- **Auto-merge does not fire after CI green**: confirm the PR's required
|
|
239
|
-
checks match the auto-merge requirements. The framework's quality gate
|
|
240
|
-
(`Validate and Test`) is the canonical required check; other checks
|
|
241
|
-
may be informational. Use the GitHub UI's "Merge when ready" surface
|
|
242
|
-
to inspect the queue state.
|
|
243
|
-
|
|
244
|
-
---
|
|
245
|
-
|
|
246
|
-
## Constraint
|
|
247
|
-
|
|
248
|
-
- **Never** push directly to `[BASE_BRANCH]`. Step 2's branch cut is
|
|
249
|
-
mandatory in `from-base` mode; remove it and the workflow becomes a
|
|
250
|
-
silent bypass of the PR-required policy.
|
|
251
|
-
- **Never** pass `--no-verify` to `git commit` or `git push` to bypass
|
|
252
|
-
the quality gate. Fix the failure at the source.
|
|
253
|
-
- **Never** force-push from `/git-pr-all`. This workflow is for opening
|
|
254
|
-
new PRs, not for rewriting history. Force-pushes belong to
|
|
255
|
-
`/git-merge-pr` (with `--force-with-lease` after a rebase) and
|
|
256
|
-
`/deliver` Phase 7 (with the operator's explicit context).
|
|
257
|
-
- **Always** delete the head branch on merge (Step 6's
|
|
258
|
-
`--delete-branch` flag handles this for `--auto` mode; for
|
|
259
|
-
`--no-auto-merge` PRs the operator is responsible for the cleanup).
|
|
260
|
-
- **Always** prefer `--auto --squash --delete-branch` unless the
|
|
261
|
-
operator explicitly opts out. The squash + auto-merge default gives
|
|
262
|
-
the same merge ergonomics `/deliver` produces, so main's commit
|
|
263
|
-
history stays uniform across both surfaces.
|
|
264
|
-
|
|
265
|
-
---
|
|
266
|
-
|
|
267
|
-
## ⚠️ Parallel Story Execution
|
|
268
|
-
|
|
269
|
-
Do **not** use this workflow from inside a parallel story-execution
|
|
270
|
-
context (`/deliver #<storyId>`, `/deliver` wave dispatch).
|
|
271
|
-
`git add -A` sweeps any untracked files in the working tree, which in
|
|
272
|
-
a shared working directory may belong to another agent. In those
|
|
273
|
-
contexts stage explicit paths only and confirm
|
|
274
|
-
`git branch --show-current` reports the expected `story-<id>` branch
|
|
275
|
-
before committing — see
|
|
276
|
-
[`helpers/worktree-lifecycle.md`](helpers/worktree-lifecycle.md) for the
|
|
277
|
-
shared-tree hazard and the worktree-isolation model that contains it.
|
|
278
|
-
|
|
279
|
-
The same warning applies to any workflow that calls `git add .` or
|
|
280
|
-
`git add -A`; this is not unique to `/git-pr-all` (see
|
|
281
|
-
[`git-push.md`](git-push.md) for the canonical version).
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Commit all outstanding changes then push to the remote repository.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /git-push [Message] [--no-push]
|
|
6
|
-
|
|
7
|
-
This workflow is the single source of truth for "stage + commit [+ push]"
|
|
8
|
-
ergonomics. It accepts an optional `[Message]` and an optional `--no-push` flag.
|
|
9
|
-
|
|
10
|
-
- **Default mode** — stage all outstanding changes, commit, then push the
|
|
11
|
-
current branch to its upstream remote.
|
|
12
|
-
- **`--no-push` mode** — stage and commit only. Useful when you want to chain
|
|
13
|
-
several commits or defer the push. `/git-commit-all` is a compatibility alias
|
|
14
|
-
that maps to this mode.
|
|
15
|
-
|
|
16
|
-
## Steps
|
|
17
|
-
|
|
18
|
-
1. **Stage Changes**: Stage all new, modified, and deleted files.
|
|
19
|
-
|
|
20
|
-
```powershell
|
|
21
|
-
git add .
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
2. **Commit Changes**: Commit the staged changes. If no message is provided, a
|
|
25
|
-
generic timestamped message will be used.
|
|
26
|
-
|
|
27
|
-
```powershell
|
|
28
|
-
git commit -m "[Message]"
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
3. **Push to Remote** _(skip when `--no-push` is set)_: Push the current branch
|
|
32
|
-
to the upstream repository.
|
|
33
|
-
|
|
34
|
-
```powershell
|
|
35
|
-
git push
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Troubleshooting
|
|
39
|
-
|
|
40
|
-
- **Hook Failures**: If `git commit` or `git push` fails due to Husky/pre-commit
|
|
41
|
-
hooks (e.g., linting, formatting, or test failures), you MUST analyze the
|
|
42
|
-
error output, fix the issues in the codebase, and then re-run the failed
|
|
43
|
-
command.
|
|
44
|
-
- **Upstream Conflicts**: If the push is rejected because the remote contains
|
|
45
|
-
work that you do not have locally, pull the latest changes first
|
|
46
|
-
(`git pull --rebase`) and resolve any conflicts before pushing again.
|
|
47
|
-
|
|
48
|
-
## Constraint
|
|
49
|
-
|
|
50
|
-
Never use `--no-verify` to bypass quality gates. If a hook fails, identify and
|
|
51
|
-
fix the root cause (e.g., run `npm run format` or fix lint errors) before
|
|
52
|
-
attempting to commit or push again.
|
|
53
|
-
|
|
54
|
-
## ⚠️ Parallel Story Execution
|
|
55
|
-
|
|
56
|
-
Do **not** use this workflow from inside a parallel story-execution context
|
|
57
|
-
(`/deliver #<storyId>`). `git add .` sweeps any untracked files in the
|
|
58
|
-
working tree, which in a shared working directory may belong to another agent.
|
|
59
|
-
In that context, stage explicit paths only and confirm
|
|
60
|
-
`git branch --show-current` reports the expected `story-<id>` branch before
|
|
61
|
-
committing — see
|
|
62
|
-
[`helpers/worktree-lifecycle.md`](helpers/worktree-lifecycle.md) for the
|
|
63
|
-
shared-tree hazard and the worktree-isolation model that contains it.
|