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>
35 lines
672 B
TypeScript
35 lines
672 B
TypeScript
export type WindsurfWorkflow = {
|
|
name: string
|
|
description: string
|
|
body: string
|
|
}
|
|
|
|
export type WindsurfGeneratedSkill = {
|
|
name: string
|
|
content: string
|
|
}
|
|
|
|
export type WindsurfSkillDir = {
|
|
name: string
|
|
sourceDir: string
|
|
}
|
|
|
|
export type WindsurfMcpServerEntry = {
|
|
command?: string
|
|
args?: string[]
|
|
env?: Record<string, string>
|
|
serverUrl?: string
|
|
headers?: Record<string, string>
|
|
}
|
|
|
|
export type WindsurfMcpConfig = {
|
|
mcpServers: Record<string, WindsurfMcpServerEntry>
|
|
}
|
|
|
|
export type WindsurfBundle = {
|
|
agentSkills: WindsurfGeneratedSkill[]
|
|
commandWorkflows: WindsurfWorkflow[]
|
|
skillDirs: WindsurfSkillDir[]
|
|
mcpConfig: WindsurfMcpConfig | null
|
|
}
|