T-TL3I-harness-import-bootstrap
Status: closed/done · Impact: high · Complexity: medium
Bootstrapping the canonical model must not require hand-transcribing 37 skills. A one-time importer reads an existing Claude surface (skills, conventions, and settings hooks/MCP/permissions) into the canonical model, so the model is seeded faithfully and the Claude surface stops being the source of truth.
| Location | Role today |
|---|---|
plugin/lib/services/harness/derive.ts | Reads skills + conventions + manifest only; frames Claude as the source of truth. |
Proposed
Section titled “Proposed”An importClaude(pluginRoot) that produces the canonical model — capabilities from skills/commands,
documents from conventions, and hooks/mcpServers/permissions parsed from .claude/settings*.json /
.mcp.json. Framed as a migration aid, not the ongoing truth.
Approach
Section titled “Approach”- Rename/reframe
derive.ts→import/claude.tsreturning the canonical model. - Parse settings hooks, permissions, and MCP servers into the host-neutral shapes.
- Keep round-trip parity (import → export claude → import is identity).
Files to touch
Section titled “Files to touch”| Location | Kind | Change |
|---|---|---|
plugin/lib/services/harness/import/claude.ts | new | Canonical importer. |
plugin/lib/services/harness/derive.ts | delete | Superseded by the importer. |
plugin/lib/services/harness/tests/import-claude.test.ts | new | Import + round-trip tests. |
Acceptance criteria
Section titled “Acceptance criteria”- Importer captures capabilities, documents, hooks, mcpServers, permissions.
- import → export claude → import round-trips on the real surface.
- tsc + tests green.
Out of scope
Section titled “Out of scope”Importers for other hosts; only Claude is the bootstrap source.