-
Notifications
You must be signed in to change notification settings - Fork 215
Converge windsurf skills onto .agents/skills/ (Cascade native cross-agent discovery) #1520
Copy link
Copy link
Open
Labels
architectureDeprecated: use type/architecture. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use type/architecture. Kept for issue history; will be removed in milestone 0.10.0.area/multi-targetMulti-target deploy spec, target directory creation, agent surface routing.Multi-target deploy spec, target directory creation, agent surface routing.breaking-changeenhancementDeprecated: use type/feature. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use type/feature. Kept for issue history; will be removed in milestone 0.10.0.
Metadata
Metadata
Assignees
Labels
architectureDeprecated: use type/architecture. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use type/architecture. Kept for issue history; will be removed in milestone 0.10.0.area/multi-targetMulti-target deploy spec, target directory creation, agent surface routing.Multi-target deploy spec, target directory creation, agent surface routing.breaking-changeenhancementDeprecated: use type/feature. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use type/feature. Kept for issue history; will be removed in milestone 0.10.0.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Projects
Status
Todo
Summary
Switch the
windsurftarget'sskillsprimitive deploy path from.windsurf/skills/<name>/SKILL.mdto.agents/skills/<name>/SKILL.mdso windsurf joins the existing 5-target convergence (copilot, cursor, codex, gemini, opencode) on the cross-tool.agents/skills/directory.Why now
The Windsurf docs explicitly endorse this. From docs.windsurf.com/windsurf/cascade/skills#skill-scopes:
Cascade already scans
.agents/skills/natively at both workspace and user scope. The premise APM has been operating under -- captured verbatim indocs/src/content/docs/producer/author-primitives/skills.md:111-113:-- is out of date for the windsurf half. Cascade reads both. There is no longer a runtime reason for windsurf to stay on
.windsurf/skills/.Strategic framing
APM positions itself around the agentskills.io spec and the cross-tool
.agents/skills/convention (seeREADME.md,docs/.../index.mdx,docs/.../skills.md). Every additional target on.agents/skills/strengthens that positioning and reduces per-tool duplication for multi-IDE teams (the same argument that motivated theagent-skillstarget in #1103 and the 5-target convergence).Windsurf upstream did the work for us. APM should accept it.
Proposed change
src/apm_cli/integration/targets.py-- windsurf TargetProfile:"windsurf": TargetProfile( name="windsurf", root_dir=".windsurf", primitives={ "instructions": PrimitiveMapping("rules", ".md", "windsurf_rules"), - "skills": PrimitiveMapping("skills", "/SKILL.md", "skill_standard"), + "skills": PrimitiveMapping( + "skills", "/SKILL.md", "skill_standard", + deploy_root=".agents", # converge per Cascade native discovery + ), "commands": PrimitiveMapping("workflows", ".md", "windsurf_workflow"), "hooks": PrimitiveMapping("", "hooks.json", "windsurf_hooks"), }, ... ),(
PrimitiveMapping.deploy_rootalready exists in the registry to redirect a primitive away from a target'sroot_dir; this is the same mechanism the 5 converged targets use.)Scope checklist
skillsmapping to.agents/skills/at workspace scope~/.agents/skills/per the Windsurf doc quote; verifyuser_root_dirinteraction)--legacy-skill-paths/APM_LEGACY_SKILL_PATHS=1honored for windsurf (mirror the existing 5-target opt-out).windsurf/skills/<pkg>/directories deployed by prior APM versions, or document arm -rf .windsurf/skills/<pkg>/stepdocs/.../author-primitives/skills.mdtable (windsurf row) and the "Claude and Windsurf keep harness-native paths" sentencepackages/apm-guide/.apm/skills/apm-usage/commands.mdif it mentions the windsurf deploy path--legacy-skill-pathsstill produces.windsurf/skills/for windsurf.agents/is shared by multiple tools; windsurf'sdetect_by_dir=Trueshould still key off.windsurf/, not.agents/. Verify no auto-detection regression.breaking-change(deploy path moved) with migration noteSequencing
Lands after #1486 (which fixes the uninstall directory-collision bug under the current
.windsurf/skills/shape; convergence builds on that fixed TargetProfile contract).Out of scope
.agents/skills/. The Windsurf doc quote notes Claude scanning is opt-in via "Claude Code config reading"; not a default-on guarantee. Track separately if/when Anthropic flips the default.Refs
agent-skills) and the skills.md routing table