@sellable/mcp 0.1.205 → 0.1.206

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 (50) hide show
  1. package/README.md +11 -10
  2. package/agents/post-find-leads-filter-scout.md +2 -2
  3. package/agents/post-find-leads-message-scout.md +18 -23
  4. package/agents/registry.json +17 -17
  5. package/agents/source-scout-linkedin-engagement.md +2 -2
  6. package/agents/source-scout-prospeo-contact.md +3 -3
  7. package/agents/source-scout-sales-nav.md +3 -3
  8. package/dist/engage-memory.js +5 -0
  9. package/dist/identity-memory.js +4 -0
  10. package/dist/index-dev.js +0 -0
  11. package/dist/index.js +0 -0
  12. package/dist/tools/engage-memory.js +2 -2
  13. package/dist/tools/leads.js +7 -11
  14. package/dist/tools/prompts.js +6 -7
  15. package/package.json +1 -1
  16. package/skills/create-campaign/SKILL.md +24 -11
  17. package/skills/create-campaign/context/learnings.md +1 -1
  18. package/skills/create-campaign/references/brief-template.md +2 -2
  19. package/skills/create-campaign-brief/references/brief-template.md +2 -2
  20. package/skills/create-campaign-brief/references/draft-lifecycle.md +1 -1
  21. package/skills/create-campaign-brief/references/examples/briefs/gelee.md +2 -2
  22. package/skills/create-campaign-brief/references/examples/briefs/superpower.md +28 -41
  23. package/skills/create-campaign-brief/references/phase75-active-runtime-message-pack.md +9 -12
  24. package/skills/create-campaign-v2/SKILL.md +27 -21
  25. package/skills/create-campaign-v2/SOUL.md +12 -9
  26. package/skills/create-campaign-v2/core/flow.v2.json +1 -1
  27. package/skills/create-campaign-v2/references/ai-tells.md +10 -35
  28. package/skills/create-campaign-v2/references/approval-gate-framing.md +3 -3
  29. package/skills/create-campaign-v2/references/gold-standard-message-examples.md +16 -30
  30. package/skills/create-campaign-v2/references/gold-standard-message-patterns.md +1 -1
  31. package/skills/create-campaign-v2/references/step-13-import-leads.md +2 -2
  32. package/skills/create-campaign-v2/references/thomas-revision-filters.md +3 -12
  33. package/skills/create-campaign-v2/references/validation-criteria.md +5 -8
  34. package/skills/create-campaign-v2/references/watch-guide-narration.md +2 -2
  35. package/skills/create-campaign-v2-tail/SKILL.md +9 -9
  36. package/skills/create-campaign-v2-validation/SKILL.md +1 -1
  37. package/skills/create-post/SKILL.md +27 -27
  38. package/skills/engage/SKILL.md +12 -12
  39. package/skills/engage/core/README.md +14 -14
  40. package/skills/find-leads/SKILL.md +1 -1
  41. package/skills/generate-messages/SKILL.md +75 -175
  42. package/skills/interview/SKILL.md +24 -24
  43. package/skills/interview/references/legacy-linkedin-interview.md +12 -12
  44. package/skills/interview/references/reference-curation.md +4 -4
  45. package/skills/interview/references/voice-capture-method.md +1 -1
  46. package/skills/load-voice/SKILL.md +25 -21
  47. package/skills/providers/signal-discovery.md +2 -2
  48. package/skills/research/SKILL.md +1 -1
  49. package/skills/create-campaign-v2/references/gold-standard-runtime-message-pack.md +0 -252
  50. package/skills/research/config.json +0 -9
@@ -24,10 +24,10 @@ You craft messages in one of two modes:
24
24
 
25
25
  ## Execution Modes
26
26
 
27
- ### Mode 0: Message Draft Builder Branch
27
+ ### Mode 0: Message Drafting Branch
28
28
 
29
- Use this mode when create-campaign-v2 starts the background Message Draft
30
- Builder after `confirm_lead_list` copies source rows and the first
29
+ Use this mode when create-campaign-v2 starts background Message Drafting after
30
+ `confirm_lead_list` copies source rows and the first
31
31
  review/process sample exists.
32
32
  This is not the row-cell generation path.
33
33
 
@@ -93,7 +93,7 @@ Use this mode when the caller explicitly says `DRY MODE`, `Phase 84`,
93
93
  - `brief.md`
94
94
  - `lead-sample.json`
95
95
  - `lead-filter.md` when available. In the create-campaign-v2
96
- `post-lead-workstreams` step, message generation may start before
96
+ Prospect Setup step, message generation may start before
97
97
  `lead-filter.md` exists so it can prepare proof inventory, token strategy,
98
98
  and candidate angles while filter-leads runs.
99
99
 
@@ -133,72 +133,35 @@ hard failure and revise the output before returning it.
133
133
 
134
134
  Dry mode validates message quality before campaign mint.
135
135
 
136
- Read these campaign inputs:
136
+ Read:
137
137
 
138
- - `~/.sellable/configs/core/about-me.md`
139
- - `~/.sellable/configs/core/my-company.md`
140
- - `~/.sellable/configs/core/context-modes.md`
141
- - `~/.sellable/configs/core/proof-ledger.md`
142
- - `~/.sellable/configs/core/wins-ledger.md`
143
- - `~/.sellable/configs/core/anti-ai-writing-style.md`
144
- - `~/.sellable/configs/writing/outbound.md` and legacy `styleguide-core.md` as fallback/source material when present
138
+ - `.sellable/configs/core/about-me.md`
139
+ - `.sellable/configs/core/my-company.md`
140
+ - `.sellable/configs/core/context-modes.md`
141
+ - `.sellable/configs/core/proof-ledger.md`
142
+ - `.sellable/configs/core/wins-ledger.md`
143
+ - `.sellable/configs/core/anti-ai-writing-style.md`
144
+ - `.sellable/configs/writing/outbound.md` and legacy `styleguide-core.md` as fallback/source material when present
145
145
  - `brief.md`
146
146
  - `lead-sample.json` from the find-leads step; this is the only allowed sample
147
147
  source for dry-mode message generation
148
148
  - `lead-filter.md` when present. If it is absent because the caller launched
149
- post-lead workstreams in parallel, start the prep/candidate stages and then
149
+ prospect setup workstreams in parallel, start the prep/candidate stages and then
150
150
  reconcile before final `message-validation.md`.
151
-
152
- ### Reference Asset Loading (do this before drafting)
153
-
154
- Do not draft from this prompt alone. The full `generate-messages` prompt is
155
- only the contract; the reference assets below are the evidence and examples
156
- that define the desired output. Before writing angle drafts, you MUST load the
157
- required pre-draft reference pack below with `mcp__sellable__get_subskill_asset`.
158
- This is a hard gate: if the four required pre-draft assets are not loaded,
159
- return `blocked` / `retry-needed` instead of drafting. Write a short
160
- `Reference Asset Loading` note naming each loaded asset and whether it was
161
- required pre-draft, final-pass, dry-mode-only, or token-rules-only. Do not
162
- bulk-load the conditional references unless their trigger applies or the caller
163
- explicitly asks for maximum context over speed.
164
-
165
- Use `mcp__sellable__get_subskill_asset` for packaged assets:
166
-
167
- | Group | Asset to load | Job |
168
- | --- | --- | --- |
169
- | Always load before drafting | `subskillName: "create-campaign-brief", assetPath: "references/phase75-active-runtime-message-pack.md"` | Active line-level gold pack: real approved examples, short-line rhythm, CTA blocks, lowercase/titlecase cues, and PS restraint. |
170
- | Always load before drafting | `subskillName: "create-campaign-v2", assetPath: "references/gold-standard-message-patterns.md"` | Strategy selector: event-led vs signal-led vs job-post-led vs proof-led fallback, proof inventory, candidate set, and Finalizer Pass. |
171
- | Always load before drafting | `subskillName: "create-campaign-v2", assetPath: "references/gold-standard-message-examples.md"` | Full archive quality bar: exact motion examples, hard rules, and transfer limits. Use it to choose 1 primary example, not to recolor copy. |
172
- | Always load before drafting (never optional) | `subskillName: "create-campaign-v2", assetPath: "references/ai-tells.md"` | Canonical anti-AI checklist: body self-intros, source citations, resume recaps, title-fit assumptions, em dashes, signoffs, weak proof brags, and flattened "worth sending" source bridges. |
173
- | Load before approval / final pass | `subskillName: "create-campaign-v2", assetPath: "references/thomas-revision-filters.md"` | Substance filters: earned-right, presumption, vague proof, read-as-1:1, founder-origin coherence, anti-talk-at, and AI-tell filter. |
174
- | Dry-mode artifact output only | `subskillName: "create-campaign-v2", assetPath: "references/gold-standard-message-validation-example.md"` | Fully worked example for proof inventory, candidate messages, Finalizer Pass, Selected Winner, findings, and recommendation. |
175
- | Dry-mode artifact output only | `subskillName: "create-campaign-v2", assetPath: "references/validation-criteria.md"` | Step-level acceptance criteria and dry-mode message validation expectations. |
176
- | Reusable token rules only | `subskillName: "create-campaign", assetPath: "references/ai-native-tokens.md"` | Token spec for rich judgment tokens, including required clauses and fallback behavior. |
177
- | Reusable token rules only | `subskillName: "create-campaign", assetPath: "references/token-fill-examples.md"` | Concrete good/bad token fills, interpolation guardrails, and product-noun substitution traps. |
178
-
179
- Default load order:
180
-
181
- 1. Load the 4 **Always load before drafting** assets. Do not infer their
182
- contents from this prompt; actually call `mcp__sellable__get_subskill_asset`
183
- for each required asset.
184
- 2. Draft and run the internal Finalizer Pass.
185
- 3. Run the selected winner against `ai-tells.md`. This is never optional. If the
186
- AI-tells catalog was not loaded or any `REJECT` tell matches, do not approve,
187
- confirm, recommend, or show the template as ready; return `revise-message`.
188
- 4. Load `thomas-revision-filters.md` before approval, `confirmed`, or template
189
- recommendation.
190
- 5. Load dry-mode artifact references only when writing `message-validation.md`.
191
- 6. Load token-rule references only when creating reusable templates or Token
192
- Fill Rules that need sentence-level personalization.
151
+ - `mcp/sellable/skills/create-campaign/references/ai-native-tokens.md`
152
+ - `mcp/sellable/skills/create-campaign/references/token-fill-examples.md`
153
+ - `mcp/sellable/skills/create-campaign-brief/references/phase75-active-runtime-message-pack.md`
154
+ - `mcp/sellable/skills/create-campaign-v2/references/validation-criteria.md`
155
+ - `mcp/sellable/skills/create-campaign-v2/references/thomas-revision-filters.md`
156
+ - `mcp/sellable/skills/create-campaign-v2/references/gold-standard-message-patterns.md`
157
+ - `mcp/sellable/skills/create-campaign-v2/references/gold-standard-message-examples.md`
158
+ - `mcp/sellable/skills/create-campaign-v2/references/gold-standard-message-validation-example.md`
193
159
 
194
160
  ### Rich Personalization Contract
195
161
 
196
162
  `mcp/sellable/skills/create-campaign/references/ai-native-tokens.md` is the
197
163
  canonical spec for personalization that requires judgment. Load it before
198
164
  writing the Token Fill Rules or any reusable template notes.
199
- When token fill wording is material, use
200
- `mcp/sellable/skills/create-campaign/references/token-fill-examples.md` as the
201
- conditional good/bad fill reference.
202
165
 
203
166
  - Sentence-level personalization must use AI-native bracket tokens in the
204
167
  reusable template / token plan, not old-school field substitution. Field
@@ -235,7 +198,7 @@ winner gate**.
235
198
 
236
199
  ### Retrieval & motion
237
200
 
238
- - treat `gold-standard-runtime-message-pack.md` as the **real line-level
201
+ - treat `phase75-active-runtime-message-pack.md` as the **real line-level
239
202
  gold pack** for active clients and proven live message shapes
240
203
  - retrieve against the full archived gold-standard library and pick the closest 2-4 examples for consideration
241
204
  - use the runtime pack first for concrete formatting cues that the
@@ -365,8 +328,6 @@ artifact.**
365
328
  - `saw you on {{recent_signal}}`
366
329
  - `saw you around {{recent_signal}}`
367
330
  - `saw you engaging with {{recent_signal}}`
368
- - `saw you raise your hand for {{signal_topic}}, so figured this was worth sending`
369
- - `figured this was worth sending`
370
331
 
371
332
  Safer shapes:
372
333
 
@@ -378,9 +339,8 @@ artifact.**
378
339
  - `if {{workflow_signal}} is nowhere near your lane, ignore me`
379
340
  - `figured this might matter if {{workflow_signal}} is live at {{company}}`
380
341
  - `thought of {{company}} because {{observable_signal}} points at {{problem_context}}`
381
- - `found you in a thread about {{signal_topic}}, so may be off, but this seemed relevant`
382
- - `saw you raise your hand for {{signal_topic}}, so figured this was (hopefully) worth sending` only when the source was an explicit lead-magnet comment, reply, or opt-in. The parenthetical uncertainty is load-bearing; do not flatten it to `so figured this was worth sending`.
383
- - `saw you raise your hand for {{signal_topic}} (creepy to reach out based on that, i know) - but this felt too on the nose to ignore` only when the source was an explicit lead-magnet comment, reply, or opt-in and the sender's voice can carry the cheekier aside
342
+ - `saw you raise your hand for {{signal_topic}}, so figured this was (hopefully) worth sending` only when the engagement signal is the actual source
343
+ - `saw you raise your hand for {{signal_topic}} (creepy to reach out based on that, i know) - but this felt too on the nose to ignore` only when the engagement signal is the actual source and the sender's voice can carry the cheekier aside
384
344
 
385
345
  For LinkedIn-post-sourced campaigns (commenters, reactors, lead magnet
386
346
  replies, or scraped conversations), it is acceptable to reference the
@@ -388,10 +348,7 @@ artifact.**
388
348
  activity-log-level: `saw you in a few conversations around
389
349
  {{signal_topic}}, so hope this is relevant` is acceptable; `saw you
390
350
  commented on {{post_context}}` and `your LinkedIn activity around...` are
391
- not. Reserve `raise your hand` phrasing for explicit lead-magnet comments,
392
- replies, or opt-ins. For ordinary thread discovery, use `saw you in a few
393
- conversations around {{signal_topic}}...` or `found you in a thread about
394
- {{signal_topic}}...`.
351
+ not.
395
352
 
396
353
  Keep the apologetic nature, but aim it at uncertainty, not surveillance.
397
354
  Good: `saw you in a few conversations about outbound, so may be off, but
@@ -687,17 +644,18 @@ help...` or `built for [buyer] to...`. Do not overuse generic solved-state
687
644
  solved, or fail to connect to the specific sample row. Prefer a concrete
688
645
  row-fit line, a useful artifact, or a buyer-owned current-state observation
689
646
  that the recipient can understand without reading the brief.
690
- - run the parallel action formatting check when the winner has 3 adjacent
691
- product actions, outputs, mechanics, or objection removers. If the lines
692
- repeat the same subject pattern (`It drafts...` / `It adapts...` /
693
- `It helps...`) and each line is a discrete function with no narrative proof
694
- clause, prefer a compact `-` bullet stack because it is easier to scan on
695
- mobile. Example:
696
- `It helps your team:` followed by `- Draft posts...`, `- Adapt them...`,
697
- `- Keep showing up...`. Do not force bullets when there are only 1-2
698
- actions, one line needs narrative context, the bullets feel like a landing
699
- page, or the paragraph version is clearly more human and still scans cleanly.
700
- This is a formatting preference, not a message-strategy gate.
647
+ - if 3 adjacent mechanics, objection removers, proof points, or CTA
648
+ options are genuinely parallel and easier to understand as a short
649
+ `-` bullet stack, use the bullet stack in the winner. Do not reserve
650
+ this for cleanup. Use bullets when they make the buyer picture the offer
651
+ faster on mobile. If the product has 3+ plain mechanics such as pricing
652
+ control, take-rate/economics, malpractice, credentialing, billing, async
653
+ chat/photo care, or setup speed, prefer a compact bullet stack over
654
+ separate prose lines unless bullets would make the note feel like a
655
+ landing page. For data / intelligence products, if the buyer receives 3+
656
+ concrete output types (e.g. accounts, infrastructure, signals, alerts,
657
+ records, reports), prefer a short bullet stack over a dense mechanism
658
+ paragraph.
701
659
  - if one finalist already holds the best of every piece, the winner may
702
660
  equal it — name which one and on which axis it won (relevance,
703
661
  distinctiveness, proof, coherence, readability)
@@ -766,12 +724,8 @@ Finalizer preference when multiple candidates are otherwise comparable:
766
724
  peer-call, compare-notes, or similar identity-call framing. Those CTAs
767
725
  are usually weaker than naming the useful thing the buyer gets. Use them
768
726
  only when the user explicitly chose that route or the brief makes that
769
- peer-call motion the approved offer. Even then, preserve the intent, not the
770
- phrase. Translate `compare notes` into a concrete CTA that names the topic,
771
- workflow, artifact, preview, teardown, or working session. Prefer shapes like
772
- `Open to a quick call on how {{company_or_team}} might turn LinkedIn content
773
- into pipeline?`. Do not use `Open to compare notes?` or `Open to comparing
774
- notes on...`.
727
+ peer-call motion the approved offer. Even then, the CTA must name the
728
+ useful return artifact, preview, teardown, or working session.
775
729
  - when the message is selling or introducing a product, make the product
776
730
  plain before asking for time, but do not make the opener sound like a
777
731
  homepage definition. The reader should be able to answer "what is this?"
@@ -981,10 +935,7 @@ Before drafting, answer these five questions explicitly:
981
935
  4. **What proof makes it believable?** Pick the one proof beat that
982
936
  answers the buyer's biggest skepticism.
983
937
  5. **What is the lowest-friction true next step?** Use only a next step
984
- supported by the inputs. If the campaign brief explicitly names a CTA
985
- motion, preserve it unless it fails truth, clarity, pressure, or safety
986
- gates. Improve the CTA by making the object concrete before replacing the
987
- motion.
938
+ supported by the inputs.
988
939
 
989
940
  Then choose the exact element pool that angle drafts are allowed to use:
990
941
 
@@ -1035,23 +986,6 @@ both choices are genuinely useful and supported:
1035
986
  Do not add option B just to mimic a gold standard. If the second option
1036
987
  is weak, use one CTA.
1037
988
 
1038
- CTA precedence:
1039
-
1040
- 1. If the campaign brief explicitly names a CTA motion, preserve the intent of
1041
- that motion unless it is unsupported, too high-pressure, unsafe, or too vague
1042
- to make concrete.
1043
- 2. If preserving it, make the object specific in the same line so the buyer
1044
- knows what they are agreeing to discuss, see, or get.
1045
- 3. Replace it only when the brief CTA cannot pass truth, clarity, pressure, or
1046
- safety gates.
1047
-
1048
- Treat `compare notes` as shorthand for a peer conversation, not as buyer-facing
1049
- copy. The phrase itself is blocked in selected winners, including `Open to
1050
- compare notes?`, `Founder-to-founder compare notes?`, and `Open to comparing
1051
- notes on...`. If the brief selected that intent, translate it into a concrete
1052
- quick-call or working-session CTA, e.g. `Open to a quick call on how
1053
- {{company_or_team}} might turn LinkedIn content into pipeline?`.
1054
-
1055
989
  For artifact/sample offers, the CTA should usually be one self-contained
1056
990
  yes/no question that names the concrete thing the buyer gets. Do not split
1057
991
  the ask into a setup sentence plus a vague question.
@@ -1630,13 +1564,6 @@ teardown`, `record a video`, or similar assets are BLOCKED unless the
1630
1564
  input says that exact next step exists. When unsure, ask for the
1631
1565
  lowest-friction true next step from the brief, such as sending the
1632
1566
  setup link, next step, or a short walkthrough.
1633
- - **Brief CTA obedience:** if the brief explicitly names a CTA motion, the
1634
- selected winner must either preserve that motion's intent with concrete
1635
- specificity or explain why truth, clarity, pressure, or safety gates forced a
1636
- replacement.
1637
- If the brief uses `compare notes`, do not put that phrase in buyer-facing copy.
1638
- Translate it into a concrete quick-call or working-session CTA that names the
1639
- topic or workflow.
1640
1567
  - **CTA clarity:** if the product category is unfamiliar, the CTA must
1641
1568
  make the preview easy to imagine in one short phrase. Avoid vague asks
1642
1569
  like `send the setup link` unless the message has already made that
@@ -1651,11 +1578,8 @@ teardown`, `record a video`, or similar assets are BLOCKED unless the
1651
1578
  artifact / preview] you can [use/check/compare]?`.
1652
1579
  - **CTA specificity:** generic CTAs like `compare notes`, `worth a chat`,
1653
1580
  `open to a call`, or `quick walkthrough` are BLOCKED unless the same
1654
- line names the specific thing the buyer will discuss, see, or get. The
1655
- next step must be easy to picture. `Open to a quick call on how
1656
- {{company_or_team}} might turn LinkedIn content into pipeline?` passes
1657
- because the topic is concrete; `Open to compare notes?` fails because the
1658
- object is missing and the phrase is stale.
1581
+ line names the specific thing the buyer will compare, see, or get. The
1582
+ next step must be easy to picture.
1659
1583
  - **Preview CTA wording:** when the CTA is a preview, prefer `open to
1660
1584
  seeing...` over `worth seeing...` unless the chosen gold motion strongly
1661
1585
  supports `worth`. `Open to seeing what this would look like for your own
@@ -1744,11 +1668,8 @@ led to it. Acceptable openers:
1744
1668
  - `Hey {{first_name}}, hope this is relevant if [buyer context] is still on your plate.`
1745
1669
  - `Hey {{first_name}}, saw you might be interested in [topic], so hope this is relevant.`
1746
1670
  - `Hey {{first_name}}, saw you in a few conversations around [topic], so hope this is relevant.`
1747
- - `Hey {{first_name}}, found you in a thread about [topic], so may be off, but this seemed relevant.`
1748
- - `Hey {{first_name}}, saw you raise your hand for [topic], so figured this was (hopefully) worth sending.` Only use this for explicit lead-magnet comments, replies, or opt-ins.
1749
- - `Hey {{first_name}}, saw you raise your hand for [topic] (creepy to reach out based on that, i know) - but this felt too on the nose to ignore.` Only use this for explicit lead-magnet comments, replies, or opt-ins.
1750
- - Do not use the flattened line `so figured this was worth sending`; either keep
1751
- `(hopefully)` or use `so hope this is relevant`.
1671
+ - `Hey {{first_name}}, saw you raise your hand for [topic], so figured this was (hopefully) worth sending.`
1672
+ - `Hey {{first_name}}, saw you raise your hand for [topic] (creepy to reach out based on that, i know) - but this felt too on the nose to ignore.`
1752
1673
  - `Hey {{first_name}}, pre-[product], we [did the operator-reality
1753
1674
  thing] for [X] years; [one-line consequence].`
1754
1675
  - `Hey {{first_name}}, building a thing for [segment] I think you'd
@@ -1959,18 +1880,10 @@ Flow skeleton (apply even when motion varies):
1959
1880
  2. Pain — what's breaking now
1960
1881
  3. **What the product IS** — one crisp sentence naming the product and what category of work it takes on. Example shape: `[Product] is [a category-noun] that [takes a specific class of work off the buyer's plate]`. When the offer is for the buyer's exact role/credential, prefer `lets you...` or `[role]s like you...` over `lets a [role]...` so the buyer does not feel treated like an outsider. Archive-anchored illustrations: Galley's "AI that reads the messiest BEOs and turns them into production-ready plans"; Revvix's "shows what's actually exploitable on your endpoints based on runtime activity".
1961
1882
  4. **What the product DOES** — one action per line. Three actions maximum. Choose the rendering by a **concrete test**, not a feeling:
1962
- - **Prefer bullets when 3 adjacent action lines are maximally parallel**:
1963
- each starts with the same subject pattern (e.g. `It drafts...` /
1964
- `It adapts...` / `It helps...`), each is a discrete product function,
1965
- and none carries narrative context or proof. Use a setup line plus short
1966
- `-` bullets, e.g. `It helps your team:` then `- Draft posts...`,
1967
- `- Adapt them...`, `- Keep showing up...`.
1968
- - **Use one-line paragraphs** when there are only 1-2 actions, at least one
1969
- action carries a short narrative clause, bullets would feel like a landing
1970
- page, or the paragraph version is clearly more human and still scans
1971
- cleanly.
1972
- - "Conversational motion" alone is **not** a reason to avoid bullets when
1973
- all 3 action lines repeat the same `It X` structure.
1883
+ - **Use bullets when the action lines are maximally parallel**: each starts with the same subject (e.g. `It X` / `It Y` / `It Z`), each is a discrete product function, none carries narrative context. This is the default case.
1884
+ - Example shape: `- [Verb] [concrete object from the buyer's workflow].`
1885
+ - **Use one-line paragraphs only when at least one action carries a short narrative clause** that wouldn't fit cleanly in a bullet.
1886
+ - "Conversational motion" is **not** a reason to prefer paragraphs. If the three actions all start with `It X`, they are parallel by definition and should render as bullets.
1974
1887
  - Never stack the three actions into one glued comma-list sentence.
1975
1888
  5. Deployment ease — one short paragraph
1976
1889
  6. CTA — useful next step, binary when the brief supports it
@@ -1979,9 +1892,7 @@ Flow skeleton (apply even when motion varies):
1979
1892
  Rules within the flow:
1980
1893
 
1981
1894
  - **banned**: comma-stacking three actions into one glued sentence (e.g. `"order intake, inventory sync, and reorder timing"` glued together). Split into one action per line.
1982
- - **preferred**: one action per line — as one-line paragraphs or as a bullet
1983
- list, whichever reads cleaner. Use bullets as a mobile readability preference
1984
- for 3 repeated-subject product actions, not as a blanket hard gate.
1895
+ - **preferred**: one action per line — as one-line paragraphs or as a bullet list, whichever reads cleaner (see below)
1985
1896
  - the "what the product IS" sentence comes **before** the action breakdown — skipping it makes the actions feel disconnected
1986
1897
  - if the brief does not support three distinct actions, drop to two or one. Do not pad.
1987
1898
  - if a proof sentence gets long, split the metric and the explanation into separate one-line paragraphs rather than chaining them together
@@ -1999,11 +1910,10 @@ Rules:
1999
1910
  - `"Saw you might be interested in [topic], so hope this is relevant."`
2000
1911
  - `"Saw you in a few conversations around [topic], so hope this is relevant."`
2001
1912
  - `"Saw you in a few conversations about [topic], so may be off, but this seemed relevant."`
2002
- - `"Found you in a thread about [topic], so may be off, but this seemed relevant."`
2003
1913
  - `"Thought of {{company}} because [observable signal] points at [problem]."`
2004
1914
  - `"Figured this might matter if [workflow] is live at {{company}}."`
2005
- - `"Saw you raise your hand for [topic], so figured this was (hopefully) worth sending."` Only for explicit lead-magnet comments, replies, or opt-ins.
2006
- - `"Saw you raise your hand for [topic] (creepy to reach out based on that, i know) - but this felt too on the nose to ignore."` Only for explicit lead-magnet comments, replies, or opt-ins.
1915
+ - `"Saw you raise your hand for [topic], so figured this was (hopefully) worth sending."`
1916
+ - `"Saw you raise your hand for [topic] (creepy to reach out based on that, i know) - but this felt too on the nose to ignore."`
2007
1917
  - blocked signal use:
2008
1918
  - `"AI-GTM stack is clearly on your mind."`
2009
1919
  - `"You're clearly focused on [area]."`
@@ -2012,9 +1922,7 @@ Rules:
2012
1922
  - `"Saw you on [topic]."`
2013
1923
  - `"Saw you around [topic]."`
2014
1924
  - `"Saw you engaging with [topic]."`
2015
- - `"Saw you raise your hand for [topic], so figured this was worth sending."`
2016
- - `"Figured this was worth sending."`
2017
- - signal-led opener shape is a **special case**, not the default. Use it only when the archived motion truly depends on it and the line can stay natural. For LinkedIn-post-sourced campaigns, prefer `"saw you in a few conversations around [topic], so hope this is relevant"` or `"found you in a thread about [topic], so may be off, but this seemed relevant"` when referencing the source makes the outreach feel less random. Avoid activity-log phrasing such as `"you commented on..."`, `"you reacted to..."`, or `"your LinkedIn activity..."` unless the approved motion is the deliberately self-aware raise-hand line for an explicit lead-magnet comment, reply, or opt-in.
1925
+ - signal-led opener shape is a **special case**, not the default. Use it only when the archived motion truly depends on it and the line can stay natural. For LinkedIn-post-sourced campaigns, prefer `"saw you in a few conversations around [topic], so hope this is relevant"` when referencing the source makes the outreach feel less random. Avoid activity-log phrasing such as `"you commented on..."`, `"you reacted to..."`, or `"your LinkedIn activity..."` unless the approved motion is the deliberately self-aware raise-hand line.
2018
1926
  - tokenized engagement-source opener shape is BLOCKED by default:
2019
1927
  `{{first_name}}, saw you {{engagement_context}} on {{post_context}}` reads
2020
1928
  like surveillance unless the filled line is explicitly self-aware and
@@ -2022,12 +1930,11 @@ Rules:
2022
1930
  [topic] is part of the plan`, `saw you might be interested in [topic], so hope
2023
1931
  this is relevant`, `saw you in a few conversations around [topic], so hope this
2024
1932
  is relevant`, `saw you in a few conversations about [topic], so may be off,
2025
- but this seemed relevant`, or `found you in a thread about [topic], so may be
2026
- off, but this seemed relevant`. Use the self-aware raise-hand shapes only when
2027
- the source was an explicit lead-magnet comment, reply, or opt-in: `saw you raise
2028
- your hand for [topic], so figured this was (hopefully) worth sending` or `saw you
2029
- raise your hand for [topic] (creepy to reach out based on that, i know) - but
2030
- this felt too on the nose to ignore`. Do not use the longer `you might not remember the thread...` shape;
1933
+ but this seemed relevant`, or one of the self-aware raise-hand shapes when the source is the
1934
+ actual reason for the note: `saw you raise your hand for [topic], so figured
1935
+ this was (hopefully) worth sending` or `saw you raise your hand for [topic]
1936
+ (creepy to reach out based on that, i know) - but this felt too on the nose to
1937
+ ignore`. Do not use the longer `you might not remember the thread...` shape;
2031
1938
  if the concise source bridge still feels awkward, omit the engagement reference.
2032
1939
  - do not describe the sender/client in third person inside the outbound message.
2033
1940
  `p.s. Saju's angle is...`, `Christian's angle is...`, `[sender]'s approach
@@ -2461,7 +2368,7 @@ hiring for`
2461
2368
  - Best CTA: Candidate [A|B|C] — reason
2462
2369
  - Best PS / no-PS decision: Candidate [A|B|C] — reason
2463
2370
  - Element edits made by finalizer: ...
2464
- - Parallel action formatting: bullets used | paragraphs kept | not applicable — reason
2371
+ - Bullet-stack decision: used | rejected | not applicable — reason
2465
2372
  - Style consistency check: PASS | BLOCKED — reason
2466
2373
  - Assembly note: clean combination or one candidate swept
2467
2374
 
@@ -2470,7 +2377,7 @@ hiring for`
2470
2377
  - Original winner: ...
2471
2378
  - Simplified candidate: ...
2472
2379
  - Simplifier edits: combined lines | split dense line | preserved bullet stack | added bullet stack | none
2473
- - Parallel action formatting: preserved bullets | added bullets | paragraphs kept | not applicable — reason
2380
+ - Bullet-stack decision: preserved | added | rejected | not applicable — reason
2474
2381
  - Robustness check: PASS | BLOCKED — reason
2475
2382
  - Decision: applied | rejected
2476
2383
 
@@ -2493,7 +2400,6 @@ hiring for`
2493
2400
  - Jargon / acronym exactness: PASS | BLOCKED — reason
2494
2401
  - Style consistency: PASS | BLOCKED — reason
2495
2402
  - CTA truth: PASS | BLOCKED — reason
2496
- - Brief CTA obedience: PASS | BLOCKED | NOT APPLICABLE — reason
2497
2403
  - CTA clarity: PASS | BLOCKED — reason
2498
2404
  - PS restraint: PASS | BLOCKED | OMITTED — reason
2499
2405
  - YC / backing PS: PASS | BLOCKED | OMITTED — reason
@@ -2614,28 +2520,22 @@ too generic, diagnose the gap precisely:
2614
2520
 
2615
2521
  Then tighten the brief or calibration notes before scaling.
2616
2522
 
2617
- Use the v2 runtime gold pack as the primary line-level source even when the
2618
- brief does not already contain winning examples. Do not default to generic
2619
- REPLY-style copy when the motion clearly matches a tighter approved pattern.
2620
- Primary approved references are:
2523
+ Use the example bank as the primary strategy source even when the brief does
2524
+ not already contain winning examples. Do not default to generic REPLY-style
2525
+ copy when the motion clearly matches a tighter archived pattern. Strong
2526
+ references include:
2621
2527
 
2622
- - sellable.dev
2623
- - Hey Digital / HeyDigital
2528
+ - Sellable.dev
2624
2529
  - Galley
2625
- - Clover
2626
- - Persona
2627
-
2628
- Use Superpower only for benefits/healthcare mechanism language and cleaned
2629
- low-certainty relevance bridges. Use Revvix / Spektion and Superposition only
2630
- for explicit event/logistics or job-post/founder-hiring motions. Do not use
2631
- Gelee, westpark villas, Amplify Security, or raw old-client archive examples as
2632
- runtime inspiration unless the caller explicitly provides them as campaign
2633
- calibration.
2530
+ - Gelee
2531
+ - HeyDigital
2532
+ - Revvix / Spektion
2533
+ - Superposition
2534
+ - Persona Digital
2634
2535
 
2635
2536
  When the brief is sparse but the motion clearly matches an archived winner,
2636
- borrow the closest approved shape from `gold-standard-runtime-message-pack.md`
2637
- first, then use `gold-standard-message-examples.md` only for strategy skeletons
2638
- before inventing a new structure.
2537
+ borrow the closest message shape from
2538
+ `gold-standard-message-examples.md` before inventing a new structure.
2639
2539
 
2640
2540
  ### Single Row
2641
2541
 
@@ -2719,12 +2619,12 @@ research → condense → 10 angle agents in parallel → finalizer combines bes
2719
2619
  - Background: {1-2 lines}
2720
2620
 
2721
2621
  ## Voice + Outbound Rules (condensed — full files available via Read tool)
2722
- - Use `~/.sellable/configs/core/context-modes.md` to choose the right context stance, then run an anti-AI audit against `~/.sellable/configs/core/anti-ai-writing-style.md` before returning copy.
2723
- - Flow skeleton: opener → pain → **what the product IS** → **what it DOES** (one action per line, up to three; prefer short bullets for 3 repeated-subject product actions) → deployment ease → CTA → optional PS
2622
+ - Use `.sellable/configs/core/context-modes.md` to choose the right context stance, then run an anti-AI audit against `.sellable/configs/core/anti-ai-writing-style.md` before returning copy.
2623
+ - Flow skeleton: opener → pain → **what the product IS** → **what it DOES** (one action per line, up to three) → deployment ease → CTA → optional PS
2724
2624
  - A cold reader must be able to state what the product does in one sentence after reading. Require a crisp `Product is an X that does Y` anchor before any action breakdown. Do not gesture at "that chain" / "the stack" / "that work"
2725
2625
  - Blank line between every sentence in the body. The body renders as a sequence of one-line paragraphs separated by blank lines, not as multi-sentence paragraphs. Target 6-10 one-line paragraphs
2726
2626
  - 5th-grade reading level by default. Cut glue language (handoff, order-to-cash, rip-and-replace). Keep brief-native product/tool names (Shopify, HubSpot)
2727
- - No feature/benefit marketing bullet lists, no "I noticed...", no compliment sandwiches, no em dashes unless the canonical example uses one. Exception: use a short bullet stack when 3 adjacent product actions repeat the same subject pattern and bullets improve mobile readability.
2627
+ - No bullet points, no "I noticed...", no compliment sandwiches, no em dashes unless the canonical example uses one
2728
2628
  - No synthesized framing ("at your stage", "in a setup like yours", "running X means...", "X means you're likely...")
2729
2629
  - 3 candidates then `Finalizer Pass` — pick best opener, proof sentence, bridge, CTA across them and assemble the winner
2730
2630
  - PS is optional; only include if it materially strengthens the fit case. When included, use `I` / `our CEO` / `our team` / `we` voice, never bare first names. At most two proof beats, tied to why the sender understands the buyer's pain. No three-credential resume lists
@@ -2786,7 +2686,7 @@ research → condense → 10 angle agents in parallel → finalizer combines bes
2786
2686
  8. Return: { success: true, message: "...", research: [...], anglesExplored: 10 }
2787
2687
  ```
2788
2688
 
2789
- **IMPORTANT:** Load `~/.sellable/configs/core/about-me.md`, `~/.sellable/configs/core/my-company.md`, `~/.sellable/configs/core/context-modes.md`, `~/.sellable/configs/core/proof-ledger.md`, `~/.sellable/configs/core/wins-ledger.md`, `~/.sellable/configs/core/anti-ai-writing-style.md`, `~/.sellable/configs/writing/outbound.md`, and `~/.sellable/insights/cross-skill.md` once in the lead agent. Use the legacy style guide fallback when present. Pass condensed versions to workers so context stays focused.
2689
+ **IMPORTANT:** Load `.sellable/configs/core/about-me.md`, `.sellable/configs/core/my-company.md`, `.sellable/configs/core/context-modes.md`, `.sellable/configs/core/proof-ledger.md`, `.sellable/configs/core/wins-ledger.md`, `.sellable/configs/core/anti-ai-writing-style.md`, `.sellable/configs/writing/outbound.md`, and `.sellable/insights/cross-skill.md` once in the lead agent. Use the legacy style guide fallback when present. Pass condensed versions to workers so context stays focused.
2790
2690
 
2791
2691
  ## Batch Approval
2792
2692
 
@@ -111,7 +111,7 @@ mark private before you ask a blank questionnaire.
111
111
 
112
112
  Prefill from whatever exists:
113
113
 
114
- - `~/.sellable/configs/**`, especially current writing, audience, FAQs, and
114
+ - `.sellable/configs/**`, especially current writing, audience, FAQs, and
115
115
  discovery files.
116
116
  - `docs/funding/**`, `docs/business/**`, and `docs/content/**`.
117
117
  - User-supplied voice samples such as writing, posts, emails, meeting
@@ -151,9 +151,9 @@ Audio-friendly workflow:
151
151
 
152
152
  Every run writes a raw archive:
153
153
 
154
- - `~/.sellable/interviews/{date}-{slug}/raw.md`
155
- - `~/.sellable/interviews/{date}-{slug}/compiled.md`
156
- - `~/.sellable/interviews/{date}-{slug}/decisions.md`
154
+ - `.sellable/interviews/{date}-{slug}/raw.md`
155
+ - `.sellable/interviews/{date}-{slug}/compiled.md`
156
+ - `.sellable/interviews/{date}-{slug}/decisions.md`
157
157
 
158
158
  Raw archives preserve the run. They are not the stable memory layer.
159
159
 
@@ -171,20 +171,20 @@ voice-faithful, reusable, or corrective, propose a candidate upsert:
171
171
  - derived updates
172
172
 
173
173
  Ask the user to approve, edit, reject, or mark private. Approved answers go to
174
- `~/.sellable/configs/core/answer-bank.md` using stable keys so repeat runs can
174
+ `.sellable/configs/core/answer-bank.md` using stable keys so repeat runs can
175
175
  add, correct, merge, and avoid duplicates.
176
176
 
177
177
  ## 5. Register Transcript And Voice Samples
178
178
 
179
179
  Every interview or voice sample can register a curated transcript library entry
180
- under `~/.sellable/configs/core/transcripts/`. Keep the reusable index separate
180
+ under `.sellable/configs/core/transcripts/`. Keep the reusable index separate
181
181
  from raw archives.
182
182
 
183
183
  Required transcript targets:
184
184
 
185
- - `~/.sellable/configs/core/transcripts/README.md`
186
- - `~/.sellable/configs/core/transcripts/INDEX.md`
187
- - `~/.sellable/configs/core/transcripts/topics/{topic}.md`
185
+ - `.sellable/configs/core/transcripts/README.md`
186
+ - `.sellable/configs/core/transcripts/INDEX.md`
187
+ - `.sellable/configs/core/transcripts/topics/{topic}.md`
188
188
 
189
189
  Track source, date, speakers, target speaker, context mode, topic tags, quality
190
190
  notes, sensitivity, and derived memory links.
@@ -194,15 +194,15 @@ notes, sensitivity, and derived memory links.
194
194
  Use `references/compiler-schema.md` before writing compiled core files. Merge
195
195
  updates into the smallest relevant stable file:
196
196
 
197
- - `~/.sellable/configs/core/about-me.md`
198
- - `~/.sellable/configs/core/my-company.md`
199
- - `~/.sellable/configs/core/anti-ai-writing-style.md`
200
- - `~/.sellable/configs/core/proof-ledger.md`
201
- - `~/.sellable/configs/core/story-bank.md`
202
- - `~/.sellable/configs/core/answer-bank.md`
203
- - `~/.sellable/configs/core/context-modes.md`
204
- - `~/.sellable/configs/core/decision-rules.md`
205
- - `~/.sellable/configs/core/change-log.md`
197
+ - `.sellable/configs/core/about-me.md`
198
+ - `.sellable/configs/core/my-company.md`
199
+ - `.sellable/configs/core/anti-ai-writing-style.md`
200
+ - `.sellable/configs/core/proof-ledger.md`
201
+ - `.sellable/configs/core/story-bank.md`
202
+ - `.sellable/configs/core/answer-bank.md`
203
+ - `.sellable/configs/core/context-modes.md`
204
+ - `.sellable/configs/core/decision-rules.md`
205
+ - `.sellable/configs/core/change-log.md`
206
206
 
207
207
  Repeat runs must preserve user edits. Only replace generated sections that are
208
208
  clearly marked as generated/mergeable. Otherwise append, patch the smallest
@@ -213,10 +213,10 @@ section, or add a dated correction in `change-log.md`.
213
213
  Use curated reference folders with `INDEX.md` manifests and copied or distilled
214
214
  examples where the example itself is useful context:
215
215
 
216
- - `~/.sellable/configs/core/references/linkedin-posts/`
217
- - `~/.sellable/configs/core/references/inspiration/`
218
- - `~/.sellable/configs/core/references/applications/`
219
- - `~/.sellable/configs/core/references/sales-copy/`
216
+ - `.sellable/configs/core/references/linkedin-posts/`
217
+ - `.sellable/configs/core/references/inspiration/`
218
+ - `.sellable/configs/core/references/applications/`
219
+ - `.sellable/configs/core/references/sales-copy/`
220
220
 
221
221
  Use `references/reference-curation.md` for manifest fields, duplicate keys, and
222
222
  when to copy versus index only.
@@ -226,7 +226,7 @@ when to copy versus index only.
226
226
  Before finalizing, run the silent audit pass in `references/anti-ai-audit.md`.
227
227
  Capture banned AI-ish patterns, user-authentic exceptions, context-only rules,
228
228
  negative-parallelism limits, proof hygiene, and anti-overfitting warnings in
229
- `~/.sellable/configs/core/anti-ai-writing-style.md`.
229
+ `.sellable/configs/core/anti-ai-writing-style.md`.
230
230
 
231
231
  ## 9. Continue After Saves
232
232
 
@@ -248,7 +248,7 @@ Repeat runs are normal. They must add, correct, merge, and preserve user edits.
248
248
  references.
249
249
  - Merge into compiled core files instead of replacing whole documents.
250
250
  - Preserve manual sections unless the user explicitly asks to rewrite them.
251
- - Add downstream corrections to `~/.sellable/configs/core/change-log.md`, then
251
+ - Add downstream corrections to `.sellable/configs/core/change-log.md`, then
252
252
  update the smallest affected rule, answer, claim, story, or context mode.
253
253
  </idempotency_rules>
254
254
 
@@ -21,16 +21,16 @@ Key principles:
21
21
 
22
22
  ## Original Objective
23
23
 
24
- Conduct a voice-first interview to populate `~/.sellable/configs/`:
24
+ Conduct a voice-first interview to populate `.sellable/configs/`:
25
25
 
26
- 1. Style guide -> `~/.sellable/configs/writing/styleguide-core.md` and persisted
26
+ 1. Style guide -> `.sellable/configs/writing/styleguide-core.md` and persisted
27
27
  via `set_engage_style_guide`.
28
- 2. Comment rules -> `~/.sellable/configs/writing/comments.md`.
29
- 3. ICP profile -> `~/.sellable/configs/audience/icp.md`.
30
- 4. Tracked people -> `~/.sellable/configs/discovery/influencers.md` via
28
+ 2. Comment rules -> `.sellable/configs/writing/comments.md`.
29
+ 3. ICP profile -> `.sellable/configs/audience/icp.md`.
30
+ 4. Tracked people -> `.sellable/configs/discovery/influencers.md` via
31
31
  `upsert_engage_tracked_person`.
32
32
 
33
- The interview reads `~/.sellable/insights/` to ask smarter questions, such as
33
+ The interview reads `.sellable/insights/` to ask smarter questions, such as
34
34
  which topics or hooks performed in the latest engage/post sessions. The
35
35
  interview should feel like a 5-minute conversation, not a form.
36
36
 
@@ -40,10 +40,10 @@ interview should feel like a 5-minute conversation, not a form.
40
40
 
41
41
  1. Load current configs via `get_engage_memory()` to check what is populated.
42
42
  2. Read lightweight insight files when they exist:
43
- - `~/.sellable/insights/engage-sessions.md`
44
- - `~/.sellable/insights/post-sessions.md`
45
- - `~/.sellable/insights/cross-skill.md`
46
- - `~/.sellable/configs/audience/icp.md`
43
+ - `./.sellable/insights/engage-sessions.md`
44
+ - `./.sellable/insights/post-sessions.md`
45
+ - `./.sellable/insights/cross-skill.md`
46
+ - `./.sellable/configs/audience/icp.md`
47
47
  3. Load the user's LinkedIn profile via `fetch_linkedin_profile`.
48
48
  4. Fetch 5-10 recent posts from 2-3 relevant thought leaders using
49
49
  `search_engagement_posts`.
@@ -95,7 +95,7 @@ corrections and rewrite the config files.
95
95
 
96
96
  ### Phase 5: ICP Profile
97
97
 
98
- If `~/.sellable/configs/audience/icp.md` is still a template or thin, ask who the
98
+ If `.sellable/configs/audience/icp.md` is still a template or thin, ask who the
99
99
  user wants to reach with LinkedIn presence, then write the profile using
100
100
  `core/ICP.template.md`.
101
101
 
@@ -109,7 +109,7 @@ Ask which specific people the user wants to track, then call
109
109
  1. Never fabricate quotes or examples.
110
110
  2. Preserve the user's exact phrasing as blockquotes in the style guide.
111
111
  3. Keep the interview under 5 minutes of user effort.
112
- 4. Always write results to `~/.sellable/configs/`.
112
+ 4. Always write results to `.sellable/configs/`.
113
113
  5. Persist the style guide via MCP.
114
114
  6. Anchor every question to a real post.
115
115
  7. Read business context first, including