@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.
- package/.claude-plugin/plugin.json +12 -0
- package/.mcp.json +9 -0
- package/README.md +355 -0
- package/dist/api.d.ts +21 -0
- package/dist/api.js +73 -0
- package/dist/auth.d.ts +60 -0
- package/dist/auth.js +246 -0
- package/dist/engage-memory.d.ts +63 -0
- package/dist/engage-memory.js +354 -0
- package/dist/index-dev.d.ts +2 -0
- package/dist/index-dev.js +17 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +8 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.js +499 -0
- package/dist/skills.d.ts +11 -0
- package/dist/skills.js +97 -0
- package/dist/tools/auth.d.ts +30 -0
- package/dist/tools/auth.js +124 -0
- package/dist/tools/blueprint-commit.d.ts +174 -0
- package/dist/tools/blueprint-commit.js +286 -0
- package/dist/tools/bootstrap.d.ts +64 -0
- package/dist/tools/bootstrap.js +246 -0
- package/dist/tools/campaigns.d.ts +589 -0
- package/dist/tools/campaigns.js +892 -0
- package/dist/tools/cells.d.ts +58 -0
- package/dist/tools/cells.js +48 -0
- package/dist/tools/context.d.ts +88 -0
- package/dist/tools/context.js +271 -0
- package/dist/tools/csv-domains.d.ts +73 -0
- package/dist/tools/csv-domains.js +464 -0
- package/dist/tools/csv-linkedin.d.ts +102 -0
- package/dist/tools/csv-linkedin.js +712 -0
- package/dist/tools/direct-campaigns.d.ts +240 -0
- package/dist/tools/direct-campaigns.js +250 -0
- package/dist/tools/engage-bootstrap.d.ts +94 -0
- package/dist/tools/engage-bootstrap.js +205 -0
- package/dist/tools/engage-discovery.d.ts +78 -0
- package/dist/tools/engage-discovery.js +150 -0
- package/dist/tools/engage-memory.d.ts +181 -0
- package/dist/tools/engage-memory.js +143 -0
- package/dist/tools/engage-state.d.ts +72 -0
- package/dist/tools/engage-state.js +62 -0
- package/dist/tools/enrichment.d.ts +167 -0
- package/dist/tools/enrichment.js +174 -0
- package/dist/tools/flow-preflight.d.ts +68 -0
- package/dist/tools/flow-preflight.js +138 -0
- package/dist/tools/framework.d.ts +44 -0
- package/dist/tools/framework.js +153 -0
- package/dist/tools/interaction-mode.d.ts +27 -0
- package/dist/tools/interaction-mode.js +102 -0
- package/dist/tools/leads.d.ts +2417 -0
- package/dist/tools/leads.js +2307 -0
- package/dist/tools/linkedin.d.ts +210 -0
- package/dist/tools/linkedin.js +229 -0
- package/dist/tools/navigation.d.ts +91 -0
- package/dist/tools/navigation.js +381 -0
- package/dist/tools/one-off.d.ts +229 -0
- package/dist/tools/one-off.js +273 -0
- package/dist/tools/processing.d.ts +70 -0
- package/dist/tools/processing.js +56 -0
- package/dist/tools/prompts.d.ts +211 -0
- package/dist/tools/prompts.js +210 -0
- package/dist/tools/provider-preflight.d.ts +21 -0
- package/dist/tools/provider-preflight.js +59 -0
- package/dist/tools/readiness.d.ts +261 -0
- package/dist/tools/readiness.js +510 -0
- package/dist/tools/rows.d.ts +126 -0
- package/dist/tools/rows.js +105 -0
- package/dist/tools/rubrics.d.ts +497 -0
- package/dist/tools/rubrics.js +681 -0
- package/dist/tools/senders.d.ts +44 -0
- package/dist/tools/senders.js +69 -0
- package/dist/tools/sequencer.d.ts +127 -0
- package/dist/tools/sequencer.js +194 -0
- package/dist/tools/tables.d.ts +35 -0
- package/dist/tools/tables.js +36 -0
- package/dist/tools/verify-row.d.ts +36 -0
- package/dist/tools/verify-row.js +38 -0
- package/dist/tools/workspaces.d.ts +140 -0
- package/dist/tools/workspaces.js +139 -0
- package/dist/utils/workspace-root.d.ts +1 -0
- package/dist/utils/workspace-root.js +39 -0
- package/package.json +46 -0
- package/skills/building-gtm-tables/SKILL.md +216 -0
- package/skills/building-gtm-tables/core/auto-execute.yaml +19 -0
- package/skills/building-gtm-tables/core/blueprint-schema.json +72 -0
- package/skills/building-gtm-tables/references/brief-to-blueprint.md +334 -0
- package/skills/building-gtm-tables/references/column-type-catalog.md +318 -0
- package/skills/building-gtm-tables/references/common-blueprints.fixtures.ts +199 -0
- package/skills/building-gtm-tables/references/common-blueprints.md +44 -0
- package/skills/building-gtm-tables/references/failure-taxonomy.md +197 -0
- package/skills/building-gtm-tables/references/uat-seed-prompts.md +37 -0
- package/skills/building-gtm-tables/references/verify-loop.md +74 -0
- package/skills/campaign-messages/SKILL.md +173 -0
- package/skills/campaign-messages/flow.v1.json +75 -0
- package/skills/craft-message/SKILL.md +401 -0
- package/skills/create-campaign/ARCHITECTURE.md +232 -0
- package/skills/create-campaign/DISCUSS.md +296 -0
- package/skills/create-campaign/FLOW_ASCII.md +240 -0
- package/skills/create-campaign/HOST-PARITY-CHECKLIST.md +49 -0
- package/skills/create-campaign/README.md +142 -0
- package/skills/create-campaign/SKILL.md +286 -0
- package/skills/create-campaign/context/README.md +67 -0
- package/skills/create-campaign/context/_TEMPLATE.md +12 -0
- package/skills/create-campaign/context/context.md +35 -0
- package/skills/create-campaign/context/learnings.md +16 -0
- package/skills/create-campaign/context/registry.json +19 -0
- package/skills/create-campaign/core/flow.v1.json +217 -0
- package/skills/create-campaign/core/policy.md +191 -0
- package/skills/create-campaign/core/providers/apollo.json +35 -0
- package/skills/create-campaign/core/providers/prospeo.json +34 -0
- package/skills/create-campaign/core/providers/registry.json +31 -0
- package/skills/create-campaign/core/providers/sales-nav.json +37 -0
- package/skills/create-campaign/core/providers/signal-discovery.json +42 -0
- package/skills/create-campaign/references/brief-template.md +64 -0
- package/skills/create-campaign/references/campaign-quality.md +84 -0
- package/skills/create-campaign/references/copy-calibration-examples.md +120 -0
- package/skills/create-campaign/references/offer-patterns.md +108 -0
- package/skills/create-campaign/references/provider-selection-strategy.md +212 -0
- package/skills/create-campaign/references/question-examples.md +167 -0
- package/skills/create-campaign/references/token-fill-examples.md +81 -0
- package/skills/create-campaign-brief/ARCHITECTURE.md +72 -0
- package/skills/create-campaign-brief/DISCUSS.md +64 -0
- package/skills/create-campaign-brief/README.md +176 -0
- package/skills/create-campaign-brief/SKILL.md +537 -0
- package/skills/create-campaign-brief/references/brief-synthesis-rules.md +100 -0
- package/skills/create-campaign-brief/references/brief-template.md +220 -0
- package/skills/create-campaign-brief/references/campaign-idea-options.md +30 -0
- package/skills/create-campaign-brief/references/copy-appendix-template.md +62 -0
- package/skills/create-campaign-brief/references/draft-lifecycle.md +23 -0
- package/skills/create-campaign-brief/references/examples/MANIFEST.json +89 -0
- package/skills/create-campaign-brief/references/examples/briefs/clover.md +223 -0
- package/skills/create-campaign-brief/references/examples/briefs/galley.md +222 -0
- package/skills/create-campaign-brief/references/examples/briefs/gelee.md +220 -0
- package/skills/create-campaign-brief/references/examples/briefs/hey-digital.md +234 -0
- package/skills/create-campaign-brief/references/examples/briefs/persona.md +231 -0
- package/skills/create-campaign-brief/references/examples/briefs/revvix.md +220 -0
- package/skills/create-campaign-brief/references/examples/briefs/sellable-dev.md +220 -0
- package/skills/create-campaign-brief/references/examples/briefs/superposition.md +233 -0
- package/skills/create-campaign-brief/references/examples/briefs/superpower.md +219 -0
- package/skills/create-campaign-brief/references/examples/briefs/westpark-villas.md +220 -0
- package/skills/create-campaign-brief/references/icp-lock-question-bank.md +43 -0
- package/skills/create-campaign-brief/references/messaging-inputs.md +58 -0
- package/skills/create-campaign-brief/references/output-acceptance-rubric.md +62 -0
- package/skills/create-campaign-brief/references/phase75-active-runtime-message-pack.md +248 -0
- package/skills/create-campaign-brief/references/phase75-canonical-brief-template.md +319 -0
- package/skills/create-campaign-brief/references/phase75-good-brief-and-messaging-examples.md +445 -0
- package/skills/create-campaign-brief/references/quick-research-protocol.md +39 -0
- package/skills/create-campaign-brief/references/reference-sheet-protocol.md +60 -0
- package/skills/create-campaign-brief/references/zero-shot-iteration-rules.md +66 -0
- package/skills/create-campaign-v2/SKILL.md +1619 -0
- package/skills/create-campaign-v2/core/auto-execute.README.md +219 -0
- package/skills/create-campaign-v2/core/auto-execute.yaml +121 -0
- package/skills/create-campaign-v2/core/flow.v2.json +1643 -0
- package/skills/create-campaign-v2/core/policy.md +82 -0
- package/skills/create-campaign-v2/references/ai-tells.md +253 -0
- package/skills/create-campaign-v2/references/approval-gate-framing.md +346 -0
- package/skills/create-campaign-v2/references/draft-lifecycle.md +110 -0
- package/skills/create-campaign-v2/references/escalation-ladder.md +119 -0
- package/skills/create-campaign-v2/references/filter-leads.md +495 -0
- package/skills/create-campaign-v2/references/final-handoff-contract.md +176 -0
- package/skills/create-campaign-v2/references/gold-standard-message-examples.md +394 -0
- package/skills/create-campaign-v2/references/gold-standard-message-patterns.md +314 -0
- package/skills/create-campaign-v2/references/gold-standard-message-validation-example.md +212 -0
- package/skills/create-campaign-v2/references/lead-validation-preview.md +172 -0
- package/skills/create-campaign-v2/references/parallel-critique-protocol.md +368 -0
- package/skills/create-campaign-v2/references/sample-validation-loop.md +289 -0
- package/skills/create-campaign-v2/references/step-13-import-leads.md +151 -0
- package/skills/create-campaign-v2/references/step-15-re-cascade.md +90 -0
- package/skills/create-campaign-v2/references/thomas-revision-filters.md +521 -0
- package/skills/create-campaign-v2/references/thomas-variant-selection.md +202 -0
- package/skills/create-campaign-v2/references/tier-routing-matrix.md +66 -0
- package/skills/create-campaign-v2/references/validation-criteria.md +367 -0
- package/skills/create-campaign-v2/references/watch-link-handoff.md +106 -0
- package/skills/create-campaign-v2-validation/SKILL.md +296 -0
- package/skills/create-post/SKILL.md +1308 -0
- package/skills/create-rubric/SKILL.md +251 -0
- package/skills/engage/SKILL.md +549 -0
- package/skills/engage/core/README.md +23 -0
- package/skills/engage/core/proven-searches.json +11 -0
- package/skills/engage/core/style-guide.template.md +47 -0
- package/skills/engage/core/tracked-people.json +10 -0
- package/skills/enrich-prospects/SKILL.md +97 -0
- package/skills/find-leads/SKILL.md +467 -0
- package/skills/generate-messages/SKILL.md +2361 -0
- package/skills/interview/SKILL.md +132 -0
- package/skills/interview/core/ENGAGE_STYLE_GUIDE.template.md +54 -0
- package/skills/interview/core/ICP.template.md +54 -0
- package/skills/interview/core/VOICE_PROFILE.template.md +101 -0
- package/skills/providers/apollo.md +520 -0
- package/skills/providers/prospeo.md +398 -0
- package/skills/providers/sales-nav.md +372 -0
- package/skills/providers/signal-discovery.md +495 -0
- package/skills/research/SKILL.md +258 -0
- package/skills/research/config.json +9 -0
- package/skills/research/override.md +13 -0
- package/skills/research-prospect/SKILL.md +99 -0
- package/skills/research-sender/SKILL.md +158 -0
- package/skills/workflow-sequences/SKILL.md +85 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Create Campaign Brief
|
|
2
|
+
|
|
3
|
+
Standalone Sellable MCP command for Phase 83: create the initial high-level
|
|
4
|
+
`brief.md v1` for the brief-first campaign path.
|
|
5
|
+
|
|
6
|
+
## Host Parity Contract
|
|
7
|
+
|
|
8
|
+
The command is loaded through the normal Sellable prompt-discovery path:
|
|
9
|
+
|
|
10
|
+
- `list_subskill_prompts`
|
|
11
|
+
- `search_subskill_prompts`
|
|
12
|
+
- `get_subskill_prompt({ subskillName: "create-campaign-brief" })`
|
|
13
|
+
|
|
14
|
+
Phase 83 does not require a public `create-campaign-v2` prompt. The command
|
|
15
|
+
name is `create-campaign-brief`.
|
|
16
|
+
|
|
17
|
+
## Source Bundle Contract
|
|
18
|
+
|
|
19
|
+
Start from a LinkedIn URL plus optional pasted materials:
|
|
20
|
+
|
|
21
|
+
- transcript
|
|
22
|
+
- proposal or kickoff notes
|
|
23
|
+
- ICP notes
|
|
24
|
+
- deck excerpts
|
|
25
|
+
- prior messages
|
|
26
|
+
- product or website notes
|
|
27
|
+
- operator-provided campaign idea
|
|
28
|
+
|
|
29
|
+
The command should still work with sparse input. It must separate known facts,
|
|
30
|
+
assumptions, and blocking gaps instead of inventing proof. Default kickoff is
|
|
31
|
+
LinkedIn-first; website-only is a sparse fallback.
|
|
32
|
+
|
|
33
|
+
## Workflow Contract
|
|
34
|
+
|
|
35
|
+
1. Intake a LinkedIn URL and optional materials.
|
|
36
|
+
2. Run quick research only as needed.
|
|
37
|
+
3. Propose 1-3 campaign direction options, or validate the user's idea.
|
|
38
|
+
4. Lock ICP sourcing/filter mechanics.
|
|
39
|
+
5. Confirm an operator-only reference sheet from the example bank.
|
|
40
|
+
6. Define the simple next-step plan: find leads, tighten filter, draft message.
|
|
41
|
+
7. Draft compact messaging inputs and claim boundaries, not final sequences or opener instructions.
|
|
42
|
+
8. Return `brief.md v1` inline and stop.
|
|
43
|
+
|
|
44
|
+
Interview expectations:
|
|
45
|
+
|
|
46
|
+
- Default to one `AskUserQuestion` batch.
|
|
47
|
+
- Use a second batch only if a real unknown still blocks `brief-v1`.
|
|
48
|
+
- Ask up to 4 questions per batch and up to 4 options per question.
|
|
49
|
+
- If the company is ambiguous, confirm the company first.
|
|
50
|
+
- Before the question batch, state the current best guess in plain English.
|
|
51
|
+
- Avoid GTM shorthand like `Sales Nav` or `title filters` unless translated.
|
|
52
|
+
- Let founders pick one, pick many, or add their own context when needed.
|
|
53
|
+
- Frame proof/safety questions as "what can we safely say?" not only "what are the don'ts?"
|
|
54
|
+
- A strong default is: `Which of these points would make the buyer most confident?`
|
|
55
|
+
- Keep `Campaign Thesis` in bullets, not a dense paragraph.
|
|
56
|
+
- Keep `Personalization Inputs To Validate` very short; it is mainly a handoff to the next step.
|
|
57
|
+
- Keep archive calibration invisible in the final brief.
|
|
58
|
+
- Keep inferred stack/tool mixes as validation targets unless directly sourced.
|
|
59
|
+
- Treat proof selection as buyer-relative: ask which proof would most increase
|
|
60
|
+
confidence in the claim, not just which claims are safe.
|
|
61
|
+
|
|
62
|
+
## Output Contract
|
|
63
|
+
|
|
64
|
+
Return one Markdown brief inline in the final assistant message. The output is
|
|
65
|
+
`Status: brief-v1`. Immediately after the status, include a short
|
|
66
|
+
`Campaign Direction` summary that makes the campaign obvious fast. Its
|
|
67
|
+
`Sources Used` section is customer-facing
|
|
68
|
+
bibliography only: LinkedIn URL, sender data, website if used, supplied
|
|
69
|
+
materials, and customer-owned research. It must not expose Phase 75 files,
|
|
70
|
+
Sellable client examples, or internal reference names.
|
|
71
|
+
|
|
72
|
+
Keep `Sources Used` compact: 3-5 bullets with source name + URL or source
|
|
73
|
+
label only. Do not append extraction notes, fetch-status notes, or operator
|
|
74
|
+
commentary there. Put `Sources Used` at the end of the brief so provenance is
|
|
75
|
+
available without leading the reading flow.
|
|
76
|
+
|
|
77
|
+
Keep `Product` and `Social Proof / Safe Claims` tight. Do not dump long vendor
|
|
78
|
+
lists or turn safe-claims notes into a long risk memo. The brief should read
|
|
79
|
+
like a crisp customer-facing operator note, not a strategy document.
|
|
80
|
+
Choose the most compelling proof for the buyer. That may be customer proof,
|
|
81
|
+
founder/operator credibility, investor/YC backing, or proprietary tech if the
|
|
82
|
+
founder confirms that is what makes the claim more credible.
|
|
83
|
+
|
|
84
|
+
Do not use `Write`, `Edit`, `Bash`, or any filesystem-mutating tool to persist
|
|
85
|
+
the brief. Do not preface the brief with permission/tool chatter, and do not
|
|
86
|
+
tell the operator to save/copy it somewhere. Only cite sources that were
|
|
87
|
+
actually fetched and confirmed to belong to the customer. Keep product and
|
|
88
|
+
proof claims exact to validated sources; do not inflate channels, integration
|
|
89
|
+
counts, or traction.
|
|
90
|
+
|
|
91
|
+
It contains concise product bullets, rough demographic/title filters,
|
|
92
|
+
anti-buyer filters, one recommended campaign thesis, a compact InMail-first
|
|
93
|
+
message thesis, and one plain-language `Next Steps` section that walks through:
|
|
94
|
+
|
|
95
|
+
- `Find Leads`
|
|
96
|
+
- `Tighten Filter`
|
|
97
|
+
- `Draft Message`
|
|
98
|
+
|
|
99
|
+
Use only `Prospeo`, `Sales Nav`, or `Signals` when describing likely lead-source
|
|
100
|
+
paths. Do not mention Apollo in the brief.
|
|
101
|
+
|
|
102
|
+
If the campaign goal is really `people likely to reply`, the brief should
|
|
103
|
+
usually carry this source-path hypothesis:
|
|
104
|
+
|
|
105
|
+
- `Signals` first when the TAM plausibly posts, comments, or engages on LinkedIn
|
|
106
|
+
- `Sales Nav` second when we need tighter role/company filters or the TAM is not active enough on LinkedIn
|
|
107
|
+
- `Prospeo` fallback when LinkedIn-native lanes still cannot produce enough good fits or when domain/account expansion is the clearest next move
|
|
108
|
+
|
|
109
|
+
Keep that explanation plain-English in the brief. The founder should understand
|
|
110
|
+
why we would start with active LinkedIn behavior before broader cold outreach.
|
|
111
|
+
|
|
112
|
+
The handoff to Phase 84 should frame `Tighten Filter` as:
|
|
113
|
+
|
|
114
|
+
- required keep/exclude rules first
|
|
115
|
+
- sample-driven cleanup of false positives
|
|
116
|
+
- optional supporting rules only when clearly useful later
|
|
117
|
+
|
|
118
|
+
It does not create a campaign, update a campaign brief row, import leads, write
|
|
119
|
+
a rubric, write final message variants, or write workflow-table data.
|
|
120
|
+
|
|
121
|
+
## Reference Bank
|
|
122
|
+
|
|
123
|
+
Phase 83 uses the Phase 75 corpus as compact references:
|
|
124
|
+
|
|
125
|
+
- `references/phase75-canonical-brief-template.md` as the gold-standard template and instructions
|
|
126
|
+
- `references/phase75-active-runtime-message-pack.md` as the narrow runtime inspiration pack
|
|
127
|
+
- `references/phase75-good-brief-and-messaging-examples.md` as the curated gold examples
|
|
128
|
+
- selected client brief archives
|
|
129
|
+
- holdout-aware manifest at `references/examples/MANIFEST.json`
|
|
130
|
+
|
|
131
|
+
Primary runtime clients:
|
|
132
|
+
|
|
133
|
+
- `sellable.dev`
|
|
134
|
+
- `Hey Digital`
|
|
135
|
+
- `Galley`
|
|
136
|
+
- `Clover`
|
|
137
|
+
- `Persona`
|
|
138
|
+
- `Superpower`
|
|
139
|
+
|
|
140
|
+
Secondary / conditional only:
|
|
141
|
+
|
|
142
|
+
- `Gelee` — proof-stack reference only; do not use as primary runtime because
|
|
143
|
+
the visible example lacks a strong CTA
|
|
144
|
+
- `Revvix` — event/logistics reference only; do not use as broad runtime because
|
|
145
|
+
the CTA is too soft
|
|
146
|
+
- `superposition` — exact hiring-template reference only; do not use as broad
|
|
147
|
+
runtime because it can over-teach sender-first proof stacking
|
|
148
|
+
- `westpark villas`
|
|
149
|
+
|
|
150
|
+
`Amplify Security` remains an acceptance fixture, not runtime gold.
|
|
151
|
+
|
|
152
|
+
## Validation
|
|
153
|
+
|
|
154
|
+
Run:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
npm run test tests/mcp/sellable-create-campaign-brief-contract.test.ts
|
|
158
|
+
npm run test tests/scripts/run-create-campaign-brief-vps-uat.test.ts
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Hosted UAT is run on `sellable-web-mcp`:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
scripts/run-create-campaign-brief-vps-uat.sh
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Single-fixture smoke for a sparse YC-company website run:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
SELLABLE_CREATE_CAMPAIGN_BRIEF_UAT_FIXTURE_DIR="$PWD/tests/fixtures/create-campaign-brief/smoke" \
|
|
171
|
+
SELLABLE_CREATE_CAMPAIGN_BRIEF_UAT_FIXTURES="surfacelabs" \
|
|
172
|
+
scripts/run-create-campaign-brief-vps-uat.sh
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
The hosted runner saves Claude Code stream artifacts under
|
|
176
|
+
`.planning/artifacts/uat/83-create-campaign-brief/`.
|