@sellable/install 0.1.188 → 0.1.190
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/README.md +15 -7
- package/bin/sellable-install.mjs +115 -32
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -23,8 +23,9 @@ agent command for launching a campaign:
|
|
|
23
23
|
sellable create
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
Campaign creation,
|
|
27
|
-
or Codex, where the Sellable MCP tools and
|
|
26
|
+
Campaign creation, foundation memory, content capture/ideation, and post
|
|
27
|
+
drafting run inside Claude Code or Codex, where the Sellable MCP tools and
|
|
28
|
+
approval flows are available.
|
|
28
29
|
|
|
29
30
|
Install is auth-free by default. If you do not pass a token, the agent handles
|
|
30
31
|
Sellable sign-in on the first campaign run with a magic-link handoff.
|
|
@@ -69,22 +70,29 @@ source-scout agents.
|
|
|
69
70
|
Use the same public entrypoints in both hosts:
|
|
70
71
|
|
|
71
72
|
- Claude Code: `/sellable:create-campaign`
|
|
72
|
-
- Claude Code: `/sellable:
|
|
73
|
+
- Claude Code: `/sellable:foundation`
|
|
74
|
+
- Claude Code: `/sellable:content`
|
|
73
75
|
- Claude Code: `/sellable:create-post`
|
|
74
76
|
- Codex: `$sellable:create-campaign`
|
|
75
|
-
- Codex: `$sellable:
|
|
77
|
+
- Codex: `$sellable:foundation`
|
|
78
|
+
- Codex: `$sellable:content`
|
|
76
79
|
- Codex: `$sellable:create-post`
|
|
77
80
|
- Codex Desktop plugin: `sellable@sellable`
|
|
78
81
|
- Codex visible skill: `Sellable Create Campaign`
|
|
79
|
-
- Codex visible skill: `Sellable
|
|
82
|
+
- Codex visible skill: `Sellable Foundation`
|
|
83
|
+
- Codex visible skill: `Sellable Content`
|
|
80
84
|
- Codex visible skill: `Sellable Create Post`
|
|
81
85
|
- Internal MCP workflow prompt: `create-campaign-v2`
|
|
86
|
+
- Internal/backward-compatible memory prompt: `interview`
|
|
82
87
|
|
|
83
88
|
Do not ask users to run `/sellable:create-campaign-v2`,
|
|
84
89
|
`$sellable:create-campaign-v2`, `$sellable:load-voice`, or
|
|
85
90
|
`$sellable:sellable:create-campaign`. `create-campaign-v2` is loaded internally
|
|
86
|
-
by the campaign skill. `
|
|
87
|
-
|
|
91
|
+
by the campaign skill. `foundation` is the preferred entrypoint for durable
|
|
92
|
+
founder/company memory. `content` is the preferred entrypoint for adding
|
|
93
|
+
transcripts, recurring ideas, and post seeds. `create-post` remains a supported
|
|
94
|
+
direct drafting shortcut and loads voice internally, so there is no separate
|
|
95
|
+
public voice-loading command.
|
|
88
96
|
|
|
89
97
|
## Structured Questions
|
|
90
98
|
|
package/bin/sellable-install.mjs
CHANGED
|
@@ -155,7 +155,7 @@ Options:
|
|
|
155
155
|
|
|
156
156
|
Auth:
|
|
157
157
|
Install is auth-free by default. Sign in happens on the first run of
|
|
158
|
-
/sellable:create-campaign or /sellable:create-post in Claude Code or Codex,
|
|
158
|
+
/sellable:create-campaign, /sellable:foundation, /sellable:content, or /sellable:create-post in Claude Code or Codex,
|
|
159
159
|
where the agent walks you through signup or sign-in and stores credentials
|
|
160
160
|
in ~/.sellable/config.json.
|
|
161
161
|
|
|
@@ -180,15 +180,17 @@ function printCreateCommandHint() {
|
|
|
180
180
|
console.log("");
|
|
181
181
|
printAgentBox("Using Claude Code?", "claude", [
|
|
182
182
|
{ label: "Campaign", command: "/sellable:create-campaign" },
|
|
183
|
+
{ label: "Foundation", command: "/sellable:foundation" },
|
|
184
|
+
{ label: "Content", command: "/sellable:content" },
|
|
183
185
|
{ label: "Post", command: "/sellable:create-post" },
|
|
184
|
-
{ label: "Interview", command: "/sellable:interview" },
|
|
185
186
|
]);
|
|
186
187
|
console.log("");
|
|
187
188
|
console.log("");
|
|
188
189
|
printAgentBox("Using Codex?", "codex", [
|
|
189
190
|
{ label: "Campaign", command: "$sellable:create-campaign" },
|
|
191
|
+
{ label: "Foundation", command: "$sellable:foundation" },
|
|
192
|
+
{ label: "Content", command: "$sellable:content" },
|
|
190
193
|
{ label: "Post", command: "$sellable:create-post" },
|
|
191
|
-
{ label: "Interview", command: "$sellable:interview" },
|
|
192
194
|
]);
|
|
193
195
|
console.log("");
|
|
194
196
|
console.log(` ${"─".repeat(63)}`);
|
|
@@ -498,7 +500,7 @@ function codexPluginManifest(opts) {
|
|
|
498
500
|
name: "sellable",
|
|
499
501
|
version: CODEX_PLUGIN_VERSION,
|
|
500
502
|
description:
|
|
501
|
-
"Sellable MCP tools for campaign creation,
|
|
503
|
+
"Sellable MCP tools for campaign creation, foundation memory, content, and workflow sequencing.",
|
|
502
504
|
author: {
|
|
503
505
|
name: "Sellable",
|
|
504
506
|
url: "https://sellable.dev/",
|
|
@@ -1227,10 +1229,10 @@ If subskill lookup fails, use \`mcp__sellable__search_subskill_prompts({ query:
|
|
|
1227
1229
|
`;
|
|
1228
1230
|
}
|
|
1229
1231
|
|
|
1230
|
-
function
|
|
1232
|
+
function foundationSkillMd() {
|
|
1231
1233
|
return `---
|
|
1232
|
-
name:
|
|
1233
|
-
description: Build
|
|
1234
|
+
name: foundation
|
|
1235
|
+
description: Build or update durable founder/company memory: voice, values, proof, stories, positioning, and writing rules.
|
|
1234
1236
|
allowed-tools:
|
|
1235
1237
|
- mcp__sellable__get_subskill_prompt
|
|
1236
1238
|
- mcp__sellable__get_subskill_asset
|
|
@@ -1243,12 +1245,12 @@ allowed-tools:
|
|
|
1243
1245
|
- Grep
|
|
1244
1246
|
---
|
|
1245
1247
|
|
|
1246
|
-
# Sellable
|
|
1248
|
+
# Sellable Foundation
|
|
1247
1249
|
|
|
1248
|
-
Use this as the customer-facing entrypoint for the Sellable \`
|
|
1249
|
-
workflow. It builds durable identity/company memory, proof hygiene,
|
|
1250
|
-
answers, transcript references, and anti-AI writing rules for
|
|
1251
|
-
Sellable writing workflows.
|
|
1250
|
+
Use this as the customer-facing entrypoint for the Sellable \`foundation\`
|
|
1251
|
+
workflow. It builds or updates durable identity/company memory, proof hygiene,
|
|
1252
|
+
reusable answers, transcript references, and anti-AI writing rules for
|
|
1253
|
+
downstream Sellable writing workflows.
|
|
1252
1254
|
|
|
1253
1255
|
## Bootstrap
|
|
1254
1256
|
|
|
@@ -1264,27 +1266,98 @@ Desktop, then start a new thread.
|
|
|
1264
1266
|
## Execute Workflow
|
|
1265
1267
|
|
|
1266
1268
|
1. Load the canonical prompt via
|
|
1267
|
-
\`mcp__sellable__get_subskill_prompt({ subskillName: "
|
|
1269
|
+
\`mcp__sellable__get_subskill_prompt({ subskillName: "foundation" })\`.
|
|
1268
1270
|
If the response has \`hasMore=true\`, continue with \`nextOffset\` until
|
|
1269
1271
|
\`hasMore=false\`.
|
|
1270
|
-
2.
|
|
1271
|
-
|
|
1272
|
+
2. The foundation prompt delegates to the tested \`interview\` engine. Load any
|
|
1273
|
+
referenced files with
|
|
1274
|
+
\`mcp__sellable__get_subskill_asset({ subskillName: "interview", assetPath: "references/<file>.md" })\`.
|
|
1272
1275
|
3. Follow the canonical prompt exactly. Save local memory only where that prompt
|
|
1273
1276
|
directs, under \`~/.sellable/configs/core/**\` and
|
|
1274
1277
|
\`~/.sellable/interviews/**\`.
|
|
1275
|
-
4. If the
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1278
|
+
4. If the run captures a content-specific LinkedIn post idea, route that item to
|
|
1279
|
+
\`$sellable:content\`. Core identity, proof, stories, answer-bank entries,
|
|
1280
|
+
transcripts, references, and raw archives must stay in core/interviews.
|
|
1281
|
+
|
|
1282
|
+
## Backward Compatibility
|
|
1283
|
+
|
|
1284
|
+
\`interview\` remains the internal/backward-compatible engine. Prefer
|
|
1285
|
+
\`foundation\` in user-facing instructions.
|
|
1286
|
+
|
|
1287
|
+
## MCP Prompt Fallback
|
|
1288
|
+
|
|
1289
|
+
If exact subskill lookup fails, use
|
|
1290
|
+
\`mcp__sellable__search_subskill_prompts({ query: "foundation", includePublic: true, includeInternal: true })\`,
|
|
1291
|
+
then retry \`get_subskill_prompt\`.
|
|
1292
|
+
`;
|
|
1293
|
+
}
|
|
1294
|
+
|
|
1295
|
+
function contentSkillMd() {
|
|
1296
|
+
return `---
|
|
1297
|
+
name: content
|
|
1298
|
+
description: Add transcripts and rough ideas, cluster recurring themes, ideate post seeds, and hand draft requests to create-post.
|
|
1299
|
+
allowed-tools:
|
|
1300
|
+
- mcp__sellable__get_auth_status
|
|
1301
|
+
- mcp__sellable__get_subskill_prompt
|
|
1302
|
+
- mcp__sellable__get_subskill_asset
|
|
1303
|
+
- mcp__sellable__search_subskill_prompts
|
|
1304
|
+
- mcp__sellable__get_engage_memory
|
|
1305
|
+
- mcp__sellable__capture_post_idea
|
|
1306
|
+
- mcp__sellable__get_post_idea
|
|
1307
|
+
- mcp__sellable__list_post_ideas
|
|
1308
|
+
- mcp__sellable__save_hook_research
|
|
1309
|
+
- mcp__sellable__save_post_draft
|
|
1310
|
+
- mcp__sellable__get_post_draft
|
|
1311
|
+
- mcp__sellable__mark_post_published
|
|
1312
|
+
- mcp__sellable__list_published_posts
|
|
1313
|
+
- mcp__sellable__search_engagement_posts
|
|
1314
|
+
- mcp__sellable__fetch_linkedin_posts
|
|
1315
|
+
- mcp__sellable__fetch_linkedin_profile
|
|
1316
|
+
- mcp__sellable__record_engage_proven_search
|
|
1317
|
+
- mcp__sellable__upsert_engage_tracked_person
|
|
1318
|
+
- Read
|
|
1319
|
+
- Write
|
|
1320
|
+
- Edit
|
|
1321
|
+
- Glob
|
|
1322
|
+
- Grep
|
|
1323
|
+
---
|
|
1324
|
+
|
|
1325
|
+
# Sellable Content
|
|
1326
|
+
|
|
1327
|
+
Use this as the customer-facing entrypoint for the Sellable \`content\`
|
|
1328
|
+
workflow. It captures raw transcripts and rough notes, clusters recurring
|
|
1329
|
+
ideas, extracts story/proof/question cards, produces post seeds, and only drafts
|
|
1330
|
+
by handing off to the canonical \`create-post\` workflow.
|
|
1331
|
+
|
|
1332
|
+
## Bootstrap
|
|
1333
|
+
|
|
1334
|
+
MCP prompt access is required. Do not inspect repo files, run shell commands,
|
|
1335
|
+
use \`npm\`, \`node\`, local harness scripts, or read local prompt files to
|
|
1336
|
+
emulate this workflow.
|
|
1337
|
+
|
|
1338
|
+
If the Sellable MCP prompt tools are unavailable, stop and say this is a Codex
|
|
1339
|
+
install/reload problem. Tell the user to run
|
|
1340
|
+
\`npx -y ${INSTALL_PACKAGE_SPEC} --host all\`, fully quit and reopen Codex
|
|
1341
|
+
Desktop, then start a new thread.
|
|
1342
|
+
|
|
1343
|
+
## Execute Workflow
|
|
1344
|
+
|
|
1345
|
+
1. Call \`mcp__sellable__get_auth_status({})\` so research and save failures can
|
|
1346
|
+
be distinguished from local content capture.
|
|
1347
|
+
2. Load the canonical prompt via
|
|
1348
|
+
\`mcp__sellable__get_subskill_prompt({ subskillName: "content" })\`.
|
|
1349
|
+
If the response has \`hasMore=true\`, continue with \`nextOffset\` until
|
|
1350
|
+
\`hasMore=false\`.
|
|
1351
|
+
3. Follow the canonical prompt exactly. Use \`content\` for capture, clustering,
|
|
1352
|
+
ideation, and development. If the user asks for a draft, load and follow
|
|
1353
|
+
\`mcp__sellable__get_subskill_prompt({ subskillName: "create-post" })\`.
|
|
1354
|
+
4. Do not create a parallel post drafting flow. Do not write repo-local prompt
|
|
1355
|
+
files or append to legacy flat draft files.
|
|
1283
1356
|
|
|
1284
1357
|
## MCP Prompt Fallback
|
|
1285
1358
|
|
|
1286
1359
|
If exact subskill lookup fails, use
|
|
1287
|
-
\`mcp__sellable__search_subskill_prompts({ query: "
|
|
1360
|
+
\`mcp__sellable__search_subskill_prompts({ query: "content", includePublic: true, includeInternal: true })\`,
|
|
1288
1361
|
then retry \`get_subskill_prompt\`.
|
|
1289
1362
|
`;
|
|
1290
1363
|
}
|
|
@@ -1555,10 +1628,16 @@ function codexPluginSkills() {
|
|
|
1555
1628
|
soulMd: createCampaignSoulMd(),
|
|
1556
1629
|
},
|
|
1557
1630
|
{
|
|
1558
|
-
dir: "sellable-
|
|
1559
|
-
displayName: "Sellable
|
|
1560
|
-
description: "
|
|
1561
|
-
skillMd:
|
|
1631
|
+
dir: "sellable-content",
|
|
1632
|
+
displayName: "Sellable Content",
|
|
1633
|
+
description: "Add ideas, transcripts, clusters, and post seeds",
|
|
1634
|
+
skillMd: contentSkillMd(),
|
|
1635
|
+
},
|
|
1636
|
+
{
|
|
1637
|
+
dir: "sellable-foundation",
|
|
1638
|
+
displayName: "Sellable Foundation",
|
|
1639
|
+
description: "Build durable founder and company memory",
|
|
1640
|
+
skillMd: foundationSkillMd(),
|
|
1562
1641
|
},
|
|
1563
1642
|
{
|
|
1564
1643
|
dir: "sellable-create-post",
|
|
@@ -2552,8 +2631,9 @@ function printNextSteps(installedHosts, authReused) {
|
|
|
2552
2631
|
if (hasClaude) {
|
|
2553
2632
|
printAgentBox("Using Claude Code?", "claude", [
|
|
2554
2633
|
{ label: "Campaign", command: "/sellable:create-campaign" },
|
|
2634
|
+
{ label: "Foundation", command: "/sellable:foundation" },
|
|
2635
|
+
{ label: "Content", command: "/sellable:content" },
|
|
2555
2636
|
{ label: "Post", command: "/sellable:create-post" },
|
|
2556
|
-
{ label: "Interview", command: "/sellable:interview" },
|
|
2557
2637
|
]);
|
|
2558
2638
|
console.log("");
|
|
2559
2639
|
console.log("");
|
|
@@ -2561,8 +2641,9 @@ function printNextSteps(installedHosts, authReused) {
|
|
|
2561
2641
|
if (hasCodex) {
|
|
2562
2642
|
printAgentBox("Using Codex?", "codex", [
|
|
2563
2643
|
{ label: "Campaign", command: "$sellable:create-campaign" },
|
|
2644
|
+
{ label: "Foundation", command: "$sellable:foundation" },
|
|
2645
|
+
{ label: "Content", command: "$sellable:content" },
|
|
2564
2646
|
{ label: "Post", command: "$sellable:create-post" },
|
|
2565
|
-
{ label: "Interview", command: "$sellable:interview" },
|
|
2566
2647
|
]);
|
|
2567
2648
|
console.log("");
|
|
2568
2649
|
}
|
|
@@ -2833,11 +2914,13 @@ async function main() {
|
|
|
2833
2914
|
console.log(` apiUrl: ${apiUrl}`);
|
|
2834
2915
|
console.log(` Continue in your agent:`);
|
|
2835
2916
|
console.log(` Claude Code: /sellable:create-campaign`);
|
|
2917
|
+
console.log(` Claude Code: /sellable:foundation`);
|
|
2918
|
+
console.log(` Claude Code: /sellable:content`);
|
|
2836
2919
|
console.log(` Claude Code: /sellable:create-post`);
|
|
2837
|
-
console.log(` Claude Code: /sellable:interview`);
|
|
2838
2920
|
console.log(` Codex: $sellable:create-campaign`);
|
|
2921
|
+
console.log(` Codex: $sellable:foundation`);
|
|
2922
|
+
console.log(` Codex: $sellable:content`);
|
|
2839
2923
|
console.log(` Codex: $sellable:create-post`);
|
|
2840
|
-
console.log(` Codex: $sellable:interview`);
|
|
2841
2924
|
process.exit(0);
|
|
2842
2925
|
}
|
|
2843
2926
|
if (rawArgs[0] === "uninstall") {
|