buildpartner 0.3.17 → 0.3.19
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/dist/src/commands/setup.js +159 -90
- package/dist/src/commands/setup.js.map +1 -1
- package/dist/src/installer/skill-installer.js +1 -1
- package/dist/src/installer/skill-installer.js.map +1 -1
- package/dist/src/mcp/server.js +19 -2
- package/dist/src/mcp/server.js.map +1 -1
- package/package.json +1 -1
- package/skills/bp-enhance-claude-md/SKILL.md +4 -0
- package/skills/bp-expert-advice/SKILL.md +4 -0
- package/skills/bp-flex-socials/SKILL.md +4 -0
- package/skills/bp-full-audit/SKILL.md +26 -0
- package/skills/bp-improve-skill/SKILL.md +4 -0
- package/skills/bp-interview/SKILL.md +4 -0
- package/skills/bp-life-story/SKILL.md +4 -0
- package/skills/bp-log-experience/SKILL.md +4 -0
- package/skills/bp-open-dashboard/SKILL.md +4 -0
- package/skills/bp-quest-status/SKILL.md +4 -0
- package/skills/bp-recap-week/SKILL.md +4 -0
- package/skills/bp-setup-coach/SKILL.md +4 -0
- package/skills/bp-shorts-ideation/SKILL.md +108 -0
- package/skills/bp-shorts-script/SKILL.md +126 -0
- package/skills/bp-video-ideation/SKILL.md +99 -0
- package/skills/bp-youtube-script/SKILL.md +149 -0
|
@@ -6,7 +6,7 @@ import chalk from "chalk";
|
|
|
6
6
|
import ora from "ora";
|
|
7
7
|
import { input } from "@inquirer/prompts";
|
|
8
8
|
import { scanAllSessions } from "../readers/session-sync.js";
|
|
9
|
-
import { writeAuth, } from "../store/local-store.js";
|
|
9
|
+
import { writeAuth, readAuth, } from "../store/local-store.js";
|
|
10
10
|
import { installMcp } from "../installer/mcp-installer.js";
|
|
11
11
|
import { installSkills } from "../installer/skill-installer.js";
|
|
12
12
|
import { installHook, installPermissions } from "../installer/hook-installer.js";
|
|
@@ -46,109 +46,59 @@ export async function setup() {
|
|
|
46
46
|
process.exit(1);
|
|
47
47
|
}
|
|
48
48
|
console.log();
|
|
49
|
-
// Step 1: Create account
|
|
50
|
-
console.log(chalk.bold(" [1/3] Create your account"));
|
|
51
|
-
console.log();
|
|
49
|
+
// Step 1: Create or verify account
|
|
52
50
|
let email;
|
|
53
51
|
let username;
|
|
54
|
-
if (token) {
|
|
55
|
-
console.log(chalk.green(" ✓ Token verified"));
|
|
56
|
-
email = "user@buildpartner.ai";
|
|
57
|
-
username = "player";
|
|
58
|
-
}
|
|
59
|
-
else if (!isInteractive) {
|
|
60
|
-
const emailArg = getArg("--email");
|
|
61
|
-
email = emailArg || `user-${Date.now()}@buildpartner.ai`;
|
|
62
|
-
username = getArg("--username") || usernameFromEmail(email);
|
|
63
|
-
console.log(chalk.dim(` Using: ${email}`));
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
email = await input({
|
|
67
|
-
message: " Email:",
|
|
68
|
-
validate: (val) => {
|
|
69
|
-
if (!val.includes("@"))
|
|
70
|
-
return "Enter a valid email";
|
|
71
|
-
return true;
|
|
72
|
-
},
|
|
73
|
-
});
|
|
74
|
-
username = usernameFromEmail(email);
|
|
75
|
-
}
|
|
76
52
|
let authToken = `sk_${generateId()}`;
|
|
77
53
|
let serverLinked = false;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if (res.ok && data.token) {
|
|
89
|
-
authToken = data.token;
|
|
90
|
-
serverLinked = true;
|
|
91
|
-
return "ok";
|
|
92
|
-
}
|
|
93
|
-
else if (res.status === 409) {
|
|
94
|
-
return "duplicate";
|
|
95
|
-
}
|
|
96
|
-
// Non-409 error, retry
|
|
97
|
-
}
|
|
98
|
-
catch {
|
|
99
|
-
if (attempt < 3) {
|
|
100
|
-
await new Promise((r) => setTimeout(r, 1000 * attempt));
|
|
101
|
-
}
|
|
102
|
-
}
|
|
54
|
+
// Check for existing account first
|
|
55
|
+
const existingAuth = readAuth();
|
|
56
|
+
if (existingAuth?.token && existingAuth?.email) {
|
|
57
|
+
let verified = false;
|
|
58
|
+
try {
|
|
59
|
+
const verifyRes = await fetch(`${API_BASE}/api/buildpartner/verify-token`, {
|
|
60
|
+
headers: { Authorization: `Bearer ${existingAuth.token}` },
|
|
61
|
+
signal: AbortSignal.timeout(5000),
|
|
62
|
+
});
|
|
63
|
+
verified = verifyRes.ok;
|
|
103
64
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
let retrying = true;
|
|
110
|
-
while (retrying) {
|
|
111
|
-
console.log(chalk.yellow(` ! This email is already registered.`));
|
|
112
|
-
console.log(chalk.dim(` Log in from your dashboard: ${API_BASE}/dashboard/login`));
|
|
65
|
+
catch {
|
|
66
|
+
// Verification failed, fall through to signup
|
|
67
|
+
}
|
|
68
|
+
if (verified) {
|
|
69
|
+
console.log(chalk.bold(" [1/3] Account"));
|
|
113
70
|
console.log();
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
},
|
|
129
|
-
});
|
|
130
|
-
result = await signup(email, username);
|
|
131
|
-
if (result !== "duplicate")
|
|
132
|
-
retrying = false;
|
|
71
|
+
console.log(chalk.green(` ✓ Logged in as ${existingAuth.email}`));
|
|
72
|
+
console.log();
|
|
73
|
+
email = existingAuth.email;
|
|
74
|
+
username = existingAuth.username;
|
|
75
|
+
authToken = existingAuth.token;
|
|
76
|
+
serverLinked = true;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
// Token invalid, proceed with fresh signup
|
|
80
|
+
const account = await createAccount(token, authToken);
|
|
81
|
+
email = account.email;
|
|
82
|
+
username = account.username;
|
|
83
|
+
authToken = account.authToken;
|
|
84
|
+
serverLinked = account.serverLinked;
|
|
133
85
|
}
|
|
134
86
|
}
|
|
135
|
-
else
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
87
|
+
else {
|
|
88
|
+
// No existing auth, fresh signup
|
|
89
|
+
const account = await createAccount(token, authToken);
|
|
90
|
+
email = account.email;
|
|
91
|
+
username = account.username;
|
|
92
|
+
authToken = account.authToken;
|
|
93
|
+
serverLinked = account.serverLinked;
|
|
142
94
|
}
|
|
143
95
|
writeAuth({
|
|
144
96
|
email,
|
|
145
97
|
username,
|
|
146
98
|
token: authToken,
|
|
147
99
|
profile_url: `buildpartner.ai/${username}`,
|
|
148
|
-
created_at: new Date().toISOString(),
|
|
100
|
+
created_at: existingAuth?.created_at || new Date().toISOString(),
|
|
149
101
|
});
|
|
150
|
-
console.log(chalk.green(" ✓ Account created"));
|
|
151
|
-
console.log();
|
|
152
102
|
// Step 2: Set up tools
|
|
153
103
|
console.log(chalk.bold(" [2/3] Setting up your tools..."));
|
|
154
104
|
const mcpResult = installMcp();
|
|
@@ -242,6 +192,126 @@ export async function setup() {
|
|
|
242
192
|
console.log(` ${orange(coachCmd)}`);
|
|
243
193
|
console.log();
|
|
244
194
|
}
|
|
195
|
+
async function createAccount(token, defaultToken) {
|
|
196
|
+
let email;
|
|
197
|
+
let username;
|
|
198
|
+
let authToken = defaultToken;
|
|
199
|
+
let serverLinked = false;
|
|
200
|
+
console.log(chalk.bold(" [1/3] Create your account"));
|
|
201
|
+
console.log();
|
|
202
|
+
if (token) {
|
|
203
|
+
console.log(chalk.green(" ✓ Token verified"));
|
|
204
|
+
email = "user@buildpartner.ai";
|
|
205
|
+
username = "player";
|
|
206
|
+
}
|
|
207
|
+
else if (!isInteractive) {
|
|
208
|
+
const emailArg = getArg("--email");
|
|
209
|
+
email = emailArg || `user-${Date.now()}@buildpartner.ai`;
|
|
210
|
+
username = getArg("--username") || usernameFromEmail(email);
|
|
211
|
+
console.log(chalk.dim(` Using: ${email}`));
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
email = await input({
|
|
215
|
+
message: " Email:",
|
|
216
|
+
validate: (val) => {
|
|
217
|
+
if (!val.includes("@"))
|
|
218
|
+
return "Enter a valid email";
|
|
219
|
+
return true;
|
|
220
|
+
},
|
|
221
|
+
});
|
|
222
|
+
username = usernameFromEmail(email);
|
|
223
|
+
}
|
|
224
|
+
const signup = async (signupEmail, signupUsername) => {
|
|
225
|
+
for (let attempt = 1; attempt <= 3; attempt++) {
|
|
226
|
+
try {
|
|
227
|
+
const res = await fetch(`${API_BASE}/api/buildpartner/signup`, {
|
|
228
|
+
method: "POST",
|
|
229
|
+
headers: { "Content-Type": "application/json" },
|
|
230
|
+
body: JSON.stringify({ email: signupEmail, username: signupUsername }),
|
|
231
|
+
signal: AbortSignal.timeout(10000),
|
|
232
|
+
});
|
|
233
|
+
const data = await res.json();
|
|
234
|
+
if (res.ok && data.token) {
|
|
235
|
+
authToken = data.token;
|
|
236
|
+
serverLinked = true;
|
|
237
|
+
return "ok";
|
|
238
|
+
}
|
|
239
|
+
else if (res.status === 409) {
|
|
240
|
+
const msg = (data.error || "").toLowerCase();
|
|
241
|
+
if (msg.includes("username"))
|
|
242
|
+
return "duplicate-username";
|
|
243
|
+
return "duplicate-email";
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
if (attempt < 3) {
|
|
248
|
+
await new Promise((r) => setTimeout(r, 1000 * attempt));
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return "error";
|
|
253
|
+
};
|
|
254
|
+
let result = await signup(email, username);
|
|
255
|
+
// Username collision: auto-retry with a random suffix (up to 3 times)
|
|
256
|
+
if (result === "duplicate-username") {
|
|
257
|
+
for (let i = 0; i < 3; i++) {
|
|
258
|
+
username = `${usernameFromEmail(email)}-${Math.random().toString(36).slice(2, 6)}`;
|
|
259
|
+
result = await signup(email, username);
|
|
260
|
+
if (result !== "duplicate-username")
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// Email collision: offer login or retry
|
|
265
|
+
if (result === "duplicate-email" && isInteractive) {
|
|
266
|
+
let retrying = true;
|
|
267
|
+
while (retrying) {
|
|
268
|
+
console.log(chalk.yellow(` ! This email is already registered.`));
|
|
269
|
+
console.log(chalk.dim(` Log in from your dashboard: ${API_BASE}/dashboard/login`));
|
|
270
|
+
console.log();
|
|
271
|
+
const retry = await input({
|
|
272
|
+
message: " Try a different email? (y/n):",
|
|
273
|
+
});
|
|
274
|
+
if (retry.toLowerCase() !== "y") {
|
|
275
|
+
console.log();
|
|
276
|
+
console.log(chalk.dim(` Log in at ${API_BASE}/dashboard/login to access your account.`));
|
|
277
|
+
process.exit(0);
|
|
278
|
+
}
|
|
279
|
+
email = await input({
|
|
280
|
+
message: " Email:",
|
|
281
|
+
validate: (val) => {
|
|
282
|
+
if (!val.includes("@"))
|
|
283
|
+
return "Enter a valid email";
|
|
284
|
+
return true;
|
|
285
|
+
},
|
|
286
|
+
});
|
|
287
|
+
username = usernameFromEmail(email);
|
|
288
|
+
result = await signup(email, username);
|
|
289
|
+
if (result === "duplicate-username") {
|
|
290
|
+
for (let i = 0; i < 3; i++) {
|
|
291
|
+
username = `${usernameFromEmail(email)}-${Math.random().toString(36).slice(2, 6)}`;
|
|
292
|
+
result = await signup(email, username);
|
|
293
|
+
if (result !== "duplicate-username")
|
|
294
|
+
break;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
if (result !== "duplicate-email")
|
|
298
|
+
retrying = false;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
else if (result === "duplicate-email") {
|
|
302
|
+
console.log(chalk.yellow(` ! This email is already registered.`));
|
|
303
|
+
console.log(chalk.dim(` Log in from your dashboard: ${API_BASE}/dashboard/login`));
|
|
304
|
+
process.exit(0);
|
|
305
|
+
}
|
|
306
|
+
if (result === "error") {
|
|
307
|
+
console.log(chalk.yellow(" ! Could not reach buildpartner.ai. Your data will sync next time you run a skill."));
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
console.log(chalk.green(" ✓ Account created"));
|
|
311
|
+
}
|
|
312
|
+
console.log();
|
|
313
|
+
return { email, username, authToken, serverLinked };
|
|
314
|
+
}
|
|
245
315
|
function getTokenArg() {
|
|
246
316
|
return getArg("--token");
|
|
247
317
|
}
|
|
@@ -257,7 +327,6 @@ function generateId() {
|
|
|
257
327
|
}
|
|
258
328
|
function usernameFromEmail(email) {
|
|
259
329
|
const local = email.split("@")[0] || "";
|
|
260
|
-
// Strip non-alphanumeric, lowercase, truncate
|
|
261
330
|
const clean = local.replace(/[^a-zA-Z0-9-]/g, "-").toLowerCase().replace(/-+/g, "-").replace(/^-|-$/g, "");
|
|
262
331
|
if (clean.length >= 2)
|
|
263
332
|
return clean;
|
|
@@ -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;
|
|
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"}
|
package/dist/src/mcp/server.js
CHANGED
|
@@ -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. */
|
|
@@ -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
|
|
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":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -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: "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: "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" }`.
|