Summary
SkillLite Assistant (crates/skilllite-assistant/) currently lives in the engine monorepo with hybrid integration: subprocess bridge for chat (good) plus in-process Rust path deps on skilllite-agent, skilllite-evolution, and skilllite-sandbox (blocks clean split).
The target architecture is documented in docs/en/ASSISTANT-SPLIT-ARCHITECTURE.md. P0 (docs) and P1 (engine --json CLI surface) are largely shipped. This issue tracks the remaining phases.
Goals
| Goal |
Rationale |
| Independent release cadence |
Desktop installers (dmg/msi/AppImage) vs PyPI/CLI binaries |
| Clear product boundary |
Engine = sandbox + MCP + skilllite binary; Assistant = optional GUI |
| Single engine contract |
Assistant talks to a released skilllite binary only |
| No UX regression |
Streaming chat, evolution panel, Life Pulse, IDE layout preserved |
Remaining phases
| Phase |
Scope |
Exit criterion |
| P2 — Bridge thin |
Replace remaining in-process calls in evolution_ui/*, followup_*, desktop_services |
src-tauri/Cargo.toml drops skilllite-agent, skilllite-evolution, skilllite-sandbox |
P3 — skilllite-client |
Extract protocol types + JSON schemas (no sandbox/agent code) |
Assistant depends on published crate; golden contract tests |
| P4 — Extract repo |
Move tree to skilllite-assistant repo; stub README in engine repo |
Two repos green CI |
| P5 — Policy |
Update deny.toml; revise D1 → D1′ in architecture docs |
Docs reflect implemented state |
Integration model (must hold after split)
- L1
skilllite agent-rpc — streaming chat, confirm/clarify
- L2
skilllite … --json — evolution, runtime, skills list, followup
- L3 Workspace files — prompts/transcript paths (read-only where possible)
Rule: No path = "../../skilllite-*" in Assistant's Cargo.toml at target state.
Acceptance criteria
References
Non-goals
- Replacing
agent-rpc with terminal parsing of skilllite chat output
- Embedding the full agent loop inside Tauri
- Making Assistant a second engine entry with its own sandbox/evolution code paths
Summary
SkillLite Assistant (
crates/skilllite-assistant/) currently lives in the engine monorepo with hybrid integration: subprocess bridge for chat (good) plus in-process Rust path deps onskilllite-agent,skilllite-evolution, andskilllite-sandbox(blocks clean split).The target architecture is documented in
docs/en/ASSISTANT-SPLIT-ARCHITECTURE.md. P0 (docs) and P1 (engine--jsonCLI surface) are largely shipped. This issue tracks the remaining phases.Goals
skilllitebinary; Assistant = optional GUIskilllitebinary onlyRemaining phases
evolution_ui/*,followup_*,desktop_servicessrc-tauri/Cargo.tomldropsskilllite-agent,skilllite-evolution,skilllite-sandboxskilllite-clientskilllite-assistantrepo; stub README in engine repodeny.toml; revise D1 → D1′ in architecture docsIntegration model (must hold after split)
skilllite agent-rpc— streaming chat, confirm/clarifyskilllite … --json— evolution, runtime, skills list, followupRule: No
path = "../../skilllite-*"in Assistant'sCargo.tomlat target state.Acceptance criteria
Cargo.tomlhas zero path deps on engine cratesskilllite-clientpublished with protocol types + fixture testsskillliterelease artifactdeny.tomlandENTRYPOINTS-AND-DOMAINS.mdupdated to D1′ policymin_skilllite_versionruntime check in Assistant installer/buildReferences
docs/en/ASSISTANT-SPLIT-ARCHITECTURE.mddocs/zh/ASSISTANT-SPLIT-ARCHITECTURE.mddocs/en/ENTRYPOINTS-AND-DOMAINS.md§4 DesktopNon-goals
agent-rpcwith terminal parsing ofskilllite chatoutput