Ghost is a publishing platform for creating websites, blogs, memberships, subscriptions, and newsletters. Publishers and developers can use it through managed hosting or run it themselves, while contributors work on its monorepo, themes, and API.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/tryghost/ghost/shade-no-dark-variantsnpx skills add TryGhost/Ghost --skill shade-no-dark-variantsgit clone --depth 1 https://github.com/TryGhost/GhostWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/tryghost/ghost/shade-no-dark-variants)<a href="https://agentmods.dev/skills/tryghost/ghost/shade-no-dark-variants"><img src="https://agentmods.dev/badge/skills/tryghost/ghost/shade-no-dark-variants.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00000 | $0.00564 |
| Opus 5 | $0.00000 | $0.00282 |
| Sonnet 5 | $0.00000 | $0.00113 |
| Haiku 4.5 | $0.00000 | $0.00056 |
Grade A, and why
Shade no dark variants scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 51 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Shade — don't use dark: for colour
Shade's semantic tokens (bg-background, text-foreground, border-border-default, bg-surface-elevated, …) already flip between light and dark mode. Writing dark:bg-... / dark:text-... / dark:border-... means the engineer reached for a raw, non-semantic token — fix the token, don't patch with a dark: variant.
Correct
<div className="bg-surface-elevated border border-border-default text-foreground">
<p className="text-muted-foreground">Hint text</p>
</div>
Incorrect
// BAD — using dark: to patch a raw palette utility
<div className="bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100">
// BAD — redundant: the semantic token already flips itself, so the dark: variant adds a duplicate rule that does nothing. Reading it suggests dark mode is special-cased here when it isn't.
<div className="bg-surface-elevated dark:bg-surface-elevated">
How to fix a dark: smell
- Identify what the class describes — surface? text? border? hover?
- Pick the matching semantic token (see the
shade-tokens-not-hexskill for the inventory). - Drop both the light and the
dark:halves; the token handles both modes.
Exceptions
Assets that are genuinely different in dark mode and can't be expressed as a token:
- Logos and brand marks
- Illustrations / SVG art
- Screenshots or imagery
For these, dark: is fine because there's nothing semantic to express.
Some existing Shade components also use dark: for ring opacity (e.g. dark:ring-destructive/40 inside inputSurface). When a token doesn't exist for the variant you need and the value is an opacity modifier on an existing token, a narrow dark: is acceptable — but first check whether a new token belongs in theme-variables.css.
When debugging dark mode
If something looks wrong only in dark mode, the fix is almost always wrong token, not missing dark: variant. Re-pick from the semantic surface table; check apps/shade/theme-variables.css for what each token resolves to.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 51 lines · 0 tokens per session scan A dfd1ea160b07
Shade no dark variants is a skill published in the GitHub repository TryGhost/Ghost (55,162 stars, last pushed today), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 564 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
cms-metadata-writer
Writes structured metadata fields — title tag, meta description, tags, category, slug, and Open Graph text — for a CMS entry, optimized for search discoverability and social sharing.
cms-metadata-tagger
Takes a finished piece of content and produces a complete, archive-ready metadata record — including descriptive tags, subject classifications, rights notes, and an archival summary — for entry into a content management or digital archive system.
ui4-review
Review UI4 CSS migrations for proper token usage. Checks that CSS variables are used instead of hardcoded values.
video-shot-demos
为视频/课程/解说文案制作"每镜头一个 HTML"的高完成度网页演示动画(分镜演示页、视频配套演示动画、录屏用动画网页、科普/技术/产品发布可视化镜头)。只要用户提到:给视频做演示动画网页、分镜 HTML、shot 页面、把口播稿/大纲做成动画、视频画面设计网页版、录一段网页动画、或要求改造升级一批已有演示页——就用本 Skill。核心是统一的电影化播放器机制 + 每页完全不同的视觉风格 + 镜头语言 + 同步音效 + 角色表情吐槽,内容完全开放不设限。.
intlayer-content
Define rich content structures using Intlayer content nodes. Use when the user asks to "create translations", "handle pluralization", "use markdown in content", or implement "conditional content".
intlayer-angular
Integrates Intlayer internationalization with Angular applications. Use when the user asks to "setup Angular i18n", create a new translated component, use the "useIntlayer" composable, or configure providers.