v0.14.0 — Cross-platform content modularization
Platform-specific content now has an open-ended, mechanism-stable home: methodology stays shared and single-source; platform detail loads only where it applies. Adding a platform = adding content (a sidecar file / a region / a table row) — never changing mechanism code. Scripts remain single-source bash with runtime branching (Git-Bash baseline, unchanged).
Added
- Cross-platform content modularization. Two dedicated channels:
skills/<skill>/platform/<os>.mdsidecars for operational depth (loaded on demand behind an inline same-skill pointer; decision-shaping facts — availability, verdict rules — stay inline), and<!-- os-<name>-start/end -->regions in the injected meta-skill, mechanically dropped by SessionStart unless<name>matches the runtimeHA_OS(fail-slim: unknown names never fatten the injection). First sidecar:cpp-sanitizers/platform/windows.md(substitute-tool preference table). - SessionStart banner
Platform:line (HA_OS taxonomy:windows (Git-Bash)|darwin|linux; unknown pre-set values pass through verbatim). ha_platform_initrespects a pre-setHA_OS(tests inject platform states; users may override classification) — the Windows PATH shield stays keyed on the real uname.- validate-anchor: joint flat sequencing across both conditional-region families, os-name taxonomy whitelist, inert-marker detection outside the meta-skill, and
[12/12]platform-sidecar ↔ SKILL.md pointer integrity (bidirectional).
Changed
cpp-sanitizersWindows substitute detail moved toplatform/windows.md(SKILL.md keeps the availability matrix and the never-CLEAN verdict rule inline);/sanitizepointer updated accordingly. CLAUDE.md invariant #2 wording generalized to conditional regions; the skill-authoring rules gain the platform decision-weight split. The meta-skill is pinnedeol=lf(it is awk-consumed by the injection filter).
Verification
All local suites green on Windows/Git-Bash (validate-anchor 148/0 incl. 4 new checks; 13/13 hook-contract suites with the slimming test extended to a {generic, cpp} × {HA_OS=windows, HA_OS=linux} matrix; 15/15 unit; windows-compat 19/0; hook-timing PASSED; adversarial marker probes rejected nested/mismatched/unclosed grammars with exact diagnostics). CI 9/9 on ubuntu / macos (BSD awk) / windows arms + ShellCheck. Generic injection grew by the Platform line only (+27 chars, platform-neutral measurement 6266/12000).
Full changelog: v0.13.0...v0.14.0