ckw-design — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ckw-design (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Use whenever building or styling web UIs — components, pages, dashboards, landing pages, React/Vue/HTML-CSS layouts — or whenever the user asks to make something "look better/nicer", fix spacing/layout, or mentions styling, color, typography, fonts, responsive design, polish, or aesthetics, even without the word "design".
_Source: connerkward/ckw-design-skill (MIT)._
Use this skill when the user asks to build or style web UIs: components, pages, dashboards, landing pages, React/Vue/HTML-CSS layouts, or any frontend interface. Goal: distinctive, production-grade output that avoids generic AI aesthetics.
*Before reporting any design "done": render it and have a separate judge critique the image* (not the code, not self-grading) — see design-spatial §1. Blind generation can't see its own collisions; this applies to all design output, not just spatial work.
MANDATORY HORIZONTAL-OVERFLOW GATE — runs before ANY web UI is "done". Measuredocument.documentElement.scrollWidth - document.documentElement.clientWidthat a narrow width (~390px and ~1024px), this turn, and confirm it's0. This bug is invisible at desktop width and re-appears every time a row (header, nav, toolbar) gains an item, so it ships repeatedly. Default toflex-wrap:wrapon header/toolbar rows +body{overflow-x:clip}, and re-measure after adding any element to a horizontal row. Full procedure + recurrence cases: design-spatial §4. If you haven't measured narrow, you are not done — don't claim it.
When design-thinking identifies a need for visual assets (logos, icons, hero images, textures, backgrounds):
When design work involves running an LLM (generative assets, VLM analysis, layout critique, prompt generation, etc.):
media-attribution-rule for generative assets and extends it to any LLM operation in the design workflow.Examples:
Whenever a UI surfaces an algorithm or model to the user (an "ⓘ how this works" panel, a model breakdown, a methods note), include the actual equation, typeset, with its key terms annotated — don't settle for prose. A scorer described only in words ("ranks by how much of the picked color is present") is unfalsifiable hand- waving; the formula score = Σ fracᵢ · max(0, 1 − ΔEᵢ/τ) with each term labelled tells the user exactly what the knob does and builds trust that there's real math under the hood.
How to apply:
detail. Use proper notation: σ for sigmoid, Σ for sums, ‖·‖ for norms, superscripts, ΔE, ∇²; a monospace/serif-math block set off from the prose.
e_x, w, τ, Q each are,in one line each. An unlabelled equation is decoration; a labelled one is a spec.
reach for KaTeX/MathJax if the expressions genuinely need it.
computes, the model/cost line says what ran it and for how much.
Example (a logistic head):
P(personal │ x) = σ(w·eₓ + b), σ(z) = 1 / (1 + e⁻ᶻ) • eₓ — the image's 768-d embedding · w, b — weights learned from your labels · decision: personal if P ≥ 0.55, reference if P ≤ 0.40.
Any "Select all" affordance MUST be paired with a way to clear the selection — preferably the same button, label-flipped when everything is already selected ("Select all" ⇄ "Deselect all"). A select-all with no inverse is a trap: the user over-selects (or hits it by reflex), then has to un-click items one by one, or reload the page, to get back. The cost is silent — it only bites after they've committed to the wrong set.
How to apply:
selected, the button reads "Deselect all" and clears; otherwise "Select all". One control, no dead end.
filtered, all on this page) — don't let "Select all" grab 500 but "Clear" only drop the 50 on screen.
check-all) needs its inverse one tap away. Symmetry of action — see restraint-rule (don't strand the user mid-task).
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.