Problem
MCS increasingly relies on newer Claude Code features (e.g., hook timeout, async, statusMessage). When users run mcs sync with an outdated Claude Code installation, things silently break or produce confusing errors.
Proposal
Add a single minClaudeCodeVersion constant and check it at sync time:
- Constant in
Constants.swift — the minimum supported Claude Code version
- Detection — run
claude --version and parse the output
- Sync gate — fail early with a clear "please upgrade Claude Code" message if below minimum
- Doctor check — surface it as a core health check in
mcs doctor
Why not per-feature mapping?
A per-feature version map would create maintenance burden for both mcs and tech pack authors, and the user action is always the same: upgrade Claude Code. A single minimum version is sufficient.
Prior art
This follows the same pattern as minMCSVersion in techpack.yaml.
Problem
MCS increasingly relies on newer Claude Code features (e.g., hook
timeout,async,statusMessage). When users runmcs syncwith an outdated Claude Code installation, things silently break or produce confusing errors.Proposal
Add a single
minClaudeCodeVersionconstant and check it at sync time:Constants.swift— the minimum supported Claude Code versionclaude --versionand parse the outputmcs doctorWhy not per-feature mapping?
A per-feature version map would create maintenance burden for both
mcsand tech pack authors, and the user action is always the same: upgrade Claude Code. A single minimum version is sufficient.Prior art
This follows the same pattern as
minMCSVersionintechpack.yaml.