Summary
Architecture docs describe a future skilllite-services crate sitting between entry crates (skilllite, skilllite-assistant, future MCP entry) and domain crates, hosting shared application orchestration used by both CLI and Desktop.
Phase 0 decisions were recorded (TASK-2026-042), a bootstrap crate was created (TASK-2026-043), and a Phase 1A migration was attempted (TASK-2026-044) — then rolled back (TASK-2026-045) because coupling risk outweighed benefit before the Assistant split contract was complete.
This issue tracks a redesigned Phase 1 that respects the split-ready L1/L2/L3 model.
Problem
Today, shared flows (workspace resolution, evolution orchestration, skill discovery) are duplicated or accessed via:
- Direct path deps in Desktop (blocks repo split)
- Ad-hoc logic in
skilllite-commands
- Growing
--json CLI surface (preferred for split cleanliness)
We need a deliberate decision on when a shared Rust library layer adds value vs when L2 CLI JSON is sufficient.
Design constraints (from architecture)
- Assistant must not path-dep services at split time — only subprocess to
skilllite binary
- Prefer L2 CLI JSON over in-process services for split cleanliness
- If services are needed, expose as
skilllite desktop-serve daemon rather than linking from Assistant
- Dependencies flow one way: Entry → Services → Domain crates
Proposed scope (Phase 1 redesign)
| Option |
Description |
Split-friendly? |
| A — CLI-only |
Continue expanding --json subcommands; no skilllite-services crate |
✅ Best for split |
| B — Engine-internal services |
skilllite-services used by CLI + optional daemon; Assistant calls via subprocess |
✅ If daemon/CLI only |
| C — Shared library in Assistant |
Path-dep services from Desktop |
❌ Blocks P4 extract |
Recommendation: Start with Option A inventory; adopt Option B only for flows where CLI JSON is too slow or too fragmented (with caching/TTL in bridge).
Acceptance criteria
References
Summary
Architecture docs describe a future
skilllite-servicescrate sitting between entry crates (skilllite,skilllite-assistant, future MCP entry) and domain crates, hosting shared application orchestration used by both CLI and Desktop.Phase 0 decisions were recorded (TASK-2026-042), a bootstrap crate was created (TASK-2026-043), and a Phase 1A migration was attempted (TASK-2026-044) — then rolled back (TASK-2026-045) because coupling risk outweighed benefit before the Assistant split contract was complete.
This issue tracks a redesigned Phase 1 that respects the split-ready L1/L2/L3 model.
Problem
Today, shared flows (workspace resolution, evolution orchestration, skill discovery) are duplicated or accessed via:
skilllite-commands--jsonCLI surface (preferred for split cleanliness)We need a deliberate decision on when a shared Rust library layer adds value vs when L2 CLI JSON is sufficient.
Design constraints (from architecture)
skilllitebinaryskilllite desktop-servedaemon rather than linking from AssistantProposed scope (Phase 1 redesign)
--jsonsubcommands; noskilllite-servicescrateskilllite-servicesused by CLI + optional daemon; Assistant calls via subprocessRecommendation: Start with Option A inventory; adopt Option B only for flows where CLI JSON is too slow or too fragmented (with caching/TTL in bridge).
Acceptance criteria
skilllite-serviceswith one vertical slice (e.g. workspace resolution) + deny.toml boundary rule--jsongapsReferences
docs/en/ENTRYPOINTS-AND-DOMAINS.md— Dependency directiondocs/en/ASSISTANT-SPLIT-ARCHITECTURE.md§7 — Interim skilllite-services