@sellable/install 0.1.187 → 0.1.189
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 +10 -4
- package/bin/sellable-install.mjs +100 -21
- package/package.json +1 -1
- package/skill-templates/create-campaign.md +11 -15
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, post drafting, and identity
|
|
27
|
-
or Codex, where the Sellable MCP tools and
|
|
26
|
+
Campaign creation, content capture/ideation, post drafting, and identity
|
|
27
|
+
interviews 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,13 +70,16 @@ source-scout agents.
|
|
|
69
70
|
Use the same public entrypoints in both hosts:
|
|
70
71
|
|
|
71
72
|
- Claude Code: `/sellable:create-campaign`
|
|
73
|
+
- Claude Code: `/sellable:content`
|
|
72
74
|
- Claude Code: `/sellable:interview`
|
|
73
75
|
- Claude Code: `/sellable:create-post`
|
|
74
76
|
- Codex: `$sellable:create-campaign`
|
|
77
|
+
- Codex: `$sellable:content`
|
|
75
78
|
- Codex: `$sellable:interview`
|
|
76
79
|
- Codex: `$sellable:create-post`
|
|
77
80
|
- Codex Desktop plugin: `sellable@sellable`
|
|
78
81
|
- Codex visible skill: `Sellable Create Campaign`
|
|
82
|
+
- Codex visible skill: `Sellable Content`
|
|
79
83
|
- Codex visible skill: `Sellable Identity Interview`
|
|
80
84
|
- Codex visible skill: `Sellable Create Post`
|
|
81
85
|
- Internal MCP workflow prompt: `create-campaign-v2`
|
|
@@ -83,8 +87,10 @@ Use the same public entrypoints in both hosts:
|
|
|
83
87
|
Do not ask users to run `/sellable:create-campaign-v2`,
|
|
84
88
|
`$sellable:create-campaign-v2`, `$sellable:load-voice`, or
|
|
85
89
|
`$sellable:sellable:create-campaign`. `create-campaign-v2` is loaded internally
|
|
86
|
-
by the campaign skill. `
|
|
87
|
-
|
|
90
|
+
by the campaign skill. `content` is the preferred entrypoint for adding
|
|
91
|
+
transcripts, recurring ideas, and post seeds. `create-post` remains a supported
|
|
92
|
+
direct drafting shortcut and loads voice internally, so there is no separate
|
|
93
|
+
public voice-loading command.
|
|
88
94
|
|
|
89
95
|
## Structured Questions
|
|
90
96
|
|
package/bin/sellable-install.mjs
CHANGED
|
@@ -31,7 +31,7 @@ function getInstallVersion() {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
const CODEX_PLUGIN_VERSION = "0.1.
|
|
34
|
+
const CODEX_PLUGIN_VERSION = "0.1.40";
|
|
35
35
|
const CODEX_PLUGIN_COMPAT_VERSIONS = [
|
|
36
36
|
"0.1.8",
|
|
37
37
|
"0.1.9",
|
|
@@ -64,6 +64,7 @@ const CODEX_PLUGIN_COMPAT_VERSIONS = [
|
|
|
64
64
|
"0.1.36",
|
|
65
65
|
"0.1.37",
|
|
66
66
|
"0.1.38",
|
|
67
|
+
"0.1.39",
|
|
67
68
|
];
|
|
68
69
|
const INSTALL_PACKAGE_SPEC =
|
|
69
70
|
process.env.SELLABLE_INSTALL_PACKAGE_SPEC || "@sellable/install@latest";
|
|
@@ -154,7 +155,7 @@ Options:
|
|
|
154
155
|
|
|
155
156
|
Auth:
|
|
156
157
|
Install is auth-free by default. Sign in happens on the first run of
|
|
157
|
-
/sellable:create-campaign or /sellable:create-post in Claude Code or Codex,
|
|
158
|
+
/sellable:create-campaign, /sellable:content, or /sellable:create-post in Claude Code or Codex,
|
|
158
159
|
where the agent walks you through signup or sign-in and stores credentials
|
|
159
160
|
in ~/.sellable/config.json.
|
|
160
161
|
|
|
@@ -179,6 +180,7 @@ function printCreateCommandHint() {
|
|
|
179
180
|
console.log("");
|
|
180
181
|
printAgentBox("Using Claude Code?", "claude", [
|
|
181
182
|
{ label: "Campaign", command: "/sellable:create-campaign" },
|
|
183
|
+
{ label: "Content", command: "/sellable:content" },
|
|
182
184
|
{ label: "Post", command: "/sellable:create-post" },
|
|
183
185
|
{ label: "Interview", command: "/sellable:interview" },
|
|
184
186
|
]);
|
|
@@ -186,6 +188,7 @@ function printCreateCommandHint() {
|
|
|
186
188
|
console.log("");
|
|
187
189
|
printAgentBox("Using Codex?", "codex", [
|
|
188
190
|
{ label: "Campaign", command: "$sellable:create-campaign" },
|
|
191
|
+
{ label: "Content", command: "$sellable:content" },
|
|
189
192
|
{ label: "Post", command: "$sellable:create-post" },
|
|
190
193
|
{ label: "Interview", command: "$sellable:interview" },
|
|
191
194
|
]);
|
|
@@ -849,23 +852,19 @@ automation just because a watch link exists. If \`create_campaign\` returns
|
|
|
849
852
|
approval question. It will use the URL mode to say Codex or Claude Code:
|
|
850
853
|
|
|
851
854
|
\`\`\`\`markdown
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
[Open live campaign builder]({watchUrl})
|
|
859
|
-
|
|
860
|
-
Keep this chat open. I'll ask approval questions here before making decisions
|
|
861
|
-
that need your judgment.
|
|
855
|
+
> **WATCH CODEX BUILD THE CAMPAIGN LIVE**
|
|
856
|
+
>
|
|
857
|
+
> [Open live campaign builder]({watchUrl})
|
|
858
|
+
>
|
|
859
|
+
> Keep this chat open. I'll ask approval questions here before making decisions
|
|
860
|
+
> that need your judgment.
|
|
862
861
|
\`\`\`\`
|
|
863
862
|
|
|
864
|
-
The
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
863
|
+
The rendered callout is intentional: rendered chat clients highlight the
|
|
864
|
+
headline, link, and note without treating it as a code block, and plain terminals
|
|
865
|
+
still expose the tokenized URL inside the Markdown target. Do not wrap this CTA
|
|
866
|
+
in a fenced code block, replace it with a shell command, or add a
|
|
867
|
+
browser-opening instruction.
|
|
869
868
|
|
|
870
869
|
The watch link should auto-login through the token in the URL. If the user says
|
|
871
870
|
the link lands on auth, 404, permission, blank, or a visible error state, recover
|
|
@@ -1292,6 +1291,76 @@ then retry \`get_subskill_prompt\`.
|
|
|
1292
1291
|
`;
|
|
1293
1292
|
}
|
|
1294
1293
|
|
|
1294
|
+
function contentSkillMd() {
|
|
1295
|
+
return `---
|
|
1296
|
+
name: content
|
|
1297
|
+
description: Add transcripts and rough ideas, cluster recurring themes, ideate post seeds, and hand draft requests to create-post.
|
|
1298
|
+
allowed-tools:
|
|
1299
|
+
- mcp__sellable__get_auth_status
|
|
1300
|
+
- mcp__sellable__get_subskill_prompt
|
|
1301
|
+
- mcp__sellable__get_subskill_asset
|
|
1302
|
+
- mcp__sellable__search_subskill_prompts
|
|
1303
|
+
- mcp__sellable__get_engage_memory
|
|
1304
|
+
- mcp__sellable__capture_post_idea
|
|
1305
|
+
- mcp__sellable__get_post_idea
|
|
1306
|
+
- mcp__sellable__list_post_ideas
|
|
1307
|
+
- mcp__sellable__save_hook_research
|
|
1308
|
+
- mcp__sellable__save_post_draft
|
|
1309
|
+
- mcp__sellable__get_post_draft
|
|
1310
|
+
- mcp__sellable__mark_post_published
|
|
1311
|
+
- mcp__sellable__list_published_posts
|
|
1312
|
+
- mcp__sellable__search_engagement_posts
|
|
1313
|
+
- mcp__sellable__fetch_linkedin_posts
|
|
1314
|
+
- mcp__sellable__fetch_linkedin_profile
|
|
1315
|
+
- mcp__sellable__record_engage_proven_search
|
|
1316
|
+
- mcp__sellable__upsert_engage_tracked_person
|
|
1317
|
+
- Read
|
|
1318
|
+
- Write
|
|
1319
|
+
- Edit
|
|
1320
|
+
- Glob
|
|
1321
|
+
- Grep
|
|
1322
|
+
---
|
|
1323
|
+
|
|
1324
|
+
# Sellable Content
|
|
1325
|
+
|
|
1326
|
+
Use this as the customer-facing entrypoint for the Sellable \`content\`
|
|
1327
|
+
workflow. It captures raw transcripts and rough notes, clusters recurring
|
|
1328
|
+
ideas, extracts story/proof/question cards, produces post seeds, and only drafts
|
|
1329
|
+
by handing off to the canonical \`create-post\` workflow.
|
|
1330
|
+
|
|
1331
|
+
## Bootstrap
|
|
1332
|
+
|
|
1333
|
+
MCP prompt access is required. Do not inspect repo files, run shell commands,
|
|
1334
|
+
use \`npm\`, \`node\`, local harness scripts, or read local prompt files to
|
|
1335
|
+
emulate this workflow.
|
|
1336
|
+
|
|
1337
|
+
If the Sellable MCP prompt tools are unavailable, stop and say this is a Codex
|
|
1338
|
+
install/reload problem. Tell the user to run
|
|
1339
|
+
\`npx -y ${INSTALL_PACKAGE_SPEC} --host all\`, fully quit and reopen Codex
|
|
1340
|
+
Desktop, then start a new thread.
|
|
1341
|
+
|
|
1342
|
+
## Execute Workflow
|
|
1343
|
+
|
|
1344
|
+
1. Call \`mcp__sellable__get_auth_status({})\` so research and save failures can
|
|
1345
|
+
be distinguished from local content capture.
|
|
1346
|
+
2. Load the canonical prompt via
|
|
1347
|
+
\`mcp__sellable__get_subskill_prompt({ subskillName: "content" })\`.
|
|
1348
|
+
If the response has \`hasMore=true\`, continue with \`nextOffset\` until
|
|
1349
|
+
\`hasMore=false\`.
|
|
1350
|
+
3. Follow the canonical prompt exactly. Use \`content\` for capture, clustering,
|
|
1351
|
+
ideation, and development. If the user asks for a draft, load and follow
|
|
1352
|
+
\`mcp__sellable__get_subskill_prompt({ subskillName: "create-post" })\`.
|
|
1353
|
+
4. Do not create a parallel post drafting flow. Do not write repo-local prompt
|
|
1354
|
+
files or append to legacy flat draft files.
|
|
1355
|
+
|
|
1356
|
+
## MCP Prompt Fallback
|
|
1357
|
+
|
|
1358
|
+
If exact subskill lookup fails, use
|
|
1359
|
+
\`mcp__sellable__search_subskill_prompts({ query: "content", includePublic: true, includeInternal: true })\`,
|
|
1360
|
+
then retry \`get_subskill_prompt\`.
|
|
1361
|
+
`;
|
|
1362
|
+
}
|
|
1363
|
+
|
|
1295
1364
|
function createPostSkillMd() {
|
|
1296
1365
|
return `---
|
|
1297
1366
|
name: create-post
|
|
@@ -1558,10 +1627,10 @@ function codexPluginSkills() {
|
|
|
1558
1627
|
soulMd: createCampaignSoulMd(),
|
|
1559
1628
|
},
|
|
1560
1629
|
{
|
|
1561
|
-
dir: "sellable-
|
|
1562
|
-
displayName: "Sellable
|
|
1563
|
-
description: "
|
|
1564
|
-
skillMd:
|
|
1630
|
+
dir: "sellable-content",
|
|
1631
|
+
displayName: "Sellable Content",
|
|
1632
|
+
description: "Add ideas, transcripts, clusters, and post seeds",
|
|
1633
|
+
skillMd: contentSkillMd(),
|
|
1565
1634
|
},
|
|
1566
1635
|
{
|
|
1567
1636
|
dir: "sellable-create-post",
|
|
@@ -1569,6 +1638,12 @@ function codexPluginSkills() {
|
|
|
1569
1638
|
description: "Capture ideas and draft LinkedIn posts in your voice",
|
|
1570
1639
|
skillMd: createPostSkillMd(),
|
|
1571
1640
|
},
|
|
1641
|
+
{
|
|
1642
|
+
dir: "sellable-interview",
|
|
1643
|
+
displayName: "Sellable Identity Interview",
|
|
1644
|
+
description: "Build durable identity and company memory",
|
|
1645
|
+
skillMd: interviewSkillMd(),
|
|
1646
|
+
},
|
|
1572
1647
|
];
|
|
1573
1648
|
}
|
|
1574
1649
|
|
|
@@ -2555,6 +2630,7 @@ function printNextSteps(installedHosts, authReused) {
|
|
|
2555
2630
|
if (hasClaude) {
|
|
2556
2631
|
printAgentBox("Using Claude Code?", "claude", [
|
|
2557
2632
|
{ label: "Campaign", command: "/sellable:create-campaign" },
|
|
2633
|
+
{ label: "Content", command: "/sellable:content" },
|
|
2558
2634
|
{ label: "Post", command: "/sellable:create-post" },
|
|
2559
2635
|
{ label: "Interview", command: "/sellable:interview" },
|
|
2560
2636
|
]);
|
|
@@ -2564,6 +2640,7 @@ function printNextSteps(installedHosts, authReused) {
|
|
|
2564
2640
|
if (hasCodex) {
|
|
2565
2641
|
printAgentBox("Using Codex?", "codex", [
|
|
2566
2642
|
{ label: "Campaign", command: "$sellable:create-campaign" },
|
|
2643
|
+
{ label: "Content", command: "$sellable:content" },
|
|
2567
2644
|
{ label: "Post", command: "$sellable:create-post" },
|
|
2568
2645
|
{ label: "Interview", command: "$sellable:interview" },
|
|
2569
2646
|
]);
|
|
@@ -2836,9 +2913,11 @@ async function main() {
|
|
|
2836
2913
|
console.log(` apiUrl: ${apiUrl}`);
|
|
2837
2914
|
console.log(` Continue in your agent:`);
|
|
2838
2915
|
console.log(` Claude Code: /sellable:create-campaign`);
|
|
2916
|
+
console.log(` Claude Code: /sellable:content`);
|
|
2839
2917
|
console.log(` Claude Code: /sellable:create-post`);
|
|
2840
2918
|
console.log(` Claude Code: /sellable:interview`);
|
|
2841
2919
|
console.log(` Codex: $sellable:create-campaign`);
|
|
2920
|
+
console.log(` Codex: $sellable:content`);
|
|
2842
2921
|
console.log(` Codex: $sellable:create-post`);
|
|
2843
2922
|
console.log(` Codex: $sellable:interview`);
|
|
2844
2923
|
process.exit(0);
|
package/package.json
CHANGED
|
@@ -409,23 +409,19 @@ automation just because a watch link exists. If `create_campaign` returns
|
|
|
409
409
|
approval question. It will use the URL mode to say Codex or Claude Code:
|
|
410
410
|
|
|
411
411
|
````markdown
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
[Open live campaign builder]({watchUrl})
|
|
419
|
-
|
|
420
|
-
Keep this chat open. I'll ask approval questions here before making decisions
|
|
421
|
-
that need your judgment.
|
|
412
|
+
> **WATCH CODEX BUILD THE CAMPAIGN LIVE**
|
|
413
|
+
>
|
|
414
|
+
> [Open live campaign builder]({watchUrl})
|
|
415
|
+
>
|
|
416
|
+
> Keep this chat open. I'll ask approval questions here before making decisions
|
|
417
|
+
> that need your judgment.
|
|
422
418
|
````
|
|
423
419
|
|
|
424
|
-
The
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
420
|
+
The rendered callout is intentional: rendered chat clients highlight the
|
|
421
|
+
headline, link, and note without treating it as a code block, and plain terminals
|
|
422
|
+
still expose the tokenized URL inside the Markdown target. Do not wrap this CTA
|
|
423
|
+
in a fenced code block, replace it with a shell command, or add a
|
|
424
|
+
browser-opening instruction.
|
|
429
425
|
|
|
430
426
|
The watch link should auto-login through the token in the URL. If the user says
|
|
431
427
|
the link lands on auth, 404, permission, blank, or a visible error state, recover
|