factoryhub 0.0.0-stage → 0.1.1
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/LICENSE +202 -0
- package/NOTICE +16 -0
- package/README.md +195 -2
- package/factories/README.md +17 -0
- package/factories/client-file-readiness/README.md +3 -0
- package/factories/client-file-readiness/agents/analyst/agent.md +10 -0
- package/factories/client-file-readiness/agents/reviewer/agent.md +10 -0
- package/factories/client-file-readiness/agents/writer/agent.md +11 -0
- package/factories/client-file-readiness/factory.yaml +12 -0
- package/factories/client-file-readiness/flow.yaml +56 -0
- package/factories/competitor-teardown/README.md +3 -0
- package/factories/competitor-teardown/agents/analyst/agent.md +10 -0
- package/factories/competitor-teardown/agents/researcher/agent.md +11 -0
- package/factories/competitor-teardown/agents/reviewer/agent.md +10 -0
- package/factories/competitor-teardown/agents/writer/agent.md +11 -0
- package/factories/competitor-teardown/factory.yaml +11 -0
- package/factories/competitor-teardown/flow.yaml +75 -0
- package/factories/homepage-audit/README.md +3 -0
- package/factories/homepage-audit/agents/analyst/agent.md +10 -0
- package/factories/homepage-audit/agents/researcher/agent.md +11 -0
- package/factories/homepage-audit/agents/reviewer/agent.md +10 -0
- package/factories/homepage-audit/agents/writer/agent.md +11 -0
- package/factories/homepage-audit/factory.yaml +11 -0
- package/factories/homepage-audit/flow.yaml +77 -0
- package/factories/inbox-triage/README.md +3 -0
- package/factories/inbox-triage/agents/analyst/agent.md +10 -0
- package/factories/inbox-triage/agents/reviewer/agent.md +10 -0
- package/factories/inbox-triage/agents/writer/agent.md +11 -0
- package/factories/inbox-triage/factory.yaml +11 -0
- package/factories/inbox-triage/flow.yaml +57 -0
- package/factories/index.json +587 -0
- package/factories/launch-kit/README.md +3 -0
- package/factories/launch-kit/agents/reviewer/agent.md +10 -0
- package/factories/launch-kit/agents/strategist/agent.md +10 -0
- package/factories/launch-kit/agents/writer/agent.md +11 -0
- package/factories/launch-kit/factory.yaml +12 -0
- package/factories/launch-kit/flow.yaml +75 -0
- package/factories/meeting-to-actions/CHANGELOG.md +7 -0
- package/factories/meeting-to-actions/README.md +15 -0
- package/factories/meeting-to-actions/agents/analyst/agent.md +10 -0
- package/factories/meeting-to-actions/agents/reviewer/agent.md +10 -0
- package/factories/meeting-to-actions/agents/writer/agent.md +11 -0
- package/factories/meeting-to-actions/factory.yaml +11 -0
- package/factories/meeting-to-actions/flow.yaml +53 -0
- package/factories/meeting-to-actions/mindburn.requirements.yaml +8 -0
- package/factories/meeting-to-actions/mindburn.tests.yaml +16 -0
- package/factories/newsletter-note/README.md +11 -0
- package/factories/newsletter-note/agents/reviewer/agent.md +10 -0
- package/factories/newsletter-note/agents/writer/agent.md +11 -0
- package/factories/newsletter-note/factory.yaml +12 -0
- package/factories/newsletter-note/flow.yaml +45 -0
- package/factories/newsletter-note/mindburn.tests.yaml +80 -0
- package/factories/outreach-pack/README.md +3 -0
- package/factories/outreach-pack/agents/reviewer/agent.md +5 -0
- package/factories/outreach-pack/agents/writer/agent.md +5 -0
- package/factories/outreach-pack/factory.yaml +9 -0
- package/factories/outreach-pack/flow.yaml +42 -0
- package/factories/prospect-brief/README.md +3 -0
- package/factories/prospect-brief/agents/researcher/agent.md +11 -0
- package/factories/prospect-brief/agents/reviewer/agent.md +10 -0
- package/factories/prospect-brief/agents/strategist/agent.md +10 -0
- package/factories/prospect-brief/agents/writer/agent.md +11 -0
- package/factories/prospect-brief/factory.yaml +11 -0
- package/factories/prospect-brief/flow.yaml +79 -0
- package/factories/release-desk/README.md +13 -0
- package/factories/release-desk/agents/editor/agent.md +10 -0
- package/factories/release-desk/agents/reviewer/agent.md +10 -0
- package/factories/release-desk/factory.yaml +13 -0
- package/factories/release-desk/flow.yaml +67 -0
- package/factories/release-desk/mindburn.tests.yaml +163 -0
- package/factories/short-video-cut/README.md +11 -0
- package/factories/short-video-cut/agents/reviewer/agent.md +10 -0
- package/factories/short-video-cut/agents/writer/agent.md +11 -0
- package/factories/short-video-cut/factory.yaml +13 -0
- package/factories/short-video-cut/flow.yaml +46 -0
- package/factories/short-video-cut/mindburn.tests.yaml +80 -0
- package/factories/video-facts/README.md +11 -0
- package/factories/video-facts/agents/analyst/agent.md +10 -0
- package/factories/video-facts/agents/reviewer/agent.md +10 -0
- package/factories/video-facts/factory.yaml +13 -0
- package/factories/video-facts/flow.yaml +39 -0
- package/factories/video-facts/mindburn.tests.yaml +34 -0
- package/factories/video-to-posts/README.md +35 -0
- package/factories/video-to-posts/agents/analyst/agent.md +10 -0
- package/factories/video-to-posts/agents/reviewer/agent.md +10 -0
- package/factories/video-to-posts/agents/writer/agent.md +11 -0
- package/factories/video-to-posts/factory.yaml +12 -0
- package/factories/video-to-posts/flow.yaml +62 -0
- package/factories/video-to-posts/mindburn.tests.yaml +34 -0
- package/factories/week-of-posts/README.md +11 -0
- package/factories/week-of-posts/agents/reviewer/agent.md +10 -0
- package/factories/week-of-posts/agents/writer/agent.md +11 -0
- package/factories/week-of-posts/factory.yaml +12 -0
- package/factories/week-of-posts/flow.yaml +46 -0
- package/factories/week-of-posts/mindburn.tests.yaml +80 -0
- package/package.json +92 -4
- package/packages/cli/bin/factoryhub.mjs +8 -0
- package/packages/cli/package.json +29 -0
- package/packages/cli/src/args.mjs +47 -0
- package/packages/cli/src/commands/export.mjs +54 -0
- package/packages/cli/src/commands/get.mjs +37 -0
- package/packages/cli/src/commands/inspect.mjs +65 -0
- package/packages/cli/src/commands/list.mjs +24 -0
- package/packages/cli/src/commands/login.mjs +161 -0
- package/packages/cli/src/commands/logout.mjs +43 -0
- package/packages/cli/src/commands/mcp.mjs +25 -0
- package/packages/cli/src/commands/new.mjs +147 -0
- package/packages/cli/src/commands/pack.mjs +96 -0
- package/packages/cli/src/commands/publish.mjs +62 -0
- package/packages/cli/src/commands/pull.mjs +59 -0
- package/packages/cli/src/commands/push.mjs +115 -0
- package/packages/cli/src/commands/resume.mjs +66 -0
- package/packages/cli/src/commands/run.mjs +352 -0
- package/packages/cli/src/commands/runs.mjs +52 -0
- package/packages/cli/src/commands/search.mjs +30 -0
- package/packages/cli/src/commands/validate.mjs +79 -0
- package/packages/cli/src/commands/whoami.mjs +34 -0
- package/packages/cli/src/hosted.mjs +159 -0
- package/packages/cli/src/main.mjs +134 -0
- package/packages/cli/src/tool-sources.mjs +272 -0
- package/packages/cli/src/util.mjs +58 -0
- package/packages/engine/lib/catalog.mjs +50 -0
- package/packages/engine/lib/credentials.mjs +121 -0
- package/packages/engine/lib/hosted.mjs +119 -0
- package/packages/engine/lib/hub.mjs +423 -0
- package/packages/engine/lib/nango.mjs +157 -0
- package/packages/engine/lib/node.mjs +242 -0
- package/packages/engine/lib/providers.mjs +57 -0
- package/packages/engine/lib/run.mjs +192 -0
- package/packages/engine/lib/skill.mjs +229 -0
- package/packages/engine/lib/text.mjs +5 -0
- package/packages/engine/package.json +45 -0
- package/packages/engine/src/author-tests.mjs +78 -0
- package/packages/engine/src/compose.mjs +150 -0
- package/packages/engine/src/cost.mjs +41 -0
- package/packages/engine/src/diagnostics.mjs +21 -0
- package/packages/engine/src/factory-engine.mjs +2109 -0
- package/packages/engine/src/flow-sources.mjs +135 -0
- package/packages/engine/src/index.mjs +9 -0
- package/packages/engine/src/markdown.mjs +97 -0
- package/packages/engine/src/mcp-client.mjs +429 -0
- package/packages/engine/src/package.mjs +116 -0
- package/packages/engine/src/run.mjs +308 -0
- package/packages/engine/src/tool-sources.mjs +566 -0
- package/packages/mcp/bin/factoryhub-mcp.mjs +6 -0
- package/packages/mcp/package.json +36 -0
- package/packages/mcp/src/server.mjs +310 -0
- package/packages/sdk/package.json +28 -0
- package/packages/sdk/src/index.d.ts +163 -0
- package/packages/sdk/src/index.mjs +266 -0
- package/spec/README.md +42 -0
- package/spec/factory-format.md +866 -0
- package/spec/schema/factory.schema.json +43 -0
- package/spec/schema/factory.yaml.json +815 -0
- package/spec/schema/flow.schema.json +191 -0
- package/spec/skill-export.md +129 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
flow: mindburn.flow/v1
|
|
2
|
+
title: Competitor teardown
|
|
3
|
+
author: Mindburn Labs
|
|
4
|
+
version: "1.1.0"
|
|
5
|
+
license: MIT
|
|
6
|
+
tags: [marketing, research]
|
|
7
|
+
time: about 4 minutes
|
|
8
|
+
inputs:
|
|
9
|
+
your_site:
|
|
10
|
+
type: url
|
|
11
|
+
help: "Your website, for example acme.com."
|
|
12
|
+
competitors:
|
|
13
|
+
type: longtext
|
|
14
|
+
help: "One to three competitor websites, one per line."
|
|
15
|
+
focus:
|
|
16
|
+
type: text
|
|
17
|
+
optional: true
|
|
18
|
+
help: "What you are deciding, for example \"raise prices\" or \"win agencies\". Leave empty for a general teardown."
|
|
19
|
+
steps:
|
|
20
|
+
your_site_facts:
|
|
21
|
+
title: Read your own site
|
|
22
|
+
agent: researcher
|
|
23
|
+
kind: work
|
|
24
|
+
tools: [web_fetch]
|
|
25
|
+
task: |
|
|
26
|
+
Read the home page of your_site. From its links, also read the pricing page and one product or "how it works" page when they exist. Do not read more than four pages.
|
|
27
|
+
|
|
28
|
+
Write a fact sheet with these headings: Who it is for, What it promises (quote the main headline exactly), What it sells and how it is packaged, Prices (exact figures, or "not published"), Proof it shows (customer names, numbers, reviews, guarantees), How you start (free trial, demo, contact sales). Put the page address after every fact. If a page could not be read, write that down and carry on. Never fill a gap from memory.
|
|
29
|
+
competitor_facts:
|
|
30
|
+
title: Read every competitor
|
|
31
|
+
agent: researcher
|
|
32
|
+
kind: work
|
|
33
|
+
tools: [web_fetch, web_search]
|
|
34
|
+
needs: []
|
|
35
|
+
task: |
|
|
36
|
+
For each competitor in the inputs, read its home page and, from the links there, the pricing page and one product or "how it works" page when they exist. Do not read more than four pages per company. If a site cannot be read, search for the company's own pages once, then move on.
|
|
37
|
+
|
|
38
|
+
For each company write a fact sheet with these headings: Who it is for, What it promises (quote the main headline exactly), What it sells and how it is packaged, Prices (exact figures, or "not published"), Proof it shows (customer names, numbers, reviews, guarantees), How you start (free trial, demo, contact sales). Put the page address after every fact. If a company could not be read, say so under its name. Never fill a gap from memory.
|
|
39
|
+
comparison:
|
|
40
|
+
title: Compare and find the gaps
|
|
41
|
+
agent: analyst
|
|
42
|
+
kind: work
|
|
43
|
+
needs: [your_site_facts, competitor_facts]
|
|
44
|
+
task: |
|
|
45
|
+
Using only the two sets of fact sheets, build one table with a row per company and columns: Audience, Core promise, Entry price, Strongest proof, Way to start. Put your_site first.
|
|
46
|
+
|
|
47
|
+
Then write three short lists. "Where you win": up to four points where your_site is clearly stronger, each with the fact behind it. "Where you lose": up to four points where a competitor is clearly stronger. "What nobody says": up to three things buyers would care about that no company in the set claims. If the person gave a focus, weigh everything toward it.
|
|
48
|
+
brief:
|
|
49
|
+
title: Write the brief
|
|
50
|
+
agent: writer
|
|
51
|
+
kind: deliver
|
|
52
|
+
needs: [comparison]
|
|
53
|
+
task: |
|
|
54
|
+
Write the brief for the owner of your_site. Sections, in this order:
|
|
55
|
+
|
|
56
|
+
1. **The short version**: three sentences. Where you stand, the biggest risk, the biggest opening.
|
|
57
|
+
2. **Side by side**: the comparison table.
|
|
58
|
+
3. **Where you win** and **Where you lose**: the lists, each point with its page link.
|
|
59
|
+
4. **Five changes for this week**: numbered, most valuable first. Each says exactly what to change (for a wording change, write the new wording), where, and which fact justifies it.
|
|
60
|
+
5. **What we could not find**: anything that was not published or could not be read.
|
|
61
|
+
|
|
62
|
+
Keep it under 900 words. Use no fact that is not in the fact sheets.
|
|
63
|
+
check_competitor_facts:
|
|
64
|
+
title: Check the brief
|
|
65
|
+
agent: reviewer
|
|
66
|
+
kind: check
|
|
67
|
+
needs: [brief]
|
|
68
|
+
checks: brief
|
|
69
|
+
task: |
|
|
70
|
+
Every input company appears in the comparison table or is explicitly identified as unreadable. All factual claims, quotes, prices, customer names and numbers are supported by the supplied fact sheets and link to their pages. Missing facts are disclosed. The brief contains the required sections and five specific changes justified by evidence, within the word limit.
|
|
71
|
+
|
|
72
|
+
done:
|
|
73
|
+
- "Every company in the inputs appears in the table."
|
|
74
|
+
- "Every factual claim about a company links to a page that was read."
|
|
75
|
+
- "The five changes are specific enough to do without another meeting."
|
|
@@ -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,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Finds and reads the sources, and reports only what they say.
|
|
3
|
+
agentType: CUSTOM
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are the researcher. You find the right pages, read them carefully and write down what they actually say.
|
|
7
|
+
|
|
8
|
+
- Quote headlines, prices and claims exactly, and put the page address after every fact.
|
|
9
|
+
- Read the pages you were asked for before looking further. Stay within the page budget you are given.
|
|
10
|
+
- A gap is a finding. When a page cannot be read or a fact is not published, write that down plainly instead of filling it from memory.
|
|
11
|
+
- You do not judge or recommend. The analyst and the writer do that from your notes.
|
|
@@ -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: homepage-audit
|
|
3
|
+
description: |
|
|
4
|
+
Reads your home page the way a first-time visitor does and returns a
|
|
5
|
+
prioritised list of fixes with the exact new wording. Use when signups or
|
|
6
|
+
enquiries are lower than the traffic deserves.
|
|
7
|
+
repositories: []
|
|
8
|
+
agentDefaults:
|
|
9
|
+
harness:
|
|
10
|
+
type: claude
|
|
11
|
+
model: sonnet
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
flow: mindburn.flow/v1
|
|
2
|
+
title: Homepage audit with fixes
|
|
3
|
+
author: Mindburn Labs
|
|
4
|
+
version: "1.2.0"
|
|
5
|
+
license: MIT
|
|
6
|
+
tags: [marketing, website]
|
|
7
|
+
time: about 3 minutes
|
|
8
|
+
inputs:
|
|
9
|
+
site:
|
|
10
|
+
type: url
|
|
11
|
+
help: "The page to audit, for example acme.com."
|
|
12
|
+
goal:
|
|
13
|
+
type: text
|
|
14
|
+
optional: true
|
|
15
|
+
help: "The one thing you want a visitor to do, for example \"book a demo\". Leave empty and the audit will infer it from the page."
|
|
16
|
+
audience:
|
|
17
|
+
type: text
|
|
18
|
+
optional: true
|
|
19
|
+
help: "Who the page is for, for example \"owners of small accounting firms\"."
|
|
20
|
+
steps:
|
|
21
|
+
reading:
|
|
22
|
+
title: Read the page as a visitor
|
|
23
|
+
agent: researcher
|
|
24
|
+
kind: work
|
|
25
|
+
tools: [web_fetch]
|
|
26
|
+
task: |
|
|
27
|
+
Read the page at site. If it links to a pricing page or a signup page, read one of them too. Then write down, quoting the page exactly:
|
|
28
|
+
|
|
29
|
+
- The main headline and the line under it.
|
|
30
|
+
- Every button and call to action, in page order.
|
|
31
|
+
- The sections of the page in order, one line each, saying what each section is trying to do.
|
|
32
|
+
- Every piece of proof: customer names, numbers, testimonials, logos mentioned in text, guarantees.
|
|
33
|
+
- Buyer basics: what the product does, who it is for, price, how it works, and what happens after the click. For each, quote the strongest explanation already present. If none is found, say "Not found in the pages read"; an unread or cut-off page is unknown, not proof of absence.
|
|
34
|
+
|
|
35
|
+
Keep observations separate from interpretation. Do not say an explanation is missing when you have quoted it. A hostname containing "stage" is an observed address, not proof that its destination is broken or unsafe.
|
|
36
|
+
|
|
37
|
+
Finish with "The ten-second test": in two sentences, what a stranger would say this company does and for whom, based only on the headline area. If the page text could not be read, say so plainly and stop.
|
|
38
|
+
diagnosis:
|
|
39
|
+
title: Diagnose what blocks the visitor
|
|
40
|
+
agent: analyst
|
|
41
|
+
kind: work
|
|
42
|
+
needs: [reading]
|
|
43
|
+
task: |
|
|
44
|
+
From the reading, list the problems that most reduce the chance a visitor does the goal. For each problem give: what it is, the exact words or section on the page that show it, and why it costs action. Judge clarity of the offer, fit to the audience, strength and placement of proof, number and wording of calls to action, and unanswered questions. Rank by how much each one costs. Give at most seven. Do not list a problem you cannot point to on the page.
|
|
45
|
+
|
|
46
|
+
Look for counterevidence before accepting each problem. If the page explains the product, quote that explanation and identify the specific ambiguity; do not claim it never explains the product. A mismatch with the requested goal is a recommendation about positioning, not a missing fact. Distinguish an observed broken link from an unverified destination. Remove a proposed problem if the reading contradicts it.
|
|
47
|
+
audit:
|
|
48
|
+
title: Write the fixes
|
|
49
|
+
agent: writer
|
|
50
|
+
kind: deliver
|
|
51
|
+
needs: [diagnosis]
|
|
52
|
+
task: |
|
|
53
|
+
Write the audit for the site owner. Sections, in this order:
|
|
54
|
+
|
|
55
|
+
1. **Verdict**: two sentences. What the page does well and the main thing holding it back.
|
|
56
|
+
2. **What a stranger understands in ten seconds**: the ten-second test result.
|
|
57
|
+
3. **Fix list**: a table with columns Priority, Problem, Fix, Effort (5 minutes, an hour, a day). Most valuable first.
|
|
58
|
+
4. **Ready-to-paste wording**: three alternative headlines with a line under each, new text for the main button, and one rewritten section, all in the page's own language and tone and using only facts found on the page.
|
|
59
|
+
5. **What to measure**: the one number to watch after the change.
|
|
60
|
+
|
|
61
|
+
Keep it under 800 words with at most seven fixes. Invent no customer names, numbers or claims. Each fix must make a real change: do not recommend adding wording that the reading shows is already there. Preserve the meaning of existing sections; levels of autonomy are not onboarding steps. Do not recommend hiding a working call to action solely because its hostname contains "stage"; an unvisited destination needs verification.
|
|
62
|
+
check_diagnosis:
|
|
63
|
+
title: Check the audit
|
|
64
|
+
agent: reviewer
|
|
65
|
+
kind: check
|
|
66
|
+
needs: [audit]
|
|
67
|
+
checks: audit
|
|
68
|
+
task: |
|
|
69
|
+
Compare every problem and fix against the reading, including evidence that contradicts the diagnosis. Reject an absence claim when the reading quotes the supposedly missing explanation or information. Reject a recommendation to add text that is already present. Reject a rewrite that changes the meaning of a section, such as presenting autonomy levels as onboarding steps. Unvisited links must not be called broken or unsafe solely from their hostname.
|
|
70
|
+
|
|
71
|
+
Every fix points to specific wording or a section in the reading and makes a concrete improvement. Rewritten wording introduces no unsupported names, numbers or claims. The fix list is ranked, has at most seven entries and includes effort. The required sections and three headline alternatives are present, within the requested word limit. When rejecting a contradiction, quote both the audit claim and its counterevidence so the writer can correct it.
|
|
72
|
+
|
|
73
|
+
done:
|
|
74
|
+
- "Every fix points at something that is really on the page."
|
|
75
|
+
- "No problem contradicts the quoted evidence, and no fix merely adds text already present."
|
|
76
|
+
- "The rewritten wording uses only facts the page already states."
|
|
77
|
+
- "The fix list is ordered by value, with effort for each line."
|
|
@@ -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: inbox-triage
|
|
3
|
+
description: |
|
|
4
|
+
Sorts a batch of customer messages by urgency and type, drafts a reply to
|
|
5
|
+
each in your tone, and lists what needs a human decision. Use on a support
|
|
6
|
+
or shared inbox that has piled up.
|
|
7
|
+
repositories: []
|
|
8
|
+
agentDefaults:
|
|
9
|
+
harness:
|
|
10
|
+
type: claude
|
|
11
|
+
model: sonnet
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
flow: mindburn.flow/v1
|
|
2
|
+
title: Support inbox triage
|
|
3
|
+
author: Mindburn Labs
|
|
4
|
+
version: "1.1.0"
|
|
5
|
+
license: MIT
|
|
6
|
+
tags: [support, operations]
|
|
7
|
+
time: about 2 minutes
|
|
8
|
+
inputs:
|
|
9
|
+
messages:
|
|
10
|
+
type: longtext
|
|
11
|
+
help: "The customer messages, pasted one after another. Keep names and order numbers: they are used in the replies."
|
|
12
|
+
policies:
|
|
13
|
+
type: longtext
|
|
14
|
+
help: "What you can and cannot do: refund rules, delivery times, opening hours, prices, who handles what. A few lines are enough."
|
|
15
|
+
tone:
|
|
16
|
+
type: text
|
|
17
|
+
optional: true
|
|
18
|
+
help: "How you write to customers, for example \"warm and brief, first names\"."
|
|
19
|
+
steps:
|
|
20
|
+
triage:
|
|
21
|
+
title: Sort the messages
|
|
22
|
+
agent: analyst
|
|
23
|
+
kind: work
|
|
24
|
+
task: |
|
|
25
|
+
Split the pasted text into separate messages and number them in order. For each one give: who it is from (as written), what they want in one sentence, type (question, problem, refund or cancellation, complaint, sales enquiry, other), urgency (today, this week, whenever) with the reason, and whether the policies answer it fully, partly or not at all. Show this as a table. If a message is unreadable or cut off, say so in its row.
|
|
26
|
+
replies:
|
|
27
|
+
title: Draft the replies
|
|
28
|
+
agent: writer
|
|
29
|
+
kind: work
|
|
30
|
+
needs: [triage]
|
|
31
|
+
task: |
|
|
32
|
+
Write a reply for every message in the triage, under its number and sender. Use the tone given, or warm and brief if none was. Answer the actual question in the first sentence. Use only what the policies say: where the policies do not cover something, do not guess; write the reply up to that point and put "[DECISION NEEDED: the exact question]" where the answer goes. Use the customer's own details (name, order number, dates) as written. Keep each reply under 120 words.
|
|
33
|
+
handover:
|
|
34
|
+
title: Hand over the inbox
|
|
35
|
+
agent: writer
|
|
36
|
+
kind: deliver
|
|
37
|
+
needs: [replies]
|
|
38
|
+
task: |
|
|
39
|
+
Write the handover. Sections, in this order:
|
|
40
|
+
|
|
41
|
+
1. **At a glance**: how many messages, how many can be sent as written, how many need a decision, and the one to deal with first.
|
|
42
|
+
2. **Needs your decision**: each DECISION NEEDED question with the message number and the two most sensible options.
|
|
43
|
+
3. **Replies ready to send**: every reply, most urgent first, each under a line with the number, sender, type and urgency.
|
|
44
|
+
4. **Pattern worth fixing**: if three or more messages share a cause, name it and the one change that would stop them arriving.
|
|
45
|
+
check_replies:
|
|
46
|
+
title: Check the handover
|
|
47
|
+
agent: reviewer
|
|
48
|
+
kind: check
|
|
49
|
+
needs: [handover]
|
|
50
|
+
checks: handover
|
|
51
|
+
task: |
|
|
52
|
+
Every original message has a reply under the correct number and sender. Customer names and order numbers match the original messages. No reply promises anything beyond the policies; every gap is marked DECISION NEEDED. Replies meet the word limit. Counts and decision questions agree with the replies, and the most urgent message comes first.
|
|
53
|
+
|
|
54
|
+
done:
|
|
55
|
+
- "Every message has a reply or a clearly stated decision to make."
|
|
56
|
+
- "No reply goes beyond the stated policies."
|
|
57
|
+
- "The most urgent message is first."
|