codex-theme-installer — Claude Code skill
Downloads a CodexThemes package, validates it, and places the files in the local theme library. It is used when a theme should be installed and activated in Codex.
npx skills add codexthemes/skills --skill codex-theme-installer -a claude-codeWhat codex-theme-installer does
The skill accepts a theme slug or a URL such as https://codexthemes.ai/themes/<theme-id>. Its TypeScript script downloads the package, checks its format, schema, matching theme id, safe relative paths, and the 30 MB size limit, then unpacks the contents into ~/.codexthemes/themes/<theme-id>/.
The installed directory receives theme.json, the stylesheet, artwork, and the readme. A non-empty theme directory is protected from accidental replacement; --force is used for an update after confirmation, with a warning when local edits may be present. Once the files are ready, the skill hands off to codex-theme-switcher so Codex can apply the theme. Node.js 20+ and npx are required. When the anonymous quota is exhausted, a CodexThemes API key can be stored with apikey.ts set; scripts display only a masked form.
What it helps with
- download a theme from its slug or URL
- validate the package before writing files
- unpack theme assets into the local library
- refresh an installed theme with
--force - continue from installation to Codex activation
Example prompts for the agent
- Install the CodexThemes theme with id
<theme-id>and activate it in Codex. - Download the theme from
https://codexthemes.ai/themes/<theme-id>, validate it, and place its files locally. - Reinstall the theme with
--forceto update the local copy, then continue to activation.
How to install codex-theme-installer
1Skills CLI (Vercel)
npx skills add codexthemes/skills --skill codex-theme-installer -a claude-code2Manually: put the files in place
~/.claude/skills/codex-theme-installer/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/codex-theme-installer/
1Skills CLI (Vercel)
npx skills add codexthemes/skills --skill codex-theme-installer -a codex2Manually: put the files in place
.agents/skills/codex-theme-installer/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add codexthemes/skills --skill codex-theme-installer -a cursor2Manually: put the files in place
.cursor/skills/codex-theme-installer/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install codexthemes/skills codex-theme-installer2Manually: put the files in place
.github/skills/codex-theme-installer/SKILL.md1Skills CLI (Vercel)
npx skills add codexthemes/skills --skill codex-theme-installer -a gemini-cli2Platform CLI
gemini skills install https://github.com/codexthemes/skills --path skills/codex-theme-installerManually: put the files in place
.devin/skills/codex-theme-installer/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add codexthemes/skills --skill codex-theme-installer -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about codex-theme-installer
How do I install codex-theme-installer in Claude Code?
Run npx skills add codexthemes/skills --skill codex-theme-installer -a claude-code, then open ~/.claude/skills/codex-theme-installer/SKILL.md.
What does codex-theme-installer do?
It downloads a published CodexThemes package, validates it, and extracts the theme files into ~/.codexthemes/themes/<theme-id>/ before handing off activation.
What should I do after the free download quota is exhausted?
Create a key at https://codexthemes.ai/settings/apikeys, save it with printf '%s' "<api-key>" | npx tsx scripts/apikey.ts set, and run the installation again.
Source text
SKILL.md · Apache-2.0
--- name: codex-theme-installer description: Download a published Codex theme from codexthemes.ai and install its source files into the local ~/.codexthemes theme library, anonymously within a free quota or with a CodexThemes API key for higher limits. Use when a user asks to install, download, get, or try a theme from CodexThemes, names a codexthemes.ai theme URL or theme id to install, or hits a download rate limit and needs API key guidance. --- # Install a Codex theme from CodexThemes Download a published theme's portable package from codexthemes.ai and unpack its source files into `~/.codexthemes/themes/<theme-id>/`. This skill is standalone: its TypeScript scripts own the download, validation, and local installation. It does not search the gallery (codex-theme-finder), create themes (codex-theme-creator), or submit them (codex-theme-submitter). Applying belongs to codex-theme-switcher — but a successful install chains directly into it (Step 4); installing files and stopping is not a finished job. The only required local tools are Node.js 20+ and `npx`. Read `references/download-api.md` before diagnosing an unexpected API response or changing endpoint behavior. Run all commands from the installed skill directory. ## Step 1: identify the theme Resolve what to install to a theme id — the lowercase slug from codex-theme-finder results or from a `https://codexthemes.ai/themes/<theme-id>` URL. The script accepts either form. If the user only describes a style without naming a theme, find candidates with codex-theme-finder first instead of guessing ids. ## Step 2: install ```bash npx tsx scripts/install-theme.ts <theme-id | codexthemes.ai theme URL> [--force] ``` Downloads work without any API key inside a free anonymous quota, so do not demand a key up front. When a key is already configured (`CODEXTHEMES_API_KEY` environment variable or `~/.codexthemes/credentials.json`), the script sends it automatically for higher limits. The script validates the downloaded package (format, schema version, matching theme id, safe relative filenames, ≤30 MB) before writing anything, then unpacks `theme.json`, the stylesheet, the artwork, and the readme into `~/.codexthemes/themes/<theme-id>/`. It refuses to overwrite an existing non-empty theme directory; pass `--force` only after the user confirms replacing their local copy — the directory may hold their own edits. **Updating an installed theme**: published themes are updated in place on codexthemes.ai, so when the user asks to update, upgrade, or re-download a theme they already installed, re-run the install with `--force` — the update request itself is the confirmation, unless the local copy holds edits the user made (then warn first). After the files land, continue into Step 4 so the running app actually switches to the new version; a hot swap of the same theme id re-injects the updated CSS. ## Step 3: handle quota and rate limits On HTTP `429` or `402` the free quota is exhausted; the script's error message includes any `Retry-After` value. Do not retry in a loop. Tell the user the free download quota is used up and guide them to configure a personal API key: 1. Create a key at `https://codexthemes.ai/settings/apikeys`. 2. Store it: `printf '%s' "<api-key>" | npx tsx scripts/apikey.ts set` (stdin keeps the key out of shell history; `apikey.ts set <key>` also works). 3. Re-run the install. Check the current key state with `npx tsx scripts/apikey.ts status`; remove a stored key with `npx tsx scripts/apikey.ts clear`. Never print a full key (scripts only show a masked form), never write it into a project file, and never commit it. On `401`/`403` the configured key is invalid or revoked — guide the user to create a fresh key the same way. On `404` the theme id does not exist; re-check the id with codex-theme-finder. ## Step 4: activate, or hand the user the exact next reply An install request means the user wants to see the theme in Codex, not merely store its files. Report the installed path (`~/.codexthemes/themes/<theme-id>/`), the theme version, and the files written — then continue directly into activation with codex-theme-switcher. If codex-theme-switcher is not installed, bootstrap it the same way this skill was bootstrapped (`npx skills add codexthemes/skills --skill codex-theme-switcher -g -a codex`). - If Codex already exposes its debugging endpoint, hot-swap now with the switcher's `switch-theme.ts apply <theme-id>` and verify with `switch-theme.ts status` — a hot swap is reversible and needs no confirmation beyond the install request itself. - If activation requires restarting Codex, do not restart silently and do not stop at "installed". End by telling the user the exact reply that continues, for example: "Reply `apply` and I will restart Codex to activate `<theme-id>`." When they reply, follow the switcher's `--launch` flow. Never end the conversation with only "files installed, not applied" and no actionable next step, and never claim the theme is active until the switcher's `status` reports `active`.
© codexthemes · Apache-2.0 · codexthemes/skills