create-expert 0.0.41 → 0.0.42
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/bin/cli.ts +14 -0
- package/dist/bin/cli.js +9 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/perstack.toml +98 -10
- package/package.json +1 -1
package/bin/cli.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
|
|
3
3
|
import { readFileSync } from "node:fs"
|
|
4
|
+
import { fileURLToPath } from "node:url"
|
|
4
5
|
import { PerstackError } from "@perstack/core"
|
|
5
6
|
import { findLockfile, loadLockfile, parsePerstackConfig } from "@perstack/perstack-toml"
|
|
6
7
|
import { runHandler, startHandler } from "@perstack/tui"
|
|
@@ -48,6 +49,19 @@ new Command()
|
|
|
48
49
|
.option("-i, --interactive-tool-call-result", "Query is interactive tool call result")
|
|
49
50
|
.action(async (query: string | undefined, options: Record<string, unknown>) => {
|
|
50
51
|
const config = parsePerstackConfig(readFileSync(tomlPath, "utf-8"))
|
|
52
|
+
|
|
53
|
+
// Resolve create-expert-skill server path to absolute so it works regardless of CWD.
|
|
54
|
+
// tomlPath resolves to dist/perstack.toml from compiled CLI (dist/bin/cli.js).
|
|
55
|
+
// ../../ goes: dist/ → create-expert/ → apps/, then into create-expert-skill/.
|
|
56
|
+
const skillServerPath = fileURLToPath(
|
|
57
|
+
new URL("../../create-expert-skill/dist/bin/server.js", tomlPath),
|
|
58
|
+
)
|
|
59
|
+
const skillFinderSkill =
|
|
60
|
+
config.experts?.["@create-expert/skill-finder"]?.skills?.["@perstack/create-expert-skill"]
|
|
61
|
+
if (skillFinderSkill && skillFinderSkill.type === "mcpStdioSkill") {
|
|
62
|
+
skillFinderSkill.args = [skillServerPath]
|
|
63
|
+
}
|
|
64
|
+
|
|
51
65
|
const lockfilePath = findLockfile()
|
|
52
66
|
const lockfile = lockfilePath ? (loadLockfile(lockfilePath) ?? undefined) : undefined
|
|
53
67
|
const additionalEnv = (env: Record<string, string>) => {
|
package/dist/bin/cli.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
import { readFileSync } from "node:fs";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
3
4
|
import { PerstackError } from "@perstack/core";
|
|
4
5
|
import { findLockfile, loadLockfile, parsePerstackConfig } from "@perstack/perstack-toml";
|
|
5
6
|
import { runHandler, startHandler } from "@perstack/tui";
|
|
@@ -28,6 +29,14 @@ new Command()
|
|
|
28
29
|
.option("-i, --interactive-tool-call-result", "Query is interactive tool call result")
|
|
29
30
|
.action(async (query, options) => {
|
|
30
31
|
const config = parsePerstackConfig(readFileSync(tomlPath, "utf-8"));
|
|
32
|
+
// Resolve create-expert-skill server path to absolute so it works regardless of CWD.
|
|
33
|
+
// tomlPath resolves to dist/perstack.toml from compiled CLI (dist/bin/cli.js).
|
|
34
|
+
// ../../ goes: dist/ → create-expert/ → apps/, then into create-expert-skill/.
|
|
35
|
+
const skillServerPath = fileURLToPath(new URL("../../create-expert-skill/dist/bin/server.js", tomlPath));
|
|
36
|
+
const skillFinderSkill = config.experts?.["@create-expert/skill-finder"]?.skills?.["@perstack/create-expert-skill"];
|
|
37
|
+
if (skillFinderSkill && skillFinderSkill.type === "mcpStdioSkill") {
|
|
38
|
+
skillFinderSkill.args = [skillServerPath];
|
|
39
|
+
}
|
|
31
40
|
const lockfilePath = findLockfile();
|
|
32
41
|
const lockfile = lockfilePath ? (loadLockfile(lockfilePath) ?? undefined) : undefined;
|
|
33
42
|
const additionalEnv = (env) => {
|
package/dist/bin/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AACzF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAE/D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAE7D,IAAI,OAAO,EAAE;KACV,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;KACtB,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC;KACpC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,QAAQ,CAAC,SAAS,EAAE,+CAA+C,CAAC;KACpE,MAAM,CAAC,YAAY,EAAE,gDAAgD,CAAC;KACtE,MAAM,CACL,kBAAkB,EAClB,2EAA2E,CAC5E;KACA,MAAM,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;KAClD,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC;KACzC,MAAM,CACL,6BAA6B,EAC7B,wFAAwF,CACzF;KACA,MAAM,CAAC,4BAA4B,EAAE,oDAAoD,CAAC;KAC1F,MAAM,CACL,qBAAqB,EACrB,4EAA4E,CAC7E;KACA,MAAM,CAAC,kBAAkB,EAAE,gCAAgC,CAAC;KAC5D,MAAM,CACL,mBAAmB,EACnB,gGAAgG,EAChG,CAAC,KAAa,EAAE,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAC7D,EAAc,CACf;KACA,MAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC;KAC7C,MAAM,CAAC,YAAY,EAAE,6CAA6C,CAAC;KACnE,MAAM,CAAC,wBAAwB,EAAE,2CAA2C,CAAC;KAC7E,MAAM,CACL,8BAA8B,EAC9B,2EAA2E,CAC5E;KACA,MAAM,CAAC,oCAAoC,EAAE,uCAAuC,CAAC;KACrF,MAAM,CAAC,KAAK,EAAE,KAAyB,EAAE,OAAgC,EAAE,EAAE;IAC5E,MAAM,MAAM,GAAG,mBAAmB,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/package.json
CHANGED
package/dist/perstack.toml
CHANGED
|
@@ -14,6 +14,7 @@ Delegate to your specialists and pass file paths between them. Do not read or in
|
|
|
14
14
|
## Delegates
|
|
15
15
|
|
|
16
16
|
- @create-expert/planner — designs expert architectures, writes plan to plan.md
|
|
17
|
+
- @create-expert/skill-finder — searches MCP registry for relevant skills, writes skill-report.md
|
|
17
18
|
- @create-expert/definition-writer — reads a plan file and writes perstack.toml
|
|
18
19
|
- @create-expert/expert-tester — tests a perstack.toml by exercising each expert
|
|
19
20
|
|
|
@@ -21,12 +22,14 @@ Delegate to your specialists and pass file paths between them. Do not read or in
|
|
|
21
22
|
|
|
22
23
|
1. If a perstack.toml already exists in the workspace, note its path
|
|
23
24
|
2. Delegate to planner: pass the user's request and the perstack.toml path if one exists
|
|
24
|
-
3.
|
|
25
|
-
4. Delegate to
|
|
26
|
-
5.
|
|
27
|
-
6.
|
|
25
|
+
3. If the plan includes MCP skill requirements (external API/service integrations), delegate to skill-finder: pass the plan.md path so it can search the MCP registry and write skill-report.md
|
|
26
|
+
4. Delegate to definition-writer: tell it to read plan.md AND skill-report.md (if step 3 ran) and write perstack.toml. IMPORTANT: explicitly include the skill-report.md path in the delegation message so the definition-writer knows to incorporate MCP skills from it.
|
|
27
|
+
5. Delegate to expert-tester: tell it to test perstack.toml
|
|
28
|
+
6. If the tester reports issues, delegate back to definition-writer with the tester's feedback and the plan file path, then re-test
|
|
29
|
+
7. If skill-report.md includes requiredEnv entries, inform the user which environment variables need to be set
|
|
30
|
+
8. attemptCompletion with a summary of what was created
|
|
28
31
|
"""
|
|
29
|
-
delegates = ["@create-expert/planner", "@create-expert/definition-writer", "@create-expert/expert-tester"]
|
|
32
|
+
delegates = ["@create-expert/planner", "@create-expert/skill-finder", "@create-expert/definition-writer", "@create-expert/expert-tester"]
|
|
30
33
|
|
|
31
34
|
[experts."create-expert".skills."@perstack/base"]
|
|
32
35
|
type = "mcpStdioSkill"
|
|
@@ -99,6 +102,13 @@ Experts must produce real, usable output — not ceremony. A programming expert
|
|
|
99
102
|
5. Consider what tools each expert needs (minimal set)
|
|
100
103
|
6. Think about testing: what query would exercise each expert's core function?
|
|
101
104
|
|
|
105
|
+
## Skill Requirements
|
|
106
|
+
|
|
107
|
+
When the expert needs to interact with external APIs or services (e.g., GitHub, Slack, databases, cloud providers), include a "Skill Requirements" section in the plan:
|
|
108
|
+
- List the external integrations needed
|
|
109
|
+
- Suggest search keywords for the MCP registry (try multiple variations)
|
|
110
|
+
- Include fallback approaches if no suitable MCP server is found (e.g., using exec with CLI tools, direct API calls)
|
|
111
|
+
|
|
102
112
|
## Output
|
|
103
113
|
|
|
104
114
|
Write your design to plan.md with the following sections:
|
|
@@ -109,6 +119,7 @@ Write your design to plan.md with the following sections:
|
|
|
109
119
|
4. **Skills required per expert** — which @perstack/base tools, any custom MCP servers
|
|
110
120
|
5. **Delegation structure** — who delegates to whom, with rationale
|
|
111
121
|
6. **Test scenario for each expert** — a concrete, realistic query that exercises the expert's core function
|
|
122
|
+
7. **MCP skill requirements** (if applicable) — external integrations needed, search keywords, fallback approaches
|
|
112
123
|
|
|
113
124
|
After writing the file, attemptCompletion with the file path.
|
|
114
125
|
"""
|
|
@@ -119,11 +130,74 @@ command = "npx"
|
|
|
119
130
|
packageName = "@perstack/base"
|
|
120
131
|
pick = ["readTextFile", "writeTextFile", "exec", "todo", "attemptCompletion"]
|
|
121
132
|
|
|
133
|
+
[experts."@create-expert/skill-finder"]
|
|
134
|
+
version = "1.0.0"
|
|
135
|
+
description = """
|
|
136
|
+
Searches the MCP registry for MCP servers that match expert skill requirements. Provide: path to plan.md \
|
|
137
|
+
containing a "Skill Requirements" section. Writes findings to skill-report.md with TOML configuration snippets.
|
|
138
|
+
"""
|
|
139
|
+
instruction = """
|
|
140
|
+
You are an MCP skill researcher. Your job is to find and evaluate MCP servers from the official registry that can serve as skills for Perstack experts.
|
|
141
|
+
|
|
142
|
+
## Investigation Process
|
|
143
|
+
|
|
144
|
+
1. Read the plan.md file to identify the "Skill Requirements" section
|
|
145
|
+
2. For each required integration, search the MCP registry using multiple keyword variations (e.g., for GitHub: "github", "git", "github api")
|
|
146
|
+
3. For promising candidates, get detailed server information
|
|
147
|
+
4. Verify npm package availability using exec: `npm info <package-name> --json` — check that the package exists, note version and weekly downloads
|
|
148
|
+
5. Assess compatibility with Perstack skill types (mcpStdioSkill for npm, mcpSseSkill for SSE/streamable-http)
|
|
149
|
+
|
|
150
|
+
## Evaluation Criteria
|
|
151
|
+
|
|
152
|
+
- Prefer npm+stdio packages (local execution, ENV support, no external dependency)
|
|
153
|
+
- Only recommend SSE/streamable-http remotes if they use HTTPS public URLs
|
|
154
|
+
- OCI packages are not directly supported — note that Docker manual setup is required
|
|
155
|
+
- Check that required environment variables are documented
|
|
156
|
+
- Prefer actively maintained packages with recent versions
|
|
157
|
+
|
|
158
|
+
## Output
|
|
159
|
+
|
|
160
|
+
Write skill-report.md with these sections for each integration:
|
|
161
|
+
|
|
162
|
+
### [Integration Name]
|
|
163
|
+
- **Server**: registry name and version
|
|
164
|
+
- **Type**: mcpStdioSkill / mcpSseSkill / unsupported
|
|
165
|
+
- **TOML snippet**: ready-to-paste skill configuration
|
|
166
|
+
- **Environment variables**: list of required env vars with descriptions
|
|
167
|
+
- **Notes**: compatibility concerns, setup instructions, alternatives considered
|
|
168
|
+
|
|
169
|
+
Include a TOML snippet like:
|
|
170
|
+
```toml
|
|
171
|
+
[experts."expert-name".skills."skill-key"]
|
|
172
|
+
type = "mcpStdioSkill"
|
|
173
|
+
command = "npx"
|
|
174
|
+
packageName = "@scope/package-name"
|
|
175
|
+
requiredEnv = ["API_KEY"]
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
If no suitable MCP server is found, document the fallback approach (e.g., using exec with CLI tools).
|
|
179
|
+
|
|
180
|
+
After writing skill-report.md, attemptCompletion with the file path.
|
|
181
|
+
"""
|
|
182
|
+
|
|
183
|
+
[experts."@create-expert/skill-finder".skills."@perstack/base"]
|
|
184
|
+
type = "mcpStdioSkill"
|
|
185
|
+
command = "npx"
|
|
186
|
+
packageName = "@perstack/base"
|
|
187
|
+
pick = ["readTextFile", "writeTextFile", "exec", "todo", "attemptCompletion"]
|
|
188
|
+
|
|
189
|
+
# When published to npm, use: command = "npx", packageName = "@perstack/create-expert-skill"
|
|
190
|
+
[experts."@create-expert/skill-finder".skills."@perstack/create-expert-skill"]
|
|
191
|
+
type = "mcpStdioSkill"
|
|
192
|
+
command = "bun"
|
|
193
|
+
args = ["./apps/create-expert-skill/dist/bin/server.js"]
|
|
194
|
+
pick = ["searchMcpRegistry", "getMcpServerDetail"]
|
|
195
|
+
|
|
122
196
|
[experts."@create-expert/definition-writer"]
|
|
123
197
|
version = "1.0.0"
|
|
124
198
|
description = """
|
|
125
199
|
Writes Perstack expert definitions in perstack.toml from a design plan. Provide: path to the plan file (e.g. plan.md). \
|
|
126
|
-
Optionally include feedback from a previous test round to address.
|
|
200
|
+
Optionally include: (1) feedback from a previous test round to address, (2) path to skill-report.md with MCP registry findings.
|
|
127
201
|
"""
|
|
128
202
|
instruction = """
|
|
129
203
|
You are a Perstack definition writer. Read a design plan file and write the corresponding perstack.toml.
|
|
@@ -187,13 +261,27 @@ pick = ["tool1", "tool2"] # optional, include specific tools
|
|
|
187
261
|
- Always include version, description, instruction for each expert
|
|
188
262
|
- Produce valid TOML — no syntax errors
|
|
189
263
|
|
|
264
|
+
## MCP Registry Skills
|
|
265
|
+
|
|
266
|
+
If a skill-report.md path is provided in the query, read it for MCP registry findings. The report contains:
|
|
267
|
+
- Recommended MCP servers with TOML configuration snippets
|
|
268
|
+
- Environment variables that need to be set (requiredEnv)
|
|
269
|
+
- Compatibility notes and fallback suggestions
|
|
270
|
+
|
|
271
|
+
To incorporate MCP skills into the expert definition:
|
|
272
|
+
- Copy the TOML skill configuration snippets from the report into the appropriate expert's skills section
|
|
273
|
+
- Use a descriptive skill key (e.g., `"@github/github-mcp-server"`)
|
|
274
|
+
- Include any requiredEnv from the report
|
|
275
|
+
- If the report recommends a fallback (exec-based), use that instead
|
|
276
|
+
|
|
190
277
|
## Process
|
|
191
278
|
|
|
192
279
|
1. Read the plan file specified in the query
|
|
193
|
-
2. If a
|
|
194
|
-
3.
|
|
195
|
-
4.
|
|
196
|
-
5.
|
|
280
|
+
2. If a skill-report.md path was provided, read it for MCP skill configurations
|
|
281
|
+
3. If a perstack.toml already exists, read it first. You MUST preserve ALL existing expert definitions exactly as they are — only add or modify experts described in the plan.
|
|
282
|
+
4. Write the perstack.toml with both the preserved existing experts AND the new expert definitions from the plan and skill report
|
|
283
|
+
5. If feedback from a previous test round was provided, address those issues
|
|
284
|
+
6. attemptCompletion when the perstack.toml has been written
|
|
197
285
|
"""
|
|
198
286
|
|
|
199
287
|
[experts."@create-expert/definition-writer".skills."@perstack/base"]
|