craft
Use when writing or changing the markup, styles, or layout of a page, screen, or component (HTML, CSS, templates, email), or checking a page's accessibility…
Skill by jpenley
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/jpenley-craft
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, frontend, writing, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/craft
What's inside
- Skill name
craft- Description
- Use when writing or changing the markup, styles, or layout of a page, screen, or component (HTML, CSS, templates, email), or checking a page's accessibility, contrast, text size, tap targets, motion, or generic AI-made look.
- License
- MIT
- Instructions
- 44 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (7)
- INTERACTIONS.md
- SKILL.md
- openai.yaml · agents/
- audit.page.js · scripts/
- cdp.mjs · scripts/
- detect.mjs · scripts/
- shoot.mjs · scripts/
SKILL.md (first lines)
# Craft The quality floor for any interface you touch, and the tools that check it on the rendered page. The floor holds only what is checkable and near-universal; style (fonts, palette, shape, voice) belongs to the project's `DESIGN.md`, and where it has one, it wins. ## 1. Before editing - Read the project's `DESIGN.md` (or its tokens file) if there is one, and use its tokens rather than new values. With none, and you're adding more than a component, set a small token set in `:root` first (neutrals, one accent, a type scale, a spacing scale) and mention the `codify` skill to the user. - Name the surface's **mode** in one line, because it sets density and restraint: **Persuade** (marketing, landing), **Operate** (tools, dashboards, admin: dense, calm, no decoration), **Read** (docs, articles: measure and rhythm), **Experience** (games, product demos: motion carries meaning). ## 2. The floor | Area | Floor | |---|---| | Contrast | Text 4.5:1; large text (24px, or 18.66px bold) 3:1; control boundaries, icons, and focus rings 3:1. Check muted greys and white text on mid-tone buttons (Tailwind's indigo-500 with white is 4.47:1) | | Text size | Reading text 16px preferred, 12px minimum; labels and badges 11px minimum | | Type | One scale of 6–8 sizes from a ratio (about 1.2 for product UI, up to 1.333 for marketing). Line-height 1.4–1.7 for body, 1.05–1.2 for display. Line length 45–75ch | | Spacing | A 4px-based scale; more space above a heading than below it | | Colour | Neutrals carry most of the surface, one accent carries the actions; status colours only for status | | States | Every control: default, hover, focus-visible, active, disabled; every data view: loading, empty, error | | Layout | No sideways scroll at 390px or 320px wide (WCAG 1.4.10 reflow: 320px is a 1280px screen at 400% zoom), and nothing clipped or overlapping at 200% zoom (1280px shown at 640px); tap targets 24×24px minimum (44 comfortable); `100dvh`/`svh` instead of `100vh` | | Motion | Transform and opacity only; durations by job as in the `animate` skill's table; ease-out; a `prefers-reduced-motion` path; content visible if the script never runs | For web surfaces with forms, navigation, asynchronous feedback, gestures, media, locale formatting, or themes, read [INTERACTIONS.md](INTERACTIONS.md) and check the applicable rows alongside the floor. ## 3. Check the rendered page With the page running (a dev-server URL) or as an HTML file, run from this skill's folder: ``` node scripts/detect.mjs <url|file.html> [--tokens DESIGN.md] node scripts/shoot.mjs <url|file.html> ``` `detect.mjs` measures the page at 1280px and 390px, checks reflow at 640px and 320px, and reports **errors** (the floor is broken), **warnings** (likely wrong), and **tells** (patterns common in AI-made interfaces). For a page that shows content people type or translate (names, tables, labels), add `--stress`: it re-measures with longer text and right-to-left, and reports what spills, clips, or scrolls sideways. `shoot.mjs` saves full-page screenshots at both widths; look at them. Both need Chrome, Edge, or Chromium and print how to point at one. - Fix every error. - For each tell, change it or keep it and say why: a tell is a reason to look again, not a ban. The common ones: rows of identical icon-plus-heading cards, a small uppercase label above every section heading, a blue-to-purple gradient or Tailwind's default indigo as the accent, emoji as icons, gradient text, rounded cards with a coloured left border, a decorative pulsing dot, small `a · b · c` meta strings, calls to action ending in an arrow, stock marketing words and em dashes in the copy, invented metrics, logos, or testimonials, placeholder names, a cream background with a serif display face and a terracotta accent, near-black with a single acid-green or vermilion accent, Inter or Space Grotesk taken as the default font, every block centred, the same radius and shadow on every block, and 01/02/03 markers on content that isn't a sequence. - Budget: one round of fixes, then one re-check. What's still open after that goes to the user with the findings, not into more rounds. Without a browser or a way to render the page, check the floor by reading the CSS against the table above, and say the page wasn't measured. **Done when** `detect.mjs` reports no errors at both widths (or the user has the open ones), every tell is changed or kept with a reason, you've looked at both screenshots, and each applicable interaction row has evidence or is reported as unverified.
From jpenley/AITuning, MIT.
More from jpenley/AITuning
- 0.570score
learn
jpenley
Use when someone wants to learn a subject, skill, language, or technology themselves over time, asks for a lesson, a study plan, practice questions, or a quiz…
SkillAFreshness: AClaude Code +9 - 0.570score
image-assets
jpenley
Use when generating or editing raster images, photos, illustrations, textures, sprites, transparent cutouts, or image assets for a project, or when imagegen…
SkillAFreshness: AClaude Code +9 - 0.570score
understand
jpenley
Use when making sense of a body of material someone is new to (a folder of notes, papers, docs, reports, or a wiki), asking what a set of sources says, where…
SkillAFreshness: AClaude Code +9 - 0.570score
investigate
jpenley
Use when researching a question in depth, weighing evidence on a contested topic, checking whether a claim or article holds up, comparing what studies or…
SkillAFreshness: AClaude Code +9 - 0.570score
latest
jpenley
Use when catching up on what's new or interesting lately in a field, topic, technology, or research area, asking what people are working on, releasing…
SkillAFreshness: AClaude Code +9 - 0.565score
critique
jpenley
Use when reviewing or critiquing how a page, screen, or mockup looks and works, giving visual feedback (layout, how usable and accessible it is), scoring its…
SkillAFreshness: AClaude Code +9 - 0.565score
validate
jpenley
Use when checking or proofreading an analysis before it's shared or acted on (a deck, a board pack, a dashboard, SQL results), including whether its…
SkillAFreshness: AClaude Code +9 - 0.565score
codify
jpenley
Use when a project needs a design system, style guide, or DESIGN.md, when extracting design tokens (colours, type, spacing, radii) from an existing interface…
SkillAFreshness: AClaude Code +9 - 0.565score
compose
jpenley
Use when building a new page, screen, or component's look, restyling or redesigning an existing page or app, making a UI look better or less generic, or…
SkillAFreshness: AClaude Code +9 - 0.565score
guards-dotnet
jpenley
Use when setting up or repairing guardrails in a .NET or C# repo (a .sln, .slnx, or .csproj): dotnet format and .editorconfig, analyzers, warnings as errors…
SkillAFreshness: AClaude Code +9 - 0.565score
seams-dotnet
jpenley
Use when measuring or enforcing module boundaries in a .NET or C# solution: the project reference graph between .csproj files, cycles between assemblies or…
SkillAFreshness: AClaude Code +9 - 0.565score
jev
jpenley
Use when the jev judgment tools (jev_screen, jev_verify, jev_gate, jev_classify, jev_find, and the rest) are available and you're about to read fetched text…
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 20, 2026 (9 days ago)
- Last release
- Oct 17, 2026 (12 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/jpenley/AITuning
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from jpenley
- 0.570score
understand
jpenley
Use when making sense of a body of material someone is new to (a folder of notes, papers, docs, reports, or a wiki), asking what a set of sources says, where…
SkillAFreshness: AClaude Code +9 - 0.570score
image-assets
jpenley
Use when generating or editing raster images, photos, illustrations, textures, sprites, transparent cutouts, or image assets for a project, or when imagegen…
SkillAFreshness: AClaude Code +9 - 0.570score
latest
jpenley
Use when catching up on what's new or interesting lately in a field, topic, technology, or research area, asking what people are working on, releasing…
SkillAFreshness: AClaude Code +9 - 0.570score
learn
jpenley
Use when someone wants to learn a subject, skill, language, or technology themselves over time, asks for a lesson, a study plan, practice questions, or a quiz…
SkillAFreshness: AClaude Code +9 - 0.570score
investigate
jpenley
Use when researching a question in depth, weighing evidence on a contested topic, checking whether a claim or article holds up, comparing what studies or…
SkillAFreshness: AClaude Code +9 - 0.565score
validate
jpenley
Use when checking or proofreading an analysis before it's shared or acted on (a deck, a board pack, a dashboard, SQL results), including whether its…
SkillAFreshness: AClaude Code +9
Cite this page
craft skill. Agent Mart. https://agentmart.dev/skills/jpenley-craft (last updated 2026-10-24)