@sellable/mcp 0.1.0

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.
Files changed (200) hide show
  1. package/.claude-plugin/plugin.json +12 -0
  2. package/.mcp.json +9 -0
  3. package/README.md +355 -0
  4. package/dist/api.d.ts +21 -0
  5. package/dist/api.js +73 -0
  6. package/dist/auth.d.ts +60 -0
  7. package/dist/auth.js +246 -0
  8. package/dist/engage-memory.d.ts +63 -0
  9. package/dist/engage-memory.js +354 -0
  10. package/dist/index-dev.d.ts +2 -0
  11. package/dist/index-dev.js +17 -0
  12. package/dist/index.d.ts +7 -0
  13. package/dist/index.js +8 -0
  14. package/dist/server.d.ts +1 -0
  15. package/dist/server.js +499 -0
  16. package/dist/skills.d.ts +11 -0
  17. package/dist/skills.js +97 -0
  18. package/dist/tools/auth.d.ts +30 -0
  19. package/dist/tools/auth.js +124 -0
  20. package/dist/tools/blueprint-commit.d.ts +174 -0
  21. package/dist/tools/blueprint-commit.js +286 -0
  22. package/dist/tools/bootstrap.d.ts +64 -0
  23. package/dist/tools/bootstrap.js +246 -0
  24. package/dist/tools/campaigns.d.ts +589 -0
  25. package/dist/tools/campaigns.js +892 -0
  26. package/dist/tools/cells.d.ts +58 -0
  27. package/dist/tools/cells.js +48 -0
  28. package/dist/tools/context.d.ts +88 -0
  29. package/dist/tools/context.js +271 -0
  30. package/dist/tools/csv-domains.d.ts +73 -0
  31. package/dist/tools/csv-domains.js +464 -0
  32. package/dist/tools/csv-linkedin.d.ts +102 -0
  33. package/dist/tools/csv-linkedin.js +712 -0
  34. package/dist/tools/direct-campaigns.d.ts +240 -0
  35. package/dist/tools/direct-campaigns.js +250 -0
  36. package/dist/tools/engage-bootstrap.d.ts +94 -0
  37. package/dist/tools/engage-bootstrap.js +205 -0
  38. package/dist/tools/engage-discovery.d.ts +78 -0
  39. package/dist/tools/engage-discovery.js +150 -0
  40. package/dist/tools/engage-memory.d.ts +181 -0
  41. package/dist/tools/engage-memory.js +143 -0
  42. package/dist/tools/engage-state.d.ts +72 -0
  43. package/dist/tools/engage-state.js +62 -0
  44. package/dist/tools/enrichment.d.ts +167 -0
  45. package/dist/tools/enrichment.js +174 -0
  46. package/dist/tools/flow-preflight.d.ts +68 -0
  47. package/dist/tools/flow-preflight.js +138 -0
  48. package/dist/tools/framework.d.ts +44 -0
  49. package/dist/tools/framework.js +153 -0
  50. package/dist/tools/interaction-mode.d.ts +27 -0
  51. package/dist/tools/interaction-mode.js +102 -0
  52. package/dist/tools/leads.d.ts +2417 -0
  53. package/dist/tools/leads.js +2307 -0
  54. package/dist/tools/linkedin.d.ts +210 -0
  55. package/dist/tools/linkedin.js +229 -0
  56. package/dist/tools/navigation.d.ts +91 -0
  57. package/dist/tools/navigation.js +381 -0
  58. package/dist/tools/one-off.d.ts +229 -0
  59. package/dist/tools/one-off.js +273 -0
  60. package/dist/tools/processing.d.ts +70 -0
  61. package/dist/tools/processing.js +56 -0
  62. package/dist/tools/prompts.d.ts +211 -0
  63. package/dist/tools/prompts.js +210 -0
  64. package/dist/tools/provider-preflight.d.ts +21 -0
  65. package/dist/tools/provider-preflight.js +59 -0
  66. package/dist/tools/readiness.d.ts +261 -0
  67. package/dist/tools/readiness.js +510 -0
  68. package/dist/tools/rows.d.ts +126 -0
  69. package/dist/tools/rows.js +105 -0
  70. package/dist/tools/rubrics.d.ts +497 -0
  71. package/dist/tools/rubrics.js +681 -0
  72. package/dist/tools/senders.d.ts +44 -0
  73. package/dist/tools/senders.js +69 -0
  74. package/dist/tools/sequencer.d.ts +127 -0
  75. package/dist/tools/sequencer.js +194 -0
  76. package/dist/tools/tables.d.ts +35 -0
  77. package/dist/tools/tables.js +36 -0
  78. package/dist/tools/verify-row.d.ts +36 -0
  79. package/dist/tools/verify-row.js +38 -0
  80. package/dist/tools/workspaces.d.ts +140 -0
  81. package/dist/tools/workspaces.js +139 -0
  82. package/dist/utils/workspace-root.d.ts +1 -0
  83. package/dist/utils/workspace-root.js +39 -0
  84. package/package.json +46 -0
  85. package/skills/building-gtm-tables/SKILL.md +216 -0
  86. package/skills/building-gtm-tables/core/auto-execute.yaml +19 -0
  87. package/skills/building-gtm-tables/core/blueprint-schema.json +72 -0
  88. package/skills/building-gtm-tables/references/brief-to-blueprint.md +334 -0
  89. package/skills/building-gtm-tables/references/column-type-catalog.md +318 -0
  90. package/skills/building-gtm-tables/references/common-blueprints.fixtures.ts +199 -0
  91. package/skills/building-gtm-tables/references/common-blueprints.md +44 -0
  92. package/skills/building-gtm-tables/references/failure-taxonomy.md +197 -0
  93. package/skills/building-gtm-tables/references/uat-seed-prompts.md +37 -0
  94. package/skills/building-gtm-tables/references/verify-loop.md +74 -0
  95. package/skills/campaign-messages/SKILL.md +173 -0
  96. package/skills/campaign-messages/flow.v1.json +75 -0
  97. package/skills/craft-message/SKILL.md +401 -0
  98. package/skills/create-campaign/ARCHITECTURE.md +232 -0
  99. package/skills/create-campaign/DISCUSS.md +296 -0
  100. package/skills/create-campaign/FLOW_ASCII.md +240 -0
  101. package/skills/create-campaign/HOST-PARITY-CHECKLIST.md +49 -0
  102. package/skills/create-campaign/README.md +142 -0
  103. package/skills/create-campaign/SKILL.md +286 -0
  104. package/skills/create-campaign/context/README.md +67 -0
  105. package/skills/create-campaign/context/_TEMPLATE.md +12 -0
  106. package/skills/create-campaign/context/context.md +35 -0
  107. package/skills/create-campaign/context/learnings.md +16 -0
  108. package/skills/create-campaign/context/registry.json +19 -0
  109. package/skills/create-campaign/core/flow.v1.json +217 -0
  110. package/skills/create-campaign/core/policy.md +191 -0
  111. package/skills/create-campaign/core/providers/apollo.json +35 -0
  112. package/skills/create-campaign/core/providers/prospeo.json +34 -0
  113. package/skills/create-campaign/core/providers/registry.json +31 -0
  114. package/skills/create-campaign/core/providers/sales-nav.json +37 -0
  115. package/skills/create-campaign/core/providers/signal-discovery.json +42 -0
  116. package/skills/create-campaign/references/brief-template.md +64 -0
  117. package/skills/create-campaign/references/campaign-quality.md +84 -0
  118. package/skills/create-campaign/references/copy-calibration-examples.md +120 -0
  119. package/skills/create-campaign/references/offer-patterns.md +108 -0
  120. package/skills/create-campaign/references/provider-selection-strategy.md +212 -0
  121. package/skills/create-campaign/references/question-examples.md +167 -0
  122. package/skills/create-campaign/references/token-fill-examples.md +81 -0
  123. package/skills/create-campaign-brief/ARCHITECTURE.md +72 -0
  124. package/skills/create-campaign-brief/DISCUSS.md +64 -0
  125. package/skills/create-campaign-brief/README.md +176 -0
  126. package/skills/create-campaign-brief/SKILL.md +537 -0
  127. package/skills/create-campaign-brief/references/brief-synthesis-rules.md +100 -0
  128. package/skills/create-campaign-brief/references/brief-template.md +220 -0
  129. package/skills/create-campaign-brief/references/campaign-idea-options.md +30 -0
  130. package/skills/create-campaign-brief/references/copy-appendix-template.md +62 -0
  131. package/skills/create-campaign-brief/references/draft-lifecycle.md +23 -0
  132. package/skills/create-campaign-brief/references/examples/MANIFEST.json +89 -0
  133. package/skills/create-campaign-brief/references/examples/briefs/clover.md +223 -0
  134. package/skills/create-campaign-brief/references/examples/briefs/galley.md +222 -0
  135. package/skills/create-campaign-brief/references/examples/briefs/gelee.md +220 -0
  136. package/skills/create-campaign-brief/references/examples/briefs/hey-digital.md +234 -0
  137. package/skills/create-campaign-brief/references/examples/briefs/persona.md +231 -0
  138. package/skills/create-campaign-brief/references/examples/briefs/revvix.md +220 -0
  139. package/skills/create-campaign-brief/references/examples/briefs/sellable-dev.md +220 -0
  140. package/skills/create-campaign-brief/references/examples/briefs/superposition.md +233 -0
  141. package/skills/create-campaign-brief/references/examples/briefs/superpower.md +219 -0
  142. package/skills/create-campaign-brief/references/examples/briefs/westpark-villas.md +220 -0
  143. package/skills/create-campaign-brief/references/icp-lock-question-bank.md +43 -0
  144. package/skills/create-campaign-brief/references/messaging-inputs.md +58 -0
  145. package/skills/create-campaign-brief/references/output-acceptance-rubric.md +62 -0
  146. package/skills/create-campaign-brief/references/phase75-active-runtime-message-pack.md +248 -0
  147. package/skills/create-campaign-brief/references/phase75-canonical-brief-template.md +319 -0
  148. package/skills/create-campaign-brief/references/phase75-good-brief-and-messaging-examples.md +445 -0
  149. package/skills/create-campaign-brief/references/quick-research-protocol.md +39 -0
  150. package/skills/create-campaign-brief/references/reference-sheet-protocol.md +60 -0
  151. package/skills/create-campaign-brief/references/zero-shot-iteration-rules.md +66 -0
  152. package/skills/create-campaign-v2/SKILL.md +1619 -0
  153. package/skills/create-campaign-v2/core/auto-execute.README.md +219 -0
  154. package/skills/create-campaign-v2/core/auto-execute.yaml +121 -0
  155. package/skills/create-campaign-v2/core/flow.v2.json +1643 -0
  156. package/skills/create-campaign-v2/core/policy.md +82 -0
  157. package/skills/create-campaign-v2/references/ai-tells.md +253 -0
  158. package/skills/create-campaign-v2/references/approval-gate-framing.md +346 -0
  159. package/skills/create-campaign-v2/references/draft-lifecycle.md +110 -0
  160. package/skills/create-campaign-v2/references/escalation-ladder.md +119 -0
  161. package/skills/create-campaign-v2/references/filter-leads.md +495 -0
  162. package/skills/create-campaign-v2/references/final-handoff-contract.md +176 -0
  163. package/skills/create-campaign-v2/references/gold-standard-message-examples.md +394 -0
  164. package/skills/create-campaign-v2/references/gold-standard-message-patterns.md +314 -0
  165. package/skills/create-campaign-v2/references/gold-standard-message-validation-example.md +212 -0
  166. package/skills/create-campaign-v2/references/lead-validation-preview.md +172 -0
  167. package/skills/create-campaign-v2/references/parallel-critique-protocol.md +368 -0
  168. package/skills/create-campaign-v2/references/sample-validation-loop.md +289 -0
  169. package/skills/create-campaign-v2/references/step-13-import-leads.md +151 -0
  170. package/skills/create-campaign-v2/references/step-15-re-cascade.md +90 -0
  171. package/skills/create-campaign-v2/references/thomas-revision-filters.md +521 -0
  172. package/skills/create-campaign-v2/references/thomas-variant-selection.md +202 -0
  173. package/skills/create-campaign-v2/references/tier-routing-matrix.md +66 -0
  174. package/skills/create-campaign-v2/references/validation-criteria.md +367 -0
  175. package/skills/create-campaign-v2/references/watch-link-handoff.md +106 -0
  176. package/skills/create-campaign-v2-validation/SKILL.md +296 -0
  177. package/skills/create-post/SKILL.md +1308 -0
  178. package/skills/create-rubric/SKILL.md +251 -0
  179. package/skills/engage/SKILL.md +549 -0
  180. package/skills/engage/core/README.md +23 -0
  181. package/skills/engage/core/proven-searches.json +11 -0
  182. package/skills/engage/core/style-guide.template.md +47 -0
  183. package/skills/engage/core/tracked-people.json +10 -0
  184. package/skills/enrich-prospects/SKILL.md +97 -0
  185. package/skills/find-leads/SKILL.md +467 -0
  186. package/skills/generate-messages/SKILL.md +2361 -0
  187. package/skills/interview/SKILL.md +132 -0
  188. package/skills/interview/core/ENGAGE_STYLE_GUIDE.template.md +54 -0
  189. package/skills/interview/core/ICP.template.md +54 -0
  190. package/skills/interview/core/VOICE_PROFILE.template.md +101 -0
  191. package/skills/providers/apollo.md +520 -0
  192. package/skills/providers/prospeo.md +398 -0
  193. package/skills/providers/sales-nav.md +372 -0
  194. package/skills/providers/signal-discovery.md +495 -0
  195. package/skills/research/SKILL.md +258 -0
  196. package/skills/research/config.json +9 -0
  197. package/skills/research/override.md +13 -0
  198. package/skills/research-prospect/SKILL.md +99 -0
  199. package/skills/research-sender/SKILL.md +158 -0
  200. package/skills/workflow-sequences/SKILL.md +85 -0
@@ -0,0 +1,110 @@
1
+ # Draft Lifecycle
2
+
3
+ Phase 84 validates the Phase 83 brief through chained artifacts in one draft
4
+ directory:
5
+
6
+ `.sellable/create-campaign-v2/drafts/{workspace-slug}/{campaign-slug}/`
7
+
8
+ Required files as the chain advances:
9
+
10
+ ```text
11
+ brief.md
12
+ lead-review.md
13
+ lead-sample.json
14
+ lead-filter.md
15
+ message-validation.md
16
+ rubric.json # optional
17
+ ```
18
+
19
+ ## Artifact Roles
20
+
21
+ - `brief.md`
22
+ - stable Phase 83 thesis
23
+ - preserved during validation
24
+ - `lead-review.md`
25
+ - human-readable analysis of the preview run
26
+ - `lead-sample.json`
27
+ - machine-readable lead sample for filter and message validation
28
+ - `lead-filter.md`
29
+ - primary keep/exclude output for the middle step
30
+ - owns required keep rules, required exclude rules, sample false positives,
31
+ pass-rate judgment, and the final recommendation
32
+ - `rubric.json`
33
+ - optional implementation sidecar only
34
+ - must be derived from `lead-filter.md`, not designed separately
35
+ - `message-validation.md`
36
+ - final message check against the validated lead set
37
+
38
+ ## Serial Step Order
39
+
40
+ Run in this order only:
41
+
42
+ 1. find leads
43
+ 2. filter leads
44
+ 3. generate message
45
+
46
+ Do not skip ahead unless the required upstream artifacts already exist and are
47
+ complete.
48
+
49
+ ## Atomic Writes
50
+
51
+ Every artifact edit must be written as:
52
+
53
+ 1. read the current artifact if it exists
54
+ 2. compute the full replacement contents
55
+ 3. write `{artifact}.tmp`
56
+ 4. rename `{artifact}.tmp` -> `{artifact}`
57
+
58
+ If the write fails before rename, the old artifact remains the valid state.
59
+
60
+ ## Resume Rules
61
+
62
+ - `brief.md` only -> run `find leads`
63
+ - `lead-review.md` + `lead-sample.json` present -> run `filter leads` and
64
+ `generate message` from the same find-leads basis
65
+ - `lead-filter.md` present and `message-validation.md` missing -> run
66
+ `generate message`
67
+ - `message-validation.md` present and `lead-filter.md` missing -> run
68
+ `filter leads`
69
+ - `message-validation.md` + `lead-filter.md` present -> reconcile and stop,
70
+ validation complete
71
+
72
+ Invalid partial states must stop for repair:
73
+
74
+ - `lead-review.md` exists but `lead-sample.json` is missing
75
+ - `lead-sample.json` exists but `lead-review.md` is missing
76
+ - `lead-filter.md` exists without both upstream lead artifacts
77
+ - approval packet or commit gate exists without both `message-validation.md`
78
+ and `lead-filter.md`
79
+
80
+ ## Revision Rules
81
+
82
+ - `revise-brief`
83
+ - preserve `brief.md`
84
+ - delete `lead-review.md`
85
+ - delete `lead-sample.json`
86
+ - delete `lead-filter.md`
87
+ - delete `message-validation.md`
88
+ - delete `rubric.json` if present
89
+ - `revise-leads`
90
+ - delete `lead-review.md`
91
+ - delete `lead-sample.json`
92
+ - delete downstream artifacts (`lead-filter.md`, `message-validation.md`, `rubric.json`)
93
+ - `revise-filter`
94
+ - preserve lead preview artifacts
95
+ - delete `lead-filter.md`
96
+ - delete `message-validation.md`
97
+ - delete `rubric.json` if present
98
+ - `revise-message`
99
+ - preserve upstream artifacts
100
+ - delete `message-validation.md`
101
+
102
+ ## No-Mutation Boundary
103
+
104
+ During Phase 84, the artifact chain is local draft state only. Do not:
105
+
106
+ - create or update a `CampaignOffer`
107
+ - import leads
108
+ - persist a selected lead list
109
+ - create workflow rows
110
+ - attach sequences
@@ -0,0 +1,119 @@
1
+ # Escalation Ladder
2
+
3
+ This reference governs when the Plan 85-02 autonomous tail STOPS and returns
4
+ control to the user. Load this file whenever the tail needs to decide
5
+ between continuing autonomously, retrying, or escalating.
6
+
7
+ ## Principle
8
+
9
+ The autonomous tail is optimistic but not reckless. It retries bounded
10
+ transient failures, diagnoses whether a bad signal is a brief problem or a
11
+ list problem, and escalates cleanly when autonomous correction would either
12
+ loop indefinitely or silently ship bad state.
13
+
14
+ Escalation is a first-class exit — not a failure. A clean escalation leaves
15
+ the campaign resumable, preserves `CampaignOffer.currentStep` at the failing
16
+ step, and surfaces an actionable options menu.
17
+
18
+ ## Escalation Conditions
19
+
20
+ Stop the autonomous tail and escalate to the user when any of the following
21
+ fire. The list is intentionally ordered from loudest to quietest — when
22
+ multiple could fire, pick the loudest.
23
+
24
+ 1. **Zero leads imported** (Step 13 `import_leads` returned 0 usable rows).
25
+ Hard fail. There is nothing to validate, nothing to message.
26
+ 2. **Sender missing or disabled** at any tail step that needs it
27
+ (sequence attach, messaging, greenlight). Hard fail — no send path.
28
+ 3. **Sequence validation fails** (attach step rejects the sequence). Hard
29
+ fail with the sequence error surfaced verbatim.
30
+ 4. **`save_rubrics` was already bypassed** and the rubric step produces
31
+ unusable results. The rubric never fired — the tail cannot make a
32
+ brief-vs-list decision without it.
33
+ 5. **List problem diagnosed** in Step 14 (sample is overwhelmingly outside
34
+ ICP, or enrichment yields blanks). Do NOT auto-revise the brief; the
35
+ list itself needs operator attention. See
36
+ `references/sample-validation-loop.md` for the brief-vs-list decision
37
+ tree.
38
+ 6. **`revisionRound > maxRevisionRounds`** (default cap is 3). The loop
39
+ tried and failed `maxRevisionRounds` times; one more try is not going
40
+ to change the outcome. On stale resume the counter does NOT reset —
41
+ see Resume Counter Rule below.
42
+ 7. **Same tool + same error repeats** beyond `retry.sameToolSameError`
43
+ (default 2). The fourth retry of the same enrichment 5xx is thrash.
44
+ 8. **User greenlight on a failed or paused campaign**. If the user says
45
+ "start" but the campaign is in an error/paused state that the skill
46
+ cannot atomically recover from, refuse the start and surface why.
47
+
48
+ ## Diagnosis Before Escalation
49
+
50
+ When the tail hits a sample-validation trip (projectedPass <
51
+ minProjectedPass), it MUST diagnose before escalating or revising:
52
+
53
+ - **Brief problem** → autonomous `update_campaign_brief` with the
54
+ specific diagnostic, rerun sample. Loop counter increments.
55
+ - **List problem** → STOP. Escalate with an explicit "the sourced list
56
+ looks bad — revise leads or start over" message. Never auto-revise
57
+ leads.
58
+ - **Unknown** → STOP. Escalate rather than guess which revision path
59
+ would help.
60
+
61
+ The diagnosis itself is logged (which path was chosen and why) so
62
+ `auto-execute.yaml` tuning has real evidence later.
63
+
64
+ ## Resume Counter Rule
65
+
66
+ `revisionRound` persists across skill resume. If a session closes with the
67
+ counter at 2 and the user reopens and resumes, the counter is still at 2 —
68
+ ONE more revision round is allowed before the 3-round cap trips. Stale
69
+ resume must still respect the cap. Do NOT reset to 0 on resume.
70
+
71
+ The counter lives with the campaign draft/committed metadata, not in
72
+ volatile session state.
73
+
74
+ ## Retry vs Escalate
75
+
76
+ Bounded retries are fine. Infinite retries are not. Rules of thumb:
77
+
78
+ - **Retry** a single transient error on the same tool up to
79
+ `retry.sameToolSameError` (default 2). Includes 5xx, socket timeout,
80
+ rate-limit 429 with backoff.
81
+ - **Escalate** when the error is the same tool + same error code
82
+ beyond the cap, or when the tool is returning 4xx auth/permission
83
+ errors that won't change on retry.
84
+ - **Diagnose, then revise or escalate** when the tool succeeded but the
85
+ result is low-quality (rubric pass rate collapses, tokens cannot
86
+ resolve on the sample). Do not retry the same sample — the sample
87
+ itself is the signal, not the tool.
88
+
89
+ ## Escalation Output
90
+
91
+ When escalating, the skill:
92
+
93
+ 1. Writes the last diagnostic + revision history to the workflow-table
94
+ `Notes` column or a skill-level artifact so the operator can see what
95
+ was tried.
96
+ 2. Leaves `CampaignOffer.currentStep` at the failing step (so resuming
97
+ the skill picks up exactly where it stopped — no silent rollback, no
98
+ silent advance).
99
+ 3. Re-surfaces the watch link using `references/watch-link-handoff.md`.
100
+ 4. Presents an actionable options menu via `AskUserQuestion`:
101
+ - `revise-brief` — go back to Phase 83/84 brief editing
102
+ - `revise-leads` — go back to Phase 84 find-leads
103
+ - `abort` — stop and clean up (moves committed dir under `.aborted/`
104
+ if the user wants to cold-start)
105
+ - `resume-from-<step>` — retry from the failing step (e.g.
106
+ `resume-from-validate-sample`), useful when the operator corrected
107
+ something externally (e.g. re-enabled a sender)
108
+
109
+ ## Hard Rules
110
+
111
+ - A list problem NEVER triggers an autonomous `update_campaign_brief`.
112
+ Brief revision is for brief-shaped failures only.
113
+ - The revision-round counter NEVER resets on resume.
114
+ - Escalation NEVER silently rolls back campaign state. The campaign row
115
+ exists; only `currentStep` tells us where to resume.
116
+ - The watch link IS re-surfaced on escalation so the user can inspect
117
+ state directly.
118
+ - Escalation is not an error in the sense that the skill crashed — it's
119
+ a planned exit. Surface it calmly.