@sellable/mcp 0.1.136 → 0.1.138
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/agents/post-find-leads-filter-scout.md +19 -25
- package/agents/post-find-leads-message-scout.md +21 -0
- package/agents/registry.json +9 -16
- package/agents/source-scout-linkedin-engagement.md +2 -2
- package/dist/engage-memory.d.ts +13 -0
- package/dist/engage-memory.js +129 -34
- package/dist/identity-compiler.d.ts +119 -0
- package/dist/identity-compiler.js +344 -0
- package/dist/identity-memory.d.ts +49 -0
- package/dist/identity-memory.js +89 -0
- package/dist/index-dev.js +0 -0
- package/dist/index.js +0 -0
- package/dist/tools/bootstrap.js +1 -1
- package/dist/tools/engage-memory.js +2 -2
- package/dist/tools/navigation.js +3 -0
- package/dist/tools/prompts.d.ts +1 -4
- package/dist/tools/prompts.js +3 -3
- package/package.json +1 -1
- package/skills/craft-message/SKILL.md +13 -4
- package/skills/create-campaign/references/brief-template.md +2 -1
- package/skills/create-campaign-v2/SKILL.md +150 -1342
- package/skills/create-campaign-v2/core/flow.v2.json +471 -1970
- package/skills/create-post/SKILL.md +54 -9
- package/skills/engage/SKILL.md +37 -15
- package/skills/engage/core/README.md +18 -12
- package/skills/generate-messages/SKILL.md +15 -5
- package/skills/interview/SKILL.md +183 -89
- package/skills/interview/references/anti-ai-audit.md +101 -0
- package/skills/interview/references/compiler-schema.md +94 -0
- package/skills/interview/references/legacy-linkedin-interview.md +118 -0
- package/skills/interview/references/question-bank.md +123 -0
- package/skills/interview/references/reference-curation.md +68 -0
- package/skills/interview/references/voice-capture-method.md +62 -0
|
@@ -52,12 +52,18 @@ Core principle: Find what's ALREADY working on LinkedIn → deeply autopsy the H
|
|
|
52
52
|
|
|
53
53
|
3. Load memory (single call):
|
|
54
54
|
|
|
55
|
-
- Call `get_engage_memory()` to read
|
|
56
|
-
-
|
|
57
|
-
- If
|
|
58
|
-
|
|
59
|
-
4. Read
|
|
60
|
-
|
|
55
|
+
- Call `get_engage_memory()` to read composed core identity/company memory, proven searches, tracked people, and legacy compatibility memory from `.sellable/configs/`.
|
|
56
|
+
- Treat `memory.styleGuide.markdown` as composed engage memory: core identity/company memory first, legacy files as fallback.
|
|
57
|
+
- If both core memory and compatibility voice memory are missing, inform the user they need to run the new core `interview` flow first.
|
|
58
|
+
|
|
59
|
+
4. Read core and sender voice-specific configs (built-in Read tool):
|
|
60
|
+
|
|
61
|
+
- `.sellable/configs/core/about-me.md` and `.sellable/configs/core/context-modes.md` (identity + context modes for post stance)
|
|
62
|
+
- `.sellable/configs/core/story-bank.md` and `.sellable/configs/core/answer-bank.md` (real stories and reusable answers)
|
|
63
|
+
- `.sellable/configs/core/proof-ledger.md` and `.sellable/configs/core/wins-ledger.md` (safe proof and social proof)
|
|
64
|
+
- `.sellable/configs/core/anti-ai-writing-style.md` (anti-AI audit)
|
|
65
|
+
- `.sellable/configs/core/references/linkedin-posts/INDEX.md` and copied files under `core/references/linkedin-posts/`
|
|
66
|
+
- `.sellable/configs/core/references/inspiration/INDEX.md` (structural inspiration and anti-pattern references)
|
|
61
67
|
- `.sellable/configs/writing/christian-reyes-linkedin-viral.md` (post-specific voice analysis)
|
|
62
68
|
- `.sellable/configs/content/linkedin-posts-drafts.md` (existing drafts + hook bank)
|
|
63
69
|
- `.sellable/configs/discovery/post-filters.md` (exclusion rules)
|
|
@@ -91,6 +97,8 @@ Core principle: Find what's ALREADY working on LinkedIn → deeply autopsy the H
|
|
|
91
97
|
|
|
92
98
|
This block MUST be loaded into context before generating any hooks or drafts. It is the immutable voice specification.
|
|
93
99
|
|
|
100
|
+
Core memory is primary. The static rules below are a compatibility anchor for Christian-specific posts, but the live inputs are `core/about-me.md`, `core/context-modes.md`, `core/story-bank.md`, `core/answer-bank.md`, `core/proof-ledger.md`, `core/wins-ledger.md`, `core/anti-ai-writing-style.md`, and `core/references/linkedin-posts/**`.
|
|
101
|
+
|
|
94
102
|
```
|
|
95
103
|
SENDER POST VOICE RULES — EVERY SENTENCE MUST COMPLY:
|
|
96
104
|
|
|
@@ -816,12 +824,13 @@ Run on EVERY draft:
|
|
|
816
824
|
5. **CTA check**: Any CTA in last 3 lines? Delete.
|
|
817
825
|
6. **Emoji check**: Any emojis except final parenthetical? Delete.
|
|
818
826
|
7. **Hype check**: "amazing", "incredible", "game-changing"? Replace.
|
|
819
|
-
8. **AI filler check**: Banned phrases from voice config? Delete.
|
|
827
|
+
8. **AI filler check**: Banned phrases from `core/anti-ai-writing-style.md` or voice config? Delete.
|
|
820
828
|
9. **Rhythm check**: Read aloud. Breathless and urgent? If not, cut words.
|
|
821
829
|
10. **Ending check**: Insight/mic drop/parenthetical? Not question or CTA?
|
|
822
830
|
11. **Character count**: 1,200-2,500 chars? Adjust.
|
|
823
831
|
12. **Line 3 check**: Is line 3 blank? Move content up.
|
|
824
832
|
13. **Mobile check**: No section > 4 lines without break? Mini-hooks every 300 chars?
|
|
833
|
+
14. **Anti-AI/proof final gate**: Run the anti-AI audit and proof ledger check. Any story, metric, win, customer/social proof, or answer must be sourced from the interview transcript, `story-bank.md`, `answer-bank.md`, `proof-ledger.md`, `wins-ledger.md`, or approved references.
|
|
825
834
|
|
|
826
835
|
## Phase 6: Rank
|
|
827
836
|
|
|
@@ -942,6 +951,23 @@ Ask: "Which posts do you want to publish? Any edits?"
|
|
|
942
951
|
4. Repeat until sender approves.
|
|
943
952
|
5. On final approval, offer to save to `.sellable/configs/content/linkedin-posts-drafts.md`.
|
|
944
953
|
|
|
954
|
+
### Memory Candidate Review
|
|
955
|
+
|
|
956
|
+
During polish, turn durable feedback into explicit memory candidates instead of silently rewriting files. For each reusable answer, win/social proof, story, topical take, banned phrase, unused interview snippet, or post example, ask the sender to **approve, edit, reject, or mark private** before saving. Do not upsert every answer automatically.
|
|
957
|
+
|
|
958
|
+
Route approved candidates to the smallest relevant core target:
|
|
959
|
+
|
|
960
|
+
- `core/answer-bank.md` for reusable answers, contrarian explanations, topic takes, and approved framing language.
|
|
961
|
+
- `core/wins-ledger.md` for wins/social proof, metrics, proof receipts, public/private safety, and permission notes.
|
|
962
|
+
- `core/story-bank.md` for reusable stories, founder moments, missed-fortune examples, and concrete post material.
|
|
963
|
+
- `core/anti-ai-writing-style.md` for banned wording, fake-depth phrasing, dead openings, and post-specific anti-patterns.
|
|
964
|
+
- `core/decision-rules.md` for durable post selection, topic safety, and correction rules.
|
|
965
|
+
- `core/change-log.md` for every approved correction, rejected memory proposal worth remembering, private mark, and post-session operator note.
|
|
966
|
+
- `core/transcripts/INDEX.md` plus the relevant `core/transcripts/topics/*.md` file for topic-specific interview snippets and unused material that should stay transcript-first.
|
|
967
|
+
- `core/references/linkedin-posts/INDEX.md` plus a copied reference file under `core/references/linkedin-posts/` for approved post examples or high-signal source posts.
|
|
968
|
+
|
|
969
|
+
Keep write-backs idempotent: use stable source keys such as `create-post:{date}:{sessionSlug}:{candidateSlug}`, check copied paths before adding reference rows, create no duplicate reference rows, and keep manual sections preserved. If the sender marks a candidate private, keep it out of public examples and proof surfaces unless they later approve a public-safe rewrite.
|
|
970
|
+
|
|
945
971
|
## Phase 10: Save Session Insights (Memory Persistence)
|
|
946
972
|
|
|
947
973
|
**Everything we learned this session should help the NEXT session be better.** This is not optional — run after every session, even if the user doesn't explicitly ask.
|
|
@@ -1030,6 +1056,8 @@ If the interview surfaced stories or angles that weren't used in this session's
|
|
|
1030
1056
|
- [Specific number or story not yet used] — save for [topic]
|
|
1031
1057
|
```
|
|
1032
1058
|
|
|
1059
|
+
After the legacy draft queue is updated, propose the same unused material for `core/story-bank.md`, `core/answer-bank.md`, `core/change-log.md`, and `core/transcripts/INDEX.md` when it has durable value. Transcript-first snippets go into `core/transcripts/topics/*.md`; derived memories are optional and require the sender's approve/edit/reject/mark-private decision.
|
|
1060
|
+
|
|
1033
1061
|
### 10E: Update Tracked Influencers
|
|
1034
1062
|
|
|
1035
1063
|
If any viral post authors from this session are worth tracking for future discovery, call `upsert_engage_tracked_person({ name, linkedinUrl, reason })`.
|
|
@@ -1068,6 +1096,21 @@ If any viral post authors from this session are worth tracking for future discov
|
|
|
1068
1096
|
- e.g., "Bold reframe hooks scored 9+ — counter-intuitive numbers in line 1 force scroll-stop"
|
|
1069
1097
|
- e.g., "Piggybacking on trending discourse ('personalized slop') worked for post creation — could work for comment angles too"
|
|
1070
1098
|
|
|
1099
|
+
### 10G: Update Core Memory
|
|
1100
|
+
|
|
1101
|
+
Apply only sender-approved memory candidates from the review loop:
|
|
1102
|
+
|
|
1103
|
+
- Add approved reusable answers and topical takes to `core/answer-bank.md`.
|
|
1104
|
+
- Add approved wins, metrics, social proof, and permission notes to `core/wins-ledger.md`.
|
|
1105
|
+
- Add reusable stories and concrete lived examples to `core/story-bank.md`.
|
|
1106
|
+
- Add rejected phrasing, banned openings, and AI-tell corrections to `core/anti-ai-writing-style.md`.
|
|
1107
|
+
- Add durable post-selection and safety rules to `core/decision-rules.md`.
|
|
1108
|
+
- Append every approved/edit/reject/mark-private decision to `core/change-log.md`.
|
|
1109
|
+
- Add topic-specific snippets and unused interview material to `core/transcripts/INDEX.md` and the relevant topic file under `core/transcripts/topics/`.
|
|
1110
|
+
- Add approved post examples to `core/references/linkedin-posts/INDEX.md`; create or update a copied file under `core/references/linkedin-posts/` when the example should be reusable.
|
|
1111
|
+
|
|
1112
|
+
Idempotency rules: stable source keys, copied path checks, no duplicate reference rows, and manual sections preserved.
|
|
1113
|
+
|
|
1071
1114
|
### Quality Gate: Memory Saved
|
|
1072
1115
|
|
|
1073
1116
|
- [ ] Proven searches updated for all keywords used
|
|
@@ -1079,6 +1122,8 @@ If any viral post authors from this session are worth tracking for future discov
|
|
|
1079
1122
|
- [ ] New influencers tracked if discovered
|
|
1080
1123
|
- [ ] `insights/post-sessions.md` updated with session summary
|
|
1081
1124
|
- [ ] `insights/cross-skill.md` updated if any cross-skill learnings found
|
|
1125
|
+
- [ ] Approved memory candidates written to the smallest relevant core targets
|
|
1126
|
+
- [ ] Stable source keys used, no duplicate reference rows added, manual sections preserved
|
|
1082
1127
|
|
|
1083
1128
|
</process>
|
|
1084
1129
|
|
|
@@ -1289,10 +1334,10 @@ The guy catching them: $6M ARR. 1 employee. $0 raised.
|
|
|
1289
1334
|
|
|
1290
1335
|
## Critical Rules
|
|
1291
1336
|
|
|
1292
|
-
1. **Never fabricate** stories, numbers, experience, or social proof. Every post must be grounded in the interview transcript or real sender data.
|
|
1337
|
+
1. **Never fabricate** stories, numbers, experience, or social proof. Every post must be grounded in the interview transcript, core identity memory, `story-bank.md`, `answer-bank.md`, `proof-ledger.md`, `wins-ledger.md`, `core/references/linkedin-posts/**`, or real sender data.
|
|
1293
1338
|
2. **Don't proceed without gold** — the interview must surface a sharp contrarian take, real story, and specific numbers before ANY generation happens. Keep digging until the quality gate passes.
|
|
1294
1339
|
3. **Insights summary before generation** — always present what was mined and let the sender choose angles before generating hooks. No silent assumptions.
|
|
1295
|
-
4. **Voice anchor at every stage** — reload the full voice specification before any generation step.
|
|
1340
|
+
4. **Voice anchor at every stage** — reload core memory and the full voice specification before any generation step.
|
|
1296
1341
|
5. **Mobile-first always** — optimize for phone screens, not desktop.
|
|
1297
1342
|
6. **No CTA, no emojis, no hype** — these are the strongest anti-patterns for this sender's audience.
|
|
1298
1343
|
7. **Specificity is non-negotiable** — every post must have 3+ specific numbers.
|
package/skills/engage/SKILL.md
CHANGED
|
@@ -24,7 +24,7 @@ Orchestrate a complete engagement session that covers **one or more senders** in
|
|
|
24
24
|
3. **SMART DISCOVERY** — two parallel agents (fresh-scanner + deep-scanner) using globalEngagedPostUrls for exclusion
|
|
25
25
|
4. **STRATEGIC SHORTLIST + SENDER ASSIGNMENT** — merge, score, round-robin assign posts to senders (each post URL → exactly one sender)
|
|
26
26
|
5. **INTERVIEW** — mine contrarian takes (interactive only, skipped in autonomous)
|
|
27
|
-
6. **Draft per-sender comments** — each sender's batch uses that sender's voice
|
|
27
|
+
6. **Draft per-sender comments** — each sender's batch uses composed core identity/company memory plus that sender's compatibility voice overrides
|
|
28
28
|
7. **Load into per-sender campaigns** (paused) — one `add_to_comment_campaign` call per sender
|
|
29
29
|
8. **SAVE SESSION INSIGHTS** — per-sender memory (proven searches, tracked people, style guide) + shared session log
|
|
30
30
|
|
|
@@ -59,8 +59,8 @@ Then proceed directly to Pre-Phase (Mode Detection). All auth, memory, and confi
|
|
|
59
59
|
- `mcp__sellable__get_auth_status` - Verify token + workspace context
|
|
60
60
|
- `mcp__sellable__bootstrap_engage` - Single-sender resolve + ensure comment campaign table + fetch engaged post URLs; persists defaults
|
|
61
61
|
- `mcp__sellable__bootstrap_engage_multi` - Multi-sender resolve: parallel per-sender table creation + engaged post fetch + globalEngagedPostUrls union
|
|
62
|
-
- `mcp__sellable__get_engage_memory` - Read memory from `.sellable/configs
|
|
63
|
-
- `mcp__sellable__set_engage_style_guide` - Write style
|
|
62
|
+
- `mcp__sellable__get_engage_memory` - Read backward-compatible engage memory plus optional core identity/company memory from `.sellable/configs/core/`. The `memory.styleGuide.markdown` blob is composed engage memory: core identity/company files first, then legacy comment/sender overrides. Accepts optional `senderId`.
|
|
63
|
+
- `mcp__sellable__set_engage_style_guide` - Write a legacy compatibility style override. Accepts optional `senderId`; it does not replace core identity memory.
|
|
64
64
|
- `mcp__sellable__record_engage_proven_search` - Update keyword stats. Accepts optional `senderId` for per-sender configs.
|
|
65
65
|
- `mcp__sellable__upsert_engage_tracked_person` - Add/update tracked person. Accepts optional `senderId` for per-sender configs.
|
|
66
66
|
- `mcp__sellable__copy_sender_config` - Copy all per-sender config files from one sender to another
|
|
@@ -141,7 +141,7 @@ _Interactive mode:_
|
|
|
141
141
|
Sender "[name]" has no engage config yet.
|
|
142
142
|
|
|
143
143
|
Options:
|
|
144
|
-
1. Create fresh — I'll interview
|
|
144
|
+
1. Create fresh — I'll run the new core `interview` flow to build identity/company memory, then use engage compatibility memory for this sender
|
|
145
145
|
2. Copy from [first sender with config] — Start with their config, customize later
|
|
146
146
|
3. Skip [name] this session — Only run engage for senders with configs
|
|
147
147
|
```
|
|
@@ -168,15 +168,18 @@ For EACH sender, call `fetch_linkedin_posts({ linkedinUrl: sender.senderLinkedin
|
|
|
168
168
|
|
|
169
169
|
For EACH sender, call `get_engage_memory({ senderId })`:
|
|
170
170
|
|
|
171
|
-
-
|
|
172
|
-
-
|
|
171
|
+
- Treat `memory.styleGuide.markdown` as composed engage memory, not a flat-only style file.
|
|
172
|
+
- Primary memory comes from `.sellable/configs/core/about-me.md`, `my-company.md`, `anti-ai-writing-style.md`, `proof-ledger.md`, `wins-ledger.md`, `story-bank.md`, `answer-bank.md`, `context-modes.md`, and `decision-rules.md` when present.
|
|
173
|
+
- Legacy sender files under `senders/{senderId}/` and flat `writing/*`, `audience/*`, and `faqs/*` are compatibility fallbacks and overrides.
|
|
174
|
+
- If core identity/company memory and legacy voice memory are both missing, tell the user to run the new core `interview` flow before drafting.
|
|
173
175
|
|
|
174
176
|
### Step 0.5: Read shared writing configs [REQUIRED]
|
|
175
177
|
|
|
176
178
|
Read (built-in Read tool):
|
|
177
179
|
|
|
178
180
|
- `./.sellable/configs/writing/comments.md` (comment-specific rules, quality gate, approved examples)
|
|
179
|
-
-
|
|
181
|
+
- The composed engage memory is already loaded via `get_engage_memory` above. Treat the legacy writing style guide as fallback/source material, not as the primary voice source.
|
|
182
|
+
- If present and useful for final gates, skim `./.sellable/configs/core/anti-ai-writing-style.md` and `./.sellable/configs/core/proof-ledger.md`.
|
|
180
183
|
|
|
181
184
|
### Step 0.6: Read cross-skill context [OPTIONAL]
|
|
182
185
|
|
|
@@ -191,7 +194,7 @@ Read (lightweight — local files only, no API calls):
|
|
|
191
194
|
|
|
192
195
|
Build keywords from ALL senders' combined expertise:
|
|
193
196
|
|
|
194
|
-
- Extract expertise topics from
|
|
197
|
+
- Extract expertise topics from composed engage memory: core identity/company memory first, then sender/legacy compatibility sections
|
|
195
198
|
- Cross-reference with proven searches from all senders — sort by hit rate, take top 5
|
|
196
199
|
- Check cross-skill insights for trending topics
|
|
197
200
|
- Add 3-5 exploratory keywords NOT already in proven searches
|
|
@@ -322,7 +325,7 @@ Two agents run in parallel, each optimized for a different time horizon. **Both
|
|
|
322
325
|
|
|
323
326
|
**Interactive mode:** This phase always runs unless the user explicitly says "skip."
|
|
324
327
|
|
|
325
|
-
### Mode: Light Interview (
|
|
328
|
+
### Mode: Light Interview (core or compatibility memory exists for at least one sender)
|
|
326
329
|
|
|
327
330
|
Pick the 2-3 most interesting posts from the approved shortlist. Use `AskUserQuestion` for 2 rounds:
|
|
328
331
|
|
|
@@ -340,13 +343,29 @@ Push for specifics once. If still vague, accept and move on.
|
|
|
340
343
|
|
|
341
344
|
- Extract contrarian takes
|
|
342
345
|
- Map each take to specific posts AND the assigned sender
|
|
343
|
-
-
|
|
346
|
+
- Save sender-specific compatibility notes through `set_engage_style_guide({ markdown, senderId })` when the note is only about comment voice or this sender's override.
|
|
344
347
|
- Reflect back extracted takes for confirmation
|
|
345
348
|
|
|
346
|
-
###
|
|
349
|
+
### Core Write-Back From Light Interviews and Corrections
|
|
347
350
|
|
|
348
|
-
|
|
349
|
-
|
|
351
|
+
When an interview answer, comment correction, or approved draft reveals durable memory, propose a small write-back before saving it. The user must choose **approve, edit, reject, or mark private** for each candidate answer or correction. Do not upsert every answer automatically.
|
|
352
|
+
|
|
353
|
+
Use the smallest relevant core target:
|
|
354
|
+
|
|
355
|
+
- `core/answer-bank.md` for strong reusable answers, objection responses, positioning explanations, and "how I think about X" language.
|
|
356
|
+
- `core/wins-ledger.md` for wins/social-proof receipts, metrics, named customer/logo permission notes, and dated proof.
|
|
357
|
+
- `core/story-bank.md` for reusable stories, founder anecdotes, post/comment hooks, and specific lived examples.
|
|
358
|
+
- `core/anti-ai-writing-style.md` for banned wording, fake-depth patterns, or context-specific phrasing that made a draft sound AI-written.
|
|
359
|
+
- `core/decision-rules.md` for durable strategy rules, public/private safety rules, and correction heuristics.
|
|
360
|
+
- `core/change-log.md` for every approved correction, rejected proposal worth remembering, private mark, and downstream prompt/operator note.
|
|
361
|
+
- `core/transcripts/INDEX.md` plus a topic file under `core/transcripts/topics/` for topic-specific interview snippets or unused material that should stay transcript-first.
|
|
362
|
+
- `core/references/linkedin-posts/INDEX.md` or another `core/references/**/INDEX.md` when an approved comment/post example should become a reference artifact.
|
|
363
|
+
|
|
364
|
+
Write-backs must be idempotent: use stable source keys such as `engage-session:{date}:{senderId}:{postUrlHash}:{slug}`, check copied paths before adding references, create no duplicate reference rows, and keep manual sections preserved. If the user marks a candidate private, store only the minimum private-safe metadata and do not promote it into public proof, references, or examples.
|
|
365
|
+
|
|
366
|
+
### Mode: Full Interview (no core or compatibility memory for any sender — required, cannot skip)
|
|
367
|
+
|
|
368
|
+
Run the new core `interview` flow. Its output should populate `.sellable/configs/core/**` first, then engage can keep legacy compatibility overrides where needed.
|
|
350
369
|
|
|
351
370
|
## Phase 4: Draft Comments Per Sender [REQUIRED]
|
|
352
371
|
|
|
@@ -354,7 +373,7 @@ Group posts by assigned sender. Process each sender's batch separately.
|
|
|
354
373
|
|
|
355
374
|
### For Each Sender's Batch:
|
|
356
375
|
|
|
357
|
-
1. **Load sender's voice profile** — their specific voice samples from Phase 0.3 +
|
|
376
|
+
1. **Load sender's voice profile** — their specific voice samples from Phase 0.3 + composed engage memory from `get_engage_memory`.
|
|
358
377
|
|
|
359
378
|
2. **For each post** (internally, before showing):
|
|
360
379
|
|
|
@@ -363,6 +382,7 @@ Group posts by assigned sender. Process each sender's batch separately.
|
|
|
363
382
|
- Draft using shared formatting rules from `comments.md` + sender-specific voice
|
|
364
383
|
- Self-edit once
|
|
365
384
|
- Quality gate (clarity, relevance, insight, coherence, cringe, substance)
|
|
385
|
+
- Anti-AI/proof final gate: check `anti-ai-writing-style.md` and `proof-ledger.md`; remove AI filler, fake depth, unsupported metrics, and proof claims that are unsafe for a public comment.
|
|
366
386
|
|
|
367
387
|
3. **Present batch:**
|
|
368
388
|
|
|
@@ -412,7 +432,7 @@ If any post authors from the shortlist are worth tracking, call `upsert_engage_t
|
|
|
412
432
|
|
|
413
433
|
### 6C: Save Session Insights to Style Guide (per sender)
|
|
414
434
|
|
|
415
|
-
For each sender that had comments drafted, update their style guide via `set_engage_style_guide({ markdown, senderId })`:
|
|
435
|
+
For each sender that had comments drafted, update their compatibility style guide via `set_engage_style_guide({ markdown, senderId })`:
|
|
416
436
|
|
|
417
437
|
```markdown
|
|
418
438
|
## Engage Session — [date]
|
|
@@ -435,6 +455,8 @@ For each sender that had comments drafted, update their style guide via `set_eng
|
|
|
435
455
|
- Deep (1-7d): [keywords]
|
|
436
456
|
```
|
|
437
457
|
|
|
458
|
+
Also route durable insights through the core write-back contract above. Compatibility style guides can store engage-specific voice overrides, but reusable answers, wins, stories, correction history, transcript snippets, and reference examples belong in `core/answer-bank.md`, `core/wins-ledger.md`, `core/story-bank.md`, `core/change-log.md`, `core/transcripts/INDEX.md`, and the relevant `core/references/**/INDEX.md`.
|
|
459
|
+
|
|
438
460
|
### 6D: Save Unused Post Angles (Top 9-10 Only)
|
|
439
461
|
|
|
440
462
|
Only keep the strongest unused angles for next session.
|
|
@@ -2,22 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
## Where Data Lives
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Engage memory lives in `.sellable/configs/` at the project root. The primary identity/company layer is now `.sellable/configs/core/`; legacy writing, discovery, audience, FAQ, and sender files remain compatibility layers and fallbacks.
|
|
6
6
|
|
|
7
|
-
| Data | Config File
|
|
8
|
-
| --------------- |
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
7
|
+
| Data | Config File | MCP Tool |
|
|
8
|
+
| --------------- | --------------------------------------------------------------------------------- | ---------------------------------------------------- |
|
|
9
|
+
| Core identity | `.sellable/configs/core/about-me.md` | `get_engage_memory` |
|
|
10
|
+
| Company truth | `.sellable/configs/core/my-company.md` | `get_engage_memory` |
|
|
11
|
+
| Anti-AI rules | `.sellable/configs/core/anti-ai-writing-style.md` | `get_engage_memory` |
|
|
12
|
+
| Proof/wins | `.sellable/configs/core/proof-ledger.md`, `.sellable/configs/core/wins-ledger.md` | `get_engage_memory` |
|
|
13
|
+
| Stories/answers | `.sellable/configs/core/story-bank.md`, `.sellable/configs/core/answer-bank.md` | `get_engage_memory` |
|
|
14
|
+
| Context modes | `.sellable/configs/core/context-modes.md` | `get_engage_memory` |
|
|
15
|
+
| Style override | `.sellable/configs/writing/styleguide-core.md` or sender override | `get_engage_memory` / `set_engage_style_guide` |
|
|
16
|
+
| Comment rules | `.sellable/configs/writing/comments.md` | (read via `get_engage_memory`) |
|
|
17
|
+
| Proven searches | `.sellable/configs/discovery/proven-searches.md` | `get_engage_memory` / `record_engage_proven_search` |
|
|
18
|
+
| Tracked people | `.sellable/configs/discovery/influencers.md` | `get_engage_memory` / `upsert_engage_tracked_person` |
|
|
19
|
+
| Post filters | `.sellable/configs/discovery/post-filters.md` | (read by skill via Read tool) |
|
|
20
|
+
| ICP | `.sellable/configs/audience/icp.md` | (read by skill via Read tool) |
|
|
15
21
|
|
|
16
22
|
## How Skills Update Configs
|
|
17
23
|
|
|
18
|
-
- **Interview skill**: Populates
|
|
19
|
-
- **Engage skill**:
|
|
24
|
+
- **Interview skill**: Populates primary `configs/core/**` identity/company memory, transcript references, answer bank, proof/wins ledgers, and anti-AI rules.
|
|
25
|
+
- **Engage skill**: Reads composed core memory through `get_engage_memory`, updates proven searches after each session, adds new tracked people when discovered, and writes legacy sender style overrides only when the correction is engage-specific.
|
|
20
26
|
|
|
21
27
|
## Migration from JSON
|
|
22
28
|
|
|
23
|
-
The old `proven-searches.json`, `tracked-people.json`, and `style-guide.template.md` files have been replaced. All data now lives as readable markdown in `.sellable/configs/`.
|
|
29
|
+
The old `proven-searches.json`, `tracked-people.json`, and `style-guide.template.md` files have been replaced. All data now lives as readable markdown in `.sellable/configs/`. Legacy `writing/*`, `audience/*`, `faqs/*`, and `content/*` files are preserved as fallback/source material while downstream prompts move to core memory.
|
|
@@ -135,6 +135,13 @@ Dry mode validates message quality before campaign mint.
|
|
|
135
135
|
|
|
136
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
145
|
- `brief.md`
|
|
139
146
|
- `lead-sample.json` from the find-leads step; this is the only allowed sample
|
|
140
147
|
source for dry-mode message generation
|
|
@@ -831,8 +838,7 @@ The panel has three roles:
|
|
|
831
838
|
|
|
832
839
|
Before drafting, answer these five questions explicitly:
|
|
833
840
|
|
|
834
|
-
1. **Who is sending it?** Identify the sender voice and what the body must
|
|
835
|
-
make clear without a body-level self-introduction.
|
|
841
|
+
1. **Who is sending it?** Identify the sender voice from core identity memory, context modes, and explicit campaign inputs. Legacy `styleguide-core.md` is fallback/source material, not the primary voice source. State what the body must make clear without a body-level self-introduction.
|
|
836
842
|
- If explicit sender data exists in the brief or input artifacts, use it
|
|
837
843
|
as context for voice, proof, and buyer relevance.
|
|
838
844
|
- If the explicit sender is the founder/operator, use `I` / `we` when
|
|
@@ -859,6 +865,7 @@ Then choose the exact element pool that angle drafts are allowed to use:
|
|
|
859
865
|
- 3-5 mechanism sentence options
|
|
860
866
|
- 3-5 proof uses, each classified as `body-worthy`, `translated`,
|
|
861
867
|
`CTA-asset`, `PS-worthy`, or `internal-only`
|
|
868
|
+
Prefer source-aware entries from `proof-ledger.md`, `wins-ledger.md`, or the campaign brief. Do not invent proof or upgrade dated proof.
|
|
862
869
|
- 3-5 CTA options, including a single ask and A/B only if both choices
|
|
863
870
|
are genuinely useful
|
|
864
871
|
- 0-3 PS options, including `no PS` as a normal winning option
|
|
@@ -2470,11 +2477,12 @@ research → condense → 10 angle agents in parallel → finalizer combines bes
|
|
|
2470
2477
|
|
|
2471
2478
|
## Sender
|
|
2472
2479
|
- Name: {name} | Company: {company} | Title: {title}
|
|
2473
|
-
- Core thesis: {1 line from
|
|
2480
|
+
- Core thesis: {1 line from core identity/company memory or composed core memory}
|
|
2474
2481
|
- Signature phrases: {3-5 key phrases}
|
|
2475
2482
|
- Background: {1-2 lines}
|
|
2476
2483
|
|
|
2477
2484
|
## Voice + Outbound Rules (condensed — full files available via Read tool)
|
|
2485
|
+
- 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.
|
|
2478
2486
|
- Flow skeleton: opener → pain → **what the product IS** → **what it DOES** (one action per line, up to three) → deployment ease → CTA → optional PS
|
|
2479
2487
|
- 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"
|
|
2480
2488
|
- 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
|
|
@@ -2532,14 +2540,16 @@ research → condense → 10 angle agents in parallel → finalizer combines bes
|
|
|
2532
2540
|
7. After all 10 return, act as the Finalizer:
|
|
2533
2541
|
- Combine the best opener, bridge, body, and CTA across all drafts
|
|
2534
2542
|
- Credibility pass: must say something they haven't heard from 50 other people
|
|
2535
|
-
- Voice-check against sender's signature phrases
|
|
2543
|
+
- Voice-check against the sender's core identity, context mode, and signature phrases
|
|
2544
|
+
- Proof-check every claim against `proof-ledger.md`, `wins-ledger.md`, or the campaign brief
|
|
2545
|
+
- Run an anti-AI audit and cut phrasing that sounds synthesized, over-shaped, or proof-laundered
|
|
2536
2546
|
- Reject generic fallback openers and abstract noun subjects when the
|
|
2537
2547
|
specialist fallback can be made more concrete
|
|
2538
2548
|
- Run full 12-gate check using the fallback REPLY framework as QA only, all must pass
|
|
2539
2549
|
8. Return: { success: true, message: "...", research: [...], anglesExplored: 10 }
|
|
2540
2550
|
```
|
|
2541
2551
|
|
|
2542
|
-
**IMPORTANT:** Load `.sellable/configs/
|
|
2552
|
+
**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.
|
|
2543
2553
|
|
|
2544
2554
|
## Batch Approval
|
|
2545
2555
|
|