@devshop/crew 0.11.0 → 0.11.2
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 +14 -0
- package/package.json +1 -1
- package/skills/indie-agent/SKILL.md +10 -7
- package/skills/prep/SKILL.md +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [0.11.2](https://github.com/devshop-software/crew/compare/v0.11.1...v0.11.2) (2026-05-12)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **prep:** reshape boundary question as positive in-scope enumeration ([1c3db27](https://github.com/devshop-software/crew/commit/1c3db271a61d8a13cd14f6c24e68201ca980ca7c)), closes [#18](https://github.com/devshop-software/crew/issues/18)
|
|
7
|
+
|
|
8
|
+
## [0.11.1](https://github.com/devshop-software/crew/compare/v0.11.0...v0.11.1) (2026-05-09)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **indie-agent:** timestamp workflow folders, commit progress log on run-done ([c9c8c35](https://github.com/devshop-software/crew/commit/c9c8c35c00c080f363c33c62595d6440b446547e))
|
|
14
|
+
|
|
1
15
|
# [0.11.0](https://github.com/devshop-software/crew/compare/v0.10.1...v0.11.0) (2026-05-09)
|
|
2
16
|
|
|
3
17
|
|
package/package.json
CHANGED
|
@@ -58,9 +58,9 @@ The input may include a natural-language breakpoint instruction like "stop after
|
|
|
58
58
|
|
|
59
59
|
## Step 1W — Worktree Setup (new features only)
|
|
60
60
|
|
|
61
|
-
1. **Derive the folder name:**
|
|
62
|
-
2. **Derive the branch name:** `<branch-prefix
|
|
63
|
-
3. **Determine the worktree path:** `../../wt/<folder-name>` — inside the `wt/` subdirectory at the project root. Example: if you're running from `~/projects/rival.sale/main`, the worktree goes to `~/projects/rival.sale/wt/
|
|
61
|
+
1. **Derive the folder name:** `YYYYMMDD-HHMM-<kebab>` using the current local timestamp + a short kebab-case description (2–5 words) derived from the input. Example: `20260509-1932-competitor-monitoring-toggle`. The timestamped form is the single name used for the workflow folder, the worktree directory, and the branch suffix — folders sort chronologically when listed.
|
|
62
|
+
2. **Derive the branch name:** `<branch-prefix><folder-name>`. Example: `feature/20260509-1932-competitor-monitoring-toggle`.
|
|
63
|
+
3. **Determine the worktree path:** `../../wt/<folder-name>` — inside the `wt/` subdirectory at the project root. Example: if you're running from `~/projects/rival.sale/main`, the worktree goes to `~/projects/rival.sale/wt/20260509-1932-competitor-monitoring-toggle`.
|
|
64
64
|
4. **Create the worktree:** `mkdir -p ../../wt && git worktree add <worktree-path> -b <branch-name> <base-branch>`
|
|
65
65
|
5. **Copy local environment files:** Copy `.env` (and `.env.local` if it exists) from the current worktree into the new worktree. These are gitignored and won't exist in the fresh checkout.
|
|
66
66
|
6. **Switch context:** all subsequent steps run inside the worktree directory
|
|
@@ -445,9 +445,12 @@ Write `05-indie-summary.md` in the workflow folder:
|
|
|
445
445
|
|
|
446
446
|
After writing the summary:
|
|
447
447
|
|
|
448
|
-
1.
|
|
449
|
-
2.
|
|
450
|
-
3.
|
|
448
|
+
1. Append a final `[orchestrator] <ISO-8601 UTC> — run done` line to `<workflow-dir>/<folder-name>/_progress.log`.
|
|
449
|
+
2. Stage both the summary and the progress log: `git add <workflow-dir>/<folder-name>/05-indie-summary.md <workflow-dir>/<folder-name>/_progress.log`
|
|
450
|
+
3. Commit: `docs: add indie agent run summary for <feature-name>`
|
|
451
|
+
4. Push to the same branch
|
|
452
|
+
|
|
453
|
+
Why both files: ship's own log lines (commit, push, PR creation) are written *after* ship's commit and never make it into the PR otherwise. This step is the catch-all that ensures the full run is recorded in git.
|
|
451
454
|
|
|
452
455
|
Present the final report to the user: PR URL, check status, iteration counts, and worktree path. Remind: "After merge, clean up with: `git worktree remove <path> && rm -rf <path>`"
|
|
453
456
|
|
|
@@ -462,7 +465,7 @@ Present the final report to the user: PR URL, check status, iteration counts, an
|
|
|
462
465
|
- Dispatch implementation, QA, and fix-loop phases with `run_in_background: true` so the orchestrator stays responsive
|
|
463
466
|
- Verify the output artifact after every agent returns before proceeding
|
|
464
467
|
- Create a dedicated worktree for each new feature
|
|
465
|
-
-
|
|
468
|
+
- Timestamp the workflow folder, worktree directory, and branch with the same `YYYYMMDD-HHMM-<kebab>` form so workflows sort chronologically
|
|
466
469
|
- Check artifact state before each phase — never re-run completed phases
|
|
467
470
|
- On "status" queries from the user while a subagent is running, read `_progress.log` — never peek into the subagent's thinking (you can't)
|
|
468
471
|
- Reinforce the progress-log mandate in every phase's task instructions — the log is the only signal the orchestrator has
|
package/skills/prep/SKILL.md
CHANGED
|
@@ -60,7 +60,7 @@ Ask targeted questions in **one batch** (not drip-fed). Choose 3–6 from:
|
|
|
60
60
|
1. **What's broken / needed** — one sentence in the user's own words, if the rough description was vague.
|
|
61
61
|
2. **Concrete motivating source** — a PR, bug report, dated incident, workflow folder, ticket. "Why now?" This often becomes the brief's strongest paragraph.
|
|
62
62
|
3. **Decisions already made** — what has the user already ruled in or out? These are the non-obvious constraints no code-reading will reveal (e.g. *"we're nuking both DBs before this lands"*).
|
|
63
|
-
4. **Boundary** —
|
|
63
|
+
4. **Boundary** — what's in scope at the edges? Name 2–5 adjacent things (files, capabilities, models, flows) and for each, mark whether this feature touches it or not. Ground every candidate in something concrete you saw in Step 2 — a file path, a table, a flow — not abstract categories. Frame the question to the user as a positive enumeration (*"which of these are in scope?"*), never as negation (*"what's excluded?"*). The Out-of-scope section is derived at draft time from the candidates the user did not mark as in-scope; do not ask the user to enumerate exclusions directly.
|
|
64
64
|
5. **Acceptance shape** — what must be observably true when this is done? 1–3 items, not exhaustive. You'll flesh them out when drafting.
|
|
65
65
|
6. **Post-merge manual steps** — anything a human has to do after the PR merges (DB operations, flag flips, smoke checks)?
|
|
66
66
|
|
|
@@ -232,4 +232,5 @@ If you catch yourself thinking any of these, stop:
|
|
|
232
232
|
- *"The human section needs more detail to be complete"* — STOP. If a reader can't stop after that section, you've overloaded it. Move the detail to the agent section.
|
|
233
233
|
- *"The acceptance criteria are general on purpose, to leave flexibility"* — STOP. Vague criteria are the #1 reason `/indie-agent` drifts. Be specific.
|
|
234
234
|
- *"This brief is ready — I didn't ask about out-of-scope because the user didn't mention it"* — STOP. Ask. Out-of-scope is where briefs silently fail.
|
|
235
|
+
- *"I'll ask the user to list what's NOT in scope"* or *"I'll show a multi-select of things to exclude"* — STOP. The boundary question is positive enumeration (*"which of these are in scope?"*). Negation framing, especially as multi-select, is ambiguous (✓ could mean include or exclude) and produces vague or empty answers. Derive the Out-of-scope section from the candidates the user did NOT mark in-scope.
|
|
235
236
|
- *"The user stated an outcome and I'm writing a mechanism"* — STOP. If the user said "swap X for Y when Z," that's what the brief says. `useSidebar()`, CSS strategies, component extraction, which file to modify — those are `/spec`'s calls, made after codebase exploration. Pre-deciding them here looks helpful but strips spec-writer's ability to weigh alternatives.
|