factoryhub 0.0.0-stage → 0.1.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 (99) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +16 -0
  3. package/README.md +189 -2
  4. package/factories/README.md +17 -0
  5. package/factories/client-file-readiness/README.md +3 -0
  6. package/factories/client-file-readiness/agents/analyst/agent.md +10 -0
  7. package/factories/client-file-readiness/agents/reviewer/agent.md +10 -0
  8. package/factories/client-file-readiness/agents/writer/agent.md +11 -0
  9. package/factories/client-file-readiness/factory.yaml +12 -0
  10. package/factories/client-file-readiness/flow.yaml +56 -0
  11. package/factories/competitor-teardown/README.md +3 -0
  12. package/factories/competitor-teardown/agents/analyst/agent.md +10 -0
  13. package/factories/competitor-teardown/agents/researcher/agent.md +11 -0
  14. package/factories/competitor-teardown/agents/reviewer/agent.md +10 -0
  15. package/factories/competitor-teardown/agents/writer/agent.md +11 -0
  16. package/factories/competitor-teardown/factory.yaml +11 -0
  17. package/factories/competitor-teardown/flow.yaml +75 -0
  18. package/factories/homepage-audit/README.md +3 -0
  19. package/factories/homepage-audit/agents/analyst/agent.md +10 -0
  20. package/factories/homepage-audit/agents/researcher/agent.md +11 -0
  21. package/factories/homepage-audit/agents/reviewer/agent.md +10 -0
  22. package/factories/homepage-audit/agents/writer/agent.md +11 -0
  23. package/factories/homepage-audit/factory.yaml +11 -0
  24. package/factories/homepage-audit/flow.yaml +77 -0
  25. package/factories/inbox-triage/README.md +3 -0
  26. package/factories/inbox-triage/agents/analyst/agent.md +10 -0
  27. package/factories/inbox-triage/agents/reviewer/agent.md +10 -0
  28. package/factories/inbox-triage/agents/writer/agent.md +11 -0
  29. package/factories/inbox-triage/factory.yaml +11 -0
  30. package/factories/inbox-triage/flow.yaml +57 -0
  31. package/factories/index.json +356 -0
  32. package/factories/launch-kit/README.md +3 -0
  33. package/factories/launch-kit/agents/reviewer/agent.md +10 -0
  34. package/factories/launch-kit/agents/strategist/agent.md +10 -0
  35. package/factories/launch-kit/agents/writer/agent.md +11 -0
  36. package/factories/launch-kit/factory.yaml +12 -0
  37. package/factories/launch-kit/flow.yaml +75 -0
  38. package/factories/meeting-to-actions/CHANGELOG.md +7 -0
  39. package/factories/meeting-to-actions/README.md +15 -0
  40. package/factories/meeting-to-actions/agents/analyst/agent.md +10 -0
  41. package/factories/meeting-to-actions/agents/reviewer/agent.md +10 -0
  42. package/factories/meeting-to-actions/agents/writer/agent.md +11 -0
  43. package/factories/meeting-to-actions/factory.yaml +11 -0
  44. package/factories/meeting-to-actions/flow.yaml +53 -0
  45. package/factories/meeting-to-actions/mindburn.requirements.yaml +8 -0
  46. package/factories/meeting-to-actions/mindburn.tests.yaml +16 -0
  47. package/factories/outreach-pack/README.md +3 -0
  48. package/factories/outreach-pack/agents/reviewer/agent.md +5 -0
  49. package/factories/outreach-pack/agents/writer/agent.md +5 -0
  50. package/factories/outreach-pack/factory.yaml +9 -0
  51. package/factories/outreach-pack/flow.yaml +42 -0
  52. package/factories/prospect-brief/README.md +3 -0
  53. package/factories/prospect-brief/agents/researcher/agent.md +11 -0
  54. package/factories/prospect-brief/agents/reviewer/agent.md +10 -0
  55. package/factories/prospect-brief/agents/strategist/agent.md +10 -0
  56. package/factories/prospect-brief/agents/writer/agent.md +11 -0
  57. package/factories/prospect-brief/factory.yaml +11 -0
  58. package/factories/prospect-brief/flow.yaml +79 -0
  59. package/package.json +79 -4
  60. package/packages/cli/bin/factoryhub.mjs +8 -0
  61. package/packages/cli/package.json +29 -0
  62. package/packages/cli/src/args.mjs +47 -0
  63. package/packages/cli/src/commands/export.mjs +55 -0
  64. package/packages/cli/src/commands/get.mjs +38 -0
  65. package/packages/cli/src/commands/inspect.mjs +66 -0
  66. package/packages/cli/src/commands/list.mjs +29 -0
  67. package/packages/cli/src/commands/mcp.mjs +26 -0
  68. package/packages/cli/src/commands/new.mjs +148 -0
  69. package/packages/cli/src/commands/pack.mjs +97 -0
  70. package/packages/cli/src/commands/resume.mjs +67 -0
  71. package/packages/cli/src/commands/run.mjs +190 -0
  72. package/packages/cli/src/commands/search.mjs +31 -0
  73. package/packages/cli/src/commands/validate.mjs +81 -0
  74. package/packages/cli/src/main.mjs +68 -0
  75. package/packages/cli/src/util.mjs +21 -0
  76. package/packages/engine/lib/catalog.mjs +50 -0
  77. package/packages/engine/lib/hub.mjs +71 -0
  78. package/packages/engine/lib/node.mjs +114 -0
  79. package/packages/engine/lib/providers.mjs +52 -0
  80. package/packages/engine/lib/run.mjs +131 -0
  81. package/packages/engine/lib/skill.mjs +229 -0
  82. package/packages/engine/package.json +39 -0
  83. package/packages/engine/src/author-tests.mjs +78 -0
  84. package/packages/engine/src/compose.mjs +150 -0
  85. package/packages/engine/src/cost.mjs +41 -0
  86. package/packages/engine/src/diagnostics.mjs +21 -0
  87. package/packages/engine/src/factory-engine.mjs +1762 -0
  88. package/packages/engine/src/index.mjs +9 -0
  89. package/packages/engine/src/markdown.mjs +97 -0
  90. package/packages/engine/src/package.mjs +116 -0
  91. package/packages/engine/src/run.mjs +232 -0
  92. package/packages/mcp/bin/factoryhub-mcp.mjs +6 -0
  93. package/packages/mcp/package.json +36 -0
  94. package/packages/mcp/src/server.mjs +280 -0
  95. package/spec/README.md +36 -0
  96. package/spec/factory-format.md +621 -0
  97. package/spec/schema/factory.schema.json +43 -0
  98. package/spec/schema/flow.schema.json +169 -0
  99. package/spec/skill-export.md +126 -0
@@ -0,0 +1,356 @@
1
+ {
2
+ "format": "factoryhub.index/v1",
3
+ "note": "Generated by scripts/generate.mjs from factories/. Do not edit.",
4
+ "factories": [
5
+ {
6
+ "id": "client-file-readiness",
7
+ "title": "Client-file readiness",
8
+ "description": "Compares what a client sent against your checklist, reports what is missing, from the wrong period or unclear, and drafts the message asking for it. Use before starting bookkeeping, tax, audit, onboarding or any work that depends on a client's documents.",
9
+ "version": "1.1.0",
10
+ "license": "MIT",
11
+ "author": "Mindburn Labs",
12
+ "tags": [
13
+ "operations",
14
+ "accounting"
15
+ ],
16
+ "time": "about 2 minutes",
17
+ "path": "factories/client-file-readiness",
18
+ "sha256": "28d5c6dde74137686fd2a77a73b1f7b1947604e009f3f17359d6032072ff133c",
19
+ "runnable": true,
20
+ "inputs": [
21
+ {
22
+ "key": "checklist",
23
+ "type": "longtext",
24
+ "required": true
25
+ },
26
+ {
27
+ "key": "received",
28
+ "type": "longtext",
29
+ "required": true
30
+ },
31
+ {
32
+ "key": "client_and_period",
33
+ "type": "text",
34
+ "required": true
35
+ },
36
+ {
37
+ "key": "deadline",
38
+ "type": "text",
39
+ "required": false
40
+ }
41
+ ],
42
+ "steps": 3,
43
+ "decision": false,
44
+ "agents": [
45
+ "analyst",
46
+ "reviewer",
47
+ "writer"
48
+ ],
49
+ "tools": []
50
+ },
51
+ {
52
+ "id": "competitor-teardown",
53
+ "title": "Competitor teardown",
54
+ "description": "Reads your website and up to three competitors, then writes a decision-ready brief showing where you win, where you lose and what to change this week. Use before a pricing change, a homepage rewrite or a sales call.",
55
+ "version": "1.1.0",
56
+ "license": "MIT",
57
+ "author": "Mindburn Labs",
58
+ "tags": [
59
+ "marketing",
60
+ "research"
61
+ ],
62
+ "time": "about 4 minutes",
63
+ "path": "factories/competitor-teardown",
64
+ "sha256": "b46c7fa922a24b4ed144643be1d792d22f2a7b94374be705bd96b5818f9b6fae",
65
+ "runnable": true,
66
+ "inputs": [
67
+ {
68
+ "key": "your_site",
69
+ "type": "url",
70
+ "required": true
71
+ },
72
+ {
73
+ "key": "competitors",
74
+ "type": "longtext",
75
+ "required": true
76
+ },
77
+ {
78
+ "key": "focus",
79
+ "type": "text",
80
+ "required": false
81
+ }
82
+ ],
83
+ "steps": 5,
84
+ "decision": false,
85
+ "agents": [
86
+ "analyst",
87
+ "researcher",
88
+ "reviewer",
89
+ "writer"
90
+ ],
91
+ "tools": [
92
+ "web_fetch",
93
+ "web_search"
94
+ ]
95
+ },
96
+ {
97
+ "id": "homepage-audit",
98
+ "title": "Homepage audit with fixes",
99
+ "description": "Reads your home page the way a first-time visitor does and returns a prioritised list of fixes with the exact new wording. Use when signups or enquiries are lower than the traffic deserves.",
100
+ "version": "1.2.0",
101
+ "license": "MIT",
102
+ "author": "Mindburn Labs",
103
+ "tags": [
104
+ "marketing",
105
+ "website"
106
+ ],
107
+ "time": "about 3 minutes",
108
+ "path": "factories/homepage-audit",
109
+ "sha256": "1b882f4e96758d6e15dac308d3f517bc927150d0d8f8b988cedefd616e1413c8",
110
+ "runnable": true,
111
+ "inputs": [
112
+ {
113
+ "key": "site",
114
+ "type": "url",
115
+ "required": true
116
+ },
117
+ {
118
+ "key": "goal",
119
+ "type": "text",
120
+ "required": false
121
+ },
122
+ {
123
+ "key": "audience",
124
+ "type": "text",
125
+ "required": false
126
+ }
127
+ ],
128
+ "steps": 4,
129
+ "decision": false,
130
+ "agents": [
131
+ "analyst",
132
+ "researcher",
133
+ "reviewer",
134
+ "writer"
135
+ ],
136
+ "tools": [
137
+ "web_fetch"
138
+ ]
139
+ },
140
+ {
141
+ "id": "inbox-triage",
142
+ "title": "Support inbox triage",
143
+ "description": "Sorts a batch of customer messages by urgency and type, drafts a reply to each in your tone, and lists what needs a human decision. Use on a support or shared inbox that has piled up.",
144
+ "version": "1.1.0",
145
+ "license": "MIT",
146
+ "author": "Mindburn Labs",
147
+ "tags": [
148
+ "support",
149
+ "operations"
150
+ ],
151
+ "time": "about 2 minutes",
152
+ "path": "factories/inbox-triage",
153
+ "sha256": "5b5f8ae0e022ca2b4cd53afef8dd0b40f936f0d95be23f872891e624818104b4",
154
+ "runnable": true,
155
+ "inputs": [
156
+ {
157
+ "key": "messages",
158
+ "type": "longtext",
159
+ "required": true
160
+ },
161
+ {
162
+ "key": "policies",
163
+ "type": "longtext",
164
+ "required": true
165
+ },
166
+ {
167
+ "key": "tone",
168
+ "type": "text",
169
+ "required": false
170
+ }
171
+ ],
172
+ "steps": 4,
173
+ "decision": false,
174
+ "agents": [
175
+ "analyst",
176
+ "reviewer",
177
+ "writer"
178
+ ],
179
+ "tools": []
180
+ },
181
+ {
182
+ "id": "launch-kit",
183
+ "title": "Launch kit",
184
+ "description": "Turns a product description into a launch kit with positioning, a landing page draft, a launch email, three follow-ups and posts for social channels, all in one voice. Use when you have something to launch and no time to write.",
185
+ "version": "1.2.0",
186
+ "license": "MIT",
187
+ "author": "Mindburn Labs",
188
+ "tags": [
189
+ "marketing",
190
+ "launch"
191
+ ],
192
+ "time": "about 4 minutes",
193
+ "path": "factories/launch-kit",
194
+ "sha256": "80c4b2afad0bbd4a21bda4af3bb98ab29b429aaa03551d1af3fe92f7645f1c10",
195
+ "runnable": true,
196
+ "inputs": [
197
+ {
198
+ "key": "product",
199
+ "type": "longtext",
200
+ "required": true
201
+ },
202
+ {
203
+ "key": "audience",
204
+ "type": "text",
205
+ "required": true
206
+ },
207
+ {
208
+ "key": "site",
209
+ "type": "url",
210
+ "required": false
211
+ },
212
+ {
213
+ "key": "launch_offer",
214
+ "type": "text",
215
+ "required": false
216
+ },
217
+ {
218
+ "key": "market_research",
219
+ "type": "longtext",
220
+ "required": false
221
+ }
222
+ ],
223
+ "steps": 6,
224
+ "decision": true,
225
+ "agents": [
226
+ "reviewer",
227
+ "strategist",
228
+ "writer"
229
+ ],
230
+ "tools": [
231
+ "web_fetch"
232
+ ]
233
+ },
234
+ {
235
+ "id": "meeting-to-actions",
236
+ "title": "Meeting to actions",
237
+ "description": "Turns rough meeting notes or a transcript into decisions, owned actions with dates, open questions and a follow-up message ready to send. Use right after any meeting where things were agreed.",
238
+ "version": "1.1.1",
239
+ "license": "MIT",
240
+ "author": "Mindburn Labs",
241
+ "tags": [
242
+ "operations",
243
+ "productivity"
244
+ ],
245
+ "time": "about 1 minute",
246
+ "path": "factories/meeting-to-actions",
247
+ "sha256": "7da2afff80e089d1d7ca1bab70907cc85d4d88454e62744d252d87441ed3d34f",
248
+ "runnable": true,
249
+ "inputs": [
250
+ {
251
+ "key": "notes",
252
+ "type": "longtext",
253
+ "required": true
254
+ },
255
+ {
256
+ "key": "context",
257
+ "type": "text",
258
+ "required": false
259
+ }
260
+ ],
261
+ "steps": 3,
262
+ "decision": false,
263
+ "agents": [
264
+ "analyst",
265
+ "reviewer",
266
+ "writer"
267
+ ],
268
+ "tools": []
269
+ },
270
+ {
271
+ "id": "outreach-pack",
272
+ "title": "Outreach pack",
273
+ "description": "Turns checked market research and launch materials into an outreach pack. Use when the positioning is approved and you need messages to review and send yourself.",
274
+ "version": "1.0.0",
275
+ "license": "MIT",
276
+ "author": "Mindburn Labs",
277
+ "tags": [
278
+ "sales",
279
+ "launch"
280
+ ],
281
+ "time": "",
282
+ "path": "factories/outreach-pack",
283
+ "sha256": "a1ffe3ae4ef85477f378680a6b983bf92f22bd40790372a5cb84c26d73254a2f",
284
+ "runnable": true,
285
+ "inputs": [
286
+ {
287
+ "key": "research",
288
+ "type": "longtext",
289
+ "required": true
290
+ },
291
+ {
292
+ "key": "launch_materials",
293
+ "type": "longtext",
294
+ "required": true
295
+ },
296
+ {
297
+ "key": "contact_role",
298
+ "type": "text",
299
+ "required": false
300
+ }
301
+ ],
302
+ "steps": 3,
303
+ "decision": false,
304
+ "agents": [
305
+ "reviewer",
306
+ "writer"
307
+ ],
308
+ "tools": []
309
+ },
310
+ {
311
+ "id": "prospect-brief",
312
+ "title": "Prospect brief and first email",
313
+ "description": "Researches one company you want to sell to and writes a one-page brief plus a first email and follow-up that mention real, checkable facts about them. Use before reaching out to an account that matters.",
314
+ "version": "1.1.0",
315
+ "license": "MIT",
316
+ "author": "Mindburn Labs",
317
+ "tags": [
318
+ "sales",
319
+ "research"
320
+ ],
321
+ "time": "about 4 minutes",
322
+ "path": "factories/prospect-brief",
323
+ "sha256": "77c1ee37106eca696283235ce81ff9dd7328a1ee26f37f877d4bc9c6506b5e3a",
324
+ "runnable": true,
325
+ "inputs": [
326
+ {
327
+ "key": "prospect",
328
+ "type": "url",
329
+ "required": true
330
+ },
331
+ {
332
+ "key": "what_you_sell",
333
+ "type": "longtext",
334
+ "required": true
335
+ },
336
+ {
337
+ "key": "contact_role",
338
+ "type": "text",
339
+ "required": false
340
+ }
341
+ ],
342
+ "steps": 7,
343
+ "decision": true,
344
+ "agents": [
345
+ "researcher",
346
+ "reviewer",
347
+ "strategist",
348
+ "writer"
349
+ ],
350
+ "tools": [
351
+ "web_fetch",
352
+ "web_search"
353
+ ]
354
+ }
355
+ ]
356
+ }
@@ -0,0 +1,3 @@
1
+ # Launch kit
2
+
3
+ Describe what you are launching and who it is for. You agree the positioning once, then get every piece of launch writing built on it: the page, the emails and the posts. It only uses facts you gave, so nothing needs to be un-promised later.
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: Checks work against stated criteria and sends weak work back.
3
+ agentType: REVIEW
4
+ ---
5
+
6
+ You are the reviewer. You hold one piece of work against the criteria you are given and decide whether it passes.
7
+
8
+ - You judge only what is on the page and only against the stated criteria.
9
+ - You fail work for a clear, specific breach you can point to. You never fail it for taste, or for something nobody asked for.
10
+ - When you send work back, each reason is one concrete sentence the author can act on.
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: Chooses the angle: what to say, to whom, and why it should work.
3
+ agentType: CUSTOM
4
+ ---
5
+
6
+ You are the strategist. From the facts in hand you choose the angle: who this is for, what to promise, and which facts make it believable.
7
+
8
+ - You offer a clear first choice and real alternatives, and you say which facts you are least sure of.
9
+ - You use only facts from the inputs and earlier steps. A stronger claim that the facts do not support is not an option.
10
+ - The person decides. You make their decision easy to take.
@@ -0,0 +1,11 @@
1
+ ---
2
+ description: Writes the finished words the person will use or send.
3
+ agentType: CUSTOM
4
+ ---
5
+
6
+ You are the writer. You write the finished thing the person will use: the brief, the message, the page, the report.
7
+
8
+ - Plain words, short sentences, the reader's own vocabulary. No filler and no hype.
9
+ - You keep to the sections, word limits and order the step asks for.
10
+ - You add no fact that is not in the inputs or earlier results. Where a real asset or decision is missing, you mark the gap clearly instead of inventing it.
11
+ - What you write should be usable as it stands.
@@ -0,0 +1,12 @@
1
+ schemaVersion: v1alpha1
2
+ name: launch-kit
3
+ description: |
4
+ Turns a product description into a launch kit with positioning, a landing
5
+ page draft, a launch email, three follow-ups and posts for social channels,
6
+ all in one voice. Use when you have something to launch and no time to
7
+ write.
8
+ repositories: []
9
+ agentDefaults:
10
+ harness:
11
+ type: claude
12
+ model: sonnet
@@ -0,0 +1,75 @@
1
+ flow: mindburn.flow/v1
2
+ title: Launch kit
3
+ author: Mindburn Labs
4
+ version: "1.2.0"
5
+ license: MIT
6
+ tags: [marketing, launch]
7
+ time: about 4 minutes
8
+ inputs:
9
+ product:
10
+ type: longtext
11
+ help: "What you are launching, what it does, the price and anything true you can say about results or customers."
12
+ audience:
13
+ type: text
14
+ help: "Who it is for, as specifically as you can, for example \"freelance bookkeepers with 10 to 40 clients\"."
15
+ site:
16
+ type: url
17
+ optional: true
18
+ help: "Your current website, to match the voice."
19
+ launch_offer:
20
+ type: text
21
+ optional: true
22
+ help: "Any launch offer and its end condition, for example \"20% off for the first 50 customers\"."
23
+ market_research:
24
+ type: longtext
25
+ optional: true
26
+ help: "Source-linked market research to inform positioning. Keep product claims grounded in the product facts."
27
+ steps:
28
+ positioning:
29
+ title: Find the positioning
30
+ agent: strategist
31
+ kind: work
32
+ tools: [web_fetch]
33
+ task: |
34
+ If market_research was given, use its sourced comparisons to explain differentiation without treating competitor facts as facts about this product. If a site was given, read its home page to learn the voice and existing claims. Then write the positioning: the audience and the moment they need this, the problem in their words, the promise in one sentence of under 15 words, three reasons to believe it (each tied to a fact from the product input), what it replaces, and the one objection most likely to stop a purchase with an honest answer. Offer two alternative promise sentences below the main one. Describe the voice in one line. Use no fact that is not in the inputs or on the site.
35
+ approve_positioning:
36
+ title: Agree the positioning
37
+ kind: approve
38
+ needs: [positioning]
39
+ shows: positioning
40
+ task: |
41
+ Everything else is written from this. Approve it, pick one of the alternative promises, or correct anything that is wrong about your product or audience.
42
+ landing_page:
43
+ title: Write the landing page
44
+ agent: writer
45
+ kind: work
46
+ needs: [approve_positioning]
47
+ task: |
48
+ Write the landing page from the approved positioning: headline (the promise), a line under it, the main button text, a "how it works" section with three steps, the three reasons to believe as short sections, the objection and its answer, the price and the launch offer if one was given, and a closing call to action. Mark every place where a real testimonial, screenshot or number should go as "[ADD: what belongs here]" instead of inventing one.
49
+ messages:
50
+ title: Write the emails and posts
51
+ agent: writer
52
+ kind: work
53
+ needs: [approve_positioning]
54
+ task: |
55
+ In the same voice write: a launch email under 180 words with two subject lines; three follow-up emails under 100 words each for days 2, 4 and 6, each making one new point (a reason to believe, the objection answered, the offer ending); and five short posts for social channels, each standing alone and each opening differently. State the launch offer exactly as given, with its end condition.
56
+ kit:
57
+ title: Package the kit
58
+ agent: writer
59
+ kind: deliver
60
+ needs: [landing_page, messages]
61
+ task: |
62
+ Assemble the kit in this order: **Positioning** (the approved version, one short block), **Landing page** (full draft), **Launch email**, **Follow-up emails** (with the day for each), **Posts**, and **Before you publish**: a checklist of every "[ADD: ...]" placeholder and any claim you should double-check, plus the order to publish the pieces in.
63
+ check_messages:
64
+ title: Check the kit
65
+ agent: reviewer
66
+ kind: check
67
+ needs: [kit]
68
+ checks: kit
69
+ task: |
70
+ Review every piece of the assembled kit, including the landing page. Every factual product, price, result, customer or offer claim is supported by the inputs or positioning. Every piece uses the approved promise and voice. No invented testimonial, number, customer name or deadline appears. The offer and end condition match the input. Requested word limits and section counts are met, and every missing asset remains marked and appears in the checklist.
71
+
72
+ done:
73
+ - "Every piece uses the approved promise and the same voice."
74
+ - "No claim appears that the inputs do not support."
75
+ - "Every gap that needs a real asset is marked, not filled in."
@@ -0,0 +1,7 @@
1
+ # Changes
2
+
3
+ ## 1.1.1
4
+
5
+ Adds an executable example covering agreed actions, unanswered questions and
6
+ missing owners or deadlines. Includes a model recommendation and a bounded
7
+ short-input cost estimate. The workflow and its six output sections are unchanged.
@@ -0,0 +1,15 @@
1
+ # Meeting to actions
2
+
3
+ Paste the notes or transcript. You get what was decided, who does what by when, what is still open, and the follow-up message for everyone who was there. It only reports what the notes support, and it tells you where an owner or a date was never agreed.
4
+
5
+ The included example uses invented notes with an agreed action, an unowned task
6
+ and an undecided question. The result must keep those distinctions; drafting a
7
+ follow-up does not send it. Read the result before sending it.
8
+
9
+ Run the example on the Hub or with
10
+ `node run.mjs --test --provider anthropic --model claude-haiku-5-5`. Passing text checks are
11
+ a repeatable regression signal, not proof that every transcript will be handled
12
+ correctly. The package includes the model recommendation and the basis of its
13
+ short-input cost estimate; no minimum model has been established. Hosted trials
14
+ used Haiku for writing and Sonnet for review. The local command uses Haiku for
15
+ both, so its quality and cost must be checked separately.
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: Turns raw material into structured findings that can be checked.
3
+ agentType: CUSTOM
4
+ ---
5
+
6
+ You are the analyst. You take what the person gave and what earlier steps found, and turn it into structured findings: tables, ranked lists, statuses.
7
+
8
+ - Every finding points at the exact words, file or fact it rests on.
9
+ - You never assume what the material does not show. Where something cannot be told, you say what is missing.
10
+ - You rank by what matters most to the person's goal, and you keep to the counts and shapes the step asks for.
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: Checks work against stated criteria and sends weak work back.
3
+ agentType: REVIEW
4
+ ---
5
+
6
+ You are the reviewer. You hold one piece of work against the criteria you are given and decide whether it passes.
7
+
8
+ - You judge only what is on the page and only against the stated criteria.
9
+ - You fail work for a clear, specific breach you can point to. You never fail it for taste, or for something nobody asked for.
10
+ - When you send work back, each reason is one concrete sentence the author can act on.
@@ -0,0 +1,11 @@
1
+ ---
2
+ description: Writes the finished words the person will use or send.
3
+ agentType: CUSTOM
4
+ ---
5
+
6
+ You are the writer. You write the finished thing the person will use: the brief, the message, the page, the report.
7
+
8
+ - Plain words, short sentences, the reader's own vocabulary. No filler and no hype.
9
+ - You keep to the sections, word limits and order the step asks for.
10
+ - You add no fact that is not in the inputs or earlier results. Where a real asset or decision is missing, you mark the gap clearly instead of inventing it.
11
+ - What you write should be usable as it stands.
@@ -0,0 +1,11 @@
1
+ schemaVersion: v1alpha1
2
+ name: meeting-to-actions
3
+ description: |
4
+ Turns rough meeting notes or a transcript into decisions, owned actions with
5
+ dates, open questions and a follow-up message ready to send. Use right after
6
+ any meeting where things were agreed.
7
+ repositories: []
8
+ agentDefaults:
9
+ harness:
10
+ type: claude
11
+ model: claude-haiku-5-5
@@ -0,0 +1,53 @@
1
+ flow: mindburn.flow/v1
2
+ title: Meeting to actions
3
+ author: Mindburn Labs
4
+ version: "1.1.1"
5
+ license: MIT
6
+ tags: [operations, productivity]
7
+ time: about 1 minute
8
+ inputs:
9
+ notes:
10
+ type: longtext
11
+ help: "The meeting notes or transcript, as rough as they are."
12
+ context:
13
+ type: text
14
+ optional: true
15
+ help: "Who met and why, for example \"weekly call with the Halden client about the website launch\"."
16
+ steps:
17
+ extraction:
18
+ title: Extract what was agreed
19
+ agent: analyst
20
+ kind: work
21
+ task: |
22
+ Read the notes and pull out four lists. Decisions: what was decided, in one sentence each. Actions: the task, the owner as named in the notes, and the due date as stated. Open questions: things raised and not settled. Risks: anything someone flagged as a worry.
23
+
24
+ Where an action has no owner or no date in the notes, write "owner not agreed" or "date not agreed": never assign one yourself. After each item put a short quote from the notes that supports it. Leave out small talk and anything said but not agreed.
25
+ followup:
26
+ title: Write the follow-up
27
+ agent: writer
28
+ kind: deliver
29
+ needs: [extraction]
30
+ task: |
31
+ Write the follow-up. Sections, in this order:
32
+
33
+ 1. **Summary**: two sentences on what the meeting settled.
34
+ 2. **Decisions**: a numbered list.
35
+ 3. **Actions**: a table with columns Action, Owner, Due. Keep "not agreed" where it applies.
36
+ 4. **Still open**: the open questions, and for each the person best placed to answer, if the notes say.
37
+ 5. **To confirm**: every missing owner or date as a direct question.
38
+ 6. **Message to send**: a follow-up message to the attendees under 150 words, covering decisions, actions and the questions to confirm, ready to paste into email or chat.
39
+
40
+ Do not include the supporting quotes in the follow-up.
41
+ check_extraction:
42
+ title: Check against the notes
43
+ agent: reviewer
44
+ kind: check
45
+ needs: [followup]
46
+ checks: followup
47
+ task: |
48
+ Compare the entire follow-up with the original notes. Every agreed decision and action is included; no owner, due date or fact was invented. Missing owners and dates remain explicit. The action table and message agree. All requested sections are present and the message meets its word limit. Supporting quotes need not appear in the final document.
49
+
50
+ done:
51
+ - "Every action has an owner and date, or says plainly that one was not agreed."
52
+ - "Nothing appears that the notes do not support."
53
+ - "The message can be sent without editing."
@@ -0,0 +1,8 @@
1
+ models:
2
+ recommended: claude-haiku-5-5
3
+ expected_cost:
4
+ currency: USD
5
+ min: 0.008
6
+ max: 0.02
7
+ model: claude-haiku-5-5 (writing) + claude-sonnet-5-5 (review)
8
+ basis: Short-note hosted trials used two Haiku writing calls and one Sonnet review call, with estimated model costs of USD 0.0088128 and 0.0148114. This range applies to that mixed-model configuration, not a Haiku-only local run. Larger transcripts and retries can cost more. Excludes hosting and tool fees; this is an estimate, not a spending cap.
@@ -0,0 +1,16 @@
1
+ version: 1
2
+ cases:
3
+ missing_commitments:
4
+ name: Keeps agreed actions and makes missing commitments explicit
5
+ inputs:
6
+ notes: |
7
+ Decision: use the compact onboarding form.
8
+ Dana agreed to email the revised form to Lee. No deadline was agreed.
9
+ Someone needs to confirm who maintains the help page. Nobody took that task.
10
+ The team discussed a free trial but made no decision about offering it.
11
+ context: Planning for a small product team. These are invented example notes.
12
+ expect:
13
+ contains: [Dana, Lee, onboarding, help page, free trial, not agreed]
14
+ excludes: [sent successfully, already emailed]
15
+ min_length: 200
16
+ max_length: 6000
@@ -0,0 +1,3 @@
1
+ # Outreach pack
2
+
3
+ Provide checked research, approved launch materials and optionally a contact role. The factory writes and checks drafts for you to review and send. It does not collect contacts, publish or send messages.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Checks claims, evidence and message constraints.
3
+ agentType: REVIEW
4
+ ---
5
+ Judge the complete artifact against the stated criteria. Fail unsupported claims and invented personal details with specific reasons.
@@ -0,0 +1,5 @@
1
+ ---
2
+ description: Writes specific, honest outreach from supplied evidence.
3
+ agentType: CUSTOM
4
+ ---
5
+ Write plain messages with one clear ask. Preserve source links and uncertainties. Never imply an email was sent or a campaign was activated.
@@ -0,0 +1,9 @@
1
+ schemaVersion: v1alpha1
2
+ name: outreach-pack
3
+ description: |
4
+ Turns checked market research and launch materials into an outreach pack. Use when the positioning is approved and you need messages to review and send yourself.
5
+ repositories: []
6
+ agentDefaults:
7
+ harness:
8
+ type: claude
9
+ model: sonnet