Refresh Halo theme skill and starter

Reworks the `halo-theme-dev` skill around current Halo theme workflows: replaces bundled reference docs with on-demand documentation guidance, broadens the skill scope, removes the OpenAI-specific agent config, and adds eval coverage for settings, SEO, and Vite layout behavior. It also updates the Vite starter by pinning `vite-plugin-halo-theme`, adding a source `layout.html` contract plus `author.html`, wiring locale-aware `lang` handling, and adding ignored/generated asset placeholders for the build output.
This commit is contained in:
Ryan Wang
2026-09-01 16:36:38 +08:00
parent 8ab98b9e35
commit 2ed0c768a4
23 changed files with 177 additions and 1300 deletions
@@ -0,0 +1,42 @@
{
"skill_name": "halo-theme-dev",
"evals": [
{
"id": 1,
"prompt": "Create a corporate website theme for Halo 2.26. The theme needs settings for its color scheme, homepage sections, and footer styling. The requester also wants site logo, favicon, global head code, and footer code fields in the theme settings. Build the smallest runnable theme and explain which settings belong to Halo instead of the theme.",
"expected_output": "A runnable theme that reuses Halo's system-managed site identity and code injection while defining settings only for theme-specific appearance and layout.",
"files": [],
"expectations": [
"settings.yaml does not duplicate the site logo, favicon, or general head and footer code injection",
"Templates use system variables such as site.logo and site.favicon and preserve halo:footer",
"The theme directory name, theme.yaml metadata.name, and minimum Halo version are consistent",
"Theme settings contain only theme-specific color, layout, and component options"
]
},
{
"id": 2,
"prompt": "Add canonical, Open Graph, and Article JSON-LD metadata to post.html in a Halo 2.26 theme. The page needs the current post's absolute URL. The current draft uses #request.getRequestURI() and builds JSON with string concatenation. Correct it and provide the template.",
"expected_output": "SEO metadata generated from Halo page variables and safe Thymeleaf JavaScript inlining without Servlet request objects or manual JSON escaping.",
"files": [],
"expectations": [
"The template does not use #request, #response, #session, #servletContext, or #ctx.exchange",
"The post URL is built from documented variables such as site.url and post.status.permalink",
"JSON-LD uses th:inline=javascript serialization instead of manually concatenating quoted strings",
"The template does not duplicate Halo-injected description or keywords and allows optional SEO output to be disabled"
]
},
{
"id": 3,
"prompt": "Modify an existing vite-plugin-halo-theme project whose source files live in src/ and whose templates/ directory and hashed assets are generated by the build. Add the layout.html html(head, content) contract for plugin-rendered frontend pages and ensure every page has the correct lang and title.",
"expected_output": "Only source templates are edited, existing build tooling generates the runtime output, the layout contract produces one title, and the language follows the current locale.",
"files": [],
"expectations": [
"Only source templates under src are edited; generated templates, hashed assets, and lockfiles are not hand-edited",
"layout.html declares html(head, content) and preserves halo:footer",
"A non-null head does not produce both a default title and a caller-provided title",
"The html lang value follows the current locale instead of being fixed to en",
"The project's existing build or verification command is run after the change"
]
}
]
}