@jiggai/recipes 0.4.17 → 0.4.18

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/docs/releasing.md CHANGED
@@ -1,42 +1,135 @@
1
1
  # Releasing `@jiggai/recipes`
2
2
 
3
- This repo is published to npm as `@jiggai/recipes`.
3
+ This repo publishes to npm as:
4
4
 
5
- ## Prereqs (one-time)
5
+ ```text
6
+ @jiggai/recipes
7
+ ```
6
8
 
7
- 1) In GitHub repo settings, add an Actions secret:
9
+ This is the practical release guide.
8
10
 
9
- - Name: `NPM_TOKEN`
10
- - Value: an npm access token with publish rights for the `@jiggai` scope
11
+ ---
11
12
 
12
- 2) Ensure `package.json` has the correct name/version and `publishConfig.access = "public"`.
13
+ ## Before you release
13
14
 
14
- ## Release flow (recommended)
15
+ Make sure these are true:
16
+ - `package.json` version is correct
17
+ - `openclaw.plugin.json` version matches
18
+ - tests pass
19
+ - the branch/PR you intend to release is actually the one merged to `main`
15
20
 
16
- 1) Update `package.json` version on `main` and commit it.
21
+ Useful checks:
17
22
 
18
- Typical:
23
+ ```bash
24
+ npm test
25
+ npm view @jiggai/recipes version
26
+ node -p "require('./package.json').version"
27
+ cat openclaw.plugin.json
28
+ ```
19
29
 
20
- - `npm version patch` (or `minor` / `major`)
30
+ ---
21
31
 
22
- This creates a commit and a git tag (by default `vX.Y.Z`).
32
+ ## Recommended release flow
23
33
 
24
- 2) Push the commit + tag:
34
+ From `main`:
25
35
 
26
- - `git push origin main --follow-tags`
36
+ ```bash
37
+ git checkout main
38
+ git pull --ff-only
39
+ npm version patch
40
+ ```
27
41
 
28
- 3) GitHub Actions will run the `Publish` workflow on tag push and publish to npm.
42
+ Or use `minor` / `major` when appropriate:
29
43
 
30
- ## Manual publish (local machine)
44
+ ```bash
45
+ npm version minor
46
+ npm version major
47
+ ```
31
48
 
32
- If you have npm auth configured locally (i.e. `npm whoami` works), you can publish directly:
49
+ Then push commit + tag:
33
50
 
34
- - `npm ci`
35
- - `npm run lint`
36
- - `npm test`
37
- - `npm publish`
51
+ ```bash
52
+ git push origin main --follow-tags
53
+ ```
38
54
 
39
- ## Verify
55
+ GitHub Actions will run the normal publish workflow.
40
56
 
41
- - `npm view @jiggai/recipes version`
42
- - In a clean OpenClaw install, upgrade the extension and confirm the expected behavior is present.
57
+ ---
58
+
59
+ ## Manual local publish
60
+
61
+ If you are intentionally publishing from your local machine:
62
+
63
+ ```bash
64
+ npm ci
65
+ npm run lint
66
+ npm test
67
+ npm publish
68
+ ```
69
+
70
+ You will need local npm auth:
71
+
72
+ ```bash
73
+ npm whoami
74
+ ```
75
+
76
+ ---
77
+
78
+ ## Verify after publishing
79
+
80
+ Check the published version:
81
+
82
+ ```bash
83
+ npm view @jiggai/recipes version
84
+ ```
85
+
86
+ Then test a fresh install or upgrade path:
87
+
88
+ ```bash
89
+ openclaw plugins install @jiggai/recipes
90
+ openclaw gateway restart
91
+ openclaw recipes list
92
+ ```
93
+
94
+ ---
95
+
96
+ ## Important note about local patches
97
+
98
+ If you maintain a local controller-specific patch (for example, workflow posting behavior), publishing a clean package does **not** mean that patch is part of the public release unless you intentionally merged it.
99
+
100
+ So after publishing, you may need to:
101
+ - reapply your local patch
102
+ - relink/reinstall the plugin
103
+ - tell your assistant to turn the local posting path back on
104
+
105
+ If you use a patch file or gist for that workflow, keep it handy as part of your release checklist.
106
+
107
+ ---
108
+
109
+ ## About canary publishes
110
+
111
+ If canary publishing is paused in the repo workflow config, PR activity will not automatically publish canary builds.
112
+
113
+ That is separate from the normal release workflow.
114
+
115
+ ---
116
+
117
+ ## Minimum safe release checklist
118
+
119
+ ```bash
120
+ # sync to main
121
+ git checkout main
122
+ git pull --ff-only
123
+
124
+ # run checks
125
+ npm test
126
+
127
+ # bump version
128
+ npm version patch
129
+
130
+ # push
131
+ git push origin main --follow-tags
132
+
133
+ # verify published version
134
+ npm view @jiggai/recipes version
135
+ ```
@@ -2,7 +2,7 @@
2
2
  "id": "recipes",
3
3
  "name": "Recipes",
4
4
  "description": "Markdown recipes that scaffold agents and teams (workspace-local).",
5
- "version": "0.4.17",
5
+ "version": "0.4.18",
6
6
  "configSchema": {
7
7
  "type": "object",
8
8
  "additionalProperties": false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jiggai/recipes",
3
- "version": "0.4.17",
3
+ "version": "0.4.18",
4
4
  "description": "ClawRecipes plugin for OpenClaw (markdown recipes -> scaffold agents/teams)",
5
5
  "main": "index.ts",
6
6
  "type": "commonjs",
@@ -1,521 +0,0 @@
1
- ---
2
- id: clinic-team
3
- name: Clinic Team
4
- version: 0.1.0
5
- description: A small clinic operations team (intake, scheduling, billing, compliance, patient education) coordinated via a shared workspace.
6
- kind: team
7
- cronJobs:
8
- - id: lead-triage-loop
9
- name: "Lead triage loop"
10
- schedule: "*/30 7-23 * * 1-5"
11
- timezone: "America/New_York"
12
- message: "Automated lead triage loop (Clinic Team): triage inbox/tickets, assign work, and update notes/status.md."
13
- enabledByDefault: false
14
- - id: execution-loop
15
- name: "Execution loop"
16
- schedule: "*/30 7-23 * * 1-5"
17
- timezone: "America/New_York"
18
- message: "Automated execution loop (Clinic Team): make progress on in-progress tickets and update notes/status.md."
19
- enabledByDefault: false
20
- requiredSkills: []
21
- team:
22
- teamId: clinic-team
23
- agents:
24
- - role: lead
25
- name: Clinic Administrator / Lead
26
- tools:
27
- profile: "coding"
28
- allow: ["group:fs", "group:web", "group:runtime"]
29
- deny: ["exec"]
30
- - role: intake
31
- name: Patient Intake / Front Desk
32
- tools:
33
- profile: "coding"
34
- allow: ["group:fs", "group:web"]
35
- deny: ["exec"]
36
- - role: scheduler
37
- name: Scheduling Coordinator
38
- tools:
39
- profile: "coding"
40
- allow: ["group:fs", "group:web"]
41
- deny: ["exec"]
42
- - role: billing
43
- name: Billing & Insurance
44
- tools:
45
- profile: "coding"
46
- allow: ["group:fs", "group:web"]
47
- deny: ["exec"]
48
- - role: compliance
49
- name: Compliance / Privacy
50
- tools:
51
- profile: "coding"
52
- allow: ["group:fs", "group:web"]
53
- deny: ["exec"]
54
- - role: educator
55
- name: Patient Education Writer
56
- tools:
57
- profile: "coding"
58
- allow: ["group:fs", "group:web"]
59
- deny: ["exec"]
60
-
61
- templates:
62
- sharedContext.memoryPolicy: |
63
- # Team Memory Policy (File-first)
64
-
65
- Quick link: see `shared-context/MEMORY_PLAN.md` for the canonical “what goes where” map.
66
-
67
- This team is run **file-first**. Chat is not the system of record.
68
-
69
- ## Where to write things
70
- - Ticket = source of truth for a unit of work.
71
- - `notes/plan.md` + `shared-context/priorities.md` are **lead-curated**.
72
- - `notes/status.md` is **append-only** and updated after each work session (3–5 bullets).
73
- - `shared-context/agent-outputs/` is **append-only** logs/output.
74
-
75
- ## End-of-session checklist (everyone)
76
- After meaningful work:
77
- 1) Update the ticket with what changed + how to verify + rollback.
78
- 2) Add a dated note in the ticket `## Comments`.
79
- 3) Append 3–5 bullets to `notes/status.md`.
80
- 4) Append logs/output to `shared-context/agent-outputs/`.
81
-
82
- sharedContext.plan: |
83
- # Plan (lead-curated)
84
-
85
- - (empty)
86
-
87
- sharedContext.status: |
88
- # Status (append-only)
89
-
90
- - (empty)
91
-
92
- sharedContext.memoryPlan: |
93
- # Memory Plan (Team)
94
-
95
- This team is file-first. Chat is not the system of record.
96
-
97
- ## Source of truth
98
- - Tickets (`work/*/*.md`) are the source of truth for a unit of work.
99
-
100
- ## Team knowledge memory (Kitchen UI)
101
- - `shared-context/memory/team.jsonl` (append-only)
102
- - `shared-context/memory/pinned.jsonl` (append-only, curated/high-signal)
103
-
104
- Policy:
105
- - Lead may pin to `pinned.jsonl`.
106
- - Non-leads propose memory items via ticket comments or role outputs; lead pins.
107
-
108
- ## Per-role continuity memory (agent startup)
109
- - `roles/<role>/MEMORY.md` (curated long-term)
110
- - `roles/<role>/memory/YYYY-MM-DD.md` (daily log)
111
-
112
- ## Plan vs status (team coordination)
113
- - `notes/plan.md` + `shared-context/priorities.md` are lead-curated
114
- - `notes/status.md` is append-only roll-up (everyone appends)
115
-
116
- ## Outputs / artifacts
117
- - `roles/<role>/agent-outputs/` (append-only)
118
- - `shared-context/agent-outputs/` (optional team-level)
119
-
120
- ## Role work loop contract (safe-idle)
121
- - No-op unless explicit queued work exists for the role.
122
- - If work happens, write back in order: ticket → `notes/status.md` → `roles/<role>/agent-outputs/`.
123
-
124
- sharedContext.priorities: |
125
- # Priorities (lead-curated)
126
-
127
- - (empty)
128
-
129
- sharedContext.agentOutputsReadme: |
130
- # Agent Outputs (append-only)
131
-
132
- Put raw logs, command output, and investigation notes here.
133
- Prefer filenames like: `YYYY-MM-DD-topic.md`.
134
-
135
- lead.tools: |
136
- # TOOLS.md
137
-
138
- # Agent-local notes (paths, conventions, env quirks).
139
-
140
- tools: |
141
- # TOOLS.md
142
-
143
- # Agent-local notes (paths, conventions, env quirks).
144
-
145
- status: |
146
- # STATUS.md
147
-
148
- - (empty)
149
-
150
- notes: |
151
- # NOTES.md
152
-
153
- - (empty)
154
-
155
- lead.soul: |
156
- # SOUL.md
157
-
158
- You are the Team Lead / Dispatcher for {{teamId}}.
159
-
160
- Core job:
161
- - Convert new requests into scoped tickets.
162
- - Assign work to Dev or DevOps.
163
- - Monitor progress and unblock.
164
- - Report completions.
165
- lead.agents: |
166
- # AGENTS.md
167
-
168
- Team: {{teamId}}
169
- Shared workspace: {{teamDir}}
170
-
171
- ## Guardrails (read → act → write)
172
-
173
- Before you act:
174
- 1) Read:
175
- - `notes/plan.md`
176
- - `notes/status.md`
177
- - `shared-context/priorities.md`
178
- - the relevant ticket(s)
179
-
180
- After you act:
181
- 1) Write back:
182
- - Update tickets with decisions/assignments.
183
- - Keep `notes/status.md` current (3–5 bullets per active ticket).
184
-
185
- ## Curator model
186
-
187
- You are the curator of:
188
- - `notes/plan.md`
189
- - `shared-context/priorities.md`
190
-
191
- Everyone else should append to:
192
- - `shared-context/agent-outputs/` (append-only)
193
- - `shared-context/feedback/`
194
-
195
- Your job is to periodically distill those inputs into the curated files.
196
-
197
- ## File-first workflow (tickets)
198
-
199
- Source of truth is the shared team workspace.
200
-
201
- Folders:
202
- - `inbox/` — raw incoming requests (append-only)
203
- - `work/backlog/` — normalized tickets, filename-ordered (`0001-...md`)
204
- - `work/in-progress/` — tickets currently being executed
205
- - `work/testing/` — tickets awaiting QA verification
206
- - `work/done/` — completed tickets + completion notes
207
- - `notes/plan.md` — current plan / priorities (curated)
208
- - `notes/status.md` — current status snapshot
209
- - `shared-context/` — shared context + append-only outputs
210
-
211
- ### Ticket numbering (critical)
212
- - Backlog tickets MUST be named `0001-...md`, `0002-...md`, etc.
213
- - The developer pulls the lowest-numbered ticket assigned to them.
214
-
215
- ### Ticket format
216
- See `TICKETS.md` in the team root. Every ticket should include:
217
- - Context
218
- - Requirements
219
- - Acceptance criteria
220
- - Owner (dev/devops)
221
- - Status
222
-
223
- ### Your responsibilities
224
- - For every new request in `inbox/`, create a normalized ticket in `work/backlog/`.
225
- - Curate `notes/plan.md` and `shared-context/priorities.md`.
226
- - Keep `notes/status.md` updated.
227
- - When work is ready for QA, move the ticket to `work/testing/` and assign it to the tester.
228
- - Only after QA verification, move the ticket to `work/done/` (or use `openclaw recipes complete`).
229
- - When a completion appears in `work/done/`, write a short summary into `outbox/`.
230
- intake.soul: |
231
- # SOUL.md
232
-
233
- You handle patient intake for {{teamId}}.
234
-
235
- You produce clear summaries, required info checklists, and next-step instructions.
236
-
237
- intake.agents: |
238
- # AGENTS.md
239
-
240
- Team: {teamId}
241
- Shared workspace: {teamDir}
242
- Role: intake
243
-
244
- ## Guardrails (read → act → write)
245
- Before you act:
246
- 1) Read:
247
- - `notes/plan.md`
248
- - `notes/status.md`
249
- - relevant ticket(s) in `work/in-progress/`
250
- - any relevant shared context under `shared-context/`
251
-
252
- After you act:
253
- 1) Write back:
254
- - Put outputs in the agreed folder (usually `outbox/` or a ticket file).
255
- - Update the ticket with what you did and where the artifact is.
256
-
257
- ## Workflow
258
- - Prefer a pull model: wait for a clear task from the lead, or propose a scoped task.
259
- - Keep work small and reversible.
260
- scheduler.soul: |
261
- # SOUL.md
262
-
263
- You coordinate scheduling for {{teamId}}.
264
-
265
- You reduce no-shows and keep schedules accurate.
266
-
267
- scheduler.agents: |
268
- # AGENTS.md
269
-
270
- Team: {teamId}
271
- Shared workspace: {teamDir}
272
- Role: scheduler
273
-
274
- ## Guardrails (read → act → write)
275
- Before you act:
276
- 1) Read:
277
- - `notes/plan.md`
278
- - `notes/status.md`
279
- - relevant ticket(s) in `work/in-progress/`
280
- - any relevant shared context under `shared-context/`
281
-
282
- After you act:
283
- 1) Write back:
284
- - Put outputs in the agreed folder (usually `outbox/` or a ticket file).
285
- - Update the ticket with what you did and where the artifact is.
286
-
287
- ## Workflow
288
- - Prefer a pull model: wait for a clear task from the lead, or propose a scoped task.
289
- - Keep work small and reversible.
290
- billing.soul: |
291
- # SOUL.md
292
-
293
- You manage billing and insurance workflows for {{teamId}}.
294
-
295
- You produce step-by-step processes and clear patient-facing explanations.
296
-
297
- billing.agents: |
298
- # AGENTS.md
299
-
300
- Team: {teamId}
301
- Shared workspace: {teamDir}
302
- Role: billing
303
-
304
- ## Guardrails (read → act → write)
305
- Before you act:
306
- 1) Read:
307
- - `notes/plan.md`
308
- - `notes/status.md`
309
- - relevant ticket(s) in `work/in-progress/`
310
- - any relevant shared context under `shared-context/`
311
-
312
- After you act:
313
- 1) Write back:
314
- - Put outputs in the agreed folder (usually `outbox/` or a ticket file).
315
- - Update the ticket with what you did and where the artifact is.
316
-
317
- ## Workflow
318
- - Prefer a pull model: wait for a clear task from the lead, or propose a scoped task.
319
- - Keep work small and reversible.
320
- compliance.soul: |
321
- # SOUL.md
322
-
323
- You oversee compliance and privacy for {{teamId}}.
324
-
325
- You flag risks and propose compliant alternatives.
326
-
327
- compliance.agents: |
328
- # AGENTS.md
329
-
330
- Team: {teamId}
331
- Shared workspace: {teamDir}
332
- Role: compliance
333
-
334
- ## Guardrails (read → act → write)
335
- Before you act:
336
- 1) Read:
337
- - `notes/plan.md`
338
- - `notes/status.md`
339
- - relevant ticket(s) in `work/in-progress/`
340
- - any relevant shared context under `shared-context/`
341
-
342
- After you act:
343
- 1) Write back:
344
- - Put outputs in the agreed folder (usually `outbox/` or a ticket file).
345
- - Update the ticket with what you did and where the artifact is.
346
-
347
- ## Workflow
348
- - Prefer a pull model: wait for a clear task from the lead, or propose a scoped task.
349
- - Keep work small and reversible.
350
- educator.soul: |
351
- # SOUL.md
352
-
353
- You write patient education materials for {{teamId}}.
354
-
355
- You write at an accessible reading level and include practical next steps.
356
-
357
- educator.agents: |
358
- # AGENTS.md
359
-
360
- Output:
361
- - Handouts/FAQs → work/patient-education/
362
- - After-visit summaries → work/patient-education/after-visit/
363
-
364
-
365
- # Auto-added blanks to ensure every role can scaffold every declared file.
366
-
367
- # --- role: lead ---
368
- lead.status: |
369
- # STATUS.md
370
-
371
- - (empty)
372
-
373
- lead.notes: |
374
- # NOTES.md
375
-
376
- - (empty)
377
-
378
-
379
- # --- role: intake ---
380
- intake.tools: |
381
- # TOOLS.md
382
-
383
- - (empty)
384
-
385
- intake.status: |
386
- # STATUS.md
387
-
388
- - (empty)
389
-
390
- intake.notes: |
391
- # NOTES.md
392
-
393
- - (empty)
394
-
395
-
396
- # --- role: scheduler ---
397
- scheduler.tools: |
398
- # TOOLS.md
399
-
400
- - (empty)
401
-
402
- scheduler.status: |
403
- # STATUS.md
404
-
405
- - (empty)
406
-
407
- scheduler.notes: |
408
- # NOTES.md
409
-
410
- - (empty)
411
-
412
-
413
- # --- role: billing ---
414
- billing.tools: |
415
- # TOOLS.md
416
-
417
- - (empty)
418
-
419
- billing.status: |
420
- # STATUS.md
421
-
422
- - (empty)
423
-
424
- billing.notes: |
425
- # NOTES.md
426
-
427
- - (empty)
428
-
429
-
430
- # --- role: compliance ---
431
- compliance.tools: |
432
- # TOOLS.md
433
-
434
- - (empty)
435
-
436
- compliance.status: |
437
- # STATUS.md
438
-
439
- - (empty)
440
-
441
- compliance.notes: |
442
- # NOTES.md
443
-
444
- - (empty)
445
-
446
-
447
- # --- role: educator ---
448
- educator.tools: |
449
- # TOOLS.md
450
-
451
- - (empty)
452
-
453
- educator.status: |
454
- # STATUS.md
455
-
456
- - (empty)
457
-
458
- educator.notes: |
459
- # NOTES.md
460
-
461
- - (empty)
462
-
463
-
464
- files:
465
- - path: SOUL.md
466
- template: soul
467
- mode: createOnly
468
- - path: AGENTS.md
469
- template: agents
470
- mode: createOnly
471
- - path: TOOLS.md
472
- template: tools
473
- mode: createOnly
474
- - path: STATUS.md
475
- template: status
476
- mode: createOnly
477
- - path: NOTES.md
478
- template: notes
479
- mode: createOnly
480
-
481
- # Memory / continuity (team-level)
482
- - path: notes/memory-policy.md
483
- template: sharedContext.memoryPolicy
484
- mode: createOnly
485
- - path: notes/plan.md
486
- template: sharedContext.plan
487
- mode: createOnly
488
- - path: notes/status.md
489
- template: sharedContext.status
490
- mode: createOnly
491
- - path: shared-context/priorities.md
492
- template: sharedContext.priorities
493
- mode: createOnly
494
- - path: shared-context/agent-outputs/README.md
495
- template: sharedContext.agentOutputsReadme
496
- mode: createOnly
497
-
498
-
499
- tools:
500
- profile: "messaging"
501
- allow: ["group:fs", "group:web"]
502
- deny: ["exec"]
503
- ---
504
-
505
- # Clinic Team Recipe
506
-
507
- Bundled team recipe.
508
-
509
- ## Files
510
- - Creates a shared team workspace under `~/.openclaw/workspace-<teamId>/` (example: `~/.openclaw/workspace-clinic-team-team/`).
511
- - Creates per-role directories under `roles/<role>/` for: `SOUL.md`, `AGENTS.md`, `TOOLS.md`, `STATUS.md`, `NOTES.md`.
512
- - Creates shared team folders like `inbox/`, `outbox/`, `notes/`, `shared-context/`, and `work/` lanes (varies slightly by recipe).
513
-
514
- ## Tooling
515
- - Tool policies are defined per role in the recipe frontmatter (`agents[].tools`).
516
- - Observed defaults in this recipe:
517
- - profiles: coding
518
- - allow groups: group:fs, group:runtime, group:web
519
- - deny: exec
520
- - Safety note: most bundled teams default to denying `exec` unless a role explicitly needs it.
521
-