Windsurf + Aider targets, MCP server, and demo placement (#33)

Broadens both reach (more tools) and content types (an MCP server), continuing
the multi-platform story.

Windsurf + Aider:
- build-exports.mjs gains two platforms: exports/windsurf/*.md (workspace rules,
  trigger: model_decision) and exports/aider/*.md (conventions for `aider --read`).
  Now 5 platforms (ChatGPT, Gemini, Cursor, Windsurf, Aider).
- install.sh + bin/cli.mjs install both (windsurf -> .windsurf/rules, aider ->
  .aider/skills with a --read hint); generated README index is excluded from copies.
- One-line windsurf-install.sh / aider-install.sh wrappers for parity.

MCP server (new content type):
- mcp/server.mjs — zero-dependency stdio MCP server exposing list_skills,
  search_skills, get_skill. Published as a second bin (pm-claude-skills-mcp).
  Logs to stderr; reads bundled skills/ at startup. mcp/README.md documents
  client config.

Also: README hero "See it in action" demo placement (ready to swap in a GIF;
recording guide in web/docs-assets/README.md), Works-With table + exports +
install docs updated, CHANGELOG Unreleased. package.json files/bin updated.


Claude-Session: https://claude.ai/code/session_016JWn5jRD5tcEFKrubjQ6Px

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
mohitagw15856
2026-06-17 23:15:38 +01:00
committed by GitHub
parent 123aabe5e3
commit 036511ab3e
358 changed files with 60408 additions and 38 deletions
+19
View File
@@ -60,6 +60,25 @@ const PLATFORMS = {
render: ({ description, body }) =>
`---\ndescription: ${JSON.stringify(description)}\nglobs:\nalwaysApply: false\n---\n\n${body.trim()}\n`,
},
windsurf: {
label: 'Windsurf — workspace rule (.md)',
dir: 'exports/windsurf',
file: (s) => `${s.name}.md`,
groupByBundle: true,
// Windsurf reads `.windsurf/rules/*.md`. trigger:model_decision = the agent
// pulls the rule in when the description matches the task.
render: ({ description, body }) =>
`---\ntrigger: model_decision\ndescription: ${JSON.stringify(description)}\n---\n\n${body.trim()}\n`,
},
aider: {
label: 'Aider — conventions file (.md)',
dir: 'exports/aider',
file: (s) => `${s.name}.md`,
groupByBundle: true,
// Aider has no auto-discovery dir — you load a file into context with
// `aider --read <file>`. So this is the plain body, ready to --read.
render: ({ body }) => `${body.trim()}\n`,
},
};
// ── Helpers (shared shape with web/build-skills.mjs) ────────────────────────