@sellable/mcp 0.1.126 → 0.1.127

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.
@@ -80,6 +80,9 @@ Quality bar:
80
80
 
81
81
  - Do not synthesize a lightweight message from general knowledge. The artifact
82
82
  must prove the embedded message-review safety-gate workflow ran.
83
+ - There is no generate-message fast mode in this path. The embedded gate is the
84
+ same campaign-launch quality contract used by the parent-thread compatibility
85
+ path, not a lower-quality shortcut.
83
86
  - Message generation can start before `lead-filter.md`, but message review
84
87
  cannot start until the parent verifies the selected basis rows still pass the
85
88
  final filter.
@@ -128,6 +131,13 @@ Quality gates:
128
131
  `[insert]`, or `[generated]`.
129
132
  - Optional row-specific personalization must be grounded in a row field or
130
133
  omitted entirely.
134
+ - Engagement-source personalization is a special case, not the default opener.
135
+ Do not write `saw you {{engagement_context}} on {{post_context}}`, `saw you
136
+ reacted to`, `saw you engaging with`, or equivalent source-citation copy as a
137
+ default hook. Only refer to the prospect's engagement when the line is
138
+ self-aware and low-certainty, for example `not sure if this is too specific,
139
+ but the [topic] thread felt close enough to send`. Otherwise omit the
140
+ engagement signal and use role/company/problem context.
131
141
  - Subjects should be short, buyer-relevant, and specific. Avoid `quick
132
142
  question`, `demo`, `founder call`, sender names, and generic `outbound`.
133
143
  - If the message is plausible but not ready to send, set `Recommendation:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.126",
3
+ "version": "0.1.127",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -561,6 +561,7 @@ updates.
561
561
  Do not load the full long-form `generate-messages` subskill in this
562
562
  create-campaign path; if the safety gate cannot safely approve the draft,
563
563
  route to revise messaging with the concrete failure.
564
+ This compatibility path is not a generate-message fast mode.
564
565
  Do not synthesize `message-validation.md` from the brief, lead review, or
565
566
  general knowledge.
566
567
  5. Create the campaign shell early with the v1 brief so the user can open the
@@ -1248,11 +1248,12 @@ mcp__sellable__get_subskill_asset({ subskillName: "create-campaign-v2", assetPat
1248
1248
  ```
1249
1249
 
1250
1250
  Do not load the full long-form `generate-messages` subskill in
1251
- `create-campaign-v2`. The safety-gate asset is a parent-thread fallback for hosts
1252
- that cannot launch `post-find-leads-message-scout`, not the preferred route. If
1253
- the safety gate is missing a needed campaign-specific rule or the draft fails
1254
- quality gates, stop at `revise-messaging` with the exact failure instead of
1255
- pulling the long prompt into the main thread.
1251
+ `create-campaign-v2`. The safety-gate asset is a parent-thread compatibility
1252
+ path for hosts that cannot launch `post-find-leads-message-scout`, not a
1253
+ generate-message fast-mode prompt and not the preferred route. If the safety gate
1254
+ is missing a needed campaign-specific rule or the draft fails quality gates, stop
1255
+ at `revise-messaging` with the exact failure instead of pulling the long prompt
1256
+ into the main thread.
1256
1257
 
1257
1258
  Do NOT proceed to Step 4 (message review gate) unless `message-validation.md`
1258
1259
  contains the safety-gate required sections, a raw sendable Selected Winner, and an
@@ -3,17 +3,17 @@
3
3
  Use this reference for `create-campaign-v2` message review only in two cases:
4
4
  when these rules are embedded inside the `post-find-leads-message-scout` agent
5
5
  prompt, or when the host cannot launch that agent and the parent thread needs a
6
- compact fallback. It is the campaign-launch subset of `generate-messages`: enough
7
- to prove a truthful first-send message, rendered token examples, and an approval
8
- decision without loading the full long-form message-generation prompt into the
9
- main Claude/Codex thread.
6
+ self-contained safety gate. It is the campaign-launch subset of
7
+ `generate-messages`: enough to prove a truthful first-send message, rendered
8
+ token examples, and an approval decision without loading the full long-form
9
+ message-generation prompt into the main Claude/Codex thread.
10
10
 
11
11
  In a normal installed Claude/Codex session, the message scout owns these rules.
12
- The parent-thread asset is a compatibility fallback, not a shortcut. Do not load
13
- the full `generate-messages` subskill in this flow. If the safety gate is missing
14
- a needed campaign-specific rule or the draft fails quality gates, stop at
15
- `revise-messaging` with the exact missing rule/failure instead of pulling the
16
- long prompt into the main thread.
12
+ The parent-thread asset is a compatibility safety path, not a fast-mode prompt
13
+ or a shortcut. Do not load the full `generate-messages` subskill in this flow. If
14
+ the safety gate is missing a needed campaign-specific rule or the draft fails
15
+ quality gates, stop at `revise-messaging` with the exact missing rule/failure
16
+ instead of pulling the long prompt into the main thread.
17
17
 
18
18
  ## Required Workflow
19
19
 
@@ -71,6 +71,13 @@ the full framework.
71
71
  `[insert]`, `[generated]`, or any instruction for a later model to fill.
72
72
  - Optional row-specific personalization must be grounded in a row field or
73
73
  omitted entirely. Never use generic filler like "your work" or "your team."
74
+ - Engagement-source personalization is a special case, not the default opener.
75
+ Do not write `saw you {{engagement_context}} on {{post_context}}`, `saw you
76
+ reacted to`, `saw you engaging with`, or equivalent source-citation copy as a
77
+ default hook. Only refer to the prospect's engagement when the line is
78
+ self-aware and low-certainty, for example `not sure if this is too specific,
79
+ but the [topic] thread felt close enough to send`. Otherwise omit the
80
+ engagement signal and use role/company/problem context.
74
81
  - Subject lines should be short, buyer-relevant, and specific. Avoid
75
82
  `quick question`, `demo`, `founder call`, sender names, and generic `outbound`.
76
83
  - If the message is plausible but not ready to send, set
@@ -1411,6 +1411,13 @@ about`, or `clearly relevant` are BLOCKED. Source-y phrases such as
1411
1411
  context instead: `not sure if this is relevant, but if [topic] is part
1412
1412
  of what you're testing...`, `this may be too specific, but [topic] felt
1413
1413
  close enough to send`, or a similarly natural line.
1414
+ - **Engagement reference is opt-in, not the default opener:** do not
1415
+ default to `{{first_name}}, saw you {{engagement_context}} on
1416
+ {{post_context}}`, `saw you reacted to...`, or equivalent retrieval-log
1417
+ copy. That reads like surveillance unless the line is self-aware about
1418
+ the weak inference and uses low-certainty language. If that sounds
1419
+ awkward, omit the engagement source and open from role, company, problem,
1420
+ or the approved offer.
1414
1421
  - **No internal-metric flex:** internal process details are not proof by
1415
1422
  default. Compute time, token/cache details, model names, number of
1416
1423
  agents, orchestration internals, or `~5 min of compute per message`
@@ -1764,6 +1771,11 @@ Rules:
1764
1771
  - `"Saw you around [topic]."`
1765
1772
  - `"Saw you engaging with [topic]."`
1766
1773
  - signal-led opener shape is a **special case**, not the default. Use it only when the archived motion truly depends on it and the line can stay natural. Follow Superpower's `"saw you were active around some [topic] stuff recently and figured this might actually be relevant"` shape only when it reads like a real human note rather than a retrieval flex.
1774
+ - tokenized engagement-source opener shape is BLOCKED by default:
1775
+ `{{first_name}}, saw you {{engagement_context}} on {{post_context}}` reads
1776
+ like surveillance unless the filled line is explicitly self-aware and
1777
+ low-certainty. Prefer `not sure if this is too specific, but the [topic]
1778
+ thread felt close enough to send` or omit the engagement reference entirely.
1767
1779
  - if no per-lead signal exists, a category-level opener is acceptable as a fallback, but the Findings section must flag: `"Category-level opener used because lead-sample.json carries no per-lead signal. Real sends should surface signals in lead-sample.json before using this template."`
1768
1780
  - this pushes the real fix upstream to find-leads, where the sample payload should include signals when they exist
1769
1781