@sellable/install 0.1.189 → 0.1.191

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 CHANGED
@@ -23,8 +23,8 @@ agent command for launching a campaign:
23
23
  sellable create
24
24
  ```
25
25
 
26
- Campaign creation, content capture/ideation, post drafting, and identity
27
- interviews run inside Claude Code 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
28
  approval flows are available.
29
29
 
30
30
  Install is auth-free by default. If you do not pass a token, the agent handles
@@ -70,24 +70,26 @@ source-scout agents.
70
70
  Use the same public entrypoints in both hosts:
71
71
 
72
72
  - Claude Code: `/sellable:create-campaign`
73
+ - Claude Code: `/sellable:foundation`
73
74
  - Claude Code: `/sellable:content`
74
- - Claude Code: `/sellable:interview`
75
75
  - Claude Code: `/sellable:create-post`
76
76
  - Codex: `$sellable:create-campaign`
77
+ - Codex: `$sellable:foundation`
77
78
  - Codex: `$sellable:content`
78
- - Codex: `$sellable:interview`
79
79
  - Codex: `$sellable:create-post`
80
80
  - Codex Desktop plugin: `sellable@sellable`
81
81
  - Codex visible skill: `Sellable Create Campaign`
82
+ - Codex visible skill: `Sellable Foundation`
82
83
  - Codex visible skill: `Sellable Content`
83
- - Codex visible skill: `Sellable Identity Interview`
84
84
  - Codex visible skill: `Sellable Create Post`
85
85
  - Internal MCP workflow prompt: `create-campaign-v2`
86
+ - Internal/backward-compatible memory prompt: `interview`
86
87
 
87
88
  Do not ask users to run `/sellable:create-campaign-v2`,
88
89
  `$sellable:create-campaign-v2`, `$sellable:load-voice`, or
89
90
  `$sellable:sellable:create-campaign`. `create-campaign-v2` is loaded internally
90
- by the campaign skill. `content` is the preferred entrypoint for adding
91
+ by the campaign skill. `foundation` is the preferred entrypoint for durable
92
+ founder/company memory. `content` is the preferred entrypoint for adding
91
93
  transcripts, recurring ideas, and post seeds. `create-post` remains a supported
92
94
  direct drafting shortcut and loads voice internally, so there is no separate
93
95
  public voice-loading command.
@@ -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, /sellable:content, 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,17 +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" },
183
184
  { label: "Content", command: "/sellable:content" },
184
185
  { label: "Post", command: "/sellable:create-post" },
185
- { label: "Interview", command: "/sellable:interview" },
186
186
  ]);
187
187
  console.log("");
188
188
  console.log("");
189
189
  printAgentBox("Using Codex?", "codex", [
190
190
  { label: "Campaign", command: "$sellable:create-campaign" },
191
+ { label: "Foundation", command: "$sellable:foundation" },
191
192
  { label: "Content", command: "$sellable:content" },
192
193
  { label: "Post", command: "$sellable:create-post" },
193
- { label: "Interview", command: "$sellable:interview" },
194
194
  ]);
195
195
  console.log("");
196
196
  console.log(` ${"─".repeat(63)}`);
@@ -500,7 +500,7 @@ function codexPluginManifest(opts) {
500
500
  name: "sellable",
501
501
  version: CODEX_PLUGIN_VERSION,
502
502
  description:
503
- "Sellable MCP tools for campaign creation, engagement, interviews, and workflow sequencing.",
503
+ "Sellable MCP tools for campaign creation, foundation memory, content, and workflow sequencing.",
504
504
  author: {
505
505
  name: "Sellable",
506
506
  url: "https://sellable.dev/",
@@ -1229,10 +1229,10 @@ If subskill lookup fails, use \`mcp__sellable__search_subskill_prompts({ query:
1229
1229
  `;
1230
1230
  }
1231
1231
 
1232
- function interviewSkillMd() {
1232
+ function foundationSkillMd() {
1233
1233
  return `---
1234
- name: interview
1235
- description: Build Sellable core identity/company memory for writing workflows.
1234
+ name: foundation
1235
+ description: Build or update durable founder/company memory: voice, values, proof, stories, positioning, and writing rules.
1236
1236
  allowed-tools:
1237
1237
  - mcp__sellable__get_subskill_prompt
1238
1238
  - mcp__sellable__get_subskill_asset
@@ -1245,12 +1245,12 @@ allowed-tools:
1245
1245
  - Grep
1246
1246
  ---
1247
1247
 
1248
- # Sellable Identity Interview
1248
+ # Sellable Foundation
1249
1249
 
1250
- Use this as the customer-facing entrypoint for the Sellable \`interview\`
1251
- workflow. It builds durable identity/company memory, proof hygiene, reusable
1252
- answers, transcript references, and anti-AI writing rules for downstream
1253
- 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.
1254
1254
 
1255
1255
  ## Bootstrap
1256
1256
 
@@ -1266,27 +1266,28 @@ Desktop, then start a new thread.
1266
1266
  ## Execute Workflow
1267
1267
 
1268
1268
  1. Load the canonical prompt via
1269
- \`mcp__sellable__get_subskill_prompt({ subskillName: "interview" })\`.
1269
+ \`mcp__sellable__get_subskill_prompt({ subskillName: "foundation" })\`.
1270
1270
  If the response has \`hasMore=true\`, continue with \`nextOffset\` until
1271
1271
  \`hasMore=false\`.
1272
- 2. When the canonical prompt asks for \`references/*.md\`, load those files
1273
- with \`mcp__sellable__get_subskill_asset({ subskillName: "interview", assetPath: "references/<file>.md" })\`.
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" })\`.
1274
1275
  3. Follow the canonical prompt exactly. Save local memory only where that prompt
1275
1276
  directs, under \`~/.sellable/configs/core/**\` and
1276
1277
  \`~/.sellable/interviews/**\`.
1277
- 4. If the interview captures a content-specific LinkedIn post idea, hook/taste
1278
- correction, draft-first post calibration note, or voice-note transcript meant
1279
- as a post idea, the canonical prompt may bridge only that item with
1280
- \`mcp__sellable__capture_post_idea\` under
1281
- \`~/.sellable/content/linkedin/ideas/**\`. Core identity, proof, stories,
1282
- answer-bank entries, transcripts, references, and raw archives must stay in
1283
- \`~/.sellable/configs/core/**\` and \`~/.sellable/interviews/**\`.
1284
- Core identity, proof, stories, answer-bank entries, transcripts, references, and raw archives must stay in core/interviews.
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.
1285
1286
 
1286
1287
  ## MCP Prompt Fallback
1287
1288
 
1288
1289
  If exact subskill lookup fails, use
1289
- \`mcp__sellable__search_subskill_prompts({ query: "interview", includePublic: true })\`,
1290
+ \`mcp__sellable__search_subskill_prompts({ query: "foundation", includePublic: true, includeInternal: true })\`,
1290
1291
  then retry \`get_subskill_prompt\`.
1291
1292
  `;
1292
1293
  }
@@ -1632,18 +1633,18 @@ function codexPluginSkills() {
1632
1633
  description: "Add ideas, transcripts, clusters, and post seeds",
1633
1634
  skillMd: contentSkillMd(),
1634
1635
  },
1636
+ {
1637
+ dir: "sellable-foundation",
1638
+ displayName: "Sellable Foundation",
1639
+ description: "Build durable founder and company memory",
1640
+ skillMd: foundationSkillMd(),
1641
+ },
1635
1642
  {
1636
1643
  dir: "sellable-create-post",
1637
1644
  displayName: "Sellable Create Post",
1638
1645
  description: "Capture ideas and draft LinkedIn posts in your voice",
1639
1646
  skillMd: createPostSkillMd(),
1640
1647
  },
1641
- {
1642
- dir: "sellable-interview",
1643
- displayName: "Sellable Identity Interview",
1644
- description: "Build durable identity and company memory",
1645
- skillMd: interviewSkillMd(),
1646
- },
1647
1648
  ];
1648
1649
  }
1649
1650
 
@@ -2630,9 +2631,9 @@ function printNextSteps(installedHosts, authReused) {
2630
2631
  if (hasClaude) {
2631
2632
  printAgentBox("Using Claude Code?", "claude", [
2632
2633
  { label: "Campaign", command: "/sellable:create-campaign" },
2634
+ { label: "Foundation", command: "/sellable:foundation" },
2633
2635
  { label: "Content", command: "/sellable:content" },
2634
2636
  { label: "Post", command: "/sellable:create-post" },
2635
- { label: "Interview", command: "/sellable:interview" },
2636
2637
  ]);
2637
2638
  console.log("");
2638
2639
  console.log("");
@@ -2640,9 +2641,9 @@ function printNextSteps(installedHosts, authReused) {
2640
2641
  if (hasCodex) {
2641
2642
  printAgentBox("Using Codex?", "codex", [
2642
2643
  { label: "Campaign", command: "$sellable:create-campaign" },
2644
+ { label: "Foundation", command: "$sellable:foundation" },
2643
2645
  { label: "Content", command: "$sellable:content" },
2644
2646
  { label: "Post", command: "$sellable:create-post" },
2645
- { label: "Interview", command: "$sellable:interview" },
2646
2647
  ]);
2647
2648
  console.log("");
2648
2649
  }
@@ -2913,13 +2914,13 @@ async function main() {
2913
2914
  console.log(` apiUrl: ${apiUrl}`);
2914
2915
  console.log(` Continue in your agent:`);
2915
2916
  console.log(` Claude Code: /sellable:create-campaign`);
2917
+ console.log(` Claude Code: /sellable:foundation`);
2916
2918
  console.log(` Claude Code: /sellable:content`);
2917
2919
  console.log(` Claude Code: /sellable:create-post`);
2918
- console.log(` Claude Code: /sellable:interview`);
2919
2920
  console.log(` Codex: $sellable:create-campaign`);
2921
+ console.log(` Codex: $sellable:foundation`);
2920
2922
  console.log(` Codex: $sellable:content`);
2921
2923
  console.log(` Codex: $sellable:create-post`);
2922
- console.log(` Codex: $sellable:interview`);
2923
2924
  process.exit(0);
2924
2925
  }
2925
2926
  if (rawArgs[0] === "uninstall") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.189",
3
+ "version": "0.1.191",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {
@@ -624,8 +624,10 @@ researched recommendation; you can replace it with your current offer."
624
624
 
625
625
  If the invocation or any later user message explicitly asks for "yolo mode",
626
626
  "YOLO", `--yolo`, `mode=yolo`, "autopilot", "use best guesses", "answer for
627
- me", "use best estimates", or "just run it", enable YOLO mode for the rest of
628
- the run. Treat YOLO as `interactionMode: "autonomous"` plus an intake policy:
627
+ me", "use best estimates", "just run it", or the user selects or presses Enter
628
+ on `Approve brief + activate YOLO mode (Recommended)`, enable YOLO mode for the
629
+ rest of the run. Treat YOLO as `interactionMode: "autonomous"` plus an intake
630
+ policy:
629
631
 
630
632
  - If the campaign subject is missing, ask only for the LinkedIn profile URL or
631
633
  handle in normal chat; do not continue from a non-profile URL and do not ask