Description
When a non-assistant ACP session uses a custom workspace with enabledSkills but no presetContext, skills are completely lost.
Root Cause
- Custom workspaces skip
setupAssistantWorkspace symlinks to avoid polluting user directories
- For native-support backends (claude, codex, etc.), the first-message handler only injected
presetContext — it didn't check whether symlinks were actually created
- Result: no symlinks + no prompt injection = skills lost
Fix
Check customWorkspace flag in addition to native skill support. When custom workspace is used, always fallback to prompt injection via prepareFirstMessageWithSkillsIndex.