@yemi33/minions 0.1.1634 → 0.1.1636
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/README.md +11 -11
- package/dashboard.js +42 -9
- package/docs/auto-discovery.md +17 -15
- package/docs/blog-first-successful-dispatch.md +7 -10
- package/docs/engine-restart.md +8 -11
- package/docs/human-vs-automated.md +3 -4
- package/docs/pr-review-fix-loop.md +1 -1
- package/docs/rfc-completion-json.md +5 -5
- package/engine/copilot-models.json +1 -1
- package/engine/lifecycle.js +1 -1
- package/engine/queries.js +4 -4
- package/engine/shared.js +4 -12
- package/engine/timeout.js +59 -168
- package/engine.js +11 -42
- package/package.json +1 -1
- package/playbooks/build-and-test.md +22 -139
- package/playbooks/fix.md +1 -1
- package/playbooks/implement-shared.md +1 -1
- package/playbooks/implement.md +3 -7
- package/playbooks/shared-rules.md +4 -45
- package/playbooks/test.md +17 -40
- package/playbooks/verify.md +29 -141
- package/playbooks/work-item.md +1 -0
|
@@ -66,7 +66,7 @@ Before publishing, prove the shared branch still works with your change included
|
|
|
66
66
|
- Fix regressions you introduced. If failures are pre-existing or caused by earlier branch work, capture the evidence and say so clearly.
|
|
67
67
|
- Do not push code with a broken build or failing tests that you introduced.
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
Long builds, dependency installs, and tests may be quiet for several minutes. Let the normal CLI command run naturally; do not add artificial heartbeat output or split commands just to show progress.
|
|
70
70
|
|
|
71
71
|
## Publish
|
|
72
72
|
|
package/playbooks/implement.md
CHANGED
|
@@ -20,15 +20,11 @@ Implement PRD item **{{item_id}}: {{item_name}}**
|
|
|
20
20
|
|
|
21
21
|
{{checkpoint_context}}
|
|
22
22
|
|
|
23
|
-
##
|
|
23
|
+
## Project Scope
|
|
24
24
|
|
|
25
25
|
Primary repo: **{{repo_name}}** ({{ado_org}}/{{ado_project}}) at `{{project_path}}`
|
|
26
26
|
|
|
27
|
-
If this feature spans multiple projects,
|
|
28
|
-
1. Read code from all listed project paths to understand integration points
|
|
29
|
-
2. Make changes in the primary project (your worktree)
|
|
30
|
-
3. If changes are needed in other projects, create separate worktrees and PRs for each
|
|
31
|
-
4. Note cross-repo dependencies in PR descriptions (e.g., "Requires office-bohemia PR #123")
|
|
27
|
+
If this feature spans multiple projects, inspect the relevant repos, make changes where they belong, and call out any cross-repo PR dependencies in PR descriptions.
|
|
32
28
|
|
|
33
29
|
## Health Check
|
|
34
30
|
|
|
@@ -62,7 +58,7 @@ Before publishing, prove the change with the repo's own documented checks:
|
|
|
62
58
|
- Fix regressions you introduced. If failures are pre-existing or outside the task, capture the evidence and make that explicit in the PR.
|
|
63
59
|
- Do not publish changes with a broken build or failing tests that you introduced.
|
|
64
60
|
|
|
65
|
-
|
|
61
|
+
Long builds, dependency installs, and tests may be quiet for several minutes. Let the normal CLI command run naturally; do not add artificial heartbeat output or split commands just to show progress.
|
|
66
62
|
|
|
67
63
|
## Publish
|
|
68
64
|
|
|
@@ -1,17 +1,6 @@
|
|
|
1
|
-
##
|
|
1
|
+
## Operating Principle
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Reasoning and Teaching Posture
|
|
6
|
-
|
|
7
|
-
- Act like you've already explained this yesterday. Do not ramble, re-teach obvious basics, or pad the answer. Get to the point fast.
|
|
8
|
-
- You are an IQ 150 software engineering specialist. If the reasoning is average, vague, or hand-wavy, it is wrong.
|
|
9
|
-
- You have a student who is eagerly trying to learn from you. Display model behavior: be rigorous, teach cleanly, and show what good engineering thinking looks like.
|
|
10
|
-
- Explain concepts like you are teaching a packed auditorium. If the structure is weak or the example is forgettable, the explanation failed.
|
|
11
|
-
- Always verify your claims. If you state something as true, earn it.
|
|
12
|
-
- Treat every answer like there is $100 on the line. Sloppy logic, missed edge cases, and fake confidence lose the bet.
|
|
13
|
-
- Assume another CLI is going to review the code and try to prove you wrong. Close every hole before you answer.
|
|
14
|
-
- Leave no stone unturned when implementing or explaining. Half-checks, shallow analysis, and partial reasoning are not acceptable.
|
|
3
|
+
Treat a Minions assignment like the user typed the same task directly into a capable CLI agent. Optimize for the requested outcome and use the repo's own tools, conventions, and acceptance criteria.
|
|
15
4
|
|
|
16
5
|
## Context Window Awareness
|
|
17
6
|
|
|
@@ -61,39 +50,9 @@ Treat a Minions assignment like the user typed the same task directly into a cap
|
|
|
61
50
|
Do **not** create a skill for one-off bug fixes, isolated command outputs, obvious repo facts, or anything already covered by existing docs/playbooks/skills.
|
|
62
51
|
- Do TDD where it makes sense — write failing tests first, then implement, then verify tests pass. Especially for bug fixes (write a test that reproduces the bug) and new utility functions.
|
|
63
52
|
|
|
64
|
-
## Long-Running
|
|
65
|
-
|
|
66
|
-
The engine kills agents that produce no stdout for `heartbeatTimeout` (default **300s / 5 min**). A blocking shell call with zero stdout for that long is treated as hung. Cold builds (Gradle daemon spin-up, MSBuild restore, fresh `npm install`, `cargo build`) routinely exceed this with no intermediate output.
|
|
67
|
-
|
|
68
|
-
**Two approved patterns — pick one when a command may exceed 4 minutes of silence:**
|
|
69
|
-
|
|
70
|
-
### Pattern A — Stream output via background process + Monitor (preferred)
|
|
71
|
-
|
|
72
|
-
```
|
|
73
|
-
1. Bash({ command: "./gradlew test", run_in_background: true }) # returns a bash_id immediately
|
|
74
|
-
2. Monitor({ bash_id: "<id>" }) # streams each stdout line as a notification
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
Why: each line that the build emits arrives as a notification, which resets the heartbeat. You see live progress in the dashboard. The Monitor call itself is recognised by the engine as a blocking tool (heartbeat extended ~30 min).
|
|
78
|
-
|
|
79
|
-
> ⚠️ **Never use `Monitor({ command: "tail -F <file> | grep ..." })` for long builds.** It looks tidy — only the lines you care about — but it is a heartbeat trap. Cold Gradle / MSBuild / `cargo build` spend 3–8 minutes in a startup + dependency-resolution phase that produces output that **does not match** typical filter terms (`BUILD SUCCESSFUL`, `BUILD FAILED`, `error:`). The grep filter swallows every line, Monitor emits zero notifications, the heartbeat fires at 300s, and the engine kills the agent mid-build. Always pass `bash_id` directly — every output line resets the heartbeat, and noisy output is the *whole point* of the pattern.
|
|
80
|
-
|
|
81
|
-
### Pattern B — Single Bash call with explicit `timeout`
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
Bash({ command: "./gradlew test", timeout: 600000 }) # max 600000 = 10 min
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
The engine reads `input.timeout` from the tool call and extends the heartbeat to `timeout + 60s` for that turn. **The extension is opt-in** — without an explicit `timeout`, the agent is killed at `heartbeatTimeout`. PowerShell tool follows the same rule.
|
|
88
|
-
|
|
89
|
-
### What NOT to do
|
|
90
|
-
|
|
91
|
-
- Do NOT run `./gradlew`, `mvn`, `dotnet test`, or any cold-cache build as a default `Bash` call (no `timeout`, no `run_in_background`). It will hit the 120s Bash default, then the 300s heartbeat, and the engine will kill you.
|
|
92
|
-
- Do NOT use `Monitor({ command: "tail | grep ..." })` for any build that has a silent startup phase (cold Gradle, MSBuild, fresh `npm install`, `cargo build`). The grep filter suppresses Gradle's startup output, Monitor emits nothing, heartbeat fires at 300s, agent is killed. Use `Monitor({ bash_id })` instead — noisy output is better than a dead agent.
|
|
93
|
-
- Do NOT loop `sleep` to "wait it out" — sleep produces no stdout and looks identical to a hang.
|
|
94
|
-
- Do NOT pipe through `tee` thinking that helps — heartbeat reads agent stdout, not the underlying file.
|
|
53
|
+
## Long-Running Commands
|
|
95
54
|
|
|
96
|
-
|
|
55
|
+
Builds, dependency installs, tests, and local servers can be quiet for long periods. Run the repo's normal CLI commands and let them finish; do not add artificial progress output, heartbeat loops, or command-specific workarounds just to keep Minions active.
|
|
97
56
|
|
|
98
57
|
## Checking PR and Build Status
|
|
99
58
|
|
package/playbooks/test.md
CHANGED
|
@@ -15,60 +15,37 @@ Team root: {{team_root}}
|
|
|
15
15
|
|
|
16
16
|
{{additional_context}}
|
|
17
17
|
|
|
18
|
-
##
|
|
18
|
+
## Mission
|
|
19
19
|
|
|
20
|
-
This is a
|
|
20
|
+
Build, run, test, or verify the requested target. This is a verification task unless the description explicitly asks for code or test changes.
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
2. You are already in the correct working directory. If you need a specific branch, use `git checkout` — do NOT create additional worktrees.
|
|
24
|
-
3. **Build** the project — follow the repo's build instructions (check CLAUDE.md, package.json, README)
|
|
25
|
-
4. **Run** if the task asks for it (e.g., `yarn start`, `yarn dev`, docker-compose, etc.)
|
|
26
|
-
5. **Test** if the task asks for it (e.g., `yarn test`, `pytest`, etc.)
|
|
27
|
-
6. **Write tests** if the task asks you to add or improve test coverage — commit and open a PR when done
|
|
28
|
-
7. **Report results** — what worked, what failed, build output, test results, localhost URL if running
|
|
22
|
+
## Long-Running Commands
|
|
29
23
|
|
|
30
|
-
|
|
24
|
+
Builds, tests, dependency installs, and server startups can be silent for several minutes. Run the normal CLI commands and wait for them to finish; do not add progress pings or extra logging just to keep the engine active.
|
|
31
25
|
|
|
32
|
-
|
|
26
|
+
## Approach
|
|
33
27
|
|
|
34
|
-
|
|
28
|
+
Work from the current project checkout prepared by the engine. Follow the repo's own instructions (`CLAUDE.md`, README, package files, Makefiles, project scripts) and run the smallest sensible set of commands that proves the requested behavior.
|
|
35
29
|
|
|
36
|
-
|
|
37
|
-
- **Create a PR** if the task involves writing or modifying files (new tests, test fixes, etc.) — follow the same PR conventions as implement tasks
|
|
38
|
-
- **Do NOT push or create a PR** for pure build/run/verify tasks that make no file changes
|
|
39
|
-
- Use PowerShell for build commands on Windows if applicable
|
|
40
|
-
- If a build or test fails, report the error clearly — don't try to fix it unless asked
|
|
41
|
-
- If running a local server, report the URL (e.g., http://localhost:3000)
|
|
30
|
+
If the task asks you to add or modify files, commit those focused changes, push the branch, and create a PR using the same conventions as implement tasks. For pure build/run/verify tasks, do not push or create a PR.
|
|
42
31
|
|
|
43
|
-
|
|
32
|
+
If a build or test fails, report the error clearly instead of fixing it unless the task explicitly asks for a fix.
|
|
44
33
|
|
|
45
|
-
|
|
34
|
+
If the task involves a local server or app, report the URL and a ready-to-paste run command with absolute paths:
|
|
46
35
|
|
|
47
|
-
```
|
|
36
|
+
```text
|
|
48
37
|
## Run Command
|
|
49
38
|
cd <absolute-path-to-project-or-worktree> && <exact command to start the server>
|
|
50
39
|
```
|
|
51
40
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
The agent process terminates after completion, so any dev server you start will die with it. The user needs this command to run it themselves.
|
|
55
|
-
|
|
56
|
-
## After Successful Completion
|
|
57
|
-
|
|
58
|
-
Write your findings to `{{team_root}}/notes/inbox/{{agent_id}}-{{item_id}}-{{date}}.md` **only after a successful run**: all requested build/test/run steps completed, required checks passed, and any required PR was created.
|
|
59
|
-
|
|
60
|
-
If any requested build, test, run, or file-change step fails or is blocked, do **not** write an inbox note. Report the failure clearly in your final response, including the command, error summary, and any next action needed.
|
|
61
|
-
|
|
62
|
-
Include:
|
|
63
|
-
- Build status
|
|
64
|
-
- Test results if applicable
|
|
65
|
-
- Any errors or warnings
|
|
66
|
-
- The run command (absolute paths, copy-pasteable from any terminal)
|
|
67
|
-
- Localhost URL if applicable
|
|
41
|
+
## Findings
|
|
68
42
|
|
|
43
|
+
Write findings to `{{team_root}}/notes/inbox/{{agent_id}}-{{item_id}}-{{date}}.md` only after successful completion.
|
|
69
44
|
|
|
70
|
-
|
|
45
|
+
Include build status, test results, errors or warnings, run command, localhost URL if applicable, and PR URL if file changes were made.
|
|
71
46
|
|
|
72
|
-
|
|
47
|
+
## Constraints
|
|
73
48
|
|
|
74
|
-
Do
|
|
49
|
+
- Do not modify production code unless explicitly asked.
|
|
50
|
+
- Use PowerShell for build commands on Windows if applicable.
|
|
51
|
+
- Do not remove worktrees; the engine handles cleanup automatically.
|
package/playbooks/verify.md
CHANGED
|
@@ -11,168 +11,56 @@ Repo: {{repo_name}} | Org: {{ado_org}} | ADO Project: {{ado_project}}
|
|
|
11
11
|
|
|
12
12
|
{{task_description}}
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Mission
|
|
15
15
|
|
|
16
|
-
Verify
|
|
16
|
+
Verify the completed plan as a whole: build and test the relevant project worktrees, identify how to run the user-facing app if there is one, create or update aggregate E2E PRs when needed, and write a transparent testing guide.
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
2. **Understand the project** — read its docs to learn how to build, test, and run it
|
|
20
|
-
3. **Build and test** from each worktree
|
|
21
|
-
4. **Start the application** if applicable (keep it running detached)
|
|
22
|
-
5. **Write a transparent verification report and testing guide**
|
|
23
|
-
6. **Create E2E pull requests**
|
|
18
|
+
## Long-Running Commands
|
|
24
19
|
|
|
25
|
-
|
|
20
|
+
Builds, dependency installs, tests, and app startup can be silent for several minutes. Run the normal CLI commands and let them finish; do not emit artificial progress pings or heartbeat output.
|
|
26
21
|
|
|
27
|
-
|
|
22
|
+
## Approach
|
|
28
23
|
|
|
29
|
-
|
|
30
|
-
- Resolve them, preferring the PR branch changes
|
|
31
|
-
- Commit the resolution in the worktree
|
|
24
|
+
Use the setup information in the plan details to create or enter the aggregate worktrees and merge the relevant PR branches. Resolve merge conflicts only when needed to make the verification branch buildable, and record what was resolved.
|
|
32
25
|
|
|
33
|
-
|
|
26
|
+
For each relevant worktree, follow the repo's own instructions (`CLAUDE.md`, README, package files, Makefiles, project scripts), install/restore dependencies as needed, build, and run tests where they exist. If a project fails, report the error and continue verifying the rest; do not turn this into an implementation/fix task.
|
|
34
27
|
|
|
35
|
-
|
|
28
|
+
If there is a user-facing app, identify the normal command and URL. If the app needs to keep running after the agent exits, start it detached in the worktree, save the PID, verify the URL responds, and include restart/stop commands with absolute paths.
|
|
36
29
|
|
|
37
|
-
|
|
38
|
-
- What language/framework it uses
|
|
39
|
-
- How to install dependencies
|
|
40
|
-
- How to build it
|
|
41
|
-
- How to run tests
|
|
42
|
-
- How to start it (if it has a runnable application)
|
|
30
|
+
## Testing Guide
|
|
43
31
|
|
|
44
|
-
|
|
32
|
+
Be transparent: clearly state what passed, what failed, what was not run, and why.
|
|
45
33
|
|
|
46
|
-
|
|
34
|
+
Always create the permanent guide linked from the dashboard:
|
|
47
35
|
|
|
48
|
-
|
|
36
|
+
`{{team_root}}/prd/guides/verify-{{plan_slug}}.md`
|
|
49
37
|
|
|
50
|
-
|
|
38
|
+
Create the inbox copy only after a successful verification run:
|
|
51
39
|
|
|
52
|
-
|
|
53
|
-
1. `cd` into the worktree path
|
|
54
|
-
2. Install dependencies using the command or workflow the repo specifies
|
|
55
|
-
3. Run the build using the repo's documented build command
|
|
56
|
-
4. Run the test suite the repo defines for full verification
|
|
57
|
-
5. Record: PASS or FAIL with error output, test counts (passed/failed/skipped)
|
|
40
|
+
`{{team_root}}/notes/inbox/verify-{{plan_slug}}.md`
|
|
58
41
|
|
|
59
|
-
|
|
42
|
+
A successful verification run means every required project build/test passed or was legitimately not applicable, each runnable app was started and smoke-checked when required, and the required E2E PRs were created or updated. If verification is failed, blocked, or partial, do not create the inbox copy; record the details in the permanent guide and final response instead.
|
|
60
43
|
|
|
61
|
-
|
|
44
|
+
Use the template at `{{team_root}}/playbooks/templates/verify-guide.md` and clearly separate what was verified from what still needs human review.
|
|
62
45
|
|
|
63
|
-
##
|
|
46
|
+
## E2E PRs
|
|
64
47
|
|
|
65
|
-
|
|
48
|
+
For each project with aggregate verification changes, create or update one draft/review PR that combines the plan branches into a single reviewable diff. Reuse an existing `e2e/{{plan_slug}}` branch/PR when present. Include the plan summary, merged PRs, testing guide, and build/test status. Do not auto-complete or merge these PRs.
|
|
66
49
|
|
|
67
|
-
|
|
68
|
-
1. Start it **detached from your process** so it survives after you exit.
|
|
69
|
-
- If the repo docs provide a local run or background-start command, use that.
|
|
70
|
-
- Otherwise, use the detached-process mechanism that fits the current environment. Do not assume Bash, PowerShell, or any specific shell unless the repo or runtime clearly provides it.
|
|
71
|
-
2. Wait a few seconds, then verify it using the repo's documented smoke test, health check, startup output, or the lightest project-appropriate manual check.
|
|
72
|
-
3. Note the URL, port, process identifier, or equivalent runtime details the repo exposes
|
|
73
|
-
4. Output the exact restart command with **absolute worktree paths**
|
|
74
|
-
5. Include the stop command or shutdown procedure that matches how you started it
|
|
50
|
+
Track each E2E PR in the project's `.minions/pull-requests.json` if it is not already tracked.
|
|
75
51
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
## Step 5: Write the Verification Report and Testing Guide
|
|
79
|
-
|
|
80
|
-
Always create the permanent guide linked from the dashboard:
|
|
81
|
-
1. **Permanent location**: `{{team_root}}/prd/guides/verify-{{plan_slug}}.md`
|
|
82
|
-
|
|
83
|
-
Create the inbox copy only after a successful verification run:
|
|
84
|
-
2. **Inbox copy**: `{{team_root}}/notes/inbox/verify-{{plan_slug}}.md`
|
|
85
|
-
|
|
86
|
-
A successful verification run means every required project build/test passed or was legitimately not applicable, each runnable app was started and smoke-checked when required, and the required E2E PRs were created or updated. If verification is failed, blocked, or partial, do **not** create the inbox copy; record the details in the permanent guide and final response instead.
|
|
87
|
-
|
|
88
|
-
**Be transparent.** The guide must clearly state what was built, what was tested, what passed, what failed, and what still needs human verification.
|
|
89
|
-
|
|
90
|
-
Use the template structure from `{{team_root}}/playbooks/templates/verify-guide.md` — read it and fill in each section with your actual findings.
|
|
91
|
-
|
|
92
|
-
## Step 6: Create E2E Pull Requests
|
|
93
|
-
|
|
94
|
-
For each project that has changes, create a single **aggregate PR** that combines all the plan's branches into one. This gives the human reviewer a single diff showing the full picture.
|
|
95
|
-
|
|
96
|
-
For each project worktree:
|
|
97
|
-
|
|
98
|
-
1. **Check for an existing E2E branch/PR first** — a prior verify run may have already created one:
|
|
99
|
-
```bash
|
|
100
|
-
cd <worktree-path>
|
|
101
|
-
git fetch origin
|
|
102
|
-
# Check if the E2E branch already exists on remote
|
|
103
|
-
git ls-remote --heads origin e2e/{{plan_slug}}
|
|
104
|
-
```
|
|
105
|
-
- If the branch **already exists**: check out the existing branch (`git checkout e2e/{{plan_slug}}`), reset it to your current worktree state, and force-push to update it. Then check if a PR already exists for this branch — if so, **update that PR** instead of creating a new one.
|
|
106
|
-
- If the branch **does not exist**: create it fresh:
|
|
107
|
-
```bash
|
|
108
|
-
git checkout -b e2e/{{plan_slug}}
|
|
109
|
-
git push origin e2e/{{plan_slug}}
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
2. **Check for an existing E2E PR** before creating a new one:
|
|
113
|
-
- For GitHub: `gh pr list --head e2e/{{plan_slug}} --state open`
|
|
114
|
-
- For ADO: use `az` CLI first to search for PRs with source branch `e2e/{{plan_slug}}`; use ADO MCP only as a fallback when `az` is unavailable or insufficient
|
|
115
|
-
- If found, **update the existing PR** description with latest build/test results. Do NOT create a duplicate.
|
|
116
|
-
- If not found, create a new PR targeting the project's main branch:
|
|
117
|
-
- **Title:** `[E2E] <plan summary>`
|
|
118
|
-
- **Description:** Include the plan summary, list of all individual PRs merged, build/test status from Step 3, and link to the testing guide
|
|
119
|
-
- **Target branch:** the project's main branch (e.g., `main` or `master`)
|
|
120
|
-
- **Do NOT auto-complete** — this is for review only
|
|
121
|
-
- **Mark as draft** if the option is available
|
|
122
|
-
|
|
123
|
-
3. Add the E2E PR to the project's `.minions/pull-requests.json` (skip if it's already tracked):
|
|
124
|
-
```bash
|
|
125
|
-
node -e "
|
|
126
|
-
const fs = require('fs');
|
|
127
|
-
const p = '<project-path>/.minions/pull-requests.json';
|
|
128
|
-
const prs = JSON.parse(fs.readFileSync(p, 'utf8'));
|
|
129
|
-
// Skip if already tracked
|
|
130
|
-
if (prs.some(pr => pr.branch === 'e2e/{{plan_slug}}')) process.exit(0);
|
|
131
|
-
prs.push({
|
|
132
|
-
id: 'PR-<number>',
|
|
133
|
-
title: '[E2E] <plan summary>',
|
|
134
|
-
agent: '{{agent_name}}',
|
|
135
|
-
branch: 'e2e/{{plan_slug}}',
|
|
136
|
-
reviewStatus: 'pending',
|
|
137
|
-
status: 'active',
|
|
138
|
-
created: new Date().toISOString().slice(0,10),
|
|
139
|
-
url: '<pr-url>',
|
|
140
|
-
prdItems: []
|
|
141
|
-
});
|
|
142
|
-
fs.writeFileSync(p, JSON.stringify(prs, null, 2));
|
|
143
|
-
"
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
4. Note the E2E PR URLs in the testing guide.
|
|
147
|
-
|
|
148
|
-
## Working Style
|
|
149
|
-
|
|
150
|
-
Use subagents only for genuinely parallel, independent build/test tasks on separate project worktrees. For sequential work (docs → build → test → report), and for starting detached servers, work directly — do not spawn subagents.
|
|
151
|
-
|
|
152
|
-
## Rules
|
|
153
|
-
|
|
154
|
-
- **Read the project docs first** — never assume a build system, language, or framework
|
|
155
|
-
- Treat repo-provided docs, scripts, and config as the source of truth for build/test/run commands
|
|
156
|
-
- Base testing steps on the **acceptance criteria** from each plan item
|
|
157
|
-
- Include **concrete steps** — URLs, buttons to click, inputs to type, expected results
|
|
158
|
-
- Be **transparent** — clearly separate what you verified vs what needs human review
|
|
159
|
-
- If a project doesn't build, still document what SHOULD be testable once fixed
|
|
160
|
-
- Do NOT fix code — only report issues
|
|
161
|
-
- Leave all worktrees in place for the user to inspect
|
|
162
|
-
- Start the application **detached** so it keeps running after your process exits
|
|
163
|
-
- Use absolute paths everywhere so the user can copy-paste commands
|
|
164
|
-
- E2E PRs are for review only — do NOT auto-complete or merge them
|
|
52
|
+
## Constraints
|
|
165
53
|
|
|
54
|
+
- Do not assume any specific platform, language, framework, shell, build system, mobile app, web app, Android, or iOS target.
|
|
55
|
+
- Read project docs first; use `CLAUDE.md`, `README.md`, and nearby project configuration as the source of truth.
|
|
56
|
+
- Base manual testing steps on the plan acceptance criteria.
|
|
57
|
+
- If a project does not build, still document what should be testable once fixed.
|
|
58
|
+
- Do not fix product code except for merge-conflict resolutions needed to create the verification branch.
|
|
59
|
+
- Leave verification worktrees in place for user inspection.
|
|
60
|
+
- Use absolute paths in commands the user may copy.
|
|
166
61
|
|
|
167
62
|
## When to Stop
|
|
168
63
|
|
|
169
|
-
Your task is complete once
|
|
170
|
-
|
|
171
|
-
**IMPORTANT: Your final message MUST include the E2E PR URL(s) so the engine can track them.** Example final message:
|
|
172
|
-
|
|
173
|
-
```
|
|
174
|
-
Verification complete. E2E PR created: https://github.com/org/repo/pull/123
|
|
175
|
-
Testing guide saved to prd/guides/verify-plan-name.md
|
|
176
|
-
```
|
|
64
|
+
Your task is complete once dependency branches are merged, build/test verification has run, the permanent guide is written, the inbox copy is written only if verification succeeded, and E2E PR URLs are included in your final response.
|
|
177
65
|
|
|
178
|
-
|
|
66
|
+
Your final message MUST include each E2E PR URL and the testing guide path, for example: `E2E PR created: <url>` and `Testing guide: {{team_root}}/prd/guides/verify-{{plan_slug}}.md`.
|
package/playbooks/work-item.md
CHANGED
|
@@ -30,6 +30,7 @@ Treat this like the user typed the task directly into a CLI agent:
|
|
|
30
30
|
- Follow existing repo conventions and avoid unrelated cleanups.
|
|
31
31
|
- Validate with the repo's documented build/test/check commands. Fix regressions you introduced; if failures are pre-existing or outside the task, document the evidence.
|
|
32
32
|
- Do NOT publish code with a broken build or failing tests that you introduced.
|
|
33
|
+
- Long builds and tests may be quiet for several minutes. Let normal CLI commands run without artificial heartbeat output.
|
|
33
34
|
|
|
34
35
|
After the change is ready for review, commit only relevant files, push `{{branch_name}}`, create the PR, and post implementation notes with the validation result:
|
|
35
36
|
|