@sellable/mcp 0.1.204 → 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.
- package/README.md +11 -10
- package/agents/post-find-leads-filter-scout.md +2 -2
- package/agents/post-find-leads-message-scout.md +14 -7
- package/agents/registry.json +17 -17
- package/agents/source-scout-linkedin-engagement.md +2 -2
- package/agents/source-scout-prospeo-contact.md +3 -3
- package/agents/source-scout-sales-nav.md +3 -3
- package/dist/engage-memory.js +5 -0
- package/dist/identity-memory.js +4 -0
- package/dist/tools/engage-memory.js +2 -2
- package/dist/tools/leads.js +7 -11
- package/dist/tools/prompts.js +6 -6
- package/package.json +1 -1
- package/skills/create-campaign/SKILL.md +24 -11
- package/skills/create-campaign/context/learnings.md +1 -1
- package/skills/create-campaign/references/brief-template.md +2 -2
- package/skills/create-campaign-brief/references/brief-template.md +2 -2
- package/skills/create-campaign-brief/references/draft-lifecycle.md +1 -1
- package/skills/create-campaign-brief/references/examples/briefs/gelee.md +2 -2
- package/skills/create-campaign-brief/references/examples/briefs/superpower.md +28 -41
- package/skills/create-campaign-brief/references/phase75-active-runtime-message-pack.md +9 -12
- package/skills/create-campaign-v2/SKILL.md +27 -21
- package/skills/create-campaign-v2/SOUL.md +12 -9
- package/skills/create-campaign-v2/core/flow.v2.json +1 -1
- package/skills/create-campaign-v2/references/approval-gate-framing.md +3 -3
- package/skills/create-campaign-v2/references/gold-standard-message-examples.md +16 -30
- package/skills/create-campaign-v2/references/gold-standard-message-patterns.md +1 -1
- package/skills/create-campaign-v2/references/step-13-import-leads.md +2 -2
- package/skills/create-campaign-v2/references/thomas-revision-filters.md +1 -6
- package/skills/create-campaign-v2/references/validation-criteria.md +5 -8
- package/skills/create-campaign-v2/references/watch-guide-narration.md +2 -2
- package/skills/create-campaign-v2-tail/SKILL.md +9 -9
- package/skills/create-campaign-v2-validation/SKILL.md +1 -1
- package/skills/create-post/SKILL.md +27 -27
- package/skills/engage/SKILL.md +12 -12
- package/skills/engage/core/README.md +14 -14
- package/skills/find-leads/SKILL.md +1 -1
- package/skills/generate-messages/SKILL.md +54 -104
- package/skills/interview/SKILL.md +24 -24
- package/skills/interview/references/legacy-linkedin-interview.md +12 -12
- package/skills/interview/references/reference-curation.md +4 -4
- package/skills/interview/references/voice-capture-method.md +1 -1
- package/skills/load-voice/SKILL.md +25 -21
- package/skills/providers/signal-discovery.md +2 -2
- package/skills/research/SKILL.md +1 -1
- package/skills/create-campaign-v2/references/gold-standard-runtime-message-pack.md +0 -252
- 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
|
|
27
|
+
### Mode 0: Message Drafting Branch
|
|
28
28
|
|
|
29
|
-
Use this mode when create-campaign-v2 starts
|
|
30
|
-
|
|
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
|
-
|
|
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
|
|
|
@@ -135,22 +135,22 @@ Dry mode validates message quality before campaign mint.
|
|
|
135
135
|
|
|
136
136
|
Read:
|
|
137
137
|
|
|
138
|
-
-
|
|
139
|
-
-
|
|
140
|
-
-
|
|
141
|
-
-
|
|
142
|
-
-
|
|
143
|
-
-
|
|
144
|
-
-
|
|
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
|
-
|
|
149
|
+
prospect setup workstreams in parallel, start the prep/candidate stages and then
|
|
150
150
|
reconcile before final `message-validation.md`.
|
|
151
151
|
- `mcp/sellable/skills/create-campaign/references/ai-native-tokens.md`
|
|
152
152
|
- `mcp/sellable/skills/create-campaign/references/token-fill-examples.md`
|
|
153
|
-
- `mcp/sellable/skills/create-campaign-
|
|
153
|
+
- `mcp/sellable/skills/create-campaign-brief/references/phase75-active-runtime-message-pack.md`
|
|
154
154
|
- `mcp/sellable/skills/create-campaign-v2/references/validation-criteria.md`
|
|
155
155
|
- `mcp/sellable/skills/create-campaign-v2/references/thomas-revision-filters.md`
|
|
156
156
|
- `mcp/sellable/skills/create-campaign-v2/references/gold-standard-message-patterns.md`
|
|
@@ -198,7 +198,7 @@ winner gate**.
|
|
|
198
198
|
|
|
199
199
|
### Retrieval & motion
|
|
200
200
|
|
|
201
|
-
- treat `
|
|
201
|
+
- treat `phase75-active-runtime-message-pack.md` as the **real line-level
|
|
202
202
|
gold pack** for active clients and proven live message shapes
|
|
203
203
|
- retrieve against the full archived gold-standard library and pick the closest 2-4 examples for consideration
|
|
204
204
|
- use the runtime pack first for concrete formatting cues that the
|
|
@@ -644,17 +644,18 @@ help...` or `built for [buyer] to...`. Do not overuse generic solved-state
|
|
|
644
644
|
solved, or fail to connect to the specific sample row. Prefer a concrete
|
|
645
645
|
row-fit line, a useful artifact, or a buyer-owned current-state observation
|
|
646
646
|
that the recipient can understand without reading the brief.
|
|
647
|
-
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
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.
|
|
658
659
|
- if one finalist already holds the best of every piece, the winner may
|
|
659
660
|
equal it — name which one and on which axis it won (relevance,
|
|
660
661
|
distinctiveness, proof, coherence, readability)
|
|
@@ -723,12 +724,8 @@ Finalizer preference when multiple candidates are otherwise comparable:
|
|
|
723
724
|
peer-call, compare-notes, or similar identity-call framing. Those CTAs
|
|
724
725
|
are usually weaker than naming the useful thing the buyer gets. Use them
|
|
725
726
|
only when the user explicitly chose that route or the brief makes that
|
|
726
|
-
peer-call motion the approved offer. Even then,
|
|
727
|
-
|
|
728
|
-
workflow, artifact, preview, teardown, or working session. Prefer shapes like
|
|
729
|
-
`Open to a quick call on how {{company_or_team}} might turn LinkedIn content
|
|
730
|
-
into pipeline?`. Do not use `Open to compare notes?` or `Open to comparing
|
|
731
|
-
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.
|
|
732
729
|
- when the message is selling or introducing a product, make the product
|
|
733
730
|
plain before asking for time, but do not make the opener sound like a
|
|
734
731
|
homepage definition. The reader should be able to answer "what is this?"
|
|
@@ -938,10 +935,7 @@ Before drafting, answer these five questions explicitly:
|
|
|
938
935
|
4. **What proof makes it believable?** Pick the one proof beat that
|
|
939
936
|
answers the buyer's biggest skepticism.
|
|
940
937
|
5. **What is the lowest-friction true next step?** Use only a next step
|
|
941
|
-
supported by the inputs.
|
|
942
|
-
motion, preserve it unless it fails truth, clarity, pressure, or safety
|
|
943
|
-
gates. Improve the CTA by making the object concrete before replacing the
|
|
944
|
-
motion.
|
|
938
|
+
supported by the inputs.
|
|
945
939
|
|
|
946
940
|
Then choose the exact element pool that angle drafts are allowed to use:
|
|
947
941
|
|
|
@@ -992,23 +986,6 @@ both choices are genuinely useful and supported:
|
|
|
992
986
|
Do not add option B just to mimic a gold standard. If the second option
|
|
993
987
|
is weak, use one CTA.
|
|
994
988
|
|
|
995
|
-
CTA precedence:
|
|
996
|
-
|
|
997
|
-
1. If the campaign brief explicitly names a CTA motion, preserve the intent of
|
|
998
|
-
that motion unless it is unsupported, too high-pressure, unsafe, or too vague
|
|
999
|
-
to make concrete.
|
|
1000
|
-
2. If preserving it, make the object specific in the same line so the buyer
|
|
1001
|
-
knows what they are agreeing to discuss, see, or get.
|
|
1002
|
-
3. Replace it only when the brief CTA cannot pass truth, clarity, pressure, or
|
|
1003
|
-
safety gates.
|
|
1004
|
-
|
|
1005
|
-
Treat `compare notes` as shorthand for a peer conversation, not as buyer-facing
|
|
1006
|
-
copy. The phrase itself is blocked in selected winners, including `Open to
|
|
1007
|
-
compare notes?`, `Founder-to-founder compare notes?`, and `Open to comparing
|
|
1008
|
-
notes on...`. If the brief selected that intent, translate it into a concrete
|
|
1009
|
-
quick-call or working-session CTA, e.g. `Open to a quick call on how
|
|
1010
|
-
{{company_or_team}} might turn LinkedIn content into pipeline?`.
|
|
1011
|
-
|
|
1012
989
|
For artifact/sample offers, the CTA should usually be one self-contained
|
|
1013
990
|
yes/no question that names the concrete thing the buyer gets. Do not split
|
|
1014
991
|
the ask into a setup sentence plus a vague question.
|
|
@@ -1587,13 +1564,6 @@ teardown`, `record a video`, or similar assets are BLOCKED unless the
|
|
|
1587
1564
|
input says that exact next step exists. When unsure, ask for the
|
|
1588
1565
|
lowest-friction true next step from the brief, such as sending the
|
|
1589
1566
|
setup link, next step, or a short walkthrough.
|
|
1590
|
-
- **Brief CTA obedience:** if the brief explicitly names a CTA motion, the
|
|
1591
|
-
selected winner must either preserve that motion's intent with concrete
|
|
1592
|
-
specificity or explain why truth, clarity, pressure, or safety gates forced a
|
|
1593
|
-
replacement.
|
|
1594
|
-
If the brief uses `compare notes`, do not put that phrase in buyer-facing copy.
|
|
1595
|
-
Translate it into a concrete quick-call or working-session CTA that names the
|
|
1596
|
-
topic or workflow.
|
|
1597
1567
|
- **CTA clarity:** if the product category is unfamiliar, the CTA must
|
|
1598
1568
|
make the preview easy to imagine in one short phrase. Avoid vague asks
|
|
1599
1569
|
like `send the setup link` unless the message has already made that
|
|
@@ -1608,11 +1578,8 @@ teardown`, `record a video`, or similar assets are BLOCKED unless the
|
|
|
1608
1578
|
artifact / preview] you can [use/check/compare]?`.
|
|
1609
1579
|
- **CTA specificity:** generic CTAs like `compare notes`, `worth a chat`,
|
|
1610
1580
|
`open to a call`, or `quick walkthrough` are BLOCKED unless the same
|
|
1611
|
-
line names the specific thing the buyer will
|
|
1612
|
-
next step must be easy to picture.
|
|
1613
|
-
{{company_or_team}} might turn LinkedIn content into pipeline?` passes
|
|
1614
|
-
because the topic is concrete; `Open to compare notes?` fails because the
|
|
1615
|
-
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.
|
|
1616
1583
|
- **Preview CTA wording:** when the CTA is a preview, prefer `open to
|
|
1617
1584
|
seeing...` over `worth seeing...` unless the chosen gold motion strongly
|
|
1618
1585
|
supports `worth`. `Open to seeing what this would look like for your own
|
|
@@ -1913,18 +1880,10 @@ Flow skeleton (apply even when motion varies):
|
|
|
1913
1880
|
2. Pain — what's breaking now
|
|
1914
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".
|
|
1915
1882
|
4. **What the product DOES** — one action per line. Three actions maximum. Choose the rendering by a **concrete test**, not a feeling:
|
|
1916
|
-
- **
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
`-` bullets, e.g. `It helps your team:` then `- Draft posts...`,
|
|
1921
|
-
`- Adapt them...`, `- Keep showing up...`.
|
|
1922
|
-
- **Use one-line paragraphs** when there are only 1-2 actions, at least one
|
|
1923
|
-
action carries a short narrative clause, bullets would feel like a landing
|
|
1924
|
-
page, or the paragraph version is clearly more human and still scans
|
|
1925
|
-
cleanly.
|
|
1926
|
-
- "Conversational motion" alone is **not** a reason to avoid bullets when
|
|
1927
|
-
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.
|
|
1928
1887
|
- Never stack the three actions into one glued comma-list sentence.
|
|
1929
1888
|
5. Deployment ease — one short paragraph
|
|
1930
1889
|
6. CTA — useful next step, binary when the brief supports it
|
|
@@ -1933,9 +1892,7 @@ Flow skeleton (apply even when motion varies):
|
|
|
1933
1892
|
Rules within the flow:
|
|
1934
1893
|
|
|
1935
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.
|
|
1936
|
-
- **preferred**: one action per line — as one-line paragraphs or as a bullet
|
|
1937
|
-
list, whichever reads cleaner. Use bullets as a mobile readability preference
|
|
1938
|
-
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)
|
|
1939
1896
|
- the "what the product IS" sentence comes **before** the action breakdown — skipping it makes the actions feel disconnected
|
|
1940
1897
|
- if the brief does not support three distinct actions, drop to two or one. Do not pad.
|
|
1941
1898
|
- if a proof sentence gets long, split the metric and the explanation into separate one-line paragraphs rather than chaining them together
|
|
@@ -2411,7 +2368,7 @@ hiring for`
|
|
|
2411
2368
|
- Best CTA: Candidate [A|B|C] — reason
|
|
2412
2369
|
- Best PS / no-PS decision: Candidate [A|B|C] — reason
|
|
2413
2370
|
- Element edits made by finalizer: ...
|
|
2414
|
-
-
|
|
2371
|
+
- Bullet-stack decision: used | rejected | not applicable — reason
|
|
2415
2372
|
- Style consistency check: PASS | BLOCKED — reason
|
|
2416
2373
|
- Assembly note: clean combination or one candidate swept
|
|
2417
2374
|
|
|
@@ -2420,7 +2377,7 @@ hiring for`
|
|
|
2420
2377
|
- Original winner: ...
|
|
2421
2378
|
- Simplified candidate: ...
|
|
2422
2379
|
- Simplifier edits: combined lines | split dense line | preserved bullet stack | added bullet stack | none
|
|
2423
|
-
-
|
|
2380
|
+
- Bullet-stack decision: preserved | added | rejected | not applicable — reason
|
|
2424
2381
|
- Robustness check: PASS | BLOCKED — reason
|
|
2425
2382
|
- Decision: applied | rejected
|
|
2426
2383
|
|
|
@@ -2443,7 +2400,6 @@ hiring for`
|
|
|
2443
2400
|
- Jargon / acronym exactness: PASS | BLOCKED — reason
|
|
2444
2401
|
- Style consistency: PASS | BLOCKED — reason
|
|
2445
2402
|
- CTA truth: PASS | BLOCKED — reason
|
|
2446
|
-
- Brief CTA obedience: PASS | BLOCKED | NOT APPLICABLE — reason
|
|
2447
2403
|
- CTA clarity: PASS | BLOCKED — reason
|
|
2448
2404
|
- PS restraint: PASS | BLOCKED | OMITTED — reason
|
|
2449
2405
|
- YC / backing PS: PASS | BLOCKED | OMITTED — reason
|
|
@@ -2564,28 +2520,22 @@ too generic, diagnose the gap precisely:
|
|
|
2564
2520
|
|
|
2565
2521
|
Then tighten the brief or calibration notes before scaling.
|
|
2566
2522
|
|
|
2567
|
-
Use the
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
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:
|
|
2571
2527
|
|
|
2572
|
-
-
|
|
2573
|
-
- Hey Digital
|
|
2528
|
+
- Sellable.dev
|
|
2574
2529
|
- Galley
|
|
2575
|
-
-
|
|
2576
|
-
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
for explicit event/logistics or job-post/founder-hiring motions. Do not use
|
|
2581
|
-
Gelee, westpark villas, Amplify Security, or raw old-client archive examples as
|
|
2582
|
-
runtime inspiration unless the caller explicitly provides them as campaign
|
|
2583
|
-
calibration.
|
|
2530
|
+
- Gelee
|
|
2531
|
+
- HeyDigital
|
|
2532
|
+
- Revvix / Spektion
|
|
2533
|
+
- Superposition
|
|
2534
|
+
- Persona Digital
|
|
2584
2535
|
|
|
2585
2536
|
When the brief is sparse but the motion clearly matches an archived winner,
|
|
2586
|
-
borrow the closest
|
|
2587
|
-
|
|
2588
|
-
before inventing a new structure.
|
|
2537
|
+
borrow the closest message shape from
|
|
2538
|
+
`gold-standard-message-examples.md` before inventing a new structure.
|
|
2589
2539
|
|
|
2590
2540
|
### Single Row
|
|
2591
2541
|
|
|
@@ -2669,12 +2619,12 @@ research → condense → 10 angle agents in parallel → finalizer combines bes
|
|
|
2669
2619
|
- Background: {1-2 lines}
|
|
2670
2620
|
|
|
2671
2621
|
## Voice + Outbound Rules (condensed — full files available via Read tool)
|
|
2672
|
-
- Use
|
|
2673
|
-
- Flow skeleton: opener → pain → **what the product IS** → **what it DOES** (one action per line, up to three
|
|
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
|
|
2674
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"
|
|
2675
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
|
|
2676
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)
|
|
2677
|
-
- No
|
|
2627
|
+
- No bullet points, no "I noticed...", no compliment sandwiches, no em dashes unless the canonical example uses one
|
|
2678
2628
|
- No synthesized framing ("at your stage", "in a setup like yours", "running X means...", "X means you're likely...")
|
|
2679
2629
|
- 3 candidates then `Finalizer Pass` — pick best opener, proof sentence, bridge, CTA across them and assemble the winner
|
|
2680
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
|
|
@@ -2736,7 +2686,7 @@ research → condense → 10 angle agents in parallel → finalizer combines bes
|
|
|
2736
2686
|
8. Return: { success: true, message: "...", research: [...], anglesExplored: 10 }
|
|
2737
2687
|
```
|
|
2738
2688
|
|
|
2739
|
-
**IMPORTANT:** Load
|
|
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.
|
|
2740
2690
|
|
|
2741
2691
|
## Batch Approval
|
|
2742
2692
|
|
|
@@ -111,7 +111,7 @@ mark private before you ask a blank questionnaire.
|
|
|
111
111
|
|
|
112
112
|
Prefill from whatever exists:
|
|
113
113
|
|
|
114
|
-
-
|
|
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
|
-
-
|
|
155
|
-
-
|
|
156
|
-
-
|
|
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
|
-
|
|
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
|
|
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
|
-
-
|
|
186
|
-
-
|
|
187
|
-
-
|
|
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
|
-
-
|
|
198
|
-
-
|
|
199
|
-
-
|
|
200
|
-
-
|
|
201
|
-
-
|
|
202
|
-
-
|
|
203
|
-
-
|
|
204
|
-
-
|
|
205
|
-
-
|
|
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
|
-
-
|
|
217
|
-
-
|
|
218
|
-
-
|
|
219
|
-
-
|
|
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
|
-
|
|
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
|
|
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
|
|
24
|
+
Conduct a voice-first interview to populate `.sellable/configs/`:
|
|
25
25
|
|
|
26
|
-
1. Style guide ->
|
|
26
|
+
1. Style guide -> `.sellable/configs/writing/styleguide-core.md` and persisted
|
|
27
27
|
via `set_engage_style_guide`.
|
|
28
|
-
2. Comment rules ->
|
|
29
|
-
3. ICP profile ->
|
|
30
|
-
4. Tracked people ->
|
|
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
|
|
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
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
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
|
|
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
|
|
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
|
|
@@ -7,13 +7,13 @@ sensitive, external, or only useful for provenance. Every folder uses INDEX.md m
|
|
|
7
7
|
|
|
8
8
|
## Folders
|
|
9
9
|
|
|
10
|
-
-
|
|
10
|
+
- `.sellable/configs/core/references/linkedin-posts/` - personal best posts,
|
|
11
11
|
comments, hooks, and thread patterns.
|
|
12
|
-
-
|
|
12
|
+
- `.sellable/configs/core/references/inspiration/` - admired outside examples,
|
|
13
13
|
anti-examples, voice-capture sources, and pattern notes.
|
|
14
|
-
-
|
|
14
|
+
- `.sellable/configs/core/references/applications/` - accelerator, investor,
|
|
15
15
|
founder-profile, and answer-pack references.
|
|
16
|
-
-
|
|
16
|
+
- `.sellable/configs/core/references/sales-copy/` - outbound, reply, website,
|
|
17
17
|
deck, objection, proof, and customer-language examples.
|
|
18
18
|
|
|
19
19
|
Each folder should have an `INDEX.md`. A copied/distilled example should live
|
|
@@ -5,7 +5,7 @@ materials are provenance; do not expose them as separate user-facing workflows.
|
|
|
5
5
|
|
|
6
6
|
## Operating Loop
|
|
7
7
|
|
|
8
|
-
1. Prefill from existing
|
|
8
|
+
1. Prefill from existing `.sellable/configs`, docs, posts, transcripts, emails,
|
|
9
9
|
call notes, and user-provided samples.
|
|
10
10
|
2. Do evidence collection: collect source path/URL, date, author/speaker,
|
|
11
11
|
context, audience, privacy, and whether the sample is natural speech, edited
|
|
@@ -16,8 +16,8 @@ Sellable voice/company memory into the current thread before drafting,
|
|
|
16
16
|
answering, rewriting, reviewing, or calibrating copy in the user's voice.
|
|
17
17
|
|
|
18
18
|
This is a read-only usage workflow. Do not interview by default, do not write
|
|
19
|
-
memory files, and do not update
|
|
20
|
-
|
|
19
|
+
memory files, and do not update `.sellable/**` unless the user explicitly asks
|
|
20
|
+
to switch into `$sellable:interview`.
|
|
21
21
|
</role>
|
|
22
22
|
|
|
23
23
|
<default_use_cases>
|
|
@@ -32,52 +32,56 @@ Use this workflow when the user asks to:
|
|
|
32
32
|
</default_use_cases>
|
|
33
33
|
|
|
34
34
|
<load_order>
|
|
35
|
-
Read only relevant files. Start with the active
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
Read only relevant files. Start with the active `.sellable/configs` memory
|
|
36
|
+
layer, not random repo docs.
|
|
37
|
+
|
|
38
|
+
If `.sellable/configs` is not visible from the current working directory, use
|
|
39
|
+
`Glob` to find `**/.sellable/configs/core/my-company.md`, excluding
|
|
40
|
+
`node_modules`, `.next`, `dist`, and `.git`, then use the nearest parent as the
|
|
41
|
+
Sellable memory root.
|
|
38
42
|
|
|
39
43
|
## Core Voice And Judgment
|
|
40
44
|
|
|
41
45
|
Read these when present:
|
|
42
46
|
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
+
- `.sellable/configs/core/about-me.md`
|
|
48
|
+
- `.sellable/configs/core/anti-ai-writing-style.md`
|
|
49
|
+
- `.sellable/configs/core/decision-rules.md`
|
|
50
|
+
- `.sellable/configs/core/context-modes.md`
|
|
47
51
|
|
|
48
52
|
## Company Truth And Proof
|
|
49
53
|
|
|
50
54
|
Read these when present:
|
|
51
55
|
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
56
|
+
- `.sellable/configs/core/my-company.md`
|
|
57
|
+
- `.sellable/configs/core/answer-bank.md`
|
|
58
|
+
- `.sellable/configs/core/proof-ledger.md`
|
|
59
|
+
- `.sellable/configs/core/story-bank.md`
|
|
60
|
+
- `.sellable/configs/core/wins-ledger.md`
|
|
57
61
|
|
|
58
62
|
## Writing-Specific Guidance
|
|
59
63
|
|
|
60
64
|
Read these when present and relevant to the task:
|
|
61
65
|
|
|
62
|
-
-
|
|
63
|
-
-
|
|
66
|
+
- `.sellable/configs/writing/styleguide-core.md`
|
|
67
|
+
- `.sellable/configs/writing/comments.md`
|
|
64
68
|
|
|
65
69
|
## Transcript Or Topic Context
|
|
66
70
|
|
|
67
71
|
Do not bulk-read raw transcripts. If the user asks about a specific topic,
|
|
68
72
|
story, sales call, customer, market view, or correction, first read:
|
|
69
73
|
|
|
70
|
-
-
|
|
71
|
-
- the most relevant file under
|
|
74
|
+
- `.sellable/configs/core/transcripts/INDEX.md`
|
|
75
|
+
- the most relevant file under `.sellable/configs/core/transcripts/topics/`
|
|
72
76
|
|
|
73
|
-
Only read raw archives under
|
|
74
|
-
|
|
77
|
+
Only read raw archives under `.sellable/interviews/**` when the index/topic file
|
|
78
|
+
points to one and the current task needs that source detail.
|
|
75
79
|
</load_order>
|
|
76
80
|
|
|
77
81
|
<operating_rules>
|
|
78
82
|
|
|
79
83
|
- Keep the loader lightweight. The first pass should usually be 6-10 files, not
|
|
80
|
-
every file under
|
|
84
|
+
every file under `.sellable`.
|
|
81
85
|
- Apply the loaded profile silently after a short confirmation. Do not paste a
|
|
82
86
|
long summary of the memory unless the user asks for one.
|
|
83
87
|
- If the user already gave a concrete writing task, load the memory and then do
|
|
@@ -422,7 +422,7 @@ sample set unless the user explicitly wants to add to existing promoted posts;
|
|
|
422
422
|
set `scrapePlanMode` based on whether approval is all selected posts or a
|
|
423
423
|
capacity-target subset.
|
|
424
424
|
|
|
425
|
-
For `create-campaign-v2`
|
|
425
|
+
For `create-campaign-v2` Start Import approval, do not treat the default
|
|
426
426
|
`selectionTarget` of 3 posts as enough by itself. Before the final source
|
|
427
427
|
recommendation, estimate source capacity from real sample math:
|
|
428
428
|
|
|
@@ -653,7 +653,7 @@ select_promising_posts({
|
|
|
653
653
|
2. (Optional) Search signals (Round 2) → More keywords, more posts
|
|
654
654
|
3. Select `selectionTarget` promising posts with headlineICPCriteria
|
|
655
655
|
4. Standalone flow: ask the user to confirm before importing leads.
|
|
656
|
-
`create-campaign-v2` after
|
|
656
|
+
`create-campaign-v2` after Start Import approval: continue without a second
|
|
657
657
|
import confirmation gate.
|
|
658
658
|
5. If confirmation exists, call `import_leads`
|
|
659
659
|
</correct_flow>
|
package/skills/research/SKILL.md
CHANGED
|
@@ -219,7 +219,7 @@ After all agents return, combine into a short Research Notes block. **Strip DEBU
|
|
|
219
219
|
|
|
220
220
|
**If researchMode="prospect":**
|
|
221
221
|
|
|
222
|
-
If the caller passed cross-skill insights (from
|
|
222
|
+
If the caller passed cross-skill insights (from `.sellable/insights/cross-skill.md`), use them to prioritize hooks — e.g., if engage sessions show "AI compute time" angles get high engagement, rank those hooks higher.
|
|
223
223
|
|
|
224
224
|
```markdown
|
|
225
225
|
## {Name} - {Title} at {Company}
|