native-ui: package each role's surfaces as one generated Claude Code plugin #238

Closed
opened 2026-08-06 20:20:35 +00:00 by coilyco-ops · 1 comment
Member

Step 6 of the native UI build order.

native-ui currently emits a theme file plus a settings fragment per role. A consumer therefore installs a file and patches several settings keys. Claude Code plugins can carry themes, outputStyles, and syntaxHighlighting as components in one manifest, so a role could install as a single unit.

Scope

  • Emit one generated plugin per role instead of loose files, keeping the loose output available for hosts that do not want plugins.
  • Decide whether output styles and syntax highlighting are worth generating per role, or whether the theme alone justifies the packaging.

Caveat worth weighing first

--safe-mode disables plugins, custom themes, output styles, and keybindings together. Packaging does not change what survives troubleshooting, but it does concentrate more of the identity behind one switch. The status line and the session name stay outside that blast radius either way.

Done when

A role installs its native surfaces as one unit, and the loose file layout still works.

Step 6 of the [native UI build order](docs/claude-native-ui-plan.md). `native-ui` currently emits a theme file plus a settings fragment per role. A consumer therefore installs a file and patches several settings keys. Claude Code plugins can carry `themes`, `outputStyles`, and `syntaxHighlighting` as components in one manifest, so a role could install as a single unit. ## Scope * Emit one generated plugin per role instead of loose files, keeping the loose output available for hosts that do not want plugins. * Decide whether output styles and syntax highlighting are worth generating per role, or whether the theme alone justifies the packaging. ## Caveat worth weighing first `--safe-mode` disables plugins, custom themes, output styles, and keybindings together. Packaging does not change what survives troubleshooting, but it does concentrate more of the identity behind one switch. The status line and the session name stay outside that blast radius either way. ## Done when A role installs its native surfaces as one unit, and the loose file layout still works.
Author
Member

Closing as no longer worth it. #236 changed the arithmetic this step was written against.

When this was step 6, a consumer had to install a theme file and patch several settings keys, so packaging collapsed two chores into one. After #236 the settings half travels as --settings <bundle>/claude-settings.json in the flagSettings tier and installs nothing at all. What is left to package is eight additive theme files under <home>/.claude/themes/, which convergence already handles as a plain file copy in agentic-os#962.

So the prize shrank to almost nothing, while the caveat this issue flagged first did not move: --safe-mode disables plugins, custom themes, output styles, and keybindings together, and packaging would concentrate more of the identity behind that one switch. Paying a wider blast radius to save one file copy is the wrong trade.

The loose file layout stays the only path. Output styles and syntax highlighting stay ungenerated, and neither has a role-specific case anyone has asked for.

Reopen if convergence turns out to need a manifest for something other than the theme files, or if a future harness release moves a surface out of the settings schema and back into plugin-only territory.

Closing as no longer worth it. #236 changed the arithmetic this step was written against. When this was step 6, a consumer had to install a theme file *and* patch several settings keys, so packaging collapsed two chores into one. After #236 the settings half travels as `--settings <bundle>/claude-settings.json` in the `flagSettings` tier and installs nothing at all. What is left to package is eight additive theme files under `<home>/.claude/themes/`, which convergence already handles as a plain file copy in agentic-os#962. So the prize shrank to almost nothing, while the caveat this issue flagged first did not move: `--safe-mode` disables plugins, custom themes, output styles, and keybindings together, and packaging would concentrate more of the identity behind that one switch. Paying a wider blast radius to save one file copy is the wrong trade. The loose file layout stays the only path. Output styles and syntax highlighting stay ungenerated, and neither has a role-specific case anyone has asked for. Reopen if convergence turns out to need a manifest for something other than the theme files, or if a future harness release moves a surface out of the settings schema and back into plugin-only territory.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/agent-compose#238
No description provided.