T-6VHO-harness-target-framework
Status: closed/done · Impact: high · Complexity: large
Generalize the exporter contract so every target emits the WHOLE surface — capabilities, hooks, MCP, permissions, documents — not just skills. Claude becomes one target among equals (its settings.json carries hooks/permissions/mcpServers); json stays the portable interchange form.
| Location | Role today |
|---|---|
plugin/lib/services/harness/exporters/ | Pure model→files exporters, but only skills/conventions/manifest. No hooks/MCP/permissions emit. |
Proposed
Section titled “Proposed”An exporter contract rich enough for full-surface emit, with Claude reconstructing settings.json
(hooks, permissions, mcpServers) alongside skills + conventions, and a capability kind split into
skills/ vs commands/.
Approach
Section titled “Approach”- Keep the pure
model → ExportFile[]contract; add a shared settings/MCP builder. - Rebuild the Claude exporter to emit the full surface from the canonical model.
- Keep json verbatim.
Files to touch
Section titled “Files to touch”| Location | Kind | Change |
|---|---|---|
plugin/lib/services/harness/exporters/claude.ts | modify | Full-surface emit. |
plugin/lib/services/harness/exporters/_settings.ts | new | Shared settings/MCP/permissions builder. |
plugin/lib/services/harness/tests/export-claude.test.ts | modify | Full-surface round-trip. |
Acceptance criteria
Section titled “Acceptance criteria”- Claude exporter emits hooks, permissions, and mcpServers into settings.
- import → export claude → import identity holds with the richer surface.
- tsc + tests green.
Out of scope
Section titled “Out of scope”Codex/Cursor/Gemini targets (own task).