buildpartner 0.3.7 → 0.3.8
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/bin/cli.js +0 -7
- package/dist/bin/cli.js.map +1 -1
- package/dist/src/mcp/server.js +32 -8
- package/dist/src/mcp/server.js.map +1 -1
- package/package.json +1 -1
- package/skills/bp-coach/SKILL.md +6 -2
- package/skills/bp-consult/SKILL.md +1 -1
- package/skills/bp-enhance-claude-md/SKILL.md +1 -1
- package/skills/bp-flex-socials/SKILL.md +1 -1
- package/skills/bp-full-audit/SKILL.md +1 -1
- package/skills/bp-improve-skill/SKILL.md +1 -1
- package/skills/bp-interview/SKILL.md +1 -1
- package/skills/bp-life-story/SKILL.md +1 -1
- package/skills/bp-log-experience/SKILL.md +1 -1
- package/skills/bp-open-dashboard/SKILL.md +1 -1
- package/skills/bp-quest-status/SKILL.md +1 -1
- package/skills/bp-recap-week/SKILL.md +2 -2
package/dist/bin/cli.js
CHANGED
|
@@ -22,12 +22,6 @@ async function main() {
|
|
|
22
22
|
await sync();
|
|
23
23
|
break;
|
|
24
24
|
}
|
|
25
|
-
case "stats": {
|
|
26
|
-
const { setup } = await import("../src/commands/setup.js");
|
|
27
|
-
// Quick stats mode
|
|
28
|
-
console.log("Stats command coming soon.");
|
|
29
|
-
break;
|
|
30
|
-
}
|
|
31
25
|
default:
|
|
32
26
|
console.log(`
|
|
33
27
|
BuildPartner - Your AI Build Partner
|
|
@@ -38,7 +32,6 @@ async function main() {
|
|
|
38
32
|
buildpartner serve Start MCP server
|
|
39
33
|
buildpartner sync Re-sync all sessions to server
|
|
40
34
|
buildpartner log-session Log current session (hook)
|
|
41
|
-
buildpartner stats Quick stats
|
|
42
35
|
`);
|
|
43
36
|
}
|
|
44
37
|
}
|
package/dist/bin/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":";AAEA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,KAAK,UAAU,IAAI;IACjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAC3D,MAAM,KAAK,EAAE,CAAC;YACd,MAAM;QACR,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAC3D,MAAM,KAAK,EAAE,CAAC;YACd,MAAM;QACR,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;YACtE,MAAM,UAAU,EAAE,CAAC;YACnB,MAAM;QACR,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACzD,MAAM,IAAI,EAAE,CAAC;YACb,MAAM;QACR,CAAC;QACD
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":";AAEA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,KAAK,UAAU,IAAI;IACjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAC3D,MAAM,KAAK,EAAE,CAAC;YACd,MAAM;QACR,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAC3D,MAAM,KAAK,EAAE,CAAC;YACd,MAAM;QACR,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;YACtE,MAAM,UAAU,EAAE,CAAC;YACnB,MAAM;QACR,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACzD,MAAM,IAAI,EAAE,CAAC;YACb,MAAM;QACR,CAAC;QACD;YACE,OAAO,CAAC,GAAG,CAAC;;;;;;;;;CASjB,CAAC,CAAC;IACD,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/src/mcp/server.js
CHANGED
|
@@ -17,6 +17,30 @@ import { z } from "zod";
|
|
|
17
17
|
import { apiFetch, apiGet, apiPost } from "../api-client.js";
|
|
18
18
|
/** Helper to format a text response for MCP */
|
|
19
19
|
const textResponse = (text) => ({ content: [{ type: "text", text }] });
|
|
20
|
+
/** Turn an HTTP error status into a message the user can act on. */
|
|
21
|
+
function friendlyError(status) {
|
|
22
|
+
if (status === 401)
|
|
23
|
+
return "Not logged in. Run `npx buildpartner setup` to connect your account.";
|
|
24
|
+
if (status === 404)
|
|
25
|
+
return "Account not found. Your login may be out of date. Run `npx buildpartner setup` to reconnect.";
|
|
26
|
+
if (status === 403)
|
|
27
|
+
return ""; // handled separately (subscription block)
|
|
28
|
+
if (status === 503)
|
|
29
|
+
return "BuildPartner is temporarily unavailable. Try again in a minute.";
|
|
30
|
+
if (status >= 500)
|
|
31
|
+
return "BuildPartner's server hit an error. Try again in a minute. If it keeps happening, visit buildpartner.ai for status updates.";
|
|
32
|
+
return `Something went wrong (${status}). Run \`npx buildpartner setup\` to re-connect, or try again shortly.`;
|
|
33
|
+
}
|
|
34
|
+
/** Zod preprocessor: if the LLM sends a JSON string instead of an object/array, parse it. */
|
|
35
|
+
function jsonCoerce(val) {
|
|
36
|
+
if (typeof val === "string") {
|
|
37
|
+
try {
|
|
38
|
+
return JSON.parse(val);
|
|
39
|
+
}
|
|
40
|
+
catch { /* fall through to let zod report the error */ }
|
|
41
|
+
}
|
|
42
|
+
return val;
|
|
43
|
+
}
|
|
20
44
|
export function createServer() {
|
|
21
45
|
const server = new McpServer({ name: "buildpartner", version: "0.3.0" });
|
|
22
46
|
server.tool("get_personal_context", "Get your personal context: stats, AI profile, workspace, subscription status, and optionally recent session history. This is the main data source for most skills.", {
|
|
@@ -25,11 +49,11 @@ export function createServer() {
|
|
|
25
49
|
const queryString = include_sessions ? "?include_sessions=true" : "";
|
|
26
50
|
const res = await apiFetch(`/api/buildpartner/context${queryString}`);
|
|
27
51
|
if (!res)
|
|
28
|
-
return textResponse(JSON.stringify({ error: "Could not reach
|
|
52
|
+
return textResponse(JSON.stringify({ error: "Could not reach BuildPartner. Check your internet connection and try again." }));
|
|
29
53
|
if (res.status === 403)
|
|
30
54
|
return textResponse(await res.text());
|
|
31
55
|
if (!res.ok)
|
|
32
|
-
return textResponse(JSON.stringify({ error:
|
|
56
|
+
return textResponse(JSON.stringify({ error: friendlyError(res.status) }));
|
|
33
57
|
return textResponse(JSON.stringify(await res.json(), null, 2));
|
|
34
58
|
});
|
|
35
59
|
server.tool("get_expert_knowledge", "Search or fetch expert frameworks (pricing, content, launch, AI automation, etc). Also returns your personal context for personalized advice. Use query to search, or topic to fetch a specific framework.", {
|
|
@@ -45,27 +69,27 @@ export function createServer() {
|
|
|
45
69
|
const path = queryString ? `/api/buildpartner/expert-knowledge?${queryString}` : "/api/buildpartner/expert-knowledge";
|
|
46
70
|
const res = await apiFetch(path);
|
|
47
71
|
if (!res)
|
|
48
|
-
return textResponse(JSON.stringify({ error: "Could not reach
|
|
72
|
+
return textResponse(JSON.stringify({ error: "Could not reach BuildPartner. Check your internet connection and try again." }));
|
|
49
73
|
if (res.status === 403)
|
|
50
74
|
return textResponse(await res.text());
|
|
51
75
|
if (!res.ok)
|
|
52
|
-
return textResponse(JSON.stringify({ error:
|
|
76
|
+
return textResponse(JSON.stringify({ error: friendlyError(res.status) }));
|
|
53
77
|
return textResponse(JSON.stringify(await res.json(), null, 2));
|
|
54
78
|
});
|
|
55
79
|
server.tool("save_profile", "Save your AI profile. Updates multiple sections at once: writing_style, preferences, tech_identity, work_patterns, personality. Used after interviews or profile building.", {
|
|
56
|
-
updates: z.record(z.string(), z.any()).describe("Object with section names as keys and section data as values."),
|
|
57
|
-
signals: z.array(z.string()).optional().describe("Summary of what was learned, stored as raw signals."),
|
|
80
|
+
updates: z.preprocess(jsonCoerce, z.record(z.string(), z.any())).describe("Object with section names as keys and section data as values."),
|
|
81
|
+
signals: z.preprocess(jsonCoerce, z.array(z.string()).optional()).describe("Summary of what was learned, stored as raw signals."),
|
|
58
82
|
}, async ({ updates, signals }) => {
|
|
59
83
|
const payload = { ...updates };
|
|
60
84
|
if (signals)
|
|
61
85
|
payload.raw_signals = signals;
|
|
62
86
|
const res = await apiFetch("/api/buildpartner/profile", { method: "POST", body: JSON.stringify(payload) });
|
|
63
87
|
if (!res)
|
|
64
|
-
return textResponse(JSON.stringify({ error: "Could not reach
|
|
88
|
+
return textResponse(JSON.stringify({ error: "Could not reach BuildPartner. Check your internet connection and try again." }));
|
|
65
89
|
if (res.status === 403)
|
|
66
90
|
return textResponse(await res.text());
|
|
67
91
|
if (!res.ok)
|
|
68
|
-
return textResponse(JSON.stringify({ error:
|
|
92
|
+
return textResponse(JSON.stringify({ error: friendlyError(res.status) }));
|
|
69
93
|
return textResponse(JSON.stringify({ saved: true, sections: Object.keys(updates) }));
|
|
70
94
|
});
|
|
71
95
|
server.tool("get_quest_progress", "Check your quest progress: which quests are completed, active, or locked.", {}, async () => {
|
|
@@ -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;AAE7D,+CAA+C;AAC/C,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAExF,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAEzE,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,oKAAoK,EACpK;QACE,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qJAAqJ,CAAC;KACzM,EACD,KAAK,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE;QAC7B,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,4BAA4B,WAAW,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG;YAAE,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/skills/bp-coach/SKILL.md
CHANGED
|
@@ -6,6 +6,11 @@ Review my setup and tell me what to improve. Looks at how you use Claude Code, w
|
|
|
6
6
|
|
|
7
7
|
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`.
|
|
8
8
|
|
|
9
|
+
## Rules
|
|
10
|
+
|
|
11
|
+
- Only recommend BuildPartner skills (commands starting with `/bp-`). Do not recommend built-in Claude Code skills like /simplify, /review, etc.
|
|
12
|
+
- Do not display subscription status, trial info, or uses remaining. The system handles that separately.
|
|
13
|
+
|
|
9
14
|
## Instructions
|
|
10
15
|
|
|
11
16
|
1. Call `get_personal_context` with `{ "include_sessions": true }`.
|
|
@@ -35,7 +40,6 @@ Only call tools that are registered on the `buildpartner` MCP server. If a tool
|
|
|
35
40
|
|
|
36
41
|
**Activity**: {X sessions, Y tokens, main focus: Z}
|
|
37
42
|
**Streak**: {current streak}
|
|
38
|
-
**Subscription**: {trial/active/expired}
|
|
39
43
|
|
|
40
44
|
### What's working
|
|
41
45
|
- {1-2 things they're doing well}
|
|
@@ -53,4 +57,4 @@ Only call tools that are registered on the `buildpartner` MCP server. If a tool
|
|
|
53
57
|
|
|
54
58
|
5. If they have < 5 sessions, say: "Keep going. After a few more sessions I'll have real recommendations. For now, try /bp-interview to build your profile."
|
|
55
59
|
|
|
56
|
-
6. Call `check_status` with `{ "skill_name": "coach" }`.
|
|
60
|
+
6. Call `check_status` with `{ "skill_name": "bp-coach" }`.
|
|
@@ -40,4 +40,4 @@ Only call tools that are registered on the `buildpartner` MCP server. If a tool
|
|
|
40
40
|
|
|
41
41
|
6. If their question spans multiple domains, acknowledge it and pull from multiple frameworks. You have access to everything: don't silo yourself.
|
|
42
42
|
|
|
43
|
-
7. Call `check_status` with `{ "skill_name": "consult" }`.
|
|
43
|
+
7. Call `check_status` with `{ "skill_name": "bp-consult" }`.
|
|
@@ -55,4 +55,4 @@ Only call tools that are registered on the `buildpartner` MCP server. If a tool
|
|
|
55
55
|
|
|
56
56
|
6. If yes, edit the file. Keep it under 30 lines. Less is more.
|
|
57
57
|
|
|
58
|
-
7. Call `check_status` with `{ "skill_name": "enhance-claude-md" }`.
|
|
58
|
+
7. Call `check_status` with `{ "skill_name": "bp-enhance-claude-md" }`.
|
|
@@ -47,4 +47,4 @@ Only call tools that are registered on the `buildpartner` MCP server. If a tool
|
|
|
47
47
|
|
|
48
48
|
6. If they ask for monthly, adjust the card to show monthly totals, best week, and top 3 projects.
|
|
49
49
|
|
|
50
|
-
7. Call `check_status` with `{ "skill_name": "flex-socials" }`.
|
|
50
|
+
7. Call `check_status` with `{ "skill_name": "bp-flex-socials" }`.
|
|
@@ -108,4 +108,4 @@ If the user says "based on our back and forth, improve {skill}":
|
|
|
108
108
|
- Conflicting learnings aren't always bad, sometimes they're nuanced. Ask before consolidating.
|
|
109
109
|
- Keep skills concise. If an improvement makes the skill longer, also suggest what to cut.
|
|
110
110
|
|
|
111
|
-
Call `check_status` with `{ "skill_name": "improve-skill" }`.
|
|
111
|
+
Call `check_status` with `{ "skill_name": "bp-improve-skill" }`.
|
|
@@ -51,4 +51,4 @@ Only call tools that are registered on the `buildpartner` MCP server. If a tool
|
|
|
51
51
|
|
|
52
52
|
6. End with: "Your profile is saved. Every BuildPartner skill now personalizes to you."
|
|
53
53
|
|
|
54
|
-
7. Call `check_status` with `{ "skill_name": "interview" }`.
|
|
54
|
+
7. Call `check_status` with `{ "skill_name": "bp-interview" }`.
|
|
@@ -61,4 +61,4 @@ Only call tools that are registered on the `buildpartner` MCP server. If a tool
|
|
|
61
61
|
|
|
62
62
|
5. End with a summary, then: "Your life story is saved. Run /bp-life-story again to add more."
|
|
63
63
|
|
|
64
|
-
6. Call `check_status` with `{ "skill_name": "life-story" }`.
|
|
64
|
+
6. Call `check_status` with `{ "skill_name": "bp-life-story" }`.
|
|
@@ -65,4 +65,4 @@ Save to `~/.buildpartner/knowledge/experiences/{YYYY-MM-DD}-{brief-slug}.md`
|
|
|
65
65
|
- Write in their voice (use their AI profile writing style if available).
|
|
66
66
|
- The entry should be useful for future consultations, not just a diary entry.
|
|
67
67
|
|
|
68
|
-
9. Call `check_status` with `{ "skill_name": "log-experience" }`.
|
|
68
|
+
9. Call `check_status` with `{ "skill_name": "bp-log-experience" }`.
|
|
@@ -24,4 +24,4 @@ Only call tools that are registered on the `buildpartner` MCP server. If a tool
|
|
|
24
24
|
|
|
25
25
|
5. Tell the user: "Your dashboard is open."
|
|
26
26
|
|
|
27
|
-
6. Call `check_status` with `{ "skill_name": "open-dashboard" }`.
|
|
27
|
+
6. Call `check_status` with `{ "skill_name": "bp-open-dashboard" }`.
|
|
@@ -45,4 +45,4 @@ More quests coming soon. In the meantime: /bp-coach for setup reviews,
|
|
|
45
45
|
- If they say "skip" or "next", advance to the next quest.
|
|
46
46
|
- Each quest should feel like 1-3 minutes max.
|
|
47
47
|
|
|
48
|
-
7. Call `check_status` with `{ "skill_name": "quest-status" }`.
|
|
48
|
+
7. Call `check_status` with `{ "skill_name": "bp-quest-status" }`.
|
|
@@ -24,7 +24,7 @@ Only call tools that are registered on the `buildpartner` MCP server. If a tool
|
|
|
24
24
|
- {Project/activity 2} ({X sessions})
|
|
25
25
|
- {Project/activity 3} ({X sessions})
|
|
26
26
|
|
|
27
|
-
###
|
|
27
|
+
### Best session
|
|
28
28
|
{The most interesting or productive session this week. One sentence.}
|
|
29
29
|
|
|
30
30
|
### Add to your playbook
|
|
@@ -46,4 +46,4 @@ Code {X%} | Content {X%} | Research {X%} | Other {X%}
|
|
|
46
46
|
- If they had a great week, say so. If they were inconsistent, say that too. Be honest.
|
|
47
47
|
- End with nothing. No "let me know if you want more detail." Just the recap.
|
|
48
48
|
|
|
49
|
-
5. Call `check_status` with `{ "skill_name": "recap-week" }`.
|
|
49
|
+
5. Call `check_status` with `{ "skill_name": "bp-recap-week" }`.
|