| name | seashells-theme |
| description | SeaShells theme palettes, format patterns, consistency rules, and update diagnostics. Modes: default (reference), update (migration diagnostic), list (show modes) |
| allowed-tools | Read, Glob, Grep, Edit, Write, Bash |
SeaShells Theme
Ocean-inspired color palettes for Omarchy. Dark and light variants with shared accent identity.
Model-Lane Preflight
CHECKPOINT โ Model-Lane Preflight Gate (slim, advisory-only; fires at the TOP of this skill's workflow, before any generative step):
- SKIP silently IF ANY of:
/route dispatched this invocation after running its own lane preflight (a lane advisory OR ask already printed, route otherwise ASSESSED the lane this turn, or it was deliberately suppressed โ route's coverage extends to the whole endeavor whether route asked, matched, or the user declined, including skills this one chains); this skill's frontmatter sets model-lane-gate: off; the session is headless / non-interactive; this gate is executing inside a subagent (a subagent is already model-pinned via its own frontmatter); OR an advisory for this LANE already printed this endeavor AND the active model is unchanged (advise at most once per (lane, active-model) pair per endeavor).
- Resolve this skill's lane (own
lane: frontmatter โ the SkillโLane table in .claude/skills/skill-builder/references/model-lanes.md โ NO LANE) and the lane's Preferred Model. IF no lane resolves OR the preferred-model cell is empty โ silent no-op (correctly absent, not a gap). IF this skill declares per-function lanes AND the invocation's resolved mode has its own row โ that function's lane governs; otherwise the skill-level lane covers all modes.
- Read ACTIVE_MODEL from the session system-context line "The exact model ID is โฆ" (strip
[1m]/[200k], lowercase โ model-lanes.md ยง Active-Model Detection; never an env var or Bash probe). IF the Preferred Model is malformed or names a clearly superseded family โ emit the one-line stale-mapping advisory and proceed; never advise from a stale mapping, never validate against a hardcoded list.
- Compare. Match โ silent no-op. Mismatch โ print ONE advisory line and PROCEED: "Lane advisory: this skill declares the
<lane> lane (preferred <preferred>); the active model is <active> โ to align, run /model <preferred> and re-invoke; proceeding as-is." Naming the command is INFORMATIONAL (named-command advisory directive, 2026-06-11): NEVER an AskUserQuestion, never a blocking wait (No-Switch-Prompt directive, 2026-06-06). A skill can NEVER switch the session model and never asks the user to.
- Primary-lane scope. This gate fires ONCE per invocation, for the resolved PRIMARY lane. Cross-lane mid-workflow steps never re-advise โ they delegate via this skill's LANE-AGENT-EMBED Delegation Map when present (see .claude/skills/skill-builder/references/lane-delegation.md). Delegation is never a substitute for THIS gate: analytical primary work runs on the analytical main model โ never a creative main session orchestrating analytical-pinned agents to dodge the lane.
Usage
| Mode | Invocation | Purpose |
|---|
| default | /seashells-theme | Load color palettes, format patterns, and consistency rules |
| update | /seashells-theme update | Run Omarchy migration diagnostic โ classify files, check keys, detect drift |
| list | /seashells-theme list | Display this Modes table |
Workflow: Update
When invoked with update, run this 8-step diagnostic:
- Omarchy version โ read
~/.local/share/omarchy/version
- Scan templates โ list all
.tpl files in ~/.local/share/omarchy/default/themed/
- Read theme inventory โ list files in both
omarchy/themes/seashells/ and seashells-light/
- Classify files โ for each file, read the Override Rationale and Non-templatable tables in
reference.md:
- Override โ file has a
.tpl template but we ship a hand-tuned version (rationale documented)
- Auto-generated โ
.tpl exists and we do NOT ship the file (template system handles it)
- Non-templatable โ no
.tpl exists; file is inherently non-templatable (rationale documented)
- NEW template โ a
.tpl exists but the file is not classified in reference.md (needs triage)
- Check
colors.toml completeness โ extract {{ key }} / {{ key_strip }} / {{ key_rgb }} placeholders from all .tpl files; verify every base key exists in both colors.toml files
- Check
setup script โ verify THEME_FILES array matches actual theme file inventory
- Check
reference.md โ verify Theme Files tables match actual inventory
- Produce report with sections: File Classification, New Templates, Missing Keys, Drift, Recommended Actions
Workflow: List
When invoked with list, output the Modes table from the Usage section above.
Color Consistency Rules
When editing theme files:
- Read the canonical palette from
reference.md before changing any color value
- Both themes must stay in sync structurally โ same files, same sections, same naming
- The accent color #50a3b5 is shared between dark and light themes (PAT-2026-02-26-shared-accent-color)
- Use only color-override settings โ themes must not include full app configs (DEC-2025-10-25-standardized-settings)
- Verify contrast for tab and UI element colors against their backgrounds (INC-2025-11-08-kitty-tab-foreground)
- Light theme colors require iteration โ expect multiple rounds of tuning (PAT-2026-02-26-clarity-iteration)
Configuration Format Patterns
Each config file uses a specific format. Match the pattern when editing:
- TOML (colors.toml): Flat key-value โ 18 base palette keys consumed by Omarchy template system
- JSON (vscode.json):
workbench.colorCustomizations with editor, terminal, and UI color overrides
- Lua (neovim.lua): References
kitty-themes.nvim plugin, sets colorscheme to "SeaShells", transparent = true
- Conf (hyprland.conf): Variable syntax
$activeBorderColor with rgba colors and gradients
- Conf (hyprlock.conf): Key-value color definitions for lock screen
- Conf (kitty.conf): Key-value color definitions
- INI (btop.theme): Key-value with section headers, hand-tuned selection/gradient values
Project Memory
Before recommending changes to files in this skill's domain, check
.claude/skills/awareness-ledger/ledger/index.md for relevant records.
If matching records exist, read them and incorporate their warnings,
decisions, and patterns into your plan. Use /awareness-ledger consult
for full agent-assisted analysis when high-risk overlap is detected.
After resolving issues that produce institutional knowledge (root causes,
architectural decisions, recurring patterns, user flows), ask the user
if they want to record it with /awareness-ledger record [type].
Grounding
Before using any color value or format pattern:
- Read
reference.md
- State: "I will use [COLOR/PATTERN] from reference.md under [SECTION]"
See reference.md for canonical color palettes.
Self-Heal Observer
Throughout this session, quietly note any friction signals โ corrections, reformulations,
clarifying questions, "actually" moments, or any subtle sign that this skill's instructions
may have led to a misrepresentation. Do not interrupt the session to address these.
Do not mention that you are observing.
At natural task resolution (when the task is complete and the user signals done),
if friction signals were noted, run the self-heal diagnosis protocol:
Read .claude/skills/self-heal/references/diagnosis-protocol.md and follow it exactly.
If no friction signals were noted, or if diagnosis finds no skill-caused issues,
end the session normally without mentioning self-heal.
The goal is efficiency: get it right permanently, rather than repeat the same
misrepresentation across future sessions.