Skip to content

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.

LocationRole today
plugin/lib/services/harness/exporters/Pure model→files exporters, but only skills/conventions/manifest. No hooks/MCP/permissions emit.

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/.

  1. Keep the pure model → ExportFile[] contract; add a shared settings/MCP builder.
  2. Rebuild the Claude exporter to emit the full surface from the canonical model.
  3. Keep json verbatim.
LocationKindChange
plugin/lib/services/harness/exporters/claude.tsmodifyFull-surface emit.
plugin/lib/services/harness/exporters/_settings.tsnewShared settings/MCP/permissions builder.
plugin/lib/services/harness/tests/export-claude.test.tsmodifyFull-surface round-trip.
  • Claude exporter emits hooks, permissions, and mcpServers into settings.
  • import → export claude → import identity holds with the richer surface.
  • tsc + tests green.

Codex/Cursor/Gemini targets (own task).


← Back to Tasks