@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/README.md +263 -145
- package/docs/AGENTS_AND_SKILLS.md +128 -173
- package/docs/BUNDLED_RECIPES.md +117 -210
- package/docs/CLAWCIPES_KITCHEN.md +71 -27
- package/docs/COMMANDS.md +250 -216
- package/docs/INSTALLATION.md +167 -45
- package/docs/OUTBOUND_POSTING.md +140 -50
- package/docs/RECIPE_FORMAT.md +234 -68
- package/docs/TEAM_WORKFLOW.md +196 -84
- package/docs/TUTORIAL_CREATE_RECIPE.md +118 -52
- package/docs/WORKFLOW_RUNS_FILE_FIRST.md +212 -73
- package/docs/releasing.md +116 -23
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/recipes/default/clinic-team.md +0 -521
- package/recipes/default/construction-team.md +0 -521
- package/recipes/default/crypto-trader-team.md +0 -521
- package/recipes/default/financial-planner-team.md +0 -522
- package/recipes/default/law-firm-team.md +0 -524
- package/recipes/default/stock-trader-team.md +0 -444
package/docs/releasing.md
CHANGED
|
@@ -1,42 +1,135 @@
|
|
|
1
1
|
# Releasing `@jiggai/recipes`
|
|
2
2
|
|
|
3
|
-
This repo
|
|
3
|
+
This repo publishes to npm as:
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
```text
|
|
6
|
+
@jiggai/recipes
|
|
7
|
+
```
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
This is the practical release guide.
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
- Value: an npm access token with publish rights for the `@jiggai` scope
|
|
11
|
+
---
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
## Before you release
|
|
13
14
|
|
|
14
|
-
|
|
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
|
-
|
|
21
|
+
Useful checks:
|
|
17
22
|
|
|
18
|
-
|
|
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
|
-
|
|
30
|
+
---
|
|
21
31
|
|
|
22
|
-
|
|
32
|
+
## Recommended release flow
|
|
23
33
|
|
|
24
|
-
|
|
34
|
+
From `main`:
|
|
25
35
|
|
|
26
|
-
|
|
36
|
+
```bash
|
|
37
|
+
git checkout main
|
|
38
|
+
git pull --ff-only
|
|
39
|
+
npm version patch
|
|
40
|
+
```
|
|
27
41
|
|
|
28
|
-
|
|
42
|
+
Or use `minor` / `major` when appropriate:
|
|
29
43
|
|
|
30
|
-
|
|
44
|
+
```bash
|
|
45
|
+
npm version minor
|
|
46
|
+
npm version major
|
|
47
|
+
```
|
|
31
48
|
|
|
32
|
-
|
|
49
|
+
Then push commit + tag:
|
|
33
50
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
- `npm publish`
|
|
51
|
+
```bash
|
|
52
|
+
git push origin main --follow-tags
|
|
53
|
+
```
|
|
38
54
|
|
|
39
|
-
|
|
55
|
+
GitHub Actions will run the normal publish workflow.
|
|
40
56
|
|
|
41
|
-
|
|
42
|
-
|
|
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
|
+
```
|
package/openclaw.plugin.json
CHANGED
package/package.json
CHANGED
|
@@ -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
|
-
|