The .opencode/agents, .opencode/skills, .opencode/commands, .opencode/rules files are Git symlinks stored as text files containing paths like ../.agents/agents. On Windows checkouts with core.symlinks=false (default without Developer Mode), these materialize as plain text files instead of resolving as symlinks, causing all framework validators to crash with ENOTDIR.
Not affected: Plugin tests (they use temp directories) — these pass on Windows.
Affected validators:
tests/agents/validate.mjs — agent/skill/command structural validation
tests/workflow/run-all.mjs — 4 workflow integrity suites
tests/modules/validate-modules.mjs — module system validation
CI runs on ubuntu-latest where symlinks work, so this is local development friction.
Tasks
Affected Files
tests/agents/validate.mjs (lines 92, 196, 284, 361)
tests/workflow/references.mjs (line 32)
tests/workflow/paths.mjs
tests/workflow/gates.mjs (line 184)
tests/workflow/invariants.mjs (line 55)
tests/modules/validate-modules.mjs (lines 12-17)
Identified during comprehensive framework review on 2026-07-21
The
.opencode/agents,.opencode/skills,.opencode/commands,.opencode/rulesfiles are Git symlinks stored as text files containing paths like../.agents/agents. On Windows checkouts withcore.symlinks=false(default without Developer Mode), these materialize as plain text files instead of resolving as symlinks, causing all framework validators to crash withENOTDIR.Not affected: Plugin tests (they use temp directories) — these pass on Windows.
Affected validators:
tests/agents/validate.mjs— agent/skill/command structural validationtests/workflow/run-all.mjs— 4 workflow integrity suitestests/modules/validate-modules.mjs— module system validationCI runs on ubuntu-latest where symlinks work, so this is local development friction.
Tasks
.agents/canonical paths directly instead of.opencode/symlinks, ORgit config core.symlinks truerequirement in READMEAffected Files
tests/agents/validate.mjs(lines 92, 196, 284, 361)tests/workflow/references.mjs(line 32)tests/workflow/paths.mjstests/workflow/gates.mjs(line 184)tests/workflow/invariants.mjs(line 55)tests/modules/validate-modules.mjs(lines 12-17)Identified during comprehensive framework review on 2026-07-21