{"skill":{"slug":"amethyst-theme","title":"amethyst-theme","preview":"Apply the Amethyst Night palette to user-requested apps like VS Code, Kitty, CAVA, btop, and OpenCode, or adapt it to other tools by inspecting their theme form...","description":"Apply the Amethyst Night palette to user-requested apps like VS Code, Kitty, CAVA, btop, and OpenCode, or adapt it to other tools by inspecting their theme format.","license":"MIT","compatibility":"opencode","metadata":{"audience":"developers"},"content":"This skill applies a shared Amethyst Night theme across apps and tools.\n\nUse it when the user asks to theme a specific app, terminal tool, editor, or config with the existing Amethyst palette, or when they want several tools to match the same look.\n\n## Core Goal\n\nPreserve one coherent palette and adapt it to the target app's native theme format instead of inventing a new color system each time.\n\nAlways preserve the user's existing config structure where possible. Make the smallest safe change that activates the theme.\n\n## Canonical Palette\n\nUse these exact semantic colors unless the user explicitly asks for a variant:\n\n- `accent`: `#A78BFA`\n- `accentSoft`: `#D3C4FF`\n- `added`: `#8CE0B6`\n- `background`: `#15131C`\n- `border`: `#473B58`\n- `comment`: `#84769A`\n- `editor`: `#1C1826`\n- `entity`: `#C49BFF`\n- `entityName`: `#C89CFF`\n- `error`: `#FF8F9F`\n- `gutter`: `#9789AD`\n- `info`: `#AA9ACF`\n- `keybind`: `#FAFAFA`\n- `keyword`: `#E0B8FF`\n- `line`: `#221D2D`\n- `panel`: `#1D1928`\n- `selection`: `#A78BFA33`\n- `success`: `#8CE0B6`\n- `text`: `#F1ECFA`\n- `textMuted`: `#B6A9C8`\n- `warn`: `#F2CF76`\n\nDefault theme names:\n\n- Human-facing: `Amethyst Night`\n- File/config slug: `amethyst-night`\n\n## Universal Mapping Rules\n\nWhen the target app has different token names, map them by role:\n\n- Main window/app background -> `background`\n- Secondary surfaces/panels -> `panel`\n- Editor/input surface -> `editor`\n- Active line/hover strip -> `line`\n- Borders/dividers -> `border`\n- Primary text -> `text`\n- Muted text/gutters -> `textMuted` or `gutter`\n- Comments/de-emphasized syntax -> `comment`\n- Keywords -> `keyword`\n- Types/classes/entities -> `entity`\n- Functions/headings/important names -> `entityName`\n- Selection/active region -> `selection`\n- Added/success states -> `added`\n- Warning states -> `warn`\n- Error/removed states -> `error`\n- Info/secondary highlight -> `info`\n- Strong accent/active controls -> `accent`\n- Softer links/operators/string-like accents -> `accentSoft`\n\n## Terminal Color Mapping\n\nFor terminal emulators and TUI tools with ANSI palettes, use this default mapping:\n\n- `black` -> `background`\n- `red` -> `error`\n- `green` -> `added`\n- `yellow` -> `warn`\n- `blue` -> `info`\n- `magenta` -> `accent`\n- `cyan` -> `accentSoft`\n- `white` -> `text`\n\nBright colors:\n\n- `bright_black` -> `comment`\n- `bright_red` -> `error`\n- `bright_green` -> `added`\n- `bright_yellow` -> `warn`\n- `bright_blue` -> `entity`\n- `bright_magenta` -> `keyword`\n- `bright_cyan` -> `accentSoft`\n- `bright_white` -> `keybind`\n\n## Workflow\n\n### 1. Identify the target app\n\nExtract the app or apps from the user's request.\n\nCommon targets include:\n\n- VS Code\n- Kitty\n- CAVA\n- btop\n- OpenCode\n- Fastfetch\n- other editors or terminal tools\n\nIf the user names multiple apps, theme all of them.\n\n### 2. Inspect the existing config first\n\nBefore editing:\n\n- Find the config file or theme directory with `glob`\n- Read the current config with `read`\n- Follow the app's existing include/import structure instead of replacing it\n- Preserve unrelated settings\n\n### 3. Choose the right app-specific path\n\n#### VS Code\n\n- If the user wants a full theme, create or update a theme extension with `package.json` and a theme JSON file\n- Use `Amethyst Night` as the label and `amethyst-night` in filenames where appropriate\n- Theme workbench colors, terminal colors, token colors, and semantic token colors\n- Validate all JSON afterward\n\n#### Kitty\n\n- Prefer updating the included theme file referenced by `kitty.conf`\n- Theme: background, foreground, cursor, selection, borders, tabs, ANSI colors, bright ANSI colors\n- Preserve font, padding, and other terminal settings unless the user asks otherwise\n\n#### CAVA\n\n- Update the `[color]` section\n- Set `background` and `foreground` directly\n- Use a 6-step Amethyst gradient unless the existing config clearly uses a different structure\n- Keep audio/input/output settings unchanged\n\nSuggested default gradient:\n\n- `#473B58`\n- `#84769A`\n- `#AA9ACF`\n- `#A78BFA`\n- `#C49BFF`\n- `#D3C4FF`\n\n#### btop\n\n- Create a `.theme` file in a directory btop can actually read from\n- Prefer the standard user theme directory if writable: `~/.config/btop/themes`\n- Set `color_theme` to the bare theme name, not an arbitrary file path, when using named theme lookup\n- If the standard themes directory is not writable, place the theme somewhere readable such as `~/.config/btop/` and ensure btop launches with `--themes-dir` pointing there\n- If needed, create a lightweight wrapper in `~/.local/bin/btop` that forwards to `/usr/bin/btop --themes-dir \"$HOME/.config/btop\" \"$@\"`\n- If a wrapper is required, ensure `~/.local/bin` is on the user's PATH in their shell config\n\n#### OpenCode\n\n- Do not put active theme config in `opencode.json`\n- Create a theme file in `~/.config/opencode/themes/amethyst-night.json`\n- Set the active theme in `~/.config/opencode/tui.json`\n- Use the `https://opencode.ai/theme.json` shape with `defs` and `theme`\n- Theme UI colors, diff colors, markdown colors, and syntax colors\n\n#### Unknown or unsupported apps\n\n- Inspect the app's config format and theme schema first\n- Reuse the same semantic roles instead of directly copying random hexes into unrelated fields\n- Match the app's conventions for naming, includes, and file placement\n- Validate the resulting config if a schema or parser is available\n\n### 4. Verify\n\nAfter editing:\n\n- Validate JSON, TOML, or other machine-readable config when possible\n- Read back the changed file to confirm the active theme setting points at the new theme\n- Note whether the app needs restart, reload, or reinstall steps\n\n### 5. Report clearly\n\nTell the user:\n\n- which files changed\n- whether the theme is already active or only created\n- what command or restart step applies the theme\n- any environment-specific caveat such as a wrapper script or permission issue\n\n## Output Standards\n\nWhen implementing this skill:\n\n- Prefer exact palette reuse over improvisation\n- Do not introduce extra accent colors unless the target format forces it\n- Keep high contrast between `background`, `panel`, `editor`, and `text`\n- Preserve the calm dark look; do not turn it into neon or pastel mode\n- Keep comments muted, warnings warm, and errors pink-red\n\n## Avoid\n\n- Replacing the user's whole config when a targeted edit is enough\n- Breaking include chains already present in the app config\n- Using absolute theme file paths when the target app expects a theme name\n- Forgetting to validate JSON-based themes\n- Changing fonts, layout, or behavior unless the user asked for that too\n\n## Good Outcome\n\nThe finished result should feel like the same theme family everywhere:\n\n- dark\n- soft-amethyst\n- readable\n- low-noise\n- consistent across tools\n\nIf there is any doubt between \"follow the app's native theme structure\" and \"force a custom layout,\" choose the app-native structure.","document":"---\nname: amethyst-theme\ndescription: Apply the Amethyst Night palette to user-requested apps like VS Code, Kitty, CAVA, btop, and OpenCode, or adapt it to other tools by inspecting their theme format.\nlicense: MIT\ncompatibility: opencode\nmetadata:\n  audience: developers\n---\n\nThis skill applies a shared Amethyst Night theme across apps and tools.\n\nUse it when the user asks to theme a specific app, terminal tool, editor, or config with the existing Amethyst palette, or when they want several tools to match the same look.\n\n## Core Goal\n\nPreserve one coherent palette and adapt it to the target app's native theme format instead of inventing a new color system each time.\n\nAlways preserve the user's existing config structure where possible. Make the smallest safe change that activates the theme.\n\n## Canonical Palette\n\nUse these exact semantic colors unless the user explicitly asks for a variant:\n\n- `accent`: `#A78BFA`\n- `accentSoft`: `#D3C4FF`\n- `added`: `#8CE0B6`\n- `background`: `#15131C`\n- `border`: `#473B58`\n- `comment`: `#84769A`\n- `editor`: `#1C1826`\n- `entity`: `#C49BFF`\n- `entityName`: `#C89CFF`\n- `error`: `#FF8F9F`\n- `gutter`: `#9789AD`\n- `info`: `#AA9ACF`\n- `keybind`: `#FAFAFA`\n- `keyword`: `#E0B8FF`\n- `line`: `#221D2D`\n- `panel`: `#1D1928`\n- `selection`: `#A78BFA33`\n- `success`: `#8CE0B6`\n- `text`: `#F1ECFA`\n- `textMuted`: `#B6A9C8`\n- `warn`: `#F2CF76`\n\nDefault theme names:\n\n- Human-facing: `Amethyst Night`\n- File/config slug: `amethyst-night`\n\n## Universal Mapping Rules\n\nWhen the target app has different token names, map them by role:\n\n- Main window/app background -> `background`\n- Secondary surfaces/panels -> `panel`\n- Editor/input surface -> `editor`\n- Active line/hover strip -> `line`\n- Borders/dividers -> `border`\n- Primary text -> `text`\n- Muted text/gutters -> `textMuted` or `gutter`\n- Comments/de-emphasized syntax -> `comment`\n- Keywords -> `keyword`\n- Types/classes/entities -> `entity`\n- Functions/headings/important names -> `entityName`\n- Selection/active region -> `selection`\n- Added/success states -> `added`\n- Warning states -> `warn`\n- Error/removed states -> `error`\n- Info/secondary highlight -> `info`\n- Strong accent/active controls -> `accent`\n- Softer links/operators/string-like accents -> `accentSoft`\n\n## Terminal Color Mapping\n\nFor terminal emulators and TUI tools with ANSI palettes, use this default mapping:\n\n- `black` -> `background`\n- `red` -> `error`\n- `green` -> `added`\n- `yellow` -> `warn`\n- `blue` -> `info`\n- `magenta` -> `accent`\n- `cyan` -> `accentSoft`\n- `white` -> `text`\n\nBright colors:\n\n- `bright_black` -> `comment`\n- `bright_red` -> `error`\n- `bright_green` -> `added`\n- `bright_yellow` -> `warn`\n- `bright_blue` -> `entity`\n- `bright_magenta` -> `keyword`\n- `bright_cyan` -> `accentSoft`\n- `bright_white` -> `keybind`\n\n## Workflow\n\n### 1. Identify the target app\n\nExtract the app or apps from the user's request.\n\nCommon targets include:\n\n- VS Code\n- Kitty\n- CAVA\n- btop\n- OpenCode\n- Fastfetch\n- other editors or terminal tools\n\nIf the user names multiple apps, theme all of them.\n\n### 2. Inspect the existing config first\n\nBefore editing:\n\n- Find the config file or theme directory with `glob`\n- Read the current config with `read`\n- Follow the app's existing include/import structure instead of replacing it\n- Preserve unrelated settings\n\n### 3. Choose the right app-specific path\n\n#### VS Code\n\n- If the user wants a full theme, create or update a theme extension with `package.json` and a theme JSON file\n- Use `Amethyst Night` as the label and `amethyst-night` in filenames where appropriate\n- Theme workbench colors, terminal colors, token colors, and semantic token colors\n- Validate all JSON afterward\n\n#### Kitty\n\n- Prefer updating the included theme file referenced by `kitty.conf`\n- Theme: background, foreground, cursor, selection, borders, tabs, ANSI colors, bright ANSI colors\n- Preserve font, padding, and other terminal settings unless the user asks otherwise\n\n#### CAVA\n\n- Update the `[color]` section\n- Set `background` and `foreground` directly\n- Use a 6-step Amethyst gradient unless the existing config clearly uses a different structure\n- Keep audio/input/output settings unchanged\n\nSuggested default gradient:\n\n- `#473B58`\n- `#84769A`\n- `#AA9ACF`\n- `#A78BFA`\n- `#C49BFF`\n- `#D3C4FF`\n\n#### btop\n\n- Create a `.theme` file in a directory btop can actually read from\n- Prefer the standard user theme directory if writable: `~/.config/btop/themes`\n- Set `color_theme` to the bare theme name, not an arbitrary file path, when using named theme lookup\n- If the standard themes directory is not writable, place the theme somewhere readable such as `~/.config/btop/` and ensure btop launches with `--themes-dir` pointing there\n- If needed, create a lightweight wrapper in `~/.local/bin/btop` that forwards to `/usr/bin/btop --themes-dir \"$HOME/.config/btop\" \"$@\"`\n- If a wrapper is required, ensure `~/.local/bin` is on the user's PATH in their shell config\n\n#### OpenCode\n\n- Do not put active theme config in `opencode.json`\n- Create a theme file in `~/.config/opencode/themes/amethyst-night.json`\n- Set the active theme in `~/.config/opencode/tui.json`\n- Use the `https://opencode.ai/theme.json` shape with `defs` and `theme`\n- Theme UI colors, diff colors, markdown colors, and syntax colors\n\n#### Unknown or unsupported apps\n\n- Inspect the app's config format and theme schema first\n- Reuse the same semantic roles instead of directly copying random hexes into unrelated fields\n- Match the app's conventions for naming, includes, and file placement\n- Validate the resulting config if a schema or parser is available\n\n### 4. Verify\n\nAfter editing:\n\n- Validate JSON, TOML, or other machine-readable config when possible\n- Read back the changed file to confirm the active theme setting points at the new theme\n- Note whether the app needs restart, reload, or reinstall steps\n\n### 5. Report clearly\n\nTell the user:\n\n- which files changed\n- whether the theme is already active or only created\n- what command or restart step applies the theme\n- any environment-specific caveat such as a wrapper script or permission issue\n\n## Output Standards\n\nWhen implementing this skill:\n\n- Prefer exact palette reuse over improvisation\n- Do not introduce extra accent colors unless the target format forces it\n- Keep high contrast between `background`, `panel`, `editor`, and `text`\n- Preserve the calm dark look; do not turn it into neon or pastel mode\n- Keep comments muted, warnings warm, and errors pink-red\n\n## Avoid\n\n- Replacing the user's whole config when a targeted edit is enough\n- Breaking include chains already present in the app config\n- Using absolute theme file paths when the target app expects a theme name\n- Forgetting to validate JSON-based themes\n- Changing fonts, layout, or behavior unless the user asked for that too\n\n## Good Outcome\n\nThe finished result should feel like the same theme family everywhere:\n\n- dark\n- soft-amethyst\n- readable\n- low-noise\n- consistent across tools\n\nIf there is any doubt between \"follow the app's native theme structure\" and \"force a custom layout,\" choose the app-native structure.\n","url":"https://pinky.moe/api/skills/amethyst-theme","rawUrl":"https://pinky.moe/api/skills/amethyst-theme?format=raw","pageUrl":"https://pinky.moe/skills/amethyst-theme"}}