specs/021-acryl-agent-plugin-ecosystem/spec.md, specs/016-plugin-lifecycle-control, specs/031-desktop-plugin-install, specs/028-harness-engine-swap/spec.md reports Session plugins 0 plugins / Global plugins 0 plugins while searching for editor, and acryl-cli has no plugin surface at all. User instruction: "first plan it in spec, then do. add this as spec. for each surface."
Spec folder: specs/034-plugins-on-every-surface/
Tasks
tasks.md exists but has no checklist items.
Tasks: plugins on every surface
Ordered. Each task lands as its own commit with its evidence; a task that
cannot show its evidence is not done. T001 gates T002+ by answering the
open research questions that change the design.
Order amended 2026-09-12 after the composition measurement in research.md:
T005 runs before T003, because T003's commands invoke the shared lifecycle
capability T005 creates - the reverse order would ship a CLI command over
Desktop-private code and then rewrite it. T002 is scoped to the measured
diff: tui gains the Host inventory row (pluginInventory), desktop and web
keep today's rows.
T001 - Answer the composition and panel questions
Files: research.md
Do: determine (a) what @deepseek-ai/dsh-host-plugin-inventory enumerates
and whether a TUI can read it without a client UI, (b) which ACRYL plugin rows
each surface can host today, (c) whether dsh-community-market runs under a
non-Electron host.
Evidence: answers written into research.md with the console/activation
proof for each, or an explicit "unknown, prototype needed" before T004/T006.
Done when: Q1-Q3 have a status and the plan's per-surface table is either
confirmed or corrected.
T002 - Make plugin composition declaration-driven
Files: acryl-harness-runtime/src/coding-capabilities.ts,
acryl-harness-runtime/src/engine-dsh.ts, acryl-desktop/src/profile.ts,
acryl-harness-runtime/tests/*
Do: express the plugin capabilities as entries in
ACRYL_CODING_CAPABILITIES with per-capability (and where needed per-row)
surfaces; replace NON_TUI_SHARED_ROW_IDS with that declaration;
createAcrylCodingCapabilityPatches returns the declared set for the requested
surfaces. No behavior change on desktop yet; web gains the shared rows it
declares.
Evidence: table-driven tests per surface asserting the exact composed row
ids; full acryl-harness-runtime, acryl-cli, acryl-desktop suites green.
Done when: adding a capabi
specs/021-acryl-agent-plugin-ecosystem/spec.md,specs/016-plugin-lifecycle-control,specs/031-desktop-plugin-install,specs/028-harness-engine-swap/spec.mdreportsSession plugins 0 plugins/Global plugins 0 pluginswhile searching foreditor, andacryl-clihas no plugin surface at all. User instruction: "first plan it in spec, then do. add this as spec. for each surface."Spec folder:
specs/034-plugins-on-every-surface/Tasks
tasks.md exists but has no checklist items.
Tasks: plugins on every surface
Ordered. Each task lands as its own commit with its evidence; a task that
cannot show its evidence is not done.
T001gatesT002+ by answering theopen research questions that change the design.
Order amended 2026-09-12 after the composition measurement in
research.md:T005runs beforeT003, because T003's commands invoke the shared lifecyclecapability T005 creates - the reverse order would ship a CLI command over
Desktop-private code and then rewrite it.
T002is scoped to the measureddiff: tui gains the Host inventory row (
pluginInventory), desktop and webkeep today's rows.
T001 - Answer the composition and panel questions
Files:
research.mdDo: determine (a) what
@deepseek-ai/dsh-host-plugin-inventoryenumeratesand whether a TUI can read it without a client UI, (b) which ACRYL plugin rows
each surface can host today, (c) whether
dsh-community-marketruns under anon-Electron host.
Evidence: answers written into
research.mdwith the console/activationproof for each, or an explicit "unknown, prototype needed" before T004/T006.
Done when: Q1-Q3 have a status and the plan's per-surface table is either
confirmed or corrected.
T002 - Make plugin composition declaration-driven
Files:
acryl-harness-runtime/src/coding-capabilities.ts,acryl-harness-runtime/src/engine-dsh.ts,acryl-desktop/src/profile.ts,acryl-harness-runtime/tests/*Do: express the plugin capabilities as entries in
ACRYL_CODING_CAPABILITIESwith per-capability (and where needed per-row)surfaces; replaceNON_TUI_SHARED_ROW_IDSwith that declaration;createAcrylCodingCapabilityPatchesreturns the declared set for the requestedsurfaces. No behavior change on
desktopyet;webgains the shared rows itdeclares.
Evidence: table-driven tests per surface asserting the exact composed row
ids; full
acryl-harness-runtime,acryl-cli,acryl-desktopsuites green.Done when: adding a capabi