writing-web
Imported from alexei-led/cc-thingz/dist/pi/skills/writing-web.
Install
npx skills add https://github.com/alexei-led/cc-thingz/tree/master/dist/pi/skills/writing-web
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install alexei-led-cc-thingz@llmmart
git clone https://github.com/alexei-led/cc-thingz.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole alexei-led/cc-thingz collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Web Development
Follow the existing template language, asset pipeline, and conventions. Add a dependency, build step, or framework only when the project already uses it or the user approves; requests that need a SPA framework belong to writing-typescript.
HTML and CSS
- Semantic HTML first; HTMX or JS only where native behavior falls short.
buttonfor actions,afor navigation,details/summaryanddialogbefore custom widgets. - Label every control; group with
fieldset/legend; use native input types, validation, andautocomplete. Add ARIA only when HTML cannot express the state. - Mobile-first, fluid CSS:
gap, logical properties,rem/clamp. Design tokens in custom properties; one-off values stay local. :focus-visiblestyles, and animations respectprefers-reduced-motion.!importantonly at integration boundaries.
HTMX
- Use HTMX when the server owns the state or the fragment. Set explicit
hx-targetandhx-swap, and return fragments shaped for that target. - Keep the form's
actionandmethodso it still works without JS. - Send CSRF and auth headers through the project's existing mechanism.
- Request not firing: check trigger, target, swap, response status, and CSRF/auth headers before adding a JS fallback.
JavaScript
- Small scoped modules, event delegation for dynamic content, no new globals.
- Render untrusted data with
textContent, neverinnerHTML, unless the project sanitizer marks it trusted. - Clean up timers, observers, and listeners on elements that can be swapped out.
Checks
UI changes need a look at mobile and desktop widths and keyboard navigation. Use browser-automation for rendered checks, screenshots, and interaction tests.
Done when the relevant build/test/lint checks pass on what you changed, or you name each check that did not run and why.
Files (cc-thingz)
-
SKILL.md 2.4 KB
--- {"description":"Simple web development with HTML, CSS, JS, and HTMX. Use when working with .html, .css, or .htmx files, web templates, stylesheets, or vanilla JS scripts. NOT for React/Vue/Angular (use writing-typescript) or Node.js backends.","name":"writing-web"} --- <!-- Pi platform guidance --> <!-- Use installed Pi tool names exactly, including extension toolsets such as Task*, Monitor*, and Loop*. --> <!-- When available, track work with Task* (`todo` is the fallback), run long or background commands with MonitorCreate, and schedule follow-up with LoopCreate instead of sleep/poll loops. --> # Web Development Follow the existing template language, asset pipeline, and conventions. Add a dependency, build step, or framework only when the project already uses it or the user approves; requests that need a SPA framework belong to writing-typescript. ## HTML and CSS - Semantic HTML first; HTMX or JS only where native behavior falls short. `button` for actions, `a` for navigation, `details`/`summary` and `dialog` before custom widgets. - Label every control; group with `fieldset`/`legend`; use native input types, validation, and `autocomplete`. Add ARIA only when HTML cannot express the state. - Mobile-first, fluid CSS: `gap`, logical properties, `rem`/`clamp`. Design tokens in custom properties; one-off values stay local. - `:focus-visible` styles, and animations respect `prefers-reduced-motion`. `!important` only at integration boundaries. ## HTMX - Use HTMX when the server owns the state or the fragment. Set explicit `hx-target` and `hx-swap`, and return fragments shaped for that target. - Keep the form's `action` and `method` so it still works without JS. - Send CSRF and auth headers through the project's existing mechanism. - Request not firing: check trigger, target, swap, response status, and CSRF/auth headers before adding a JS fallback. ## JavaScript - Small scoped modules, event delegation for dynamic content, no new globals. - Render untrusted data with `textContent`, never `innerHTML`, unless the project sanitizer marks it trusted. - Clean up timers, observers, and listeners on elements that can be swapped out. ## Checks UI changes need a look at mobile and desktop widths and keyboard navigation. Use browser-automation for rendered checks, screenshots, and interaction tests. Done when the relevant build/test/lint checks pass on what you changed, or you name each check that did not run and why.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.