@clawcipes/recipes 0.2.4 → 0.2.6
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 +17 -3
- package/docs/AGENTS_AND_SKILLS.md +2 -1
- package/docs/CLAWCIPES_KITCHEN.md +1 -1
- package/docs/COMMANDS.md +39 -2
- package/docs/verify-built-in-team-recipes.md +65 -0
- package/index.ts +394 -184
- package/package.json +9 -3
- package/recipes/default/customer-support-team.md +26 -4
- package/recipes/default/development-team.md +14 -0
- package/recipes/default/product-team.md +32 -15
- package/recipes/default/research-team.md +21 -1
- package/recipes/default/social-team.md +89 -5
- package/recipes/default/writing-team.md +23 -2
- package/src/lib/bindings.ts +59 -0
- package/src/lib/cleanup-workspaces.ts +173 -0
- package/src/lib/index.ts +5 -0
- package/src/lib/lanes.ts +63 -0
- package/src/lib/recipe-frontmatter.ts +59 -0
- package/src/lib/scaffold-templates.ts +7 -0
- package/src/lib/shared-context.ts +52 -0
- package/src/lib/ticket-finder.ts +60 -0
- package/src/lib/ticket-workflow.ts +94 -0
package/README.md
CHANGED
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
<img src="./clawcipes_cook.jpg" alt="Clawcipes logo" width="240" />
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
|
-
> **Experimental:** We’re in active development. Installing should not have any negative impacts, but it’s always good to be safe and copy your `~/.openclaw` folder to a backup.
|
|
8
|
-
|
|
9
7
|
Clawcipes is an OpenClaw plugin that provides **CLI-first recipes** for scaffolding specialist agents and teams from Markdown.
|
|
10
8
|
|
|
11
9
|
If you like durable workflows: Clawcipes is built around a **file-first team workspace** (inbox/backlog/in-progress/testing/done) that plays nicely with git.
|
|
@@ -57,7 +55,8 @@ openclaw recipes dispatch \
|
|
|
57
55
|
- `openclaw recipes install <idOrSlug> [--yes] [--global|--agent-id <id>|--team-id <id>]` (skills: global or scoped)
|
|
58
56
|
- `openclaw recipes bind|unbind|bindings` (multi-agent routing)
|
|
59
57
|
- `openclaw recipes dispatch ...` (request → inbox + ticket + assignment)
|
|
60
|
-
- `openclaw recipes tickets|move-ticket|assign|take|complete` (file-first ticket workflow)
|
|
58
|
+
- `openclaw recipes tickets|move-ticket|assign|take|handoff|complete` (file-first ticket workflow)
|
|
59
|
+
- `openclaw recipes cleanup-workspaces` (safe cleanup of temporary test/scaffold workspaces)
|
|
61
60
|
|
|
62
61
|
For full details, see `docs/COMMANDS.md`.
|
|
63
62
|
|
|
@@ -78,6 +77,21 @@ Start here:
|
|
|
78
77
|
- Agents + skills: `docs/AGENTS_AND_SKILLS.md`
|
|
79
78
|
- Tutorial (create a recipe): `docs/TUTORIAL_CREATE_RECIPE.md`
|
|
80
79
|
|
|
80
|
+
## Development
|
|
81
|
+
### Unit tests (vitest)
|
|
82
|
+
Run:
|
|
83
|
+
- `npm test`
|
|
84
|
+
|
|
85
|
+
### Scaffold smoke test (regression)
|
|
86
|
+
A lightweight smoke check validates scaffold-team output contains the required testing workflow docs (ticket 0004).
|
|
87
|
+
|
|
88
|
+
Run:
|
|
89
|
+
- `npm run test:smoke` (or `npm run scaffold:smoke`)
|
|
90
|
+
|
|
91
|
+
Notes:
|
|
92
|
+
- Creates a temporary `workspace-smoke-<timestamp>-team` under `~/.openclaw/` and then deletes it.
|
|
93
|
+
- Exits non-zero on mismatch.
|
|
94
|
+
|
|
81
95
|
Reference:
|
|
82
96
|
- Commands: `docs/COMMANDS.md`
|
|
83
97
|
- Recipe format: `docs/RECIPE_FORMAT.md`
|
|
@@ -151,6 +151,7 @@ A **team** recipe scaffolds a **shared workspace root** plus role folders:
|
|
|
151
151
|
work/
|
|
152
152
|
backlog/
|
|
153
153
|
in-progress/
|
|
154
|
+
testing/
|
|
154
155
|
done/
|
|
155
156
|
assignments/
|
|
156
157
|
roles/
|
|
@@ -162,7 +163,7 @@ Each role agent is a separate OpenClaw agent id (`<teamId>-<role>`), but they sh
|
|
|
162
163
|
|
|
163
164
|
The shared workspace is the source of truth for:
|
|
164
165
|
- intake (`inbox/`)
|
|
165
|
-
- work queue (`work/backlog`, `work/in-progress`, `work/done`)
|
|
166
|
+
- work queue (`work/backlog`, `work/in-progress`, `work/testing`, `work/done`)
|
|
166
167
|
- assignments (`work/assignments`)
|
|
167
168
|
- deliverables (`outbox/`)
|
|
168
169
|
|
|
@@ -23,5 +23,5 @@ Clawcipes Kitchen is under active development.
|
|
|
23
23
|
## Roadmap (high level)
|
|
24
24
|
- Approvals UI (approve/deny + audit trail)
|
|
25
25
|
- Recipe browser and scaffold flows
|
|
26
|
-
- Team dashboards (backlog/in-progress/done)
|
|
26
|
+
- Team dashboards (backlog/in-progress/testing/done)
|
|
27
27
|
- Publishing workflow integration
|
package/docs/COMMANDS.md
CHANGED
|
@@ -165,6 +165,31 @@ openclaw recipes tickets --team-id <teamId>
|
|
|
165
165
|
openclaw recipes tickets --team-id <teamId> --json
|
|
166
166
|
```
|
|
167
167
|
|
|
168
|
+
## `cleanup-workspaces`
|
|
169
|
+
List (dry-run, default) or delete (with `--yes`) temporary test/scaffold team workspaces under your OpenClaw home directory.
|
|
170
|
+
|
|
171
|
+
Safety rails:
|
|
172
|
+
- Only considers `workspace-<teamId>` directories where `<teamId>`:
|
|
173
|
+
- ends with `-team`
|
|
174
|
+
- starts with an allowed prefix (default: `smoke-`, `qa-`, `tmp-`, `test-`)
|
|
175
|
+
- Refuses symlinks
|
|
176
|
+
- Protected teams (at minimum: `development-team`) are never deleted
|
|
177
|
+
|
|
178
|
+
Examples:
|
|
179
|
+
```bash
|
|
180
|
+
# Dry-run (default): list what would be deleted
|
|
181
|
+
openclaw recipes cleanup-workspaces
|
|
182
|
+
|
|
183
|
+
# Actually delete eligible workspaces
|
|
184
|
+
openclaw recipes cleanup-workspaces --yes
|
|
185
|
+
|
|
186
|
+
# Custom prefixes (repeatable)
|
|
187
|
+
openclaw recipes cleanup-workspaces --prefix smoke- --prefix qa- --yes
|
|
188
|
+
|
|
189
|
+
# JSON output
|
|
190
|
+
openclaw recipes cleanup-workspaces --json
|
|
191
|
+
```
|
|
192
|
+
|
|
168
193
|
## `move-ticket`
|
|
169
194
|
Move a ticket file between workflow stages and update the ticket’s `Status:` field.
|
|
170
195
|
|
|
@@ -188,7 +213,7 @@ openclaw recipes assign --team-id <teamId> --ticket 0007 --owner dev
|
|
|
188
213
|
openclaw recipes assign --team-id <teamId> --ticket 0007 --owner lead
|
|
189
214
|
```
|
|
190
215
|
|
|
191
|
-
Owners (current): `dev|devops|lead`.
|
|
216
|
+
Owners (current): `dev|devops|lead|test`.
|
|
192
217
|
|
|
193
218
|
## `take`
|
|
194
219
|
Shortcut: assign + move to in-progress.
|
|
@@ -197,6 +222,18 @@ Shortcut: assign + move to in-progress.
|
|
|
197
222
|
openclaw recipes take --team-id <teamId> --ticket 0007 --owner dev
|
|
198
223
|
```
|
|
199
224
|
|
|
225
|
+
## `handoff`
|
|
226
|
+
QA handoff in one step: move a ticket to `work/testing/`, set `Status: testing`, assign to a tester (default `test`), and write/update the assignment stub.
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
openclaw recipes handoff --team-id <teamId> --ticket 0007
|
|
230
|
+
openclaw recipes handoff --team-id <teamId> --ticket 0007 --tester test
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Notes:
|
|
234
|
+
- Creates `work/testing/` if missing.
|
|
235
|
+
- Idempotent: if the ticket is already in `work/testing/`, it won’t re-move it; it will ensure fields + assignment stub.
|
|
236
|
+
|
|
200
237
|
## `complete`
|
|
201
238
|
Shortcut: move to done + ensure `Status: done` + add `Completed:` timestamp.
|
|
202
239
|
|
|
@@ -214,7 +251,7 @@ openclaw recipes dispatch \
|
|
|
214
251
|
Options:
|
|
215
252
|
- `--team-id <teamId>` (required)
|
|
216
253
|
- `--request <text>` (optional; prompts in TTY)
|
|
217
|
-
- `--owner dev|devops|lead` (default: `dev`)
|
|
254
|
+
- `--owner dev|devops|lead|test` (default: `dev`)
|
|
218
255
|
- `--yes` (skip review prompt)
|
|
219
256
|
|
|
220
257
|
Creates (createOnly):
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Verify built-in team recipes (scaffold + cron jobs)
|
|
2
|
+
|
|
3
|
+
This checklist verifies that each built-in **team** recipe scaffolds correctly and that any recipe-defined cron jobs reconcile safely.
|
|
4
|
+
|
|
5
|
+
## Prereqs
|
|
6
|
+
- You have OpenClaw installed and `openclaw` is on PATH.
|
|
7
|
+
- Set recipes cron installation behavior in config (safe default is `prompt`).
|
|
8
|
+
- `cronInstallation: prompt` ⇒ asks before installing cron jobs
|
|
9
|
+
- `cronInstallation: on` ⇒ installs cron jobs (enabled state still depends on `enabledByDefault`)
|
|
10
|
+
- `cronInstallation: off` ⇒ skips cron reconciliation
|
|
11
|
+
|
|
12
|
+
## Teams to verify
|
|
13
|
+
- product-team
|
|
14
|
+
- research-team
|
|
15
|
+
- writing-team
|
|
16
|
+
- social-team
|
|
17
|
+
- customer-support-team
|
|
18
|
+
- development-team
|
|
19
|
+
|
|
20
|
+
## Commands
|
|
21
|
+
|
|
22
|
+
### Scaffold each team
|
|
23
|
+
|
|
24
|
+
> Note: `--team-id` must end with `-team`.
|
|
25
|
+
|
|
26
|
+
For each recipe id `<rid>` above:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
openclaw recipes scaffold-team <rid> --team-id <rid>-team --apply-config
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Verify scaffold output
|
|
33
|
+
|
|
34
|
+
For each `~/.openclaw/workspace-<rid>-team/` ensure:
|
|
35
|
+
- `notes/plan.md` exists
|
|
36
|
+
- `notes/status.md` exists
|
|
37
|
+
- `shared-context/priorities.md` exists
|
|
38
|
+
- `shared-context/agent-outputs/` exists
|
|
39
|
+
- `work/backlog/`, `work/in-progress/`, `work/testing/`, `work/done/` exist
|
|
40
|
+
|
|
41
|
+
### Verify cron reconciliation behavior
|
|
42
|
+
|
|
43
|
+
1) With `cronInstallation: prompt`:
|
|
44
|
+
- Re-run scaffold-team and confirm you are prompted.
|
|
45
|
+
- Answer **No** and verify that installed jobs are created **disabled** (or not created, depending on implementation).
|
|
46
|
+
|
|
47
|
+
2) With `cronInstallation: on`:
|
|
48
|
+
- Re-run scaffold-team and verify recipe cron jobs are installed.
|
|
49
|
+
|
|
50
|
+
3) Confirm jobs are listed:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
openclaw cron list
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
4) Optionally force-run a job:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
openclaw cron run <jobId>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## What to record
|
|
63
|
+
- Any recipe that fails to scaffold
|
|
64
|
+
- Any cron job install/update errors
|
|
65
|
+
- Any cron job that runs but fails (include logs / error output)
|