@kamkom/awb-mcp 0.0.6 → 0.0.7

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/README.md CHANGED
@@ -60,7 +60,7 @@ The server exposes AWB tools over stdio, including:
60
60
 
61
61
  ### Copilot instructions and sampling
62
62
 
63
- The plan can generate `.github/copilot-instructions.md` from a prompt file in the server templates (`copilot-instructions-prompt.md`). When the MCP client supports **sampling** (e.g. Cursor, VS Code with a sampling-capable host), the prompt file content is run on the **client’s LLM** and the generated output is used for that file; otherwise the prompt file content is used literally. No API keys are required on the server.
63
+ The plan can generate `.github/copilot-instructions.md` with an optional custom section. When the MCP client supports **sampling** (e.g. Cursor, VS Code with a sampling-capable host), the server requests generated content for that section from the **client’s LLM**; otherwise the custom section is left empty. No API keys are required on the server.
64
64
 
65
65
  ## Overwrite and managed blocks
66
66
 
@@ -1,5 +1,3 @@
1
1
  # Copilot instructions
2
2
 
3
- {{COPILOT_INSTRUCTIONS_PROMPT}}
4
-
5
3
  Use repo scripts when available. Prefer existing test commands. Avoid destructive operations.
@@ -0,0 +1 @@
1
+ You are generating the custom section for a .github/copilot-instructions.md file. Output only the requested content. No preamble, no explanation, no markdown code fences.
@@ -1 +1 @@
1
- {"version":3,"file":"planBootstrap.d.ts","sourceRoot":"","sources":["../../src/tools/planBootstrap.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,eAAe,EAAE,MAAM,GAAG,cAAc,GAAG,WAAW,CAAC;IACvD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,4HAA4H;AAC5H,MAAM,MAAM,oBAAoB,GAAG;IACjC,iBAAiB,EAAE;QACjB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;YACtC,OAAO,CAAC,EACJ;gBAAE,IAAI,CAAC,EAAE,MAAM,CAAC;gBAAC,IAAI,CAAC,EAAE,MAAM,CAAA;aAAE,GAChC,KAAK,CAAC;gBAAE,IAAI,CAAC,EAAE,MAAM,CAAC;gBAAC,IAAI,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;SAC7C,CAAC,CAAC;KACJ,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,gBAAgB,GAAG,MAAM,CAAC;AAEnE,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAqJF,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,CA0F9B"}
1
+ {"version":3,"file":"planBootstrap.d.ts","sourceRoot":"","sources":["../../src/tools/planBootstrap.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,eAAe,EAAE,MAAM,GAAG,cAAc,GAAG,WAAW,CAAC;IACvD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,4HAA4H;AAC5H,MAAM,MAAM,oBAAoB,GAAG;IACjC,iBAAiB,EAAE;QACjB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;YACtC,OAAO,CAAC,EACJ;gBAAE,IAAI,CAAC,EAAE,MAAM,CAAC;gBAAC,IAAI,CAAC,EAAE,MAAM,CAAA;aAAE,GAChC,KAAK,CAAC;gBAAE,IAAI,CAAC,EAAE,MAAM,CAAC;gBAAC,IAAI,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;SAC7C,CAAC,CAAC;KACJ,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,gBAAgB,GAAG,MAAM,CAAC;AAEnE,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AA4KF,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,CAyF9B"}
@@ -133,7 +133,29 @@ function buildOperation(relPath, fullPath, options, templateContent) {
133
133
  warnings: ["File exists and is not being overwritten."],
134
134
  };
135
135
  }
136
- const COPILOT_SAMPLING_SYSTEM_PROMPT = "Write a few jokes in polish";
136
+ const COPILOT_SAMPLING_SYSTEM_FILE = "copilot-instructions-sampling-system.md";
137
+ const COPILOT_SAMPLING_SYSTEM_FALLBACK = "You are generating the custom section for a .github/copilot-instructions.md file. Output only the requested content. No preamble, no explanation, no markdown code fences.";
138
+ const COPILOT_SAMPLING_USER_PROMPT = `
139
+ Analyze this codebase to generate or update .github/copilot-instructions.md for guiding AI coding agents.
140
+
141
+ Focus on discovering the essential knowledge that would help an AI agents be immediately productive in this codebase. Consider aspects like:
142
+
143
+ The "big picture" architecture that requires reading multiple files to understand - major components, service boundaries, data flows, and the "why" behind structural decisions
144
+ Critical developer workflows (builds, tests, debugging) especially commands that aren't obvious from file inspection alone
145
+ Project-specific conventions and patterns that differ from common practices
146
+ Integration points, external dependencies, and cross-component communication patterns
147
+ Source existing AI conventions from **/{.github/copilot-instructions.md,AGENT.md,AGENTS.md,CLAUDE.md,.cursorrules,.windsurfrules,.clinerules,.cursor/rules/**,.windsurf/rules/**,.clinerules/**,README.md} (do one glob search).
148
+
149
+ Guidelines (read more at https://aka.ms/vscode-instructions-docs):
150
+
151
+ If .github/copilot-instructions.md exists, merge intelligently - preserve valuable content while updating outdated sections
152
+ Write concise, actionable instructions (~20-50 lines) using markdown structure
153
+ Include specific examples from the codebase when describing patterns
154
+ Avoid generic advice ("write tests", "handle errors") - focus on THIS project's specific approaches
155
+ Document only discoverable patterns, not aspirational practices
156
+ Reference key files/directories that exemplify important patterns
157
+ Update .github/copilot-instructions.md for the user, then ask for feedback on any unclear or incomplete sections to iterate.
158
+ `;
137
159
  export async function handlePlanBootstrap(args, context) {
138
160
  try {
139
161
  const error = validateRootPath(args?.rootPath);
@@ -149,26 +171,25 @@ export async function handlePlanBootstrap(args, context) {
149
171
  const pathsToConsider = getPathsToConsider(options, resolvedRoot);
150
172
  const operations = [];
151
173
  const COPILOT_INSTRUCTIONS_PATH = ".github/copilot-instructions.md";
152
- const COPILOT_PROMPT_FILE = "copilot-instructions-prompt.md";
153
- const COPILOT_INSTRUCTIONS_PLACEHOLDER = "{{COPILOT_INSTRUCTIONS_PROMPT}}";
154
174
  for (const relPath of pathsToConsider) {
155
175
  const fullPath = path.join(resolvedRoot, relPath);
156
176
  if (!isUnderRoot(fullPath, resolvedRoot))
157
177
  continue;
158
178
  let templateContent = getTemplateContent(relPath);
159
179
  if (relPath === COPILOT_INSTRUCTIONS_PATH) {
160
- const promptContent = getTemplateContent(COPILOT_PROMPT_FILE).trim();
161
- let value = promptContent;
162
- if (promptContent && context?.serverForSampling) {
180
+ let value = "";
181
+ if (context?.serverForSampling) {
163
182
  try {
183
+ const systemPrompt = getTemplateContent(COPILOT_SAMPLING_SYSTEM_FILE).trim() ||
184
+ COPILOT_SAMPLING_SYSTEM_FALLBACK;
164
185
  const res = await context.serverForSampling.createMessage({
165
186
  messages: [
166
187
  {
167
188
  role: "user",
168
- content: { type: "text", text: promptContent },
189
+ content: { type: "text", text: COPILOT_SAMPLING_USER_PROMPT },
169
190
  },
170
191
  ],
171
- systemPrompt: COPILOT_SAMPLING_SYSTEM_PROMPT,
192
+ systemPrompt,
172
193
  maxTokens: 2000,
173
194
  });
174
195
  const block = Array.isArray(res.content)
@@ -177,13 +198,15 @@ export async function handlePlanBootstrap(args, context) {
177
198
  const text = block?.type === "text"
178
199
  ? (block.text ?? "")
179
200
  : "";
180
- value = (text ?? "").trim() || promptContent;
201
+ value = (text ?? "").trim();
181
202
  }
182
203
  catch {
183
- value = promptContent;
204
+ value = "";
184
205
  }
185
206
  }
186
- templateContent = templateContent.replace(COPILOT_INSTRUCTIONS_PLACEHOLDER, value);
207
+ if (value) {
208
+ templateContent = templateContent + "\n\n" + value;
209
+ }
187
210
  }
188
211
  operations.push(buildOperation(relPath, fullPath, options, templateContent));
189
212
  }
@@ -1 +1 @@
1
- {"version":3,"file":"planBootstrap.js","sourceRoot":"","sources":["../../src/tools/planBootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planBootstrap.js","sourceRoot":"","sources":["../../src/tools/planBootstrap.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kamkom/awb-mcp",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "description": "AWB MCP Server — bootstrap agentic-ready repos via MCP",
5
5
  "license": "ISC",
6
6
  "author": "",
@@ -1,5 +1,3 @@
1
1
  # Copilot instructions
2
2
 
3
- {{COPILOT_INSTRUCTIONS_PROMPT}}
4
-
5
3
  Use repo scripts when available. Prefer existing test commands. Avoid destructive operations.
@@ -0,0 +1 @@
1
+ You are generating the custom section for a .github/copilot-instructions.md file. Output only the requested content. No preamble, no explanation, no markdown code fences.
@@ -207,7 +207,30 @@ function buildOperation(
207
207
  };
208
208
  }
209
209
 
210
- const COPILOT_SAMPLING_SYSTEM_PROMPT = "Write a few jokes in polish";
210
+ const COPILOT_SAMPLING_SYSTEM_FILE = "copilot-instructions-sampling-system.md";
211
+ const COPILOT_SAMPLING_SYSTEM_FALLBACK =
212
+ "You are generating the custom section for a .github/copilot-instructions.md file. Output only the requested content. No preamble, no explanation, no markdown code fences.";
213
+ const COPILOT_SAMPLING_USER_PROMPT = `
214
+ Analyze this codebase to generate or update .github/copilot-instructions.md for guiding AI coding agents.
215
+
216
+ Focus on discovering the essential knowledge that would help an AI agents be immediately productive in this codebase. Consider aspects like:
217
+
218
+ The "big picture" architecture that requires reading multiple files to understand - major components, service boundaries, data flows, and the "why" behind structural decisions
219
+ Critical developer workflows (builds, tests, debugging) especially commands that aren't obvious from file inspection alone
220
+ Project-specific conventions and patterns that differ from common practices
221
+ Integration points, external dependencies, and cross-component communication patterns
222
+ Source existing AI conventions from **/{.github/copilot-instructions.md,AGENT.md,AGENTS.md,CLAUDE.md,.cursorrules,.windsurfrules,.clinerules,.cursor/rules/**,.windsurf/rules/**,.clinerules/**,README.md} (do one glob search).
223
+
224
+ Guidelines (read more at https://aka.ms/vscode-instructions-docs):
225
+
226
+ If .github/copilot-instructions.md exists, merge intelligently - preserve valuable content while updating outdated sections
227
+ Write concise, actionable instructions (~20-50 lines) using markdown structure
228
+ Include specific examples from the codebase when describing patterns
229
+ Avoid generic advice ("write tests", "handle errors") - focus on THIS project's specific approaches
230
+ Document only discoverable patterns, not aspirational practices
231
+ Reference key files/directories that exemplify important patterns
232
+ Update .github/copilot-instructions.md for the user, then ask for feedback on any unclear or incomplete sections to iterate.
233
+ `;
211
234
 
212
235
  export async function handlePlanBootstrap(
213
236
  args: PlanBootstrapArgs,
@@ -230,26 +253,26 @@ export async function handlePlanBootstrap(
230
253
  const operations: PlanOperation[] = [];
231
254
 
232
255
  const COPILOT_INSTRUCTIONS_PATH = ".github/copilot-instructions.md";
233
- const COPILOT_PROMPT_FILE = "copilot-instructions-prompt.md";
234
- const COPILOT_INSTRUCTIONS_PLACEHOLDER = "{{COPILOT_INSTRUCTIONS_PROMPT}}";
235
256
 
236
257
  for (const relPath of pathsToConsider) {
237
258
  const fullPath = path.join(resolvedRoot, relPath);
238
259
  if (!isUnderRoot(fullPath, resolvedRoot)) continue;
239
260
  let templateContent = getTemplateContent(relPath);
240
261
  if (relPath === COPILOT_INSTRUCTIONS_PATH) {
241
- const promptContent = getTemplateContent(COPILOT_PROMPT_FILE).trim();
242
- let value = promptContent;
243
- if (promptContent && context?.serverForSampling) {
262
+ let value = "";
263
+ if (context?.serverForSampling) {
244
264
  try {
265
+ const systemPrompt =
266
+ getTemplateContent(COPILOT_SAMPLING_SYSTEM_FILE).trim() ||
267
+ COPILOT_SAMPLING_SYSTEM_FALLBACK;
245
268
  const res = await context.serverForSampling.createMessage({
246
269
  messages: [
247
270
  {
248
271
  role: "user",
249
- content: { type: "text", text: promptContent },
272
+ content: { type: "text", text: COPILOT_SAMPLING_USER_PROMPT },
250
273
  },
251
274
  ],
252
- systemPrompt: COPILOT_SAMPLING_SYSTEM_PROMPT,
275
+ systemPrompt,
253
276
  maxTokens: 2000,
254
277
  });
255
278
  const block = Array.isArray(res.content)
@@ -259,15 +282,14 @@ export async function handlePlanBootstrap(
259
282
  block?.type === "text"
260
283
  ? ((block as { text?: string }).text ?? "")
261
284
  : "";
262
- value = (text ?? "").trim() || promptContent;
285
+ value = (text ?? "").trim();
263
286
  } catch {
264
- value = promptContent;
287
+ value = "";
265
288
  }
266
289
  }
267
- templateContent = templateContent.replace(
268
- COPILOT_INSTRUCTIONS_PLACEHOLDER,
269
- value,
270
- );
290
+ if (value) {
291
+ templateContent = templateContent + "\n\n" + value;
292
+ }
271
293
  }
272
294
  operations.push(
273
295
  buildOperation(relPath, fullPath, options, templateContent),
@@ -346,7 +346,7 @@ async function main(): Promise<void> {
346
346
  fs.rmSync(pathNormDir, { recursive: true, force: true });
347
347
  }
348
348
 
349
- // 9. copilot-instructions: output is template with prompt injected, not verbatim prompt file
349
+ // 9. copilot-instructions: output has template structure
350
350
  const copilotTestDir = fs.mkdtempSync(path.join(projectRoot, "test-copilot-"));
351
351
  try {
352
352
  await withServer(async (client) => {
@@ -375,15 +375,7 @@ async function main(): Promise<void> {
375
375
  throw new Error("Expected template structure: # Copilot instructions");
376
376
  if (!content.includes("Use repo scripts"))
377
377
  throw new Error("Expected template structure: Use repo scripts");
378
- const promptPath = path.join(projectRoot, "dist", "templates", "copilot-instructions-prompt.md");
379
- const promptContent = fs.existsSync(promptPath)
380
- ? fs.readFileSync(promptPath, "utf8").trim()
381
- : "";
382
- if (content === promptContent)
383
- throw new Error("Output must not equal raw prompt file (template with placeholder replacement expected)");
384
- if (promptContent.length > 0 && !content.includes(promptContent))
385
- throw new Error("When prompt file has content, output must include it");
386
- console.log(" copilot-instructions: template structure + prompt injection, not verbatim prompt file");
378
+ console.log(" copilot-instructions: template structure");
387
379
  });
388
380
  } finally {
389
381
  fs.rmSync(copilotTestDir, { recursive: true, force: true });
@@ -1 +0,0 @@
1
- Generate a few jokes in polish