@sellable/mcp 0.1.237 → 0.1.239
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/dist/engage-memory.d.ts +1 -0
- package/dist/engage-memory.js +18 -2
- package/dist/identity-memory.d.ts +1 -0
- package/dist/identity-memory.js +27 -0
- package/dist/tools/content-posts.d.ts +8 -0
- package/dist/tools/content-posts.js +23 -7
- package/dist/tools/engage-memory.js +1 -1
- package/dist/tools/registry.d.ts +2 -0
- package/package.json +2 -1
- package/skills/create-campaign-v2/SKILL.md +5 -4
- package/skills/create-campaign-v2/SOUL.md +4 -3
- package/skills/create-campaign-v2/core/flow.v2.json +1 -1
- package/skills/create-campaign-v2/references/approval-gate-framing.md +1 -1
- package/skills/create-campaign-v2/references/validation-criteria.md +4 -4
- package/skills/create-post/SKILL.md +119 -13
- package/skills/create-post/references/gold-standard-post-pack.md +211 -0
- package/skills/create-post/references/hook-research-playbook.md +103 -4
- package/skills/create-post/references/post-file-contract.md +5 -1
- package/skills/create-post/references/post-validation.md +76 -1
- package/skills/generate-messages/SKILL.md +5 -0
- package/skills/interview/references/reference-curation.md +27 -0
|
@@ -12,9 +12,12 @@ Every saved draft needs a validation receipt. A draft without this receipt is no
|
|
|
12
12
|
- `proofClaimsUsed`
|
|
13
13
|
- `proofClaimSources`
|
|
14
14
|
- `storyFilesConsulted`
|
|
15
|
+
- `goldStandardsConsulted`
|
|
15
16
|
- `voiceRulesApplied`
|
|
17
|
+
- `linkedinPreviewAudit`
|
|
16
18
|
- `simplifierConcreteLanguageAudit`
|
|
17
19
|
- `antiAiAudit`
|
|
20
|
+
- `outboundAiTellAudit`
|
|
18
21
|
- `finalizerChanges`
|
|
19
22
|
- `blockedReasons`
|
|
20
23
|
- `retryNeededReasons`
|
|
@@ -29,6 +32,10 @@ Each candidate should include:
|
|
|
29
32
|
- hook text
|
|
30
33
|
- source pattern
|
|
31
34
|
- score
|
|
35
|
+
- char count including newlines and first-line / first-two-line preview measurements
|
|
36
|
+
- physical line count, content line count, longest nonblank line, and blank-line risk
|
|
37
|
+
- `previewBudgetStatus`: `pass`, `warn`, or `fail`
|
|
38
|
+
- mobile and desktop preview fit
|
|
32
39
|
- proof/story dependency
|
|
33
40
|
- AI-tell risk
|
|
34
41
|
- why it should win or lose
|
|
@@ -43,6 +50,48 @@ After the first draft:
|
|
|
43
50
|
4. replace generic language with concrete words only when supported
|
|
44
51
|
5. preserve the user's actual story and point
|
|
45
52
|
6. remove AI tells
|
|
53
|
+
7. re-check LinkedIn preview fit after edits
|
|
54
|
+
|
|
55
|
+
## LinkedIn Preview Audit
|
|
56
|
+
|
|
57
|
+
Audit the selected hook and top candidates against conservative LinkedIn
|
|
58
|
+
preview budgets. LinkedIn does not publish exact "see more" cutoff rules, and
|
|
59
|
+
rendering varies by device, app version, font, media, and line break. This audit
|
|
60
|
+
is a mobile-first safety gate, not a claim about an official LinkedIn limit.
|
|
61
|
+
|
|
62
|
+
Use:
|
|
63
|
+
|
|
64
|
+
- `pass`: hook is <= 110 chars including newlines, every nonblank line is <= 45 chars, and the hook's core point lands before likely truncation.
|
|
65
|
+
- `warn`: hook is 111-140 chars including newlines, any nonblank line is 46-55 chars, or blank lines create visual-line risk. Blank lines are allowed, but they count as physical lines.
|
|
66
|
+
- `fail`: hook is > 140 chars including newlines, any nonblank line is > 55 chars, or the hook's point depends on text after likely truncation.
|
|
67
|
+
|
|
68
|
+
Desktop preview usually has more room. Still record desktop fit, but never let
|
|
69
|
+
desktop fit compensate for a mobile `fail`.
|
|
70
|
+
|
|
71
|
+
Record:
|
|
72
|
+
|
|
73
|
+
- `charCount`
|
|
74
|
+
- `charCountIncludingNewlines`
|
|
75
|
+
- `firstLineChars`
|
|
76
|
+
- `firstTwoLinesChars`
|
|
77
|
+
- `physicalLineCount`
|
|
78
|
+
- `contentLineCount`
|
|
79
|
+
- `longestNonblankLineChars`
|
|
80
|
+
- `blankLineCountBeforeFold`
|
|
81
|
+
- `blankLineVisualRisk`
|
|
82
|
+
- `corePointBeforeLikelyTruncation`
|
|
83
|
+
- `previewBudgetStatus`
|
|
84
|
+
- `mobilePreviewFit`
|
|
85
|
+
- `desktopPreviewFit`
|
|
86
|
+
- `lineCountEstimate`
|
|
87
|
+
- `truncationRisk`
|
|
88
|
+
- `rewriteIfTruncated`
|
|
89
|
+
- `compactFallback` when `previewBudgetStatus` is `warn`
|
|
90
|
+
|
|
91
|
+
If the hook only works after likely truncation, rewrite it. A draft cannot be
|
|
92
|
+
`ready` with `previewBudgetStatus: fail`. A draft may be `ready` with
|
|
93
|
+
`previewBudgetStatus: warn` only when the warning is explicit, usually because
|
|
94
|
+
the user prefers blank-line rhythm, and the receipt includes a compact fallback.
|
|
46
95
|
|
|
47
96
|
## Simplifier / Concrete-Language Audit
|
|
48
97
|
|
|
@@ -59,7 +108,25 @@ Do not make language concrete by inventing new facts.
|
|
|
59
108
|
|
|
60
109
|
## Anti-AI Audit
|
|
61
110
|
|
|
62
|
-
|
|
111
|
+
Start with the Outbound Base AI-Tell Layer from the message pipeline, adapted for public posts. This is a starter smell detector, not permission to run outbound workflows or force outbound copy style.
|
|
112
|
+
|
|
113
|
+
Reject or rewrite outbound-derived tells when they appear in a post:
|
|
114
|
+
|
|
115
|
+
- body-level self-introductions that add no story context
|
|
116
|
+
- source-citation phrasing such as "your bio says", "your profile shows", or "saw on LinkedIn"
|
|
117
|
+
- explicit date or duration precision that feels scraped
|
|
118
|
+
- block quotes of another person's phrasing longer than 4 words
|
|
119
|
+
- parenthetical stack or feature dumps
|
|
120
|
+
- over-precise numerics without a traceable source
|
|
121
|
+
- hardcoded signoffs
|
|
122
|
+
- vague proof brags such as "trusted by leaders" without named or sourced proof
|
|
123
|
+
- formal CTA phrasing
|
|
124
|
+
- reusable openers that could fit any topic
|
|
125
|
+
- em dashes in the draft body unless the user's post rules explicitly allow them
|
|
126
|
+
- resume-recap or scraped-personalization bridges
|
|
127
|
+
- flattened "worth sending" bridges
|
|
128
|
+
|
|
129
|
+
Also reject or rewrite post-native AI tells:
|
|
63
130
|
|
|
64
131
|
- "game-changing"
|
|
65
132
|
- "leverage"
|
|
@@ -67,9 +134,13 @@ Reject or rewrite:
|
|
|
67
134
|
- "this is key"
|
|
68
135
|
- "let that sink in"
|
|
69
136
|
- "read that again"
|
|
137
|
+
- "here's the thing"
|
|
138
|
+
- "unpopular opinion" without a specific argument
|
|
70
139
|
- generic lessons without a story
|
|
71
140
|
- tidy three-part frameworks that were not in the source material
|
|
72
141
|
- fabricated numbers or examples
|
|
142
|
+
- contrarian bait without proof
|
|
143
|
+
- lead-magnet bait when the user did not ask for a lead magnet
|
|
73
144
|
|
|
74
145
|
## Proof And Voice Gates
|
|
75
146
|
|
|
@@ -83,6 +154,10 @@ Every claim must trace to at least one of:
|
|
|
83
154
|
- `core/answer-bank.md`
|
|
84
155
|
- approved reference material
|
|
85
156
|
|
|
157
|
+
Gold standards can guide structure, rhythm, and judgment. They cannot create new
|
|
158
|
+
claims. If an outside gold standard is used, verify the draft copied no outside
|
|
159
|
+
wording unless the user explicitly approved quotation.
|
|
160
|
+
|
|
86
161
|
If the necessary proof or story is missing, ask the user or return blocked/retry-needed.
|
|
87
162
|
|
|
88
163
|
## Ready Status
|
|
@@ -45,6 +45,11 @@ message assets through Sellable MCP tools:
|
|
|
45
45
|
After candidate generation and revision, and before returning `ready`, load
|
|
46
46
|
`create-campaign-v2-validation` through Sellable MCP as the final gate.
|
|
47
47
|
|
|
48
|
+
Both live and dry runs must produce or validate `message-validation.md` with
|
|
49
|
+
the same quality gates. The selected winner must pass the `Concrete Language Audit`:
|
|
50
|
+
identify and replace or cut abstract verbs, abstract nouns, abstract adjectives,
|
|
51
|
+
abstract adverbs, and cliches before the message is treated as ready.
|
|
52
|
+
|
|
48
53
|
Never reconstruct that branch from `brief.md`, `lead-review.md`,
|
|
49
54
|
`lead-sample.json`, `lead-filter.md`, `message-validation.md`, local files, or
|
|
50
55
|
direct database reads. If any required message asset cannot be loaded through MCP
|
|
@@ -66,3 +66,30 @@ Personal LinkedIn posts and inspiration examples deserve especially clear
|
|
|
66
66
|
notes: explain whether the lesson is voice, hook shape, proof handling,
|
|
67
67
|
argument structure, audience fit, or a pattern to avoid. Do not mix admiration
|
|
68
68
|
with permission to copy; many inspiration examples should be structural only.
|
|
69
|
+
|
|
70
|
+
## LinkedIn Post Gold Standards
|
|
71
|
+
|
|
72
|
+
The approved LinkedIn post gold-standard pack lives in
|
|
73
|
+
`~/.sellable/configs/core/references/linkedin-posts/` and is capped at 20
|
|
74
|
+
approved examples. User-owned examples can be personal best posts or
|
|
75
|
+
user-approved space benchmarks researched from high-performing posts in the
|
|
76
|
+
space.
|
|
77
|
+
|
|
78
|
+
Do not add researched outside posts directly to the approved pack. First show a
|
|
79
|
+
candidate list and ask which examples the user wants to add, skip, mark as
|
|
80
|
+
anti-examples, or use to replace an existing item when the pack is full.
|
|
81
|
+
|
|
82
|
+
Each approved post reference should split the lesson into:
|
|
83
|
+
|
|
84
|
+
- hook mechanism
|
|
85
|
+
- content/body mechanism
|
|
86
|
+
- rhythm and pacing
|
|
87
|
+
- sentence structure
|
|
88
|
+
- proof/story use
|
|
89
|
+
- voice fit
|
|
90
|
+
- risks and allowed use
|
|
91
|
+
|
|
92
|
+
Outside examples are structure/taste references only unless the user explicitly
|
|
93
|
+
approves quotation. Personal posts can be stronger voice references, but still
|
|
94
|
+
record whether to quote, imitate structure, summarize, keep private, or treat as
|
|
95
|
+
an anti-example.
|