@tablation/crew 0.37.0 → 0.39.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.
Files changed (30) hide show
  1. package/README.md +38 -10
  2. package/dist/cli.js +274 -175
  3. package/package.json +1 -1
  4. package/prompts/default/personas/lane-design.md +63 -96
  5. package/prompts/default/personas/lane-dev.md +15 -15
  6. package/prompts/default/personas/lane-pair.md +64 -84
  7. package/prompts/default/personas/lane-qa.md +127 -158
  8. package/prompts/default/personas/lane-triage.md +79 -64
  9. package/prompts/default/skills/crew-lane-agent.md +479 -0
  10. package/prompts/default/skills/design-pass.md +53 -0
  11. package/prompts/default/skills/filing-a-ticket.md +56 -0
  12. package/prompts/default/skills/question-and-investigation.md +59 -0
  13. package/prompts/default/skills/running-the-suite.md +56 -0
  14. package/prompts/default/skills/ticket-attachments.md +34 -0
  15. package/prompts/default/skills/workspace-change-authorization.md +35 -0
  16. package/prompts/default/skills/worktree-setup.md +101 -0
  17. package/prompts/dev-qa/personas/lane-design.md +2 -0
  18. package/prompts/dev-qa/personas/lane-dev.md +15 -14
  19. package/prompts/dev-qa/personas/lane-pair.md +64 -84
  20. package/prompts/dev-qa/personas/lane-qa.md +126 -144
  21. package/prompts/dev-qa/personas/lane-triage.md +69 -56
  22. package/prompts/dev-qa/skills/crew-lane-agent.md +473 -0
  23. package/prompts/dev-qa/skills/filing-a-ticket.md +56 -0
  24. package/prompts/dev-qa/skills/question-and-investigation.md +59 -0
  25. package/prompts/dev-qa/skills/running-the-suite.md +56 -0
  26. package/prompts/dev-qa/skills/ticket-attachments.md +34 -0
  27. package/prompts/dev-qa/skills/workspace-change-authorization.md +35 -0
  28. package/prompts/dev-qa/skills/worktree-setup.md +101 -0
  29. package/prompts/default/personas/common.md +0 -903
  30. package/prompts/dev-qa/personas/common.md +0 -874
package/README.md CHANGED
@@ -36,13 +36,32 @@ prompt set (the three-lane dev/design/QA policy this repo ships with — see
36
36
  A fifth persona, **pair**, rides `crew agents sync` alongside these four but
37
37
  is not polled: it is the identity a live, interactive session (an IDE
38
38
  conversation, not a scheduled run) uses when it touches the tracker. It has
39
- no Crew-table seat, is never assigned a ticket by the poll loop, and its
40
- brief (`prompts/default/personas/lane-pair.md`) is not prefixed with
41
- `common.md` — none of the polling loop's shared policy describes it. `crew
39
+ no Crew-table seat and is never assigned a ticket by the poll loop. `crew
42
40
  agents prompt pair` prints its current persona text (a workspace admin's
43
41
  live edit if there is one, else the local default) for something like a
44
42
  `SessionStart` hook to feed into a session at start.
45
43
 
44
+ The building lanes' shared policy (worktrees, one stateless invocation per
45
+ cycle, the dev/design/QA hand-off) ships as the `Crew Lane Agent` skill, and
46
+ the **dev**, **design** and **qa** briefs include it with a
47
+ `{{skill: Crew Lane Agent}}` marker on their first line. The Agents row keeps
48
+ the marker; the include is expanded when a run is assembled, from the
49
+ workspace's Agent Skills row if an admin edited it, else the local
50
+ `skills/*.md` file. So an admin edit to a lane's own sentences no longer forks
51
+ the shared policy. The marker is `{{skill:`, a skill name matched exactly after
52
+ trimming, `}}`, on its own line or inline. It is deliberately not a
53
+ `[[table:key]]` record link: personas and skills are not rows of a workspace
54
+ table. An unknown name refuses the run; a skill that includes itself (or a
55
+ cycle) is expanded once and the repeat left literal with a warning in the run
56
+ summary; nesting is capped at 3 levels and 200 KB of included text.
57
+ `crew agents sync` warns about a marker naming a skill the preset doesn't
58
+ ship. **triage** and **pair** are self-contained (`SELF_CONTAINED_ROLES` in
59
+ `src/config.ts`): neither cuts a worktree, builds or hands anything to QA, so
60
+ the policy would only misdescribe them. A preset forked before this change may
61
+ still ship `personas/common.md`, which keeps being prefixed to the building
62
+ briefs. The prompts carry rules, not history; the incidents behind
63
+ each rule are kept in [`docs/prompt-rationale.md`](docs/prompt-rationale.md).
64
+
46
65
  Alongside personas, a prompt set can also ship **skills** —
47
66
  `prompts/<promptSet>/skills/*.md`, each one YAML frontmatter (`name`,
48
67
  `description`) plus a markdown prompt body. A skill isn't a seat: it's not
@@ -55,7 +74,14 @@ diverged sync narrowed to skills alone, for when you've only touched
55
74
  `skills/`. Example use — a Pair session invoked via an Epic's
56
75
  `grill_link` looks up the `Grill-Me` skill through the Tablation MCP tool
57
76
  `agent_skills_controller_get_skill` and follows it. `prompts/default/skills/
58
- grill-me.md` is the shipped example.
77
+ grill-me.md` is one shipped example; the rest are the building lanes'
78
+ situational procedures (`Worktree Setup`, `Running the Suite`, `Question and
79
+ Investigation Tickets`, `Filing a Ticket`, `Ticket Attachments`, `Workspace
80
+ Change Authorization`, `Design Pass`), which the lane policy names at the step
81
+ that needs each one — every run keeps the rule and the minimum inline and
82
+ fetches the full procedure only when it applies, so a dev run that never
83
+ files a ticket never pays for the filing procedure. `test/prompts.test.ts`
84
+ checks that every skill a persona names ships in the same preset.
59
85
 
60
86
  One role runs per cycle, whichever holds the most urgent actionable ticket
61
87
  (`src/priority.ts` decides, and the same module sorts the digest that agent is
@@ -98,12 +124,14 @@ wants is a fact about that workspace, not about the machine running it.
98
124
  fit: copy a preset directory (`cp -r prompts/default ~/my-crew-policy`),
99
125
  edit its prose, and point `promptSet` at the copy (`~/my-crew-policy` or a
100
126
  relative path) — no fork of this repo required. A prompt set is a complete,
101
- self-contained fork of `personas/common.md` + one `personas/lane-<role>.md`
102
- per seat, plus whatever `skills/*.md` it wants, not a diff against another
103
- one; each persona file is read as plain prose concatenated ahead of the
104
- per-run roster/environment/queue sections
127
+ self-contained fork of one `personas/lane-<role>.md` per seat
128
+ (and the shared-policy skill the building briefs include), plus whatever `skills/*.md` it wants, not a diff against another
129
+ one; each persona file is read as plain prose (`{{skill: Name}}` includes expanded
130
+ at run time) and concatenated after the
131
+ per-run roster/environment sections and before the queue digest
105
132
  (`src/agent.ts`'s `assemblePrompt`), so there's no templating layer to
106
- learn. `prompts/dev-qa/` is a worked example of trimming a lane out of
133
+ learn. Keep the prose generic: `test/prompts.test.ts` fails a preset that
134
+ names a path, a command, an id, a ticket reference or a date. `prompts/dev-qa/` is a worked example of trimming a lane out of
107
135
  `default` cleanly, including the unused `lane-design.md` stub every
108
136
  preset still needs today — see the next paragraph for why.
109
137
 
@@ -250,7 +278,7 @@ which only discovers names and remotes, never fetches anything itself.
250
278
  bin/crew the entry point
251
279
  src/ the implementation (Node, run directly via type stripping)
252
280
  test/ its tests, including a fake board for integration runs
253
- prompts/ prompt sets — prompts/<name>/personas/{common.md,lane-<role>.md}
281
+ prompts/ prompt sets — prompts/<name>/personas/lane-<role>.md
254
282
  + prompts/<name>/skills/*.md
255
283
  docs/ CONTRACT.md, REPO_SPEC.md, MIGRATION.md
256
284
  launchd/ timer templates (edit the paths before installing)