@sellable/mcp 0.1.137 → 0.1.139

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.
@@ -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 style guide, proven searches, tracked people from `.sellable/configs/`.
56
- - The style guide (`memory.styleGuide.markdown`) is the sender's voice profile. This is MANDATORY for post generation.
57
- - If `memory.styleGuide` is missing, inform user they need to run the `interview` skill first.
58
-
59
- 4. Read the sender's voice-specific configs (built-in Read tool):
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.
@@ -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 profile
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/` (style guide, proven searches, tracked people). Accepts optional `senderId` for per-sender configs.
63
- - `mcp__sellable__set_engage_style_guide` - Write style guide. Accepts optional `senderId` for per-sender configs.
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 [name] to build their voice profile
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
- - This reads from `senders/{senderId}/styleguide-core.md`, `senders/{senderId}/proven-searches.md`, `senders/{senderId}/influencers.md`
172
- - Falls back to flat configs if sender dir doesn't exist
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
- - Per-sender `styleguide-core.md` is already loaded via `get_engage_memory` above
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 each sender's style guide (Core Thesis, Key Beliefs)
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 (style guide exists for at least one sender)
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
- - Update relevant sender's style guide via `set_engage_style_guide({ markdown, senderId })`
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
- ### Mode: Full Interview (no style guide for any sender — required, cannot skip)
349
+ ### Core Write-Back From Light Interviews and Corrections
347
350
 
348
- 3-4 rounds via `AskUserQuestion` (same as before voice capture, heuristics, etc.).
349
- Persist style guide for the primary sender, copy to others if appropriate.
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 + their per-sender style guide.
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
- All engage memory lives in `.sellable/configs/` at the project root the single source of truth for both user customization and MCP tool memory.
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 | MCP Tool |
8
- | --------------- | ------------------------------------------------ | ---------------------------------------------------- |
9
- | Style guide | `.sellable/configs/writing/styleguide-core.md` | `get_engage_memory` / `set_engage_style_guide` |
10
- | Comment rules | `.sellable/configs/writing/comments.md` | (read via `get_engage_memory`) |
11
- | Proven searches | `.sellable/configs/discovery/proven-searches.md` | `get_engage_memory` / `record_engage_proven_search` |
12
- | Tracked people | `.sellable/configs/discovery/influencers.md` | `get_engage_memory` / `upsert_engage_tracked_person` |
13
- | Post filters | `.sellable/configs/discovery/post-filters.md` | (read by skill via Read tool) |
14
- | ICP | `.sellable/configs/audience/icp.md` | (read by skill via Read tool) |
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 style guide, comments, ICP, and tracked people from a voice-first conversation
19
- - **Engage skill**: Updates proven searches after each session, adds new tracked people when discovered
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 styleguide-core.md}
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/writing/outbound.md`, `styleguide-core.md`, and `.sellable/insights/cross-skill.md` ONCE in the lead agent, then pass **condensed** versions to any workers. Don't pass full file contents to every worker — that wastes context and causes overflow.
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