Skip to content

feat(agentplugin): install the theme skill into opencode, oh-my-pi, Crush and Kiro - #1005

Merged
omartelo merged 1 commit into
mainfrom
feat/theme-skill-every-provider
Nov 1, 2026
Merged

omartelo merged 1 commit into
mainfrom
feat/theme-skill-every-provider

Conversation

@omartelo

@omartelo omartelo commented Nov 1, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

The plugin's theme skill only reached Claude Code, Codex and Antigravity (which read skills/ out of the installed plugin) and Cursor CLI (which loads Claude Code's installed plugins). opencode, oh-my-pi, Crush and Kiro CLI read skills only from a directory of their own, so they never had it: /lich in opencode listed nothing.

The file-shipped install of those four now also fetches skills/theme/{SKILL.md,template.json,validate.mjs} from the same release tag and writes them as lich-theme:

Provider Skills directory Source of the path
opencode $XDG_CONFIG_HOME/opencode/skills measured with opencode debug skill on 1.19.4; skills become slash commands, so this is /lich-theme
oh-my-pi <agent dir>/skills discovery/builtin.ts, 18.8.9
Crush skills beside the crushrc, or $CRUSH_SKILLS_DIR GlobalSkillsDirs, v0.98.1
Kiro CLI $KIRO_HOME/skills already in the lich agent's resources
  • Renamed to lich-theme (directory and frontmatter name): outside the plugin the skill loses its lich: namespace, and a bare theme could collide with a user's own skill.
  • Written before the version marker, so a release missing part of the skill fails the install without reporting it installed.
  • Every compatible release (v0.13.0 to v0.20.8) carries the three files.

Companion: lichdotdev/lich-plugin#97 (docs only).

Tests

  • New skill_test.go: the skill lands in each provider's directory, renamed, including Crush under CRUSH_SKILLS_DIR; a release missing a skill file leaves nothing installed.
  • files_test.go: the release fixture now serves skills/theme, and the opencode and oh-my-pi "fetched just the module" assertions expect the module plus the skill. Contract change: the install now fetches the skill.
  • crushCLI clears CRUSH_SKILLS_DIR so a developer's own value cannot send a test's writes into their real skills directory.

Test plan

  • gofmt -l ., go vet ./..., go test ./... (memory jail)
  • go vet ./internal/agentplugin/ for darwin and windows
  • Real opencode 1.19.4 lists lich-theme from a config dir laid out the way the install writes it

…rush and Kiro

These four read no skills out of the plugin, so the file-shipped install now copies skills/theme from the release into each one's own skills directory, renamed lich-theme so it cannot collide with a user's skill once it loses the plugin's namespace. opencode turns it into the /lich-theme command. The skill is written before the version marker, so a release missing part of it leaves nothing reported as installed.

Tests: the release fixture now serves skills/theme, and the opencode and oh-my-pi fetch assertions expect the skill beside the module; the contract changed, since the install fetches it.
@omartelo
omartelo merged commit 1e58005 into main Nov 1, 2026
7 checks passed
@omartelo
omartelo deleted the feat/theme-skill-every-provider branch November 1, 2026 18:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant