@bendyline/gilde 0.1.71 → 0.1.72
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/authoring/tactical/books/apply-review-findings.json +2 -0
- package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.3/craftbook.json +604 -0
- package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.3/test.json +290 -0
- package/data/craftbook-templates/co/code-review/versions/1.0.2/craftbook.json +230 -0
- package/data/craftbook-templates/co/code-review/versions/1.0.2/test.json +252 -0
- package/data/craftbook-templates/co/content-accuracy-review/versions/1.1.0/craftbook.json +311 -0
- package/data/craftbook-templates/co/content-accuracy-review/versions/1.1.0/test.json +167 -0
- package/data/craftbook-templates/eb/ebook-compile/versions/1.1.0/craftbook.json +332 -0
- package/data/craftbook-templates/eb/ebook-compile/versions/1.1.0/test.json +111 -0
- package/data/craftbook-templates/fa/faq-from-docs/versions/1.1.0/craftbook.json +245 -0
- package/data/craftbook-templates/fa/faq-from-docs/versions/1.1.0/test.json +113 -0
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/me/meeting-minutes/versions/1.1.0/craftbook.json +246 -0
- package/data/craftbook-templates/me/meeting-minutes/versions/1.1.0/test.json +113 -0
- package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.1.0/craftbook.json +245 -0
- package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.1.0/test.json +113 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/versions/1.0.2/craftbook.json +243 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/versions/1.0.2/test.json +120 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.12/craftbook.json +581 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.12/test.json +240 -0
- package/data/craftbook-templates/pr/press-release/versions/1.0.4/craftbook.json +281 -0
- package/data/craftbook-templates/pr/press-release/versions/1.0.4/test.json +356 -0
- package/data/craftbook-templates/st/standup-summary/versions/1.1.0/craftbook.json +249 -0
- package/data/craftbook-templates/st/standup-summary/versions/1.1.0/test.json +113 -0
- package/data/craftbook-templates/we/weekly-review/versions/1.0.4/craftbook.json +223 -0
- package/data/craftbook-templates/we/weekly-review/versions/1.0.4/test.json +110 -0
- package/package.json +1 -1
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "AP-style press release from news brief",
|
|
4
|
+
"objective": "Measure whether the press-release craftbook scopes the five Ws and writes a factual, standard-format release with quote, boilerplate, contact, and end mark.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"corpus"
|
|
7
|
+
],
|
|
8
|
+
"prompt": "In the `Press Release Eval` project, read `source/news-brief.md` and write `press-release.md`. Use a standard headline, subhead, dateline, inverted-pyramid lede, attributed quote, boilerplate, media contact, and closing ###. Keep it factual and avoid promotional hype. Use the source boilerplate sentence exactly, without expanding Boreal Desk beyond the brief.",
|
|
9
|
+
"setup": {
|
|
10
|
+
"projectName": "Press Release Eval",
|
|
11
|
+
"about": "Self-contained eval project for press-release. The approved news facts are in workspace/source/news-brief.md.",
|
|
12
|
+
"missionObjectives": "Write a factual AP-style press release from seeded facts with all standard structural elements.",
|
|
13
|
+
"files": [
|
|
14
|
+
{
|
|
15
|
+
"path": "source/news-brief.md",
|
|
16
|
+
"content": "# News brief\n\nCompany: Boreal Desk, maker of workflow software for independent design studios.\nNews: Boreal Desk is launching HarborCRM guided returns intake for Pro accounts.\nTiming: June 28, 2026.\nLocation/dateline: BOSTON, Mass.\nWhy now: a March pilot across 18 home-office accessory SKUs cut median first response from 18 hours to 6 hours and reduced preventable refund leakage from 14.2% to 8.9%.\nQuote: \"Guided intake gives support teams the context they need before the first reply,\" said Maya Chen, VP of Product at Boreal Desk.\nBoilerplate: Boreal Desk builds practical operations tools for independent design studios.\nMedia contact: press@borealdesk.example, Lena Moore.\n"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"worker": {
|
|
20
|
+
"name": "Roos",
|
|
21
|
+
"role": "PR Writer"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"mocks": [],
|
|
25
|
+
"success": {
|
|
26
|
+
"summary": "workspace/press-release.md follows standard release structure with dateline, lede, quote, metrics, boilerplate, contact, ###, and no hype.",
|
|
27
|
+
"deliverables": [
|
|
28
|
+
{
|
|
29
|
+
"path": "press-release.md",
|
|
30
|
+
"kind": "markdown-doc",
|
|
31
|
+
"minBytes": 1100,
|
|
32
|
+
"checks": [
|
|
33
|
+
{
|
|
34
|
+
"kind": "contains",
|
|
35
|
+
"file": "press-release.md",
|
|
36
|
+
"pattern": "(?:^|\\n)#{1,3}\\s+\\S",
|
|
37
|
+
"flags": "i"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"kind": "contains",
|
|
41
|
+
"file": "press-release.md",
|
|
42
|
+
"pattern": "BOSTON, Mass\\.?\\s*(?:,|[-\\u2013\\u2014])\\s*June 28, 2026",
|
|
43
|
+
"flags": "i",
|
|
44
|
+
"label": "include a dated dateline such as \"BOSTON, Mass., June 28, 2026\""
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"kind": "contains",
|
|
48
|
+
"file": "press-release.md",
|
|
49
|
+
"pattern": "Maya Chen",
|
|
50
|
+
"flags": "i",
|
|
51
|
+
"label": "include the approved quote speaker Maya Chen"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"kind": "contains",
|
|
55
|
+
"file": "press-release.md",
|
|
56
|
+
"pattern": "VP of Product",
|
|
57
|
+
"flags": "i",
|
|
58
|
+
"label": "include Maya Chen title: VP of Product"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"kind": "contains",
|
|
62
|
+
"file": "press-release.md",
|
|
63
|
+
"pattern": "18\\s*hours",
|
|
64
|
+
"flags": "i",
|
|
65
|
+
"label": "include the source metric: 18 hours"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"kind": "contains",
|
|
69
|
+
"file": "press-release.md",
|
|
70
|
+
"pattern": "(?:6|six)\\s*hours",
|
|
71
|
+
"flags": "i",
|
|
72
|
+
"label": "include the source metric: 6 hours"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"kind": "contains",
|
|
76
|
+
"file": "press-release.md",
|
|
77
|
+
"pattern": "14\\.2%",
|
|
78
|
+
"flags": "i",
|
|
79
|
+
"label": "include the source metric: 14.2%"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"kind": "contains",
|
|
83
|
+
"file": "press-release.md",
|
|
84
|
+
"pattern": "8\\.9%",
|
|
85
|
+
"flags": "i",
|
|
86
|
+
"label": "include the source metric: 8.9%"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"kind": "contains",
|
|
90
|
+
"file": "press-release.md",
|
|
91
|
+
"pattern": "About Boreal Desk",
|
|
92
|
+
"flags": "i",
|
|
93
|
+
"label": "include an \"About Boreal Desk\" boilerplate heading"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"kind": "contains",
|
|
97
|
+
"file": "press-release.md",
|
|
98
|
+
"pattern": "Boreal Desk builds practical operations tools for independent design studios\\.",
|
|
99
|
+
"flags": "i",
|
|
100
|
+
"label": "include the approved boilerplate sentence exactly"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"kind": "notContains",
|
|
104
|
+
"file": "press-release.md",
|
|
105
|
+
"pattern": "Boreal Desk builds practical operations tools for independent design studios\\s*,",
|
|
106
|
+
"flags": "i",
|
|
107
|
+
"label": "do not expand the approved boilerplate sentence"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"kind": "contains",
|
|
111
|
+
"file": "press-release.md",
|
|
112
|
+
"pattern": "Media Contact|Media contact",
|
|
113
|
+
"flags": "i",
|
|
114
|
+
"label": "include a Media Contact block"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"kind": "contains",
|
|
118
|
+
"file": "press-release.md",
|
|
119
|
+
"pattern": "press@borealdesk\\.example",
|
|
120
|
+
"flags": "i",
|
|
121
|
+
"label": "include the approved media contact email"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"kind": "contains",
|
|
125
|
+
"file": "press-release.md",
|
|
126
|
+
"pattern": "(?:^|\\n)###\\s*$",
|
|
127
|
+
"flags": "i",
|
|
128
|
+
"label": "end the release with a standalone ### line"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"kind": "notContains",
|
|
132
|
+
"file": "press-release.md",
|
|
133
|
+
"pattern": "revolutioniz|game-changing|world-class|guaranteed|transformative|transforming|dramatic|innovative|moderniz|significant(?:ly)?|thorough|rigorous(?:ly)?|major (?:update|step)|massive (?:step|update)|slash(?:es|ed|ing)?|75%|proactive instead of reactive|custom-printed|specialized equipment|large enterprise(?:s)?|creative agencies|enterprise-level|price tag|555",
|
|
134
|
+
"flags": "i",
|
|
135
|
+
"label": "remove promotional hype and invented details not present in the brief"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"kind": "unsupportedClaims",
|
|
139
|
+
"file": "press-release.md",
|
|
140
|
+
"sourceFiles": [
|
|
141
|
+
"source/news-brief.md"
|
|
142
|
+
],
|
|
143
|
+
"patterns": [
|
|
144
|
+
{
|
|
145
|
+
"pattern": "fundamentally(?: changes?| changing| changed)?",
|
|
146
|
+
"label": "avoid sweeping overclaims"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"pattern": "customer experience",
|
|
150
|
+
"label": "avoid invented benefit claims"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"pattern": "professional,?\\s+high-volume clients?",
|
|
154
|
+
"label": "avoid invented audience claims"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"pattern": "high-volume clients?",
|
|
158
|
+
"label": "avoid invented audience claims"
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"pattern": "enhanc(?:e[sd]?|ing|ement|ements)?",
|
|
162
|
+
"label": "avoid vague benefit claims"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"pattern": "intuitive",
|
|
166
|
+
"label": "avoid invented ease-of-use claims"
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"pattern": "efficien(?:cy|tly|t)",
|
|
170
|
+
"label": "avoid unsupported efficiency claims"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"pattern": "streamlin(?:e[sd]?|ing)|streamlined efficiency",
|
|
174
|
+
"label": "avoid unsupported efficiency claims"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"pattern": "moderniz(?:e[sd]?|ing|ation|ations)?",
|
|
178
|
+
"label": "avoid vague market claims"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"pattern": "successful(?:ly)?",
|
|
182
|
+
"label": "avoid unsupported outcome claims"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"pattern": "demonstrable|demonstrat(?:e[sd]?|ing)",
|
|
186
|
+
"label": "avoid unsupported proof claims"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"pattern": "effectively validate[sd]?|validat(?:e[sd]?|ing|ion)",
|
|
190
|
+
"label": "avoid unsupported validation claims"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"pattern": "major\\s+(?:step|update|milestone|move)",
|
|
194
|
+
"label": "avoid inflated importance claims"
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"pattern": "powerful",
|
|
198
|
+
"label": "avoid vague promotional adjectives"
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"pattern": "empower(?:s|ed|ing|ment)?",
|
|
202
|
+
"label": "avoid promotional benefit framing"
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"pattern": "resolution times?",
|
|
206
|
+
"label": "avoid unsupported resolution claims"
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"pattern": "enterprise complexity|enterprise-level|large enterprises?",
|
|
210
|
+
"label": "avoid invented market segment claims"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"pattern": "customer satisfaction",
|
|
214
|
+
"label": "avoid invented outcome claims"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"pattern": "customer refunds?",
|
|
218
|
+
"label": "avoid invented domain claims"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"pattern": "issue resolution|service quality|client service",
|
|
222
|
+
"label": "avoid invented service outcome claims"
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"pattern": "back-and-forth communication",
|
|
226
|
+
"label": "avoid invented communication outcome claims"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"pattern": "critical context",
|
|
230
|
+
"label": "avoid invented urgency claims"
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"pattern": "lost revenue",
|
|
234
|
+
"label": "avoid unsupported financial framing"
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"pattern": "small businesses",
|
|
238
|
+
"label": "avoid invented audience claims"
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"pattern": "growing independent businesses",
|
|
242
|
+
"label": "avoid invented audience claims"
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
"pattern": "financial management",
|
|
246
|
+
"label": "avoid invented domain claims"
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"pattern": "e-?commerce operations?",
|
|
250
|
+
"label": "avoid invented domain claims"
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"pattern": "complex projects?",
|
|
254
|
+
"label": "avoid invented domain claims"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"pattern": "complex business tasks?",
|
|
258
|
+
"label": "avoid invented domain claims"
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"pattern": "client relations",
|
|
262
|
+
"label": "avoid invented domain claims"
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"pattern": "project management",
|
|
266
|
+
"label": "avoid invented product-scope claims"
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"pattern": "client communication",
|
|
270
|
+
"label": "avoid invented product-scope claims"
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
"pattern": "back-office infrastructure",
|
|
274
|
+
"label": "avoid invented product-scope claims"
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"pattern": "integrated software solutions?",
|
|
278
|
+
"label": "avoid invented product-scope claims"
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"pattern": "operational demands?",
|
|
282
|
+
"label": "avoid invented domain claims"
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"pattern": "business processes?",
|
|
286
|
+
"label": "avoid invented domain claims"
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
"pattern": "unique workflow demands?",
|
|
290
|
+
"label": "avoid invented audience claims"
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"pattern": "operate leanly",
|
|
294
|
+
"label": "avoid unsupported operating claims"
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
"pattern": "creative professionals",
|
|
298
|
+
"label": "avoid invented audience claims"
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"pattern": "customiz(?:e[sd]?|able|ing|ation)",
|
|
302
|
+
"label": "avoid invented feature claims"
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"pattern": "market-leading|best-in-class",
|
|
306
|
+
"label": "avoid unsupported ranking claims"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"pattern": "robust",
|
|
310
|
+
"label": "avoid vague promotional adjectives"
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
"pattern": "seamless",
|
|
314
|
+
"label": "avoid vague promotional adjectives"
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"pattern": "scalable",
|
|
318
|
+
"label": "avoid unsupported capability claims"
|
|
319
|
+
}
|
|
320
|
+
],
|
|
321
|
+
"flags": "i"
|
|
322
|
+
}
|
|
323
|
+
]
|
|
324
|
+
}
|
|
325
|
+
]
|
|
326
|
+
},
|
|
327
|
+
"rubric": {
|
|
328
|
+
"artifact": {
|
|
329
|
+
"path": "press-release.md",
|
|
330
|
+
"kind": "markdown"
|
|
331
|
+
},
|
|
332
|
+
"axes": [
|
|
333
|
+
{
|
|
334
|
+
"name": "grounding",
|
|
335
|
+
"description": "Seeded facts appear faithfully and the source is cited."
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"name": "structure",
|
|
339
|
+
"description": "Sections progress logically for the artifact class."
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"name": "completeness",
|
|
343
|
+
"description": "Required elements (risks, next actions, scope) are all present."
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"name": "tone",
|
|
347
|
+
"description": "The register fits the audience and artifact class."
|
|
348
|
+
}
|
|
349
|
+
]
|
|
350
|
+
},
|
|
351
|
+
"qualityFocus": [
|
|
352
|
+
"standard format",
|
|
353
|
+
"five Ws",
|
|
354
|
+
"factual tone"
|
|
355
|
+
]
|
|
356
|
+
}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "standup-summary",
|
|
3
|
+
"name": "Standup / Team Update Summary",
|
|
4
|
+
"description": "Condense a pile of raw team updates (standup messages, async check-ins, channel dumps) into one clean summary grouped by person or workstream, surfacing blockers and decisions. Scopes the grouping axis and summary shape FIRST (by-person vs by-project, what counts as a blocker, the yesterday/today/blockers frame), then a copywriter compresses every raw update into that frame without dropping anyone. The scope-first step prevents a 4B model from rambling and guarantees blockers get their own callout section instead of being buried. Use for daily standup summaries, async update rollups, team check-in digests, and turning Slack threads into a readable recap.\n\nIt works on the team updates you choose when you launch it: a folder in this project, or files you pick from your computer.\n\nA gallery craftbook generated from an archetype spec. It runs\n`phase → (per-phase gate) → … → evaluate → (loop) → finish`. Each build\nphase that produces a checkable artifact is followed by a **runtime\ngate-checkpoint** — the runtime verifies the artifact and routes with no\nmodel turn, looping back to redo the phase on a miss. The final `evaluate`\nstep holds a static deliverable gate plus a reviewer QA pass. What it adds\nover the generic `build-loop`: a specialist role per phase, a\ndomain-correct ordering, and a concrete per-phase quality bar.\n\nDeliverables marked \"artifact\" land in the project's artifacts drawer (`write_artifact` / `read_artifact`), not the shipped workspace — review output is not product source.\n\nPhases:\n\n1. Scope the summary (planner) — lock the grouping axis, frame, and blocker definition → gated on artifact `{{workPath}}/scope.md` (markdown-notes)\n2. Summarize (copywriter) — compress every update into the locked frame → gated on `summary.md` (markdown-doc)\n\nThe gates never advance with an unmet criterion, and loop back to the\nowning phase to fix named gaps.\n",
|
|
5
|
+
"entryStepId": "scope",
|
|
6
|
+
"triggers": [
|
|
7
|
+
"summarize standup",
|
|
8
|
+
"team update summary",
|
|
9
|
+
"async check-in rollup",
|
|
10
|
+
"standup recap",
|
|
11
|
+
"summarize these updates"
|
|
12
|
+
],
|
|
13
|
+
"paramSchema": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"required": [
|
|
16
|
+
"source"
|
|
17
|
+
],
|
|
18
|
+
"properties": {
|
|
19
|
+
"source": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"title": "Team updates",
|
|
22
|
+
"description": "The raw updates to summarize, one file per person or channel. A folder in this project, or files you pick from your computer.",
|
|
23
|
+
"input": {
|
|
24
|
+
"kind": "folder",
|
|
25
|
+
"accept": [
|
|
26
|
+
".md",
|
|
27
|
+
".markdown",
|
|
28
|
+
".txt",
|
|
29
|
+
".html",
|
|
30
|
+
".htm",
|
|
31
|
+
".docx",
|
|
32
|
+
".pdf"
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"workPath": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"title": "Working folder",
|
|
39
|
+
"description": "Per-task working folder in the artifacts drawer. Defaults to this task's own folder so runs never collide; override with a stable name when you deliberately want runs to share files.",
|
|
40
|
+
"default": "{{task.dir}}"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"steps": [
|
|
45
|
+
{
|
|
46
|
+
"id": "scope",
|
|
47
|
+
"name": "Scope the summary",
|
|
48
|
+
"description": "lock the grouping axis, frame, and blocker definition",
|
|
49
|
+
"prompt": "Decide the summary's shape before compressing anything. First read every file of the `source` input, the raw team updates; its complete list is `{{task.dir}}/inputs/source.json`. (1) Pick the grouping axis — by person or by workstream/project — based on the raw input. (2) Lock the per-item frame (default: Yesterday / Today / Blockers, or Done / Doing / Blocked). (3) Define what counts as a blocker (an explicit ask, a dependency on someone, the words blocked/stuck/waiting) so blockers can be lifted into a dedicated top section. (4) Decide a Decisions callout if the updates contain any. Write an acceptance-criteria checklist ('every contributor/workstream from the input appears', 'each item uses the locked frame', 'all blockers are also collected into one top Blockers section', 'no raw update is dropped', 'one line per update item') plus the grouping + frame to {{workPath}}/scope.md via write_task_note AND the produces path. No summarizing yet.\n\nThe deliverable `{{workPath}}/scope.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
|
|
50
|
+
"suggestedRole": "planner",
|
|
51
|
+
"advanceWhen": {
|
|
52
|
+
"file": "{{workPath}}/scope.md",
|
|
53
|
+
"minBytes": 1,
|
|
54
|
+
"sniff": "nonempty",
|
|
55
|
+
"artifact": true
|
|
56
|
+
},
|
|
57
|
+
"gate": {
|
|
58
|
+
"at": "completion",
|
|
59
|
+
"checks": [
|
|
60
|
+
{
|
|
61
|
+
"kind": "minBytes",
|
|
62
|
+
"file": "{{workPath}}/scope.md",
|
|
63
|
+
"bytes": 120,
|
|
64
|
+
"artifact": true
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"kind": "sniff",
|
|
68
|
+
"file": "{{workPath}}/scope.md",
|
|
69
|
+
"sniff": "nonempty",
|
|
70
|
+
"artifact": true
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"onReject": "scope",
|
|
74
|
+
"maxAttempts": 3
|
|
75
|
+
},
|
|
76
|
+
"next": "summarize",
|
|
77
|
+
"toolPolicy": {
|
|
78
|
+
"disallowBuiltinToolsets": [
|
|
79
|
+
"ai-apps",
|
|
80
|
+
"archives",
|
|
81
|
+
"audio",
|
|
82
|
+
"browser-automation",
|
|
83
|
+
"code-execution",
|
|
84
|
+
"craftbooks",
|
|
85
|
+
"data-tables",
|
|
86
|
+
"entity-intel",
|
|
87
|
+
"git",
|
|
88
|
+
"image-intel",
|
|
89
|
+
"images",
|
|
90
|
+
"role-delegation",
|
|
91
|
+
"role-delegation-escalation",
|
|
92
|
+
"security-intel",
|
|
93
|
+
"team-management",
|
|
94
|
+
"videos",
|
|
95
|
+
"web",
|
|
96
|
+
"workspace-fs-write"
|
|
97
|
+
],
|
|
98
|
+
"outputMedium": "artifact",
|
|
99
|
+
"additionalOutputMedia": [
|
|
100
|
+
"task-note"
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
"consumes": [
|
|
104
|
+
{
|
|
105
|
+
"file": "{{task.dir}}/inputs/source.json",
|
|
106
|
+
"artifact": true
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "summarize",
|
|
112
|
+
"name": "Summarize",
|
|
113
|
+
"description": "compress every update into the locked frame",
|
|
114
|
+
"prompt": "First open `{{workPath}}/scope.md` with `read_artifact`: it is the earlier work this step builds on. Write summary.md from the raw updates in the `source` input using the locked grouping and frame. (1) Open with a 'Blockers & asks' section that lifts EVERY blocker (per the locked definition) to the top, each tagged with who is blocked and who they need. (2) Then one block per person/workstream in the locked frame, one tight line per item — strip filler, keep the signal (what shipped, what's next, hard numbers). (3) Add a Decisions section only if the input contains decisions. Include every contributor from the input even if their update was thin (write '(no update)'). Invent nothing; if an item is ambiguous, keep it verbatim-ish rather than guessing. On a loop-back, fix only the flagged blocks. Write the path and a count (contributors covered, blockers surfaced) to notes via write_task_note.",
|
|
115
|
+
"suggestedRole": "copywriter",
|
|
116
|
+
"advanceWhen": {
|
|
117
|
+
"file": "summary.md",
|
|
118
|
+
"minBytes": 1,
|
|
119
|
+
"sniff": "nonempty"
|
|
120
|
+
},
|
|
121
|
+
"gate": {
|
|
122
|
+
"at": "completion",
|
|
123
|
+
"checks": [
|
|
124
|
+
{
|
|
125
|
+
"kind": "minBytes",
|
|
126
|
+
"file": "summary.md",
|
|
127
|
+
"bytes": 500
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
"scripts": [
|
|
131
|
+
{
|
|
132
|
+
"name": "checkContains",
|
|
133
|
+
"scope": "standard",
|
|
134
|
+
"inputs": {
|
|
135
|
+
"file": "summary.md",
|
|
136
|
+
"pattern": "(?:^|\\n)#{1,3}\\s+\\S",
|
|
137
|
+
"flags": "i"
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
],
|
|
141
|
+
"onReject": "summarize",
|
|
142
|
+
"maxAttempts": 4
|
|
143
|
+
},
|
|
144
|
+
"next": "evaluate",
|
|
145
|
+
"toolPolicy": {
|
|
146
|
+
"disallowBuiltinToolsets": [
|
|
147
|
+
"ai-apps",
|
|
148
|
+
"archives",
|
|
149
|
+
"audio",
|
|
150
|
+
"browser-automation",
|
|
151
|
+
"code-execution",
|
|
152
|
+
"craftbooks",
|
|
153
|
+
"data-tables",
|
|
154
|
+
"entity-intel",
|
|
155
|
+
"git",
|
|
156
|
+
"image-intel",
|
|
157
|
+
"images",
|
|
158
|
+
"role-delegation",
|
|
159
|
+
"role-delegation-escalation",
|
|
160
|
+
"security-intel",
|
|
161
|
+
"team-management",
|
|
162
|
+
"videos",
|
|
163
|
+
"web"
|
|
164
|
+
],
|
|
165
|
+
"outputMedium": "workspace",
|
|
166
|
+
"additionalOutputMedia": [
|
|
167
|
+
"task-note"
|
|
168
|
+
]
|
|
169
|
+
},
|
|
170
|
+
"consumes": [
|
|
171
|
+
{
|
|
172
|
+
"file": "{{workPath}}/scope.md",
|
|
173
|
+
"artifact": true
|
|
174
|
+
}
|
|
175
|
+
]
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"id": "evaluate",
|
|
179
|
+
"name": "Evaluate",
|
|
180
|
+
"description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
|
|
181
|
+
"prompt": "QA summary.md against the locked criteria. (1) Cross-check the contributor/workstream list against the raw input — every one present? FAIL on any drop. (2) Confirm a top Blockers section exists and that every blocker matching the locked definition appears there, attributed. (3) Confirm each item uses the locked frame and is one tight line (no paragraphs). (4) Spot-check 3 items against the raw input for accuracy and no fabrication. (5) Confirm Decisions appears iff the input had decisions. Write PASS/FAIL per criterion with the specific gaps.\n\nThen route — this is the whole point of the loop:\n\n- **Every criterion PASSES →** call `advance_task_step({ ref, stepId: \"evaluate\", next: \"finish\" })`.\n- **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: \"evaluate\", next: \"summarize\" })` to loop back. The builder fixes exactly those gaps.\n\nNever route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.",
|
|
182
|
+
"suggestedRole": "reviewer",
|
|
183
|
+
"consumes": [
|
|
184
|
+
{
|
|
185
|
+
"file": "summary.md"
|
|
186
|
+
}
|
|
187
|
+
],
|
|
188
|
+
"next": "summarize",
|
|
189
|
+
"toolPolicy": {
|
|
190
|
+
"disallowBuiltinToolsets": [
|
|
191
|
+
"ai-apps",
|
|
192
|
+
"archives",
|
|
193
|
+
"audio",
|
|
194
|
+
"browser-automation",
|
|
195
|
+
"code-execution",
|
|
196
|
+
"craftbooks",
|
|
197
|
+
"data-tables",
|
|
198
|
+
"entity-intel",
|
|
199
|
+
"git",
|
|
200
|
+
"image-intel",
|
|
201
|
+
"images",
|
|
202
|
+
"role-delegation",
|
|
203
|
+
"role-delegation-escalation",
|
|
204
|
+
"security-intel",
|
|
205
|
+
"team-management",
|
|
206
|
+
"videos",
|
|
207
|
+
"web",
|
|
208
|
+
"workspace-fs-write"
|
|
209
|
+
],
|
|
210
|
+
"outputMedium": "task-note"
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"id": "finish",
|
|
215
|
+
"name": "Finish",
|
|
216
|
+
"description": "All acceptance criteria met. Stamp a short summary and report DONE.",
|
|
217
|
+
"prompt": "Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.",
|
|
218
|
+
"suggestedRole": "developer",
|
|
219
|
+
"terminal": true,
|
|
220
|
+
"toolPolicy": {
|
|
221
|
+
"disallowBuiltinToolsets": [
|
|
222
|
+
"ai-apps",
|
|
223
|
+
"archives",
|
|
224
|
+
"artifacts",
|
|
225
|
+
"audio",
|
|
226
|
+
"browser-automation",
|
|
227
|
+
"code-execution",
|
|
228
|
+
"craftbooks",
|
|
229
|
+
"data-tables",
|
|
230
|
+
"entity-intel",
|
|
231
|
+
"git",
|
|
232
|
+
"image-intel",
|
|
233
|
+
"images",
|
|
234
|
+
"role-delegation",
|
|
235
|
+
"role-delegation-escalation",
|
|
236
|
+
"security-intel",
|
|
237
|
+
"team-management",
|
|
238
|
+
"videos",
|
|
239
|
+
"web",
|
|
240
|
+
"workspace-fs-write"
|
|
241
|
+
],
|
|
242
|
+
"outputMedium": "task-note"
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
],
|
|
246
|
+
"version": "1.1.0",
|
|
247
|
+
"releasedAt": "2026-09-24T12:00:00Z",
|
|
248
|
+
"minGezelVersion": "1.26267"
|
|
249
|
+
}
|