buildpartner 0.3.16 → 0.3.18

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.
@@ -1,10 +1,11 @@
1
1
  import { existsSync } from "fs";
2
2
  import { join } from "path";
3
- import { homedir } from "os";
3
+ import { homedir, platform } from "os";
4
+ import { execSync, spawn } from "child_process";
4
5
  import chalk from "chalk";
5
6
  import ora from "ora";
6
7
  import { input } from "@inquirer/prompts";
7
- import { scanAllSessions, syncToServer } from "../readers/session-sync.js";
8
+ import { scanAllSessions } from "../readers/session-sync.js";
8
9
  import { writeAuth, } from "../store/local-store.js";
9
10
  import { installMcp } from "../installer/mcp-installer.js";
10
11
  import { installSkills } from "../installer/skill-installer.js";
@@ -56,13 +57,10 @@ export async function setup() {
56
57
  username = "player";
57
58
  }
58
59
  else if (!isInteractive) {
59
- // Non-interactive: use CLI args or generate defaults
60
60
  const emailArg = getArg("--email");
61
- const usernameArg = getArg("--username");
62
61
  email = emailArg || `user-${Date.now()}@buildpartner.ai`;
63
- username = usernameArg || `user-${Math.random().toString(36).slice(2, 8)}`;
64
- console.log(chalk.dim(` Using: ${email} / ${username}`));
65
- console.log(chalk.dim(" To set your own: npx buildpartner setup --email you@example.com --username your-name"));
62
+ username = getArg("--username") || usernameFromEmail(email);
63
+ console.log(chalk.dim(` Using: ${email}`));
66
64
  }
67
65
  else {
68
66
  email = await input({
@@ -73,16 +71,7 @@ export async function setup() {
73
71
  return true;
74
72
  },
75
73
  });
76
- username = await input({
77
- message: " Username:",
78
- validate: (val) => {
79
- if (val.length < 2)
80
- return "Username must be at least 2 characters";
81
- if (!/^[a-z0-9-]+$/.test(val))
82
- return "Lowercase letters, numbers, and hyphens only";
83
- return true;
84
- },
85
- });
74
+ username = usernameFromEmail(email);
86
75
  }
87
76
  let authToken = `sk_${generateId()}`;
88
77
  let serverLinked = false;
@@ -102,7 +91,10 @@ export async function setup() {
102
91
  return "ok";
103
92
  }
104
93
  else if (res.status === 409) {
105
- return "duplicate";
94
+ const msg = (data.error || "").toLowerCase();
95
+ if (msg.includes("username"))
96
+ return "duplicate-username";
97
+ return "duplicate-email";
106
98
  }
107
99
  // Non-409 error, retry
108
100
  }
@@ -115,8 +107,17 @@ export async function setup() {
115
107
  return "error";
116
108
  };
117
109
  let result = await signup(email, username);
118
- // In interactive mode, let user retry with a different email on duplicate
119
- if (result === "duplicate" && isInteractive) {
110
+ // Username collision: auto-retry with a random suffix (up to 3 times)
111
+ if (result === "duplicate-username") {
112
+ for (let i = 0; i < 3; i++) {
113
+ username = `${usernameFromEmail(email)}-${Math.random().toString(36).slice(2, 6)}`;
114
+ result = await signup(email, username);
115
+ if (result !== "duplicate-username")
116
+ break;
117
+ }
118
+ }
119
+ // Email collision: offer login or retry
120
+ if (result === "duplicate-email" && isInteractive) {
120
121
  let retrying = true;
121
122
  while (retrying) {
122
123
  console.log(chalk.yellow(` ! This email is already registered.`));
@@ -138,12 +139,22 @@ export async function setup() {
138
139
  return true;
139
140
  },
140
141
  });
142
+ username = usernameFromEmail(email);
141
143
  result = await signup(email, username);
142
- if (result !== "duplicate")
144
+ // Handle username collision on retry too
145
+ if (result === "duplicate-username") {
146
+ for (let i = 0; i < 3; i++) {
147
+ username = `${usernameFromEmail(email)}-${Math.random().toString(36).slice(2, 6)}`;
148
+ result = await signup(email, username);
149
+ if (result !== "duplicate-username")
150
+ break;
151
+ }
152
+ }
153
+ if (result !== "duplicate-email")
143
154
  retrying = false;
144
155
  }
145
156
  }
146
- else if (result === "duplicate") {
157
+ else if (result === "duplicate-email") {
147
158
  console.log(chalk.yellow(` ! This email is already registered.`));
148
159
  console.log(chalk.dim(` Log in from your dashboard: ${API_BASE}/dashboard/login`));
149
160
  process.exit(0);
@@ -199,66 +210,59 @@ export async function setup() {
199
210
  console.log(chalk.green(" ✓ MCP permissions (auto-approved)"));
200
211
  }
201
212
  console.log();
202
- // Step 3: Build profile from history
203
- console.log(chalk.bold(" [3/3] Building your profile..."));
204
- console.log(chalk.dim(" This may take a moment."));
205
- // Always backfill from Claude Code history for the freshest data
213
+ // Step 3: Scan history
214
+ console.log(chalk.bold(" [3/3] Scanning your history..."));
206
215
  const spinner = ora(" Scanning sessions...").start();
207
216
  const sessionEntries = scanAllSessions();
208
217
  spinner.succeed(` ${sessionEntries.length} sessions found`);
209
- const env = detectEnvironment();
210
- const coachCmd = skillCommand("setup-coach");
211
- const consultCmd = skillCommand("expert-advice");
212
- const dashUrl = serverLinked ? `https://buildpartner.ai/dashboard?t=${authToken}` : null;
213
- // Show what's coming next while sync runs
214
- console.log();
215
- console.log(chalk.bold(" While we sync, here's what's next:"));
216
- console.log();
217
- console.log(` ${chalk.dim("1.")} Open your dashboard to see your full activity history`);
218
- if (dashUrl) {
219
- console.log(` ${orange(chalk.underline(dashUrl))}`);
218
+ // Background sync
219
+ if (serverLinked) {
220
+ const child = spawn("npx", ["buildpartner", "sync"], {
221
+ detached: true,
222
+ stdio: "ignore",
223
+ });
224
+ child.unref();
225
+ console.log(chalk.dim(` Syncing ${sessionEntries.length} sessions in background...`));
226
+ }
227
+ else {
228
+ console.log(chalk.dim(" Sessions will sync on next launch."));
220
229
  }
221
230
  console.log();
222
- console.log(` ${chalk.dim("2.")} Get a personalized setup review in Claude Code`);
223
- console.log(` ${orange(coachCmd)}`);
224
- console.log();
225
- console.log(` ${chalk.dim("3.")} Ask any question and get expert advice`);
226
- console.log(` ${orange(`${consultCmd} What should I build next?`)}`);
227
- console.log();
228
- if (serverLinked) {
229
- const total = sessionEntries.length;
230
- const syncSpinner = ora(` Syncing sessions... (0/${total})`).start();
231
- const onProgress = (count) => {
232
- syncSpinner.text = ` Syncing sessions... (${count}/${total})`;
233
- };
234
- const { synced, failed } = await syncToServer(sessionEntries, authToken, onProgress);
235
- if (failed) {
236
- syncSpinner.warn(` Synced ${synced}/${total} sessions (some failed)`);
231
+ // Auto-open dashboard
232
+ const dashUrl = serverLinked ? `https://buildpartner.ai/dashboard?t=${authToken}` : null;
233
+ if (dashUrl) {
234
+ const opened = openUrl(dashUrl);
235
+ if (opened) {
236
+ console.log(chalk.green(" ✓ Opening your dashboard..."));
237
237
  }
238
238
  else {
239
- syncSpinner.succeed(` ${total} sessions synced`);
239
+ console.log(chalk.bold(" Open your dashboard:"));
240
+ console.log(` ${orange(chalk.underline(dashUrl))}`);
240
241
  }
242
+ console.log();
241
243
  }
242
- else {
243
- console.log(chalk.dim(" Skipping sync (offline). Sessions will sync on next launch."));
244
- }
245
- console.log();
246
- // Final summary
244
+ // Single CTA
245
+ const env = detectEnvironment();
246
+ const coachCmd = skillCommand("setup-coach");
247
247
  console.log(orange(" ╭──────────────────────────────────────────────╮\n" +
248
248
  " │ │\n" +
249
249
  ` │ You're all set. │\n` +
250
250
  " │ │\n" +
251
- ` │ ${padRight(`${sessionEntries.length} sessions analyzed`, 45)}│\n` +
251
+ ` │ ${padRight(`${sessionEntries.length} sessions found`, 45)}│\n` +
252
252
  ` │ ${padRight(`${skillCount} skills installed`, 45)}│\n` +
253
253
  ` │ ${padRight(`Auto-tracking enabled`, 45)}│\n` +
254
254
  " │ │\n" +
255
255
  " ╰──────────────────────────────────────────────╯"));
256
256
  console.log();
257
- // Restart notice (only needed if running inside Claude Code, not a standalone terminal)
258
257
  if (env !== "terminal") {
259
- console.log(chalk.bold(" Restart Claude Code to activate your skills and tools."));
260
- console.log();
258
+ console.log(chalk.bold(" Restart Claude Code, then paste this to get started:"));
259
+ }
260
+ else {
261
+ console.log(chalk.bold(" Paste this into Claude Code to get started:"));
261
262
  }
263
+ console.log();
264
+ console.log(` ${orange(coachCmd)}`);
265
+ console.log();
262
266
  }
263
267
  function getTokenArg() {
264
268
  return getArg("--token");
@@ -273,6 +277,32 @@ function getArg(flag) {
273
277
  function generateId() {
274
278
  return crypto.randomUUID().replace(/-/g, "").slice(0, 24);
275
279
  }
280
+ function usernameFromEmail(email) {
281
+ const local = email.split("@")[0] || "";
282
+ // Strip non-alphanumeric, lowercase, truncate
283
+ const clean = local.replace(/[^a-zA-Z0-9-]/g, "-").toLowerCase().replace(/-+/g, "-").replace(/^-|-$/g, "");
284
+ if (clean.length >= 2)
285
+ return clean;
286
+ return `user-${Math.random().toString(36).slice(2, 8)}`;
287
+ }
288
+ function openUrl(url) {
289
+ try {
290
+ const os = platform();
291
+ if (os === "darwin") {
292
+ execSync(`open "${url}"`, { stdio: "ignore" });
293
+ }
294
+ else if (os === "win32") {
295
+ execSync(`start "" "${url}"`, { stdio: "ignore" });
296
+ }
297
+ else {
298
+ execSync(`xdg-open "${url}"`, { stdio: "ignore" });
299
+ }
300
+ return true;
301
+ }
302
+ catch {
303
+ return false;
304
+ }
305
+ }
276
306
  function padRight(str, len) {
277
307
  return str.length >= len ? str : str + " ".repeat(len - str.length);
278
308
  }
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/commands/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ const __dirname = dirname(__filename);
8
8
  // Package root = 3 levels up from there
9
9
  const PACKAGE_ROOT = join(__dirname, "..", "..", "..");
10
10
  const GLOBAL_SKILLS_DIR = join(homedir(), ".claude", "skills");
11
- const SKILLS = ["bp-expert-advice", "bp-setup-coach", "bp-recap-week", "bp-flex-socials", "bp-interview", "bp-life-story", "bp-quest-status", "bp-enhance-claude-md", "bp-open-dashboard", "bp-log-experience", "bp-improve-skill", "bp-full-audit"];
11
+ const SKILLS = ["bp-expert-advice", "bp-setup-coach", "bp-recap-week", "bp-flex-socials", "bp-interview", "bp-life-story", "bp-quest-status", "bp-enhance-claude-md", "bp-open-dashboard", "bp-log-experience", "bp-improve-skill", "bp-full-audit", "bp-video-ideation", "bp-youtube-script", "bp-shorts-ideation", "bp-shorts-script"];
12
12
  /**
13
13
  * Find the source skills directory from the package.
14
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"skill-installer.js","sourceRoot":"","sources":["../../../src/installer/skill-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,oDAAoD;AACpD,wCAAwC;AACxC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACvD,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAE/D,MAAM,MAAM,GAAG,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC;AAErP;;GAEG;AACH,SAAS,gBAAgB;IACvB,MAAM,WAAW,GAAG;QAClB,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC;QAC5B,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC;QAClC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC;KAClD,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,SAAiB,EAAE,SAAiB;IACxD,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,SAAS;QAElC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEvC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;IACrC,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAE1B,OAAO,YAAY,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"skill-installer.js","sourceRoot":"","sources":["../../../src/installer/skill-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,oDAAoD;AACpD,wCAAwC;AACxC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACvD,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAE/D,MAAM,MAAM,GAAG,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;AAEzU;;GAEG;AACH,SAAS,gBAAgB;IACvB,MAAM,WAAW,GAAG;QAClB,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC;QAC5B,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC;QAClC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC;KAClD,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,SAAiB,EAAE,SAAiB;IACxD,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,SAAS;QAElC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEvC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;IACrC,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAE1B,OAAO,YAAY,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AACpD,CAAC"}
@@ -15,6 +15,22 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
15
15
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
16
16
  import { z } from "zod";
17
17
  import { apiFetch, apiGet, apiPost } from "../api-client.js";
18
+ import { readFileSync } from "fs";
19
+ import { join, dirname } from "path";
20
+ import { fileURLToPath } from "url";
21
+ const __filename = fileURLToPath(import.meta.url);
22
+ const __dirname = dirname(__filename);
23
+ /** Read CLI version from package.json */
24
+ function getCliVersion() {
25
+ try {
26
+ const pkgPath = join(__dirname, "..", "..", "package.json");
27
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
28
+ return pkg.version || "unknown";
29
+ }
30
+ catch {
31
+ return "unknown";
32
+ }
33
+ }
18
34
  /** Helper to format a text response for MCP */
19
35
  const textResponse = (text) => ({ content: [{ type: "text", text }] });
20
36
  /** Turn an HTTP error status into a message the user can act on. */
@@ -59,7 +75,7 @@ export function createServer() {
59
75
  server.tool("get_expert_knowledge", "Fetch expert frameworks with personal context. Preferred: pass category to get all frameworks in that category. Categories: sales, marketing, content, product, business-strategy, ai-automation, health, persuasion, copywriting, mindset. Also supports query (keyword search) or topic (specific framework by key).", {
60
76
  category: z.string().optional().describe("Category or comma-separated categories to fetch all frameworks for (e.g. 'sales', 'product,marketing')"),
61
77
  query: z.string().optional().describe("Search query to find relevant frameworks"),
62
- topic: z.string().optional().describe("Specific topic key to fetch full content"),
78
+ topic: z.string().optional().describe("Topic key or comma-separated keys to fetch full content (e.g. 'hormozi-offers', 'brunson-funnels,miller-sales-funnel')"),
63
79
  }, async ({ category, query, topic }) => {
64
80
  const params = new URLSearchParams();
65
81
  if (category)
@@ -101,11 +117,12 @@ export function createServer() {
101
117
  return textResponse(JSON.stringify({ error: "Could not fetch quest progress." }));
102
118
  return textResponse(JSON.stringify(result, null, 2));
103
119
  });
104
- server.tool("check_status", "Check system status and get reminders. Every skill should call this as its final step. If the response contains reminders or quest_completed, display them to the user as a visible section at the end of your response.", {
120
+ server.tool("check_status", "Check system status and get reminders. Every skill should call this as its final step. If the response contains reminders or quest_completed, display them to the user as a visible section at the end of your response. If quest_completed includes a next_quest, enthusiastically push the user toward it with the command they should run next.", {
105
121
  skill_name: z.string().describe("The skill that just ran (e.g., 'bp-setup-coach', 'bp-recap-week')"),
106
122
  session_context: z.string().optional().describe("Brief description of what the session involved"),
107
123
  }, async ({ skill_name, session_context }) => {
108
- const result = await apiPost("/api/buildpartner/check-status", { skill_name, session_context });
124
+ const cli_version = getCliVersion();
125
+ const result = await apiPost("/api/buildpartner/check-status", { skill_name, session_context, cli_version });
109
126
  if (!result)
110
127
  return textResponse(JSON.stringify({ status: "ok", reminders: [] }));
111
128
  return textResponse(JSON.stringify(result, null, 2));
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "buildpartner",
3
- "version": "0.3.16",
3
+ "version": "0.3.18",
4
4
  "type": "module",
5
5
  "description": "Your AI build partner. Expert guidance inside Claude Code.",
6
6
  "bin": {
@@ -1,3 +1,7 @@
1
+ ---
2
+ description: "Make my CLAUDE.md better. Reads your session patterns and suggests rules to add, remove, or sharpen. Only suggests what your data backs."
3
+ ---
4
+
1
5
  # /bp-enhance-claude-md
2
6
 
3
7
  Make my CLAUDE.md better. Reads your session patterns and suggests rules to add, remove, or sharpen. Only suggests what your data backs.
@@ -1,3 +1,7 @@
1
+ ---
2
+ description: "Ask any question and get matched to the right expert framework: pricing, content, launch, AI automation, marketing, sales, product strategy, and more."
3
+ ---
4
+
1
5
  # /bp-expert-advice
2
6
 
3
7
  Ask any question and get matched to the right expert framework: pricing, content, launch, AI automation, marketing, sales, product strategy, and more.
@@ -1,3 +1,7 @@
1
+ ---
2
+ description: "Give me something to share. Generates a shareable stats card you can screenshot and post. Like Strava for Claude Code."
3
+ ---
4
+
1
5
  # /bp-flex-socials
2
6
 
3
7
  Give me something to share. Generates a shareable stats card you can screenshot and post. Like Strava for Claude Code.
@@ -1,3 +1,7 @@
1
+ ---
2
+ description: "Full audit of your Claude Code environment, skills, and workflows. Finds what's missing, what's broken, and what to improve. Prioritized by impact."
3
+ ---
4
+
1
5
  # /bp-full-audit
2
6
 
3
7
  Full audit of your Claude Code environment, skills, and workflows. Finds what's missing, what's broken, and what to improve. Prioritized by impact.
@@ -116,4 +120,26 @@ Ask:
116
120
 
117
121
  If yes, work through the fixes one by one, confirming each before applying.
118
122
 
123
+ ## Generate Expert Advice Prompt
124
+
125
+ After presenting the audit results, generate a tailored `/bp-expert-advice` command the user can copy and paste. Look at their project, tech stack, and audit findings to craft a specific question that would give them the most value.
126
+
127
+ Pick the most impactful question based on what you learned:
128
+ - If they're building a product: ask about launch strategy, pricing, or go-to-market
129
+ - If they're creating content: ask about content strategy or audience growth
130
+ - If they're automating workflows: ask about AI automation or systems design
131
+ - If they have a specific challenge visible in their setup: ask about that
132
+
133
+ Present it as a ready-to-run command in a copyable block:
134
+
135
+ ```
136
+ Your audit is done. Here's something you can run right now to get expert advice tailored to what you're building:
137
+ ```
138
+
139
+ Then show the exact command, for example:
140
+
141
+ `/bp-expert-advice I'm building [specific thing from their project]. What's the best way to [specific challenge based on audit findings]?`
142
+
143
+ Make the prompt specific to THEIR situation. Never use a generic question. Reference their actual project name, tech stack, or goals.
144
+
119
145
  Call `check_status` with `{ "skill_name": "bp-full-audit" }`.
@@ -1,3 +1,7 @@
1
+ ---
2
+ description: "Enhance a skill so you don't make the same mistake twice. After using any skill (BuildPartner or your own custom ones), run this to improve it based on what just happened."
3
+ ---
4
+
1
5
  # /bp-improve-skill
2
6
 
3
7
  Enhance a skill so you don't make the same mistake twice. After using any skill (BuildPartner or your own custom ones), run this to improve it based on what just happened.
@@ -1,3 +1,7 @@
1
+ ---
2
+ description: "Build your profile so every skill knows who you are. Quick conversation, not a form. 2-3 minutes."
3
+ ---
4
+
1
5
  # /bp-interview
2
6
 
3
7
  Build your profile so every skill knows who you are. Quick conversation, not a form. 2-3 minutes.
@@ -1,3 +1,7 @@
1
+ ---
2
+ description: "Let me tell you my full story. Deep conversation about your background, career, and goals. Makes every consultation deeply personal."
3
+ ---
4
+
1
5
  # /bp-life-story
2
6
 
3
7
  Let me tell you my full story. Deep conversation about your background, career, and goals. Makes every consultation deeply personal.
@@ -1,3 +1,7 @@
1
+ ---
2
+ description: "Get better responses by documenting your lived experience. The more context BuildPartner has about what you've built, learned, and struggled with, the better every skill works for you."
3
+ ---
4
+
1
5
  # /bp-log-experience
2
6
 
3
7
  Get better responses by documenting your lived experience. The more context BuildPartner has about what you've built, learned, and struggled with, the better every skill works for you.
@@ -1,3 +1,7 @@
1
+ ---
2
+ description: "Open my dashboard in the browser, automatically signed in."
3
+ ---
4
+
1
5
  # /bp-open-dashboard
2
6
 
3
7
  Open my dashboard in the browser, automatically signed in.
@@ -1,3 +1,7 @@
1
+ ---
2
+ description: "What should I do next in BuildPartner? Shows your quest progress and guides you through the next step. Start here if you're new."
3
+ ---
4
+
1
5
  # /bp-quest-status
2
6
 
3
7
  What should I do next in BuildPartner? Shows your quest progress and guides you through the next step. Start here if you're new.
@@ -1,3 +1,7 @@
1
+ ---
2
+ description: "What happened this week? Weekly summary of what you built, your numbers, and what to add to your workflow. Run this on Fridays."
3
+ ---
4
+
1
5
  # /bp-recap-week
2
6
 
3
7
  What happened this week? Weekly summary of what you built, your numbers, and what to add to your workflow. Run this on Fridays.
@@ -1,3 +1,7 @@
1
+ ---
2
+ description: "Review my Claude Code setup and habits. Looks at how you use tools, what you're missing, what patterns to fix. Gives you 3 action items to improve this week."
3
+ ---
4
+
1
5
  # /bp-setup-coach
2
6
 
3
7
  Review my Claude Code setup and habits. Looks at how you use tools, what you're missing, what patterns to fix. Gives you 3 action items to improve this week.
@@ -0,0 +1,108 @@
1
+ ---
2
+ description: "Generate short-form content ideas with viral hooks, format selection, and share-optimized angles for Shorts, Reels, and TikTok."
3
+ ---
4
+
5
+ # /bp-shorts-ideation
6
+
7
+ Generate short-form content ideas with viral hooks, proven formats, and share-optimized angles. Works for YouTube Shorts, Instagram Reels, and TikTok.
8
+
9
+ ## MCP Tools
10
+
11
+ Only call tools that are registered on the `buildpartner` MCP server. If a tool call fails or a tool name isn't recognized, do not retry with a different name. The available tools are: `get_personal_context`, `get_expert_knowledge`, `save_profile`, `get_quest_progress`, `check_status`.
12
+
13
+ ## Project Structure
14
+
15
+ This skill uses a local `content/` directory:
16
+
17
+ ```
18
+ content/
19
+ knowledge/ # User's voice, audience, brand context
20
+ shorts/
21
+ {short-slug}/
22
+ idea.md # Created by this skill
23
+ youtube/ # Check for upcoming long-form videos to promote
24
+ ```
25
+
26
+ ## Instructions
27
+
28
+ 1. Call `get_expert_knowledge` with `{ "topic": "viral-short-form,shorts-format-library" }` to get the viral frameworks and format library, plus the user's personal context.
29
+
30
+ 2. Check for existing context:
31
+ - Read `content/knowledge/audience.md` and `content/knowledge/brand.md` if they exist
32
+ - List `content/youtube/` to see upcoming long-form videos that shorts could promote
33
+
34
+ 3. Ask the user what they need:
35
+ - "What's your niche?" (or read from knowledge folder)
36
+ - "Do you want to brainstorm new ideas, or create a short that promotes an upcoming video?"
37
+
38
+ 4. Run the appropriate mode:
39
+
40
+ ### Mode: Brainstorm Ideas
41
+ Generate 5-10 short-form ideas using the frameworks:
42
+
43
+ - **Virality Formula Check**: For each idea, evaluate:
44
+ - Unique Idea? (not what everyone's already said)
45
+ - Unique POV? (your specific angle or experience)
46
+ - Large Applicable Audience? (broad enough to share widely)
47
+ - World-Class Hook potential? (can you write a 3-4 word visual hook?)
48
+ - Compelling Story? (is there a narrative arc in 60 seconds?)
49
+
50
+ - **Idea + POV Matrix**: Rate each idea:
51
+ - Common Idea + Common POV = Skip (forgettable)
52
+ - Common Idea + Uncommon POV = Good (potentially viral)
53
+ - Uncommon Idea + Common POV = Good (potentially viral)
54
+ - Uncommon Idea + Uncommon POV = Risky (might be too weird)
55
+
56
+ - **Format Selection**: For each idea, recommend a format:
57
+ 1. **Challenge**: "I tried to [goal] in [time]" - best when you have a clear outcome
58
+ 2. **B-Roll Storytelling**: Narration over cinematic clips - best for personal brand
59
+ 3. **Split-Screen Reaction**: React to news/clip - best for hot takes
60
+ 4. **POV Reveal**: "POV: You just [did X]" - best for aspirational content
61
+ 5. **Speed Demo**: "In 60 seconds" - best for tutorials framed as outcomes
62
+ 6. **Before/After**: Transformation with contrast - best for results
63
+ 7. **Contrarian Take**: "Stop using X, do Y" - best for thought leadership
64
+ 8. **Problem Warning**: "The #1 mistake when..." - best for peer knowledge
65
+
66
+ - **Share Prediction**: For each idea, answer: "Why would someone share this? Who would they send it to?"
67
+
68
+ Present ideas ranked by viral potential with format recommendation and hook draft.
69
+
70
+ ### Mode: Promote Long-Form Video
71
+ When the user wants shorts that tease or promote an upcoming YouTube video:
72
+
73
+ - Read the video's titles.md, outline.md, or script.md from `content/youtube/{slug}/`
74
+ - Extract the most compelling moments, surprising insights, or shareable takeaways
75
+ - Generate 3-5 short concepts that:
76
+ - Stand alone as valuable content (not just a trailer)
77
+ - Create curiosity about the full video
78
+ - Use a different angle than the main video's hook
79
+ - For each, draft a hook using the 3-Step Hook Formula:
80
+ 1. **Context Lean**: Topic clarity + lean-in (benefit or pain point)
81
+ 2. **Scroll Stop**: Contrasting word ("but," "however") that stuns
82
+ 3. **Contrarian Snapback**: Opposite direction, bigger shock = bigger snap
83
+
84
+ ### Mode: Hook Workshop
85
+ When the user has an idea and wants to craft the perfect hook:
86
+
87
+ - Apply the 6 Power Words framework:
88
+ 1. **Subject**: Who is this about? (I, you, we, the product)
89
+ 2. **Action**: What verb describes what's happening?
90
+ 3. **Objective**: What's the shocking end result? Make it non-obvious.
91
+ 4. **Contrast**: Base state vs. new reality
92
+ 5. **Proof** (optional): Why should they trust you?
93
+ 6. **Time** (optional): Urgency or speed constraint
94
+
95
+ - Generate 5+ hook variations
96
+ - Score each on: Curiosity (1-5), Clarity (1-5), Share potential (1-5)
97
+ - Recommend the strongest with reasoning
98
+
99
+ 5. Save the best ideas to `content/shorts/{slug}/idea.md` with:
100
+ - Hook (visual text + verbal)
101
+ - Format type
102
+ - Target length
103
+ - Key points to cover
104
+ - Share prediction
105
+
106
+ 6. Suggest next step: "Ready to write the script? Run `/bp-shorts-script` to draft it."
107
+
108
+ 7. Call `check_status` with `{ "skill_name": "bp-shorts-ideation" }`.
@@ -0,0 +1,126 @@
1
+ ---
2
+ description: "Write viral 60-90 second scripts for YouTube Shorts, Reels, and TikTok using proven hook formulas and retention structures."
3
+ ---
4
+
5
+ # /bp-shorts-script
6
+
7
+ Write viral 60-90 second scripts for YouTube Shorts, Instagram Reels, and TikTok using proven hook formulas, re-hooking mechanics, and share-optimized structures.
8
+
9
+ ## MCP Tools
10
+
11
+ Only call tools that are registered on the `buildpartner` MCP server. If a tool call fails or a tool name isn't recognized, do not retry with a different name. The available tools are: `get_personal_context`, `get_expert_knowledge`, `save_profile`, `get_quest_progress`, `check_status`.
12
+
13
+ ## Project Structure
14
+
15
+ ```
16
+ content/
17
+ knowledge/ # User's voice, audience, brand context
18
+ shorts/
19
+ {short-slug}/
20
+ idea.md # From bp-shorts-ideation (optional)
21
+ script.md # Created by this skill
22
+ ```
23
+
24
+ ## Instructions
25
+
26
+ 1. Call `get_expert_knowledge` with `{ "topic": "viral-short-form" }` to get the viral short-form framework and the user's personal context.
27
+
28
+ 2. Check for existing context:
29
+ - Read `content/shorts/{slug}/idea.md` if it exists (from bp-shorts-ideation)
30
+ - Read `content/knowledge/voice.md` if it exists for voice/tone
31
+
32
+ 3. If no idea file exists, ask:
33
+ - "What's the topic or concept for this short?"
34
+ - "What format? (challenge, B-roll storytelling, reaction, POV reveal, speed demo, before/after, contrarian take, problem warning)"
35
+ - "What's the one thing you want viewers to walk away with?"
36
+
37
+ 4. Write the script following this structure:
38
+
39
+ ### Opening Hook (First 3-5 Seconds)
40
+
41
+ The hook has three parts that fire in rapid sequence:
42
+
43
+ **Visual Hook (ON SCREEN TEXT):**
44
+ - 3-4 words maximum
45
+ - Must make viewer think "Wait, what?"
46
+ - People read faster than they listen. Visual hooks are 10x more effective than spoken-only hooks.
47
+ - Examples: "Future of farming", "This changes everything", "Secret Japanese city"
48
+
49
+ **Verbal Hook (SPOKEN - 3 Steps):**
50
+
51
+ 1. **Context Lean** (1-2 sentences):
52
+ - Be super clear about what the video is about (topic clarity)
53
+ - Get them leaning in: establish common ground, reference a benefit or pain point, use a metaphor, or say something mind-blowing
54
+ - Example: "The tech in the Vegas sphere is insane. Biggest screen ever built. 20 times bigger than an IMAX."
55
+
56
+ 2. **Scroll Stop Interjection** (1 sentence):
57
+ - Single line that acts like a stun gun
58
+ - Use a contrasting word: "but," "however," "yet," "although," "therefore"
59
+ - This is the setup for the snapback
60
+ - Example: "But get this, the screen is actually the least impressive part of the whole thing."
61
+
62
+ 3. **Contrarian Snapback** (1 sentence):
63
+ - Goes in the OPPOSITE direction of the initial lean
64
+ - The bigger the shock, the bigger the snap, the better the effect
65
+ - Example: "Because the most impressive part is the audio. This is going to blow your mind."
66
+
67
+ At this point the viewer is fully hooked. The curiosity loop is open and they cannot scroll away.
68
+
69
+ ### Body (10-15 Second Segments)
70
+
71
+ Each segment follows the Value Loop:
72
+ - **What**: State the point clearly and simply
73
+ - **Why/How**: Supporting evidence, example, or context
74
+ - **Head Fake/Re-hook**: "But here's what's really interesting..." / "And that's not even the craziest part..."
75
+
76
+ Rules for the body:
77
+ - Use "but" and "therefore" for narrative flow. NEVER "and then" (creates monotonous piling)
78
+ - Re-hook every 10-15 seconds. Each re-hook opens a new mini curiosity loop.
79
+ - Front-load the best value. Second point should be BETTER than first (ascending trend)
80
+ - Vary sentence length for rhythm: short punchy sentences for emphasis, longer ones for explanation
81
+ - Staccato at transitions, flowing during explanation
82
+
83
+ ### Closer (Final 5-10 Seconds)
84
+
85
+ - Deliver the final payoff or reframe
86
+ - Make it feel like a mic drop, not a fade out
87
+ - The last line should be shareable on its own
88
+ - For looping platforms: the last line should set up rewatching the first line
89
+ - Example: "This is going to change agriculture forever." / "The game has just changed again."
90
+
91
+ 5. Format the script clearly:
92
+
93
+ ```
94
+ [ON SCREEN TEXT]: {3-4 words}
95
+
96
+ [VISUAL]: {What the viewer sees}
97
+
98
+ [SPOKEN]:
99
+ {Full script with natural spoken language}
100
+
101
+ [EDIT NOTES]:
102
+ - {Visual changes, B-roll suggestions, sound effects}
103
+
104
+ TARGET LENGTH: {60/75/90} seconds
105
+ FORMAT: {Challenge/B-Roll/Reaction/etc.}
106
+ ```
107
+
108
+ 6. After writing, run a quick quality check:
109
+ - Hook has all 3 steps? (context lean, scroll stop, snapback)
110
+ - Visual hook text is 3-4 words?
111
+ - Re-hooks every 10-15 seconds in the body?
112
+ - Uses but/therefore, not "and then"?
113
+ - Ascending value (each point more interesting)?
114
+ - Last line is shareable/memorable?
115
+ - Would someone share this? Who would they send it to?
116
+ - Share rate prediction (target 3%+)
117
+
118
+ 7. Save script to `content/shorts/{slug}/script.md`
119
+
120
+ 8. If the user wants revisions, iterate. Focus on:
121
+ - Tightening the hook (fewer words, bigger snap)
122
+ - Stronger re-hooks between segments
123
+ - More specific/concrete language (numbers, names, details)
124
+ - Better rhythm variation
125
+
126
+ 9. Call `check_status` with `{ "skill_name": "bp-shorts-script" }`.
@@ -0,0 +1,99 @@
1
+ ---
2
+ description: "Generate video ideas, craft titles, plan thumbnails, and validate your packaging before scripting. The full pre-production workflow."
3
+ ---
4
+
5
+ # /bp-video-ideation
6
+
7
+ Generate video ideas, craft compelling titles, plan thumbnail strategy, and validate your full packaging before you start scripting.
8
+
9
+ ## MCP Tools
10
+
11
+ Only call tools that are registered on the `buildpartner` MCP server. If a tool call fails or a tool name isn't recognized, do not retry with a different name. The available tools are: `get_personal_context`, `get_expert_knowledge`, `save_profile`, `get_quest_progress`, `check_status`.
12
+
13
+ ## Project Structure
14
+
15
+ This skill uses a local `content/` directory to organize video projects. On first run, scaffold the structure if it doesn't exist:
16
+
17
+ ```
18
+ content/
19
+ knowledge/ # User's own context (voice, audience, brand)
20
+ voice.md
21
+ audience.md
22
+ brand.md
23
+ youtube/
24
+ {video-slug}/ # One folder per video project
25
+ titles.md
26
+ thumbnail.md
27
+ status.md
28
+ ```
29
+
30
+ Use the Bash tool to check for and create this structure. If `content/knowledge/` files exist, read them for context. If they don't exist, mention that the user can create them for better personalization, but proceed without them.
31
+
32
+ ## Instructions
33
+
34
+ 1. Call `get_expert_knowledge` with `{ "category": "content" }` to get available frameworks and the user's personal context. Based on what the user needs, fetch specific frameworks:
35
+ - For title work: `{ "topic": "galloway-packaging,title-psychology" }`
36
+ - For thumbnail work: `{ "topic": "galloway-packaging,youtube-packaging-tactics" }`
37
+ - For full packaging validation: `{ "topic": "youtube-packaging-tactics" }`
38
+
39
+ 2. Check for existing video projects by listing `content/youtube/` directories. If the user is working on an existing project, read its files for context.
40
+
41
+ 3. Detect what the user needs and run the appropriate mode:
42
+
43
+ ### Mode: Idea Generation
44
+ When the user has a concept but needs title options:
45
+ - Ask about their niche and target audience (or read from `content/knowledge/audience.md`)
46
+ - Generate 10+ title variations using these frameworks:
47
+ - **Curiosity Gap**: Does the title create tension that demands resolution? Is there a counterpoint, head fake, or twist?
48
+ - **CCN Fit**: Would a Core fan, Casual viewer, AND New viewer all click?
49
+ - **Specificity**: Use specific numbers and concrete language over vague claims
50
+ - **The 60-Character Rule**: Most important words come first, nothing essential after 60 chars
51
+ - **The 7-Year-Old Test**: No jargon, no acronyms (unless universally known)
52
+ - Score each title on Curiosity Gap (1-5) and CCN Fit (1-5)
53
+ - Present the top 5 with reasoning
54
+
55
+ ### Mode: Outlier Translation
56
+ When the user shares competitor titles they admire:
57
+ - Extract the first principle (WHY it works, not just the format)
58
+ - Validate the structure across industries (search for similar patterns)
59
+ - Translate it to the user's niche while maintaining the psychological mechanism
60
+ - Generate 5+ adapted variations
61
+
62
+ ### Mode: Thumbnail Strategy
63
+ When the user wants to develop thumbnail direction:
64
+ - Apply the Three-Element Rule (max 3: face + object + text)
65
+ - Evaluate against the Boring-to-Misleading Spectrum (aim for 70% toward intriguing)
66
+ - Run through the Thumbnail Checklist:
67
+ - Works at phone size?
68
+ - Clear contrast between foreground and background?
69
+ - Emotion on the face? (neutral underperforms by 30-50%)
70
+ - 3 or fewer elements?
71
+ - Creates a question the title answers (or vice versa)?
72
+ - Stranger understands the topic in under 1 second?
73
+ - If user shares thumbnail images, provide framework-based feedback
74
+ - Evaluate Title-Thumbnail Synergy (5 factors: visual anchor, emotional match, text redundancy, curiosity gap completion, at-a-glance clarity)
75
+
76
+ ### Mode: Packaging Validation
77
+ When the user has a title + thumbnail concept and wants to validate before scripting:
78
+ - Run the Pre-Flight Checklist:
79
+ 1. Outlier foundation solid?
80
+ 2. Topic validated? (current cultural relevance)
81
+ 3. First principle extracted? (why the outlier works)
82
+ 4. Structure validated? (proven across niches)
83
+ 5. Curiosity gap strong? (passes "So What?" test)
84
+ 6. CCN fit confirmed?
85
+ 7. Target audience would click?
86
+ 8. 10+ title variations generated?
87
+ 9. Thumbnail direction set? (3 elements, reinforces gap)
88
+ - Flag any missing items and help resolve them
89
+ - If all pass: recommend moving to scripting
90
+
91
+ 4. Save outputs to the project folder:
92
+ - Create `content/youtube/{slug}/` if it doesn't exist
93
+ - Write `titles.md` with all title options, scores, and the locked winner
94
+ - Write `thumbnail.md` with concept notes, checklist results, synergy score
95
+ - Write `status.md` with current stage
96
+
97
+ 5. Suggest next step: "Ready to script? Run `/bp-youtube-script` to start writing."
98
+
99
+ 6. Call `check_status` with `{ "skill_name": "bp-video-ideation" }`.
@@ -0,0 +1,149 @@
1
+ ---
2
+ description: "Research, write, and review YouTube scripts. Full workflow from outline to final draft with expert-level feedback."
3
+ ---
4
+
5
+ # /bp-youtube-script
6
+
7
+ Research, write, and review YouTube scripts with proven frameworks for hooks, structure, retention, and expert-level quality review.
8
+
9
+ ## MCP Tools
10
+
11
+ Only call tools that are registered on the `buildpartner` MCP server. If a tool call fails or a tool name isn't recognized, do not retry with a different name. The available tools are: `get_personal_context`, `get_expert_knowledge`, `save_profile`, `get_quest_progress`, `check_status`.
12
+
13
+ ## Project Structure
14
+
15
+ This skill uses a local `content/` directory. Check for existing project context:
16
+
17
+ ```
18
+ content/
19
+ knowledge/ # User's voice, audience, brand context
20
+ youtube/
21
+ {video-slug}/
22
+ titles.md # From bp-video-ideation
23
+ thumbnail.md # From bp-video-ideation
24
+ outline.md # Created by this skill
25
+ script.md # Created by this skill
26
+ status.md
27
+ ```
28
+
29
+ If a project folder exists with titles.md or thumbnail.md, read them to inform the script.
30
+
31
+ ## Instructions
32
+
33
+ 1. Call `get_expert_knowledge` with `{ "category": "content" }` to see available frameworks and the user's personal context. Then fetch the specific frameworks needed:
34
+ - For research/outline: `{ "topic": "script-strategy,youtube-script-frameworks" }`
35
+ - For writing: `{ "topic": "youtube-script-frameworks" }`
36
+ - For review: `{ "topic": "script-strategy,youtube-script-frameworks,channel-positioning" }`
37
+
38
+ 2. Check for existing project files in `content/youtube/`. If titles or thumbnail notes exist, use them to inform the script direction.
39
+
40
+ 3. Read `content/knowledge/voice.md` and `content/knowledge/audience.md` if they exist, for voice and audience context.
41
+
42
+ 4. Detect what the user needs and run the appropriate mode:
43
+
44
+ ### Mode: Research
45
+ When the user has a video concept and needs to build an outline:
46
+
47
+ - **Step 1: Competitive Research**
48
+ - Ask: "What are other videos on this topic saying?"
49
+ - Help identify the common wisdom that viewers have already heard
50
+ - Find where the user disagrees or has a different take
51
+
52
+ - **Step 2: New Information Framework**
53
+ - The AI era changed what works. Viewers get basic info from ChatGPT first. If your video says what everyone else says, they leave.
54
+ - Identify the user's unique angle: What do they know that others don't? Where's their lived experience?
55
+ - Apply the Pattern Interrupt: List things you DON'T do that every other video tells viewers to do
56
+
57
+ - **Step 3: Lived Experience Mining**
58
+ - Ask: "When did you personally learn this lesson? What went wrong?"
59
+ - Extract specific stories with concrete details (age, context, setting, failure, consequence)
60
+ - These stories are the moat AI cannot replicate
61
+
62
+ - **Step 4: Build Enriched Outline**
63
+ - Structure: Hook concept -> Setup -> 3-5 main sections -> Payoff
64
+ - Each section has: Claim, Evidence, Example, Application
65
+ - Mark where lived experience stories should go
66
+ - Mark where proof/data should go
67
+
68
+ - Write outline to `content/youtube/{slug}/outline.md`
69
+
70
+ ### Mode: Write
71
+ When the user has an outline (or concept) and wants a full script:
72
+
73
+ - **Intro (Under 60 Seconds)**
74
+ Follow the proven structure:
75
+ 1. **Context** (5-10s): Confirm the click. "Today we're talking about..."
76
+ 2. **Common Belief** (10-15s): "Most people think..." / "Everyone says..."
77
+ 3. **Contrarian Take** (10-15s): "But here's the thing..." Use "but" as scroll-stop
78
+ 4. **Proof** (10-15s): [User's credibility statement]
79
+ 5. **Plan** (10-15s): "Just give me X minutes and I'll walk you through..."
80
+
81
+ - **Body (60-70% of video)**
82
+ - Front-load value. First 2 points are critical.
83
+ - Second point must be BETTER than first (ascending value trend)
84
+ - Each point follows the Value Loop: What (context) -> How (application) -> Why (framing)
85
+ - Re-hook between every point: "That was important, but without this next one..."
86
+ - Use "but" and "therefore" for narrative flow. Never "and then."
87
+ - Vary sentence length for rhythm (staccato for emphasis, longer for explanation)
88
+
89
+ - **Payoff (Final 20%)**
90
+ - Deliver on the biggest promise from the hook
91
+ - Punchy synthesis, not boring summary
92
+ - CTA that connects to the content
93
+ - Tease next video if applicable
94
+
95
+ - **Retention Mechanics Throughout**
96
+ - Open curiosity loops early, close them late
97
+ - Payoff every 2-3 minutes
98
+ - Pattern interrupts every 90 seconds (visual change, tone shift, question)
99
+ - Tease upcoming sections: "In a minute, I'll show you the part that surprised me most"
100
+
101
+ - Write script to `content/youtube/{slug}/script.md`
102
+
103
+ ### Mode: Review
104
+ When the user has a script and wants expert feedback:
105
+
106
+ Run the script through a multi-framework review:
107
+
108
+ - **New Information Check**
109
+ - What are competitors saying about this topic?
110
+ - Where does this script offer a different take?
111
+ - Is the different take clear in the first 30 seconds?
112
+
113
+ - **Lived Experience Check**
114
+ - Does the script have at least one story of when the creator learned this?
115
+ - Is there a specific failure/mistake that taught them?
116
+ - Could AI generate this story? If yes, it needs rewriting.
117
+
118
+ - **Proof Check**
119
+ - Every claim: is there proof attached?
120
+ - Are there screenshots, data, before/afters referenced?
121
+ - Would a skeptic be convinced?
122
+
123
+ - **Views vs Sales Check**
124
+ - Is this meant to grow audience or convert buyers?
125
+ - Views video: Where's the pattern interrupt? The contrarian angle?
126
+ - Sales video: Where's the deep process walkthrough? The proof of systems?
127
+
128
+ - **Structure Check**
129
+ - Intro under 60 seconds?
130
+ - Re-hooks every 60-90 seconds?
131
+ - Each point has What -> Why -> How?
132
+ - Ascending value (second point better than first)?
133
+ - Body uses but/therefore, not "and then"?
134
+
135
+ - **Packaging Alignment**
136
+ - Does the script deliver on what the title promises?
137
+ - Would someone who clicked this title be satisfied?
138
+ - Does it serve Core, Casual, AND New viewers?
139
+
140
+ Output a scorecard with specific fixes for each issue found.
141
+
142
+ 5. Update `content/youtube/{slug}/status.md` with current stage.
143
+
144
+ 6. Suggest next steps based on what was done:
145
+ - After research: "Outline ready. Run `/bp-youtube-script` again to write the full script."
146
+ - After writing: "Script draft complete. Run `/bp-youtube-script` again in review mode, or refine with feedback."
147
+ - After review: "Here's your scorecard. Fix the flagged items and run review again, or lock it and move to production."
148
+
149
+ 7. Call `check_status` with `{ "skill_name": "bp-youtube-script" }`.