Build, customize, and deploy Ghost CMS themes. Use this skill whenever the user mentions Ghost themes, Ghost CMS, Handlebars templates (.hbs files), Ghost Admin, Ghost membership/subscription integration, Ghost custom settings, or Ghost content API — even if they don't say "theme" explicitly. Trigger on: building a blog theme, creating a Ghost site, editing .hbs templates, adding member-only content, Ghost hero sections, Ghost routing (routes.yaml), Ghost image optimization, Ghost dark mode, Ghost search, Ghost deploy, gscan validation, Ghost JSON-LD/SEO, or any mention of {{ghost_head}}, {{ghost_foot}}, {{#foreach}}, {{#get}}, {{img_url}}, {{asset}}, @custom, @member, or Portal. Also use when the user has an existing Ghost theme they want to modify, extend, or debug — not just for new themes.
100
100%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Passed
No known issues
{
"name": "my-ghost-theme",
"description": "A custom Ghost theme",
"version": "1.0.0",
"license": "MIT",
"author": {
"email": "author@example.com"
},
"engines": {
"ghost": ">=5.0.0"
},
"scripts": {
"dev": "bun run scripts/build.ts --watch",
"build": "bun run scripts/build.ts",
"typecheck": "tsc --noEmit",
"lint": "eslint .",
"test:visual": "bun run scripts/test-screenshots.ts",
"zip": "bash scripts/zip.sh"
},
"devDependencies": {
"eslint": "^9.0.0",
"postcss": "^8.4.47",
"postcss-import": "^16.1.0",
"typescript": "^5.7.0",
"typescript-eslint": "^8.0.0"
},
"config": {
"posts_per_page": 25,
"image_sizes": {
"xs": { "width": 150 },
"s": { "width": 400 },
"m": { "width": 750 },
"l": { "width": 960 },
"xl": { "width": 1140 },
"xxl": { "width": 1920 }
},
"card_assets": true,
"custom": {
"navigation_layout": {
"type": "select",
"options": ["Logo on the left", "Logo in the middle"],
"default": "Logo on the left"
},
"hero_title": {
"type": "text",
"default": "",
"description": "Custom homepage hero title (defaults to site title)",
"group": "homepage"
},
"hero_description": {
"type": "text",
"default": "",
"description": "Custom homepage hero description",
"group": "homepage"
},
"show_featured_posts": {
"type": "boolean",
"default": true,
"description": "Show featured posts section on homepage",
"group": "homepage"
},
"feed_layout": {
"type": "select",
"options": ["Grid", "List"],
"default": "Grid",
"group": "homepage"
},
"accent_color_override": {
"type": "color",
"default": "#FF5500",
"description": "Button and link accent color"
},
"cta_text": {
"type": "text",
"default": "Subscribe to get full access",
"description": "Call-to-action text for members",
"group": "post"
}
}
}
}