mirror of
https://github.com/EveryInc/compound-engineering-plugin.git
synced 2026-09-19 01:09:55 +08:00
6fe51a0602
Add `--to windsurf` target for the converter CLI with full spec compliance
per docs/specs/windsurf.md:
- Claude agents → Windsurf skills (skills/{name}/SKILL.md)
- Claude commands → Windsurf workflows (workflows/{name}.md, flat)
- Pass-through skills copy unchanged
- MCP servers → mcp_config.json (merged with existing, 0o600 permissions)
- Hooks skipped with warning, CLAUDE.md skipped
Global scope support via generic --scope flag (Windsurf as first adopter):
- --to windsurf defaults to global (~/.codeium/windsurf/)
- --scope workspace for project-level .windsurf/ output
- --output overrides scope-derived paths
Shared utilities extracted (resolveTargetOutputRoot, hasPotentialSecrets)
to eliminate duplication across CLI commands.
68 new tests (converter, writer, scope resolution).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
25 lines
824 B
TypeScript
25 lines
824 B
TypeScript
export const SENSITIVE_PATTERN = /key|token|secret|password|credential|api_key/i
|
|
|
|
/** Check if any MCP servers have env vars that might contain secrets */
|
|
export function hasPotentialSecrets(
|
|
servers: Record<string, { env?: Record<string, string> }>,
|
|
): boolean {
|
|
for (const server of Object.values(servers)) {
|
|
if (server.env) {
|
|
for (const key of Object.keys(server.env)) {
|
|
if (SENSITIVE_PATTERN.test(key)) return true
|
|
}
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
/** Return names of MCP servers whose env vars may contain secrets */
|
|
export function findServersWithPotentialSecrets(
|
|
servers: Record<string, { env?: Record<string, string> }>,
|
|
): string[] {
|
|
return Object.entries(servers)
|
|
.filter(([, s]) => s.env && Object.keys(s.env).some((k) => SENSITIVE_PATTERN.test(k)))
|
|
.map(([name]) => name)
|
|
}
|