Ditto v0.2.0 — the native plugin
Your mined profile now splits into separate personal layers for work, design, and writing, with full-history mining as the quality default and incremental cached re-runs.
Works across agents: Claude Code and Codex install through the one-command bootstrap (Cursor and Gemini through the explicit adapters). Codex additionally gets a native plugin with automatic routing between the four skills.
Install
For the cross-agent bootstrap:
npx skills add ohad6k/ditto@dittoThen tell the agent run ditto. The bootstrap creates a read-only full-history plan, displays the exact selected source tokens and planned worker/reducer passes, and waits for approval before model work. It installs the approved core profile across supported agents; namespaced automatic routing requires the native plugin.
For native Codex routing:
codex plugin marketplace add ohad6k/ditto --ref v0.2.0 --json
codex plugin add ditto@ditto --jsonThe plugin adds ditto:mine, ditto:work, ditto:design, and ditto:write. Plugin installation itself scans no logs and schedules no mining passes.
Full profile or quick preview
Full-history mining is the quality default. It reads all eligible history, reuses validated caches, shows the exact remaining plan, and requires cost approval before any worker or reducer runs.
Quick preview is opt-in through run ditto quick preview or --preview. Quick preview creates a starter profile from selected history, not the full profile. The widest frozen bounded calibration recovered 5/22 required traits, so this release does not present preview as equivalent to a full mine.
Upgrade and migration
Re-run the install command to update. The v0.2.0 skills.sh runtime is pinned to exact SHA-256 values for both ditto.py and MINING_PROMPT.md; mutable main bytes are not accepted.
Existing classic you profiles can be staged, cut over, and rolled back. Cutover moves the legacy skill out of host discovery before the new active pointer is written. The isolated release proof restored the exact legacy bytes and prior pointer state after rollback.
Verification
127unit tests, the Codex plugin validator, the bootstrap skill validator, CLI help checks, JSON parsing, andgit diff --checkpass on the local release candidate.- Separate spec-compliance and Python safety/quality reviews both returned
PASS. - Codex CLI
0.142.5discovered exactly the four native skills. Uninstall/reinstall preserved isolated private state byte-for-byte. - A real full-history mine ran against a frozen, locally redacted snapshot of
1,968actual sessions and3,284,544selected source tokens. It produced147validated reports,846validated evidence items, and one strong reducer. The activated profile version ise61ae342557034ff9a9b, and work, design, and writing are active with five rules each. - The identical frozen-corpus update then planned zero workers and zero reducers with all
147segments cached. - Against the unchanged private calibration, full history recovered
12/22requirements: work5/10, design5/5, and writing2/7. That materially beats quick preview's5/22, but it is not complete recall. - Redaction happens locally before selected text reaches the user-chosen model.
ditto.pymakes zero network calls. Runtime download and hash verification occur before log discovery.
See the dogfood evidence, the security boundary, and the roadmap.
Known limits
- Full history remains the quality default relative to preview, but the first real run missed
10/22frozen traits. The release must not imply that a full mine guarantees a complete personal model. - Additional failed or aborted compatibility attempts occurred around the
147successful assigned reports while correcting Windows sandbox and oversize-input orchestration. Exact provider billing remains outside Ditto's measurement. - Native Codex routing was not uniformly clean when an older global Ditto profile competed with the plugin.
- Native Claude plugin packaging is not claimed in this release; the skills.sh bootstrap and direct adapter remain supported.
- Benchmarks, a leaderboard, and proof/launch videos are deferred to a separate later release.
To receive future release updates on GitHub, choose Watch -> Custom -> Releases. A star bookmarks the repository but does not subscribe to releases.