create-codemodekit 0.2.0 → 0.3.0

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.
Files changed (37) hide show
  1. package/README.md +22 -3
  2. package/dist/agent-plugin.d.ts.map +1 -1
  3. package/dist/agent-plugin.js +1 -2
  4. package/dist/agent-plugin.js.map +1 -1
  5. package/dist/authoring-skill.d.ts +7 -0
  6. package/dist/authoring-skill.d.ts.map +1 -0
  7. package/dist/authoring-skill.js +42 -0
  8. package/dist/authoring-skill.js.map +1 -0
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +60 -6
  11. package/dist/cli.js.map +1 -1
  12. package/dist/cursor-plugin.d.ts +25 -0
  13. package/dist/cursor-plugin.d.ts.map +1 -0
  14. package/dist/cursor-plugin.js +177 -0
  15. package/dist/cursor-plugin.js.map +1 -0
  16. package/dist/index.d.ts +3 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +3 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/plugin-build.d.ts +19 -0
  21. package/dist/plugin-build.d.ts.map +1 -0
  22. package/dist/plugin-build.js +177 -0
  23. package/dist/plugin-build.js.map +1 -0
  24. package/dist/plugin-cli.d.ts +3 -0
  25. package/dist/plugin-cli.d.ts.map +1 -0
  26. package/dist/plugin-cli.js +102 -0
  27. package/dist/plugin-cli.js.map +1 -0
  28. package/dist/scaffold.d.ts +5 -0
  29. package/dist/scaffold.d.ts.map +1 -1
  30. package/dist/scaffold.js +87 -2
  31. package/dist/scaffold.js.map +1 -1
  32. package/package.json +21 -6
  33. package/skills/build-codemodekit-plugin/SKILL.md +44 -0
  34. package/skills/build-codemodekit-plugin/agents/openai.yaml +4 -0
  35. package/skills/build-codemodekit-plugin/references/generator.md +42 -0
  36. package/skills/build-codemodekit-plugin/references/plugin-layout.md +38 -0
  37. package/skills/build-codemodekit-plugin/references/programmatic-api.md +48 -0
@@ -0,0 +1,177 @@
1
+ import { cp, mkdir, readFile, rename, rm, stat, writeFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { build } from "esbuild";
4
+ const DEFAULT_ENTRYPOINT = "src/server.mjs";
5
+ const DEFAULT_ARTIFACT_DIRECTORY = "dist/plugin";
6
+ const ARTIFACT_ENTRYPOINT = "server.mjs";
7
+ /**
8
+ * Bundles a generated CodeModeKit server and copies its portable Agent Plugin
9
+ * components into a dependency-free distribution directory.
10
+ */
11
+ export async function buildAgentPlugin(options) {
12
+ const root = path.resolve(options.root);
13
+ const entrypoint = resolveContainedPath(root, options.entrypoint ?? DEFAULT_ENTRYPOINT, "Plugin entrypoint");
14
+ const artifactDirectory = resolveContainedPath(root, options.artifactDirectory ?? DEFAULT_ARTIFACT_DIRECTORY, "Plugin artifact directory");
15
+ const artifactParent = path.dirname(artifactDirectory);
16
+ const stagingDirectory = path.join(artifactParent, `.${path.basename(artifactDirectory)}.${String(process.pid)}.${String(Date.now())}.tmp`);
17
+ const server = path.join(stagingDirectory, ARTIFACT_ENTRYPOINT);
18
+ await assertRegularFile(entrypoint, "Plugin entrypoint");
19
+ await mkdir(artifactParent, { recursive: true });
20
+ await rm(stagingDirectory, { recursive: true, force: true });
21
+ await mkdir(stagingDirectory, { recursive: true });
22
+ try {
23
+ const buildResult = await build({
24
+ entryPoints: [entrypoint],
25
+ outfile: server,
26
+ absWorkingDir: root,
27
+ bundle: true,
28
+ platform: "node",
29
+ format: "esm",
30
+ target: "node20",
31
+ external: ["create-codemodekit"],
32
+ banner: {
33
+ js: [
34
+ 'import { createRequire as __createRequire } from "node:module";',
35
+ 'import { fileURLToPath as __fileURLToPath } from "node:url";',
36
+ 'import { dirname as __pathDirname } from "node:path";',
37
+ "const require = __createRequire(import.meta.url);",
38
+ "const __filename = __fileURLToPath(import.meta.url);",
39
+ "const __dirname = __pathDirname(__filename);",
40
+ ].join("\n"),
41
+ },
42
+ legalComments: "none",
43
+ logLevel: "silent",
44
+ metafile: true,
45
+ });
46
+ const [manifest, mcpConfig] = await Promise.all([
47
+ readJsonObject(path.join(root, "plugin.json"), "plugin.json"),
48
+ readJsonObject(path.join(root, "mcp.json"), "mcp.json"),
49
+ ]);
50
+ const portableMcpConfig = projectArtifactMcpConfig(mcpConfig, options.serverName);
51
+ const quickJsWasm = resolveQuickJsReleaseWasm(root, Object.keys(buildResult.metafile.inputs));
52
+ await Promise.all([
53
+ writeJson(path.join(stagingDirectory, "plugin.json"), manifest),
54
+ writeJson(path.join(stagingDirectory, "mcp.json"), portableMcpConfig),
55
+ cp(quickJsWasm, path.join(stagingDirectory, "emscripten-module.wasm")),
56
+ copyIfPresent(root, stagingDirectory, "skills"),
57
+ copyIfPresent(root, stagingDirectory, "assets"),
58
+ copyIfPresent(root, stagingDirectory, "README.md"),
59
+ copyIfPresent(root, stagingDirectory, "LICENSE"),
60
+ ]);
61
+ await rm(artifactDirectory, { recursive: true, force: true });
62
+ await rename(stagingDirectory, artifactDirectory);
63
+ const output = buildResult.metafile.outputs[path.resolve(server)];
64
+ const serverBytes = output?.bytes ??
65
+ (await stat(path.join(artifactDirectory, ARTIFACT_ENTRYPOINT))).size;
66
+ const wasmBytes = (await stat(path.join(artifactDirectory, "emscripten-module.wasm"))).size;
67
+ return {
68
+ root,
69
+ artifactDirectory,
70
+ entrypoint,
71
+ server: path.join(artifactDirectory, ARTIFACT_ENTRYPOINT),
72
+ bytes: serverBytes + wasmBytes,
73
+ };
74
+ }
75
+ catch (error) {
76
+ await rm(stagingDirectory, { recursive: true, force: true });
77
+ throw error;
78
+ }
79
+ }
80
+ function resolveQuickJsReleaseWasm(root, buildInputs) {
81
+ const moduleInput = buildInputs.find((input) => {
82
+ const normalized = input.replaceAll("\\", "/");
83
+ return (normalized.includes("quickjs-wasmfile-release-sync") &&
84
+ normalized.endsWith("/emscripten-module.mjs"));
85
+ });
86
+ if (moduleInput === undefined) {
87
+ throw new Error("Could not locate the bundled QuickJS release WASM module");
88
+ }
89
+ return path.join(path.dirname(path.resolve(root, moduleInput)), "emscripten-module.wasm");
90
+ }
91
+ function projectArtifactMcpConfig(config, requestedServerName) {
92
+ const rawServers = config.mcpServers;
93
+ if (!isRecord(rawServers)) {
94
+ throw new TypeError("mcp.json must contain an mcpServers object");
95
+ }
96
+ const stdioNames = Object.entries(rawServers)
97
+ .filter(([, value]) => isRecord(value) && value.type === "stdio")
98
+ .map(([name]) => name);
99
+ const serverName = requestedServerName ??
100
+ (stdioNames.length === 1 ? stdioNames[0] : undefined);
101
+ if (serverName === undefined || !stdioNames.includes(serverName)) {
102
+ throw new TypeError("Agent Plugin build requires exactly one stdio server or an explicit serverName");
103
+ }
104
+ const sourceServer = rawServers[serverName];
105
+ if (!isRecord(sourceServer)) {
106
+ throw new TypeError(`Invalid MCP server entry: ${serverName}`);
107
+ }
108
+ const { cwd: _cwd, ...serverWithoutCwd } = sourceServer;
109
+ return {
110
+ ...config,
111
+ mcpServers: {
112
+ ...rawServers,
113
+ [serverName]: {
114
+ ...serverWithoutCwd,
115
+ type: "stdio",
116
+ command: "node",
117
+ args: [`\${PLUGIN_ROOT}/${ARTIFACT_ENTRYPOINT}`],
118
+ },
119
+ },
120
+ };
121
+ }
122
+ async function copyIfPresent(root, destinationRoot, name) {
123
+ const source = path.join(root, name);
124
+ try {
125
+ await stat(source);
126
+ }
127
+ catch (error) {
128
+ if (isMissing(error))
129
+ return;
130
+ throw error;
131
+ }
132
+ await cp(source, path.join(destinationRoot, name), { recursive: true });
133
+ }
134
+ async function readJsonObject(file, label) {
135
+ let value;
136
+ try {
137
+ value = JSON.parse(await readFile(file, "utf8"));
138
+ }
139
+ catch (error) {
140
+ throw new TypeError(`Could not read ${label}`, { cause: error });
141
+ }
142
+ if (!isRecord(value)) {
143
+ throw new TypeError(`${label} must contain a JSON object`);
144
+ }
145
+ return value;
146
+ }
147
+ async function writeJson(file, value) {
148
+ await writeFile(file, `${JSON.stringify(value, null, 2)}\n`, "utf8");
149
+ }
150
+ async function assertRegularFile(file, label) {
151
+ let details;
152
+ try {
153
+ details = await stat(file);
154
+ }
155
+ catch (error) {
156
+ throw new TypeError(`${label} does not exist: ${file}`, { cause: error });
157
+ }
158
+ if (!details.isFile()) {
159
+ throw new TypeError(`${label} must be a file: ${file}`);
160
+ }
161
+ }
162
+ function resolveContainedPath(root, value, label) {
163
+ const resolved = path.resolve(root, value);
164
+ if (resolved === root || !resolved.startsWith(`${root}${path.sep}`)) {
165
+ throw new TypeError(`${label} must stay within the project root`);
166
+ }
167
+ return resolved;
168
+ }
169
+ function isRecord(value) {
170
+ return value !== null && typeof value === "object" && !Array.isArray(value);
171
+ }
172
+ function isMissing(error) {
173
+ return (error instanceof Error &&
174
+ "code" in error &&
175
+ error.code === "ENOENT");
176
+ }
177
+ //# sourceMappingURL=plugin-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-build.js","sourceRoot":"","sources":["../src/plugin-build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export declare function runPluginCli(args: readonly string[]): Promise<void>;
3
+ //# sourceMappingURL=plugin-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-cli.d.ts","sourceRoot":"","sources":["../src/plugin-cli.ts"],"names":[],"mappings":";AAiBA,wBAAsB,YAAY,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4CzE"}
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/env node
2
+ import path from "node:path";
3
+ import { getCursorPluginStatus, installCursorPlugin, uninstallCursorPlugin, } from "./cursor-plugin.js";
4
+ import { buildAgentPlugin } from "./plugin-build.js";
5
+ export async function runPluginCli(args) {
6
+ if (args.includes("--help") || args.includes("-h")) {
7
+ process.stdout.write(usage());
8
+ return;
9
+ }
10
+ const options = parseOptions(args);
11
+ if (options.command === "build") {
12
+ const result = await buildAgentPlugin({ root: options.root });
13
+ process.stdout.write(`Built portable Agent Plugin at ${result.artifactDirectory} (${String(result.bytes)} bytes)\n`);
14
+ return;
15
+ }
16
+ if (options.target !== "cursor") {
17
+ throw new TypeError(`${options.command} requires the cursor target`);
18
+ }
19
+ if (options.command === "install") {
20
+ const result = await installCursorPlugin({
21
+ root: options.root,
22
+ ...(options.cursorHome === undefined ? {} : { cursorHome: options.cursorHome }),
23
+ });
24
+ process.stdout.write(`Installed ${result.pluginName} for Cursor at ${result.destination}\n` +
25
+ "Reload Cursor with Developer: Reload Window.\n");
26
+ return;
27
+ }
28
+ if (options.command === "status") {
29
+ const result = await getCursorPluginStatus({
30
+ root: options.root,
31
+ ...(options.cursorHome === undefined ? {} : { cursorHome: options.cursorHome }),
32
+ });
33
+ process.stdout.write(`${result.pluginName}: ${result.installed ? "installed" : "not installed"} (${result.destination})\n`);
34
+ return;
35
+ }
36
+ const result = await uninstallCursorPlugin({
37
+ root: options.root,
38
+ ...(options.cursorHome === undefined ? {} : { cursorHome: options.cursorHome }),
39
+ });
40
+ process.stdout.write(`${result.pluginName}: ${result.installed ? "installed" : "uninstalled"} (${result.destination})\n`);
41
+ }
42
+ function parseOptions(args) {
43
+ const positional = [];
44
+ let root = process.cwd();
45
+ let cursorHome;
46
+ for (let index = 0; index < args.length; index += 1) {
47
+ const argument = args[index];
48
+ if (argument === undefined)
49
+ continue;
50
+ if (!argument.startsWith("-")) {
51
+ positional.push(argument);
52
+ continue;
53
+ }
54
+ const value = args[index + 1];
55
+ if (value === undefined || value.startsWith("-")) {
56
+ throw new TypeError(`Missing value for ${argument}`);
57
+ }
58
+ index += 1;
59
+ if (argument === "--root") {
60
+ root = path.resolve(value);
61
+ }
62
+ else if (argument === "--cursor-home") {
63
+ cursorHome = path.resolve(value);
64
+ }
65
+ else {
66
+ throw new TypeError(`Unknown option: ${argument}`);
67
+ }
68
+ }
69
+ const command = positional[0];
70
+ if (command !== "build" &&
71
+ command !== "install" &&
72
+ command !== "status" &&
73
+ command !== "uninstall") {
74
+ throw new TypeError("Expected build, install cursor, status cursor, or uninstall cursor");
75
+ }
76
+ const target = positional[1];
77
+ if (positional.length > 2 || (target !== undefined && target !== "cursor")) {
78
+ throw new TypeError(`Unexpected plugin command: ${positional.join(" ")}`);
79
+ }
80
+ return {
81
+ command,
82
+ ...(target === undefined ? {} : { target }),
83
+ root,
84
+ ...(cursorHome === undefined ? {} : { cursorHome }),
85
+ };
86
+ }
87
+ function usage() {
88
+ return `Build and install a generated CodeModeKit Agent Plugin.
89
+
90
+ Usage:
91
+ codemodekit-plugin build [--root <directory>]
92
+ codemodekit-plugin install cursor [--root <directory>] [--cursor-home <directory>]
93
+ codemodekit-plugin status cursor [--root <directory>] [--cursor-home <directory>]
94
+ codemodekit-plugin uninstall cursor [--root <directory>] [--cursor-home <directory>]
95
+ `;
96
+ }
97
+ runPluginCli(process.argv.slice(2)).catch((error) => {
98
+ const message = error instanceof Error ? error.message : String(error);
99
+ process.stderr.write(`codemodekit-plugin: ${message}\n\n${usage()}`);
100
+ process.exitCode = 1;
101
+ });
102
+ //# sourceMappingURL=plugin-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-cli.js","sourceRoot":"","sources":["../src/plugin-cli.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,8 @@ export interface ScaffoldCodeModeMcpOptions {
17
17
  readonly policy?: "allow-all" | "deny-all";
18
18
  /** Generate a portable Agent Plugins 1.0 package and companion skill. */
19
19
  readonly agentPlugin?: boolean | AgentPluginScaffoldOptions;
20
+ /** Install project-local authoring guidance under .agents/skills. Defaults to true. */
21
+ readonly authoringSkill?: boolean;
20
22
  readonly install?: boolean;
21
23
  /** Override the generated runtime dependency, including with a file: specifier. */
22
24
  readonly codemodekitVersion?: string;
@@ -27,11 +29,14 @@ export interface ScaffoldCodeModeMcpOptions {
27
29
  export interface GeneratedAgentPluginResult extends ScaffoldAgentPluginResult {
28
30
  readonly synced: boolean;
29
31
  readonly syncError?: string;
32
+ readonly built: boolean;
33
+ readonly artifactDirectory?: string;
30
34
  }
31
35
  export interface ScaffoldResult {
32
36
  readonly directory: string;
33
37
  readonly entrypoint: string;
34
38
  readonly installed: boolean;
39
+ readonly authoringSkillDirectory?: string;
35
40
  readonly agentPlugin?: GeneratedAgentPluginResult;
36
41
  }
37
42
  export declare function scaffoldCodeModeMcp(options: ScaffoldCodeModeMcpOptions): Promise<ScaffoldResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,yBAAyB,EAC/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAOlD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,yFAAyF;IACzF,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;IAC3C,yEAAyE;IACzE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,0BAA0B,CAAC;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,mFAAmF;IACnF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,mDAAmD;IACnD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,0BAA2B,SAAQ,yBAAyB;IAC3E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,0BAA0B,CAAC;CACnD;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,cAAc,CAAC,CA6IzB;AAED,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAAC;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAyBjE"}
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,yBAAyB,EAC/B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAOlD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,yFAAyF;IACzF,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;IAC3C,yEAAyE;IACzE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,0BAA0B,CAAC;IAC5D,uFAAuF;IACvF,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,mFAAmF;IACnF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,mDAAmD;IACnD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,0BAA2B,SAAQ,yBAAyB;IAC3E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,0BAA0B,CAAC;CACnD;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,cAAc,CAAC,CAkLzB;AAED,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAAC;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AA+DD,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAyBjE"}
package/dist/scaffold.js CHANGED
@@ -3,9 +3,10 @@ import { readFileSync } from "node:fs";
3
3
  import { mkdir, readdir, writeFile } from "node:fs/promises";
4
4
  import path from "node:path";
5
5
  import { normalizePortableName, scaffoldAgentPlugin, } from "./agent-plugin.js";
6
+ import { installProjectAuthoringSkill } from "./authoring-skill.js";
6
7
  const PACKAGE_VERSION = readPackageVersion();
7
8
  // The generator and batteries-included runtime release independently.
8
- const DEFAULT_CODEMODEKIT_VERSION = "^0.1.0";
9
+ const DEFAULT_CODEMODEKIT_VERSION = "^0.2.0";
9
10
  const DEFAULT_CREATE_CODEMODEKIT_VERSION = `^${PACKAGE_VERSION}`;
10
11
  export async function scaffoldCodeModeMcp(options) {
11
12
  const cwd = options.cwd ?? process.cwd();
@@ -15,6 +16,7 @@ export async function scaffoldCodeModeMcp(options) {
15
16
  const packageName = validPackageName(options.packageName ?? packageNameFromDirectory(directory));
16
17
  const policy = options.policy ?? "allow-all";
17
18
  const install = options.install ?? true;
19
+ const includeAuthoringSkill = options.authoringSkill ?? true;
18
20
  const agentPluginOptions = resolveAgentPluginOptions(options.agentPlugin);
19
21
  const pluginName = agentPluginOptions === undefined
20
22
  ? undefined
@@ -36,7 +38,13 @@ export async function scaffoldCodeModeMcp(options) {
36
38
  start: "node src/server.mjs",
37
39
  ...(agentPluginOptions === undefined
38
40
  ? {}
39
- : { "plugin:sync": "node src/server.mjs --sync-plugin" }),
41
+ : {
42
+ "plugin:sync": "node src/server.mjs --sync-plugin",
43
+ "plugin:build": "codemodekit-plugin build",
44
+ "plugin:install:cursor": "codemodekit-plugin install cursor",
45
+ "plugin:status:cursor": "codemodekit-plugin status cursor",
46
+ "plugin:uninstall:cursor": "codemodekit-plugin uninstall cursor",
47
+ }),
40
48
  },
41
49
  dependencies: { "codemodekit": codemodekitVersion },
42
50
  ...(agentPluginOptions === undefined
@@ -51,6 +59,15 @@ export async function scaffoldCodeModeMcp(options) {
51
59
  await Promise.all([
52
60
  writeFile(path.join(directory, "package.json"), `${JSON.stringify(packageJson, null, 2)}\n`, "utf8"),
53
61
  writeFile(path.join(directory, ".gitignore"), "node_modules/\n.env\n.env.*\n!.env.example\n", "utf8"),
62
+ writeFile(path.join(directory, "README.md"), renderProjectReadme({
63
+ packageName,
64
+ serverName,
65
+ mcpName,
66
+ mcpCommand: options.mcpCommand,
67
+ policy,
68
+ agentPlugin: agentPluginOptions !== undefined,
69
+ authoringSkill: includeAuthoringSkill,
70
+ }), "utf8"),
54
71
  writeFile(entrypoint, renderServer({
55
72
  serverName,
56
73
  mcpName,
@@ -61,6 +78,9 @@ export async function scaffoldCodeModeMcp(options) {
61
78
  : { agentPlugin: { skillName } }),
62
79
  }), "utf8"),
63
80
  ]);
81
+ const authoringSkillDirectory = includeAuthoringSkill
82
+ ? await installProjectAuthoringSkill({ root: directory })
83
+ : undefined;
64
84
  let generatedPlugin;
65
85
  if (agentPluginOptions !== undefined &&
66
86
  pluginName !== undefined &&
@@ -93,21 +113,83 @@ export async function scaffoldCodeModeMcp(options) {
93
113
  syncError = error instanceof Error ? error.message : String(error);
94
114
  }
95
115
  }
116
+ let built = false;
117
+ let artifactDirectory;
118
+ if (generatedPlugin !== undefined && install) {
119
+ await runPluginBuild(directory);
120
+ built = true;
121
+ artifactDirectory = path.join(directory, "dist", "plugin");
122
+ }
96
123
  return {
97
124
  directory,
98
125
  entrypoint,
99
126
  installed: install,
127
+ ...(authoringSkillDirectory === undefined
128
+ ? {}
129
+ : { authoringSkillDirectory }),
100
130
  ...(generatedPlugin === undefined
101
131
  ? {}
102
132
  : {
103
133
  agentPlugin: {
104
134
  ...generatedPlugin,
105
135
  synced,
136
+ built,
106
137
  ...(syncError === undefined ? {} : { syncError }),
138
+ ...(artifactDirectory === undefined ? {} : { artifactDirectory }),
107
139
  },
108
140
  }),
109
141
  };
110
142
  }
143
+ function renderProjectReadme(options) {
144
+ const pluginSection = options.agentPlugin
145
+ ? `
146
+ ## Agent Plugin
147
+
148
+ Refresh the companion skill after the upstream tool catalog changes, then rebuild the self-contained plugin:
149
+
150
+ \`\`\`sh
151
+ npm run plugin:sync
152
+ npm run plugin:build
153
+ \`\`\`
154
+
155
+ The portable package is written to \`dist/plugin\`; it does not require this project's \`node_modules\`. Credentials and \`.env\` files are never copied into it.
156
+
157
+ For Cursor, install a concrete local copy and reload the window:
158
+
159
+ \`\`\`sh
160
+ npm run plugin:install:cursor
161
+ \`\`\`
162
+
163
+ Run \`npm run plugin:status:cursor\` to inspect it and \`npm run plugin:uninstall:cursor\` to remove it. Reinstall after changing source, policy, metadata, or generated references.
164
+ `
165
+ : "";
166
+ const authoringSection = options.authoringSkill
167
+ ? `
168
+ ## Development guidance
169
+
170
+ The project-local \`.agents/skills/build-codemodekit-plugin\` skill gives compatible coding agents the CodeModeKit authoring and maintenance workflow.
171
+ `
172
+ : "";
173
+ return `# ${options.packageName}
174
+
175
+ Code Mode MCP server generated by [CodeModeKit](https://github.com/stjbrown/codemodekit).
176
+
177
+ ## Run
178
+
179
+ \`\`\`sh
180
+ npm start
181
+ \`\`\`
182
+
183
+ The downstream server is \`${options.serverName}\`. It wraps the \`${options.mcpName}\` source using this shell-free process configuration:
184
+
185
+ \`\`\`json
186
+ ${JSON.stringify(options.mcpCommand, null, 2)}
187
+ \`\`\`
188
+
189
+ The generated tool policy is \`${options.policy}\`. Review \`src/server.mjs\` before exposing the server, and keep credentials in uncommitted environment files or the upstream tool's supported secret mechanism.
190
+ ${pluginSection}${authoringSection}
191
+ `;
192
+ }
111
193
  export function renderServer(options) {
112
194
  const policyFactory = options.policy === "allow-all" ? "allowAllToolCalls" : "denyAllToolCalls";
113
195
  if (options.agentPlugin !== undefined) {
@@ -202,6 +284,9 @@ function runNpmInstall(directory) {
202
284
  function runPluginSync(directory) {
203
285
  return runCommand("npm", ["run", "plugin:sync"], directory, "Agent Plugin catalog sync");
204
286
  }
287
+ function runPluginBuild(directory) {
288
+ return runCommand("npm", ["run", "plugin:build"], directory, "Agent Plugin build");
289
+ }
205
290
  function runCommand(command, args, directory, label) {
206
291
  return new Promise((resolve, reject) => {
207
292
  const child = spawn(command, [...args], {
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-codemodekit",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Scaffold runnable CodeModeKit servers and portable Agent Plugins from MCP commands.",
5
5
  "author": "Stephen Brown",
6
6
  "license": "Apache-2.0",
@@ -21,7 +21,8 @@
21
21
  "node": ">=20"
22
22
  },
23
23
  "bin": {
24
- "create-codemodekit": "./dist/cli.js"
24
+ "create-codemodekit": "./dist/cli.js",
25
+ "codemodekit-plugin": "./dist/plugin-cli.js"
25
26
  },
26
27
  "exports": {
27
28
  ".": {
@@ -29,10 +30,24 @@
29
30
  "default": "./dist/index.js"
30
31
  }
31
32
  },
32
- "files": ["dist/*.js", "dist/*.d.ts", "dist/*.map"],
33
- "keywords": ["code-mode", "mcp", "model-context-protocol", "agent-plugin", "agent-skill", "scaffold"],
33
+ "files": [
34
+ "dist/*.js",
35
+ "dist/*.d.ts",
36
+ "dist/*.map",
37
+ "skills/**/*"
38
+ ],
39
+ "keywords": [
40
+ "code-mode",
41
+ "mcp",
42
+ "model-context-protocol",
43
+ "agent-plugin",
44
+ "agent-skill",
45
+ "scaffold"
46
+ ],
34
47
  "publishConfig": {
35
48
  "access": "public"
36
49
  },
37
- "dependencies": {}
38
- }
50
+ "dependencies": {
51
+ "esbuild": "0.28.1"
52
+ }
53
+ }
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: build-codemodekit-plugin
3
+ description: Scaffold, retrofit, or maintain CodeModeKit servers and portable Agent Plugins with companion runtime skills. Use when creating a Code Mode MCP wrapper from an MCP command, adding Agent Plugins 1.0 packaging, refreshing generated tool TypeScript, configuring tool policy, installing a plugin into Cursor, or diagnosing a generated CodeModeKit project.
4
+ ---
5
+
6
+ # Build a CodeModeKit Plugin
7
+
8
+ Prefer CodeModeKit's generator and lifecycle commands over hand-writing manifests, bundles, or generated tool declarations.
9
+
10
+ ## Create a new project
11
+
12
+ 1. Identify a short source name and a shell-free MCP executable plus arguments.
13
+ 2. Run:
14
+
15
+ ```sh
16
+ npm create codemodekit@latest <directory> -- \
17
+ --mcp-name <source-name> \
18
+ --mcp-command '<executable> [args...]' \
19
+ --agent-plugin
20
+ ```
21
+
22
+ 3. Inspect `src/server.mjs`, `plugin.json`, `mcp.json`, and the generated runtime skill before changing defaults.
23
+ 4. Keep credentials outside committed files. Pass an env-file argument to the upstream executable when it supports one; do not embed secrets in `mcp.json`.
24
+ 5. Run `npm run plugin:sync` after credentials and the upstream MCP are available.
25
+ 6. Run `npm run plugin:build` to recreate the self-contained `dist/plugin` package.
26
+ 7. Test `npm start` through an MCP client and confirm both `run_typescript` and `search_tools` are advertised.
27
+
28
+ Read [references/generator.md](references/generator.md) for flags and lifecycle commands.
29
+
30
+ ## Update an existing project
31
+
32
+ Preserve the one-file server unless the integration genuinely needs more structure. Use `scaffoldAgentPlugin` for portable manifests and the companion skill, and use `syncAgentPluginSkill` with the project's `CodeMode` instance to refresh catalog-derived references. Never hand-edit `tools.d.ts`; it is generated output.
33
+
34
+ Read [references/programmatic-api.md](references/programmatic-api.md) for the builder contracts and [references/plugin-layout.md](references/plugin-layout.md) for generated-file ownership.
35
+
36
+ ## Validate
37
+
38
+ - Treat a failed dependency install or plugin build as a generator failure; do not report the project as ready.
39
+ - Treat a failed catalog sync as recoverable when the upstream MCP merely needs credentials or connectivity. Keep the pending references and report the exact `npm run plugin:sync` follow-up.
40
+ - Reject partial snapshots when any source is unavailable.
41
+ - Keep `SKILL.md` procedural and compact. Put generated schemas, TypeScript declarations, result semantics, and examples in `references/`.
42
+ - Tell runtime agents to search large declaration references for focused matches instead of loading an entire catalog into context.
43
+ - Preserve `search_tools` as a live fallback for pending, stale, or dynamic catalogs.
44
+ - Reinstall the Cursor copy after changing source, policy, metadata, or generated references.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Build CodeModeKit Plugin"
3
+ short_description: "Scaffold and maintain CodeModeKit Agent Plugins"
4
+ default_prompt: "Build or update a portable CodeModeKit Agent Plugin with a companion runtime skill."