Skip to content
Back to skills

Tasteroll

ASecurity

Rapid prototyping through constrained randomness. Audits what exists, fixes what is broken, generates fresh design candidates from context, then rolls the dice between valid alternatives. Lock what works, re-roll what doesn't, converge on a direction. Use for design exploration, rapid prototyping, or when a user wants surprise within guardrails.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 2, 2026
designgorailsapi

Works with

  • api
  • mcp

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 20, 2026

npx -y skills add KyaniteLabs/tastecheck --skill tasteroll --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Tasteroll?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Tasteroll
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kyanitelabs-tasteroll/badge)](https://www.skillsdirectory.com/skills/kyanitelabs-tasteroll)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: tasteroll
description: >-
  Rapid prototyping through constrained randomness. Audits what exists, fixes
  what is broken, generates fresh design candidates from context, then rolls
  the dice between valid alternatives. Lock what works, re-roll what doesn't,
  converge on a direction. Use for design exploration, rapid prototyping, or
  when a user wants surprise within guardrails.
---

# Tasteroll (roll for taste, keep what sticks)

Tasteroll audits what exists, asks at most three questions, fixes what is broken, then rolls
valid alternatives. Lock what works; re-roll what does not. **Project constraints produce taste
even when choices are random.**

## The pipeline

```
1. AUDIT     → scan what exists → mandatory findings (craft-only)
2. INTAKE    → infer from context/repo OR 3-question mini-interview
3. FIX       → resolve all findings (seed-independent, non-negotiable)
4. GENERATE  → fresh candidates for open dimensions (context-aware)
5. ROLL      → seeded pick between valid alternatives
6. LOCK      → keep what works, re-roll what doesn't, converge
7. GATE      → relaxed gate (readable + WCAG AA + self-contained + inert)
```

## 1. Audit (mandatory fixes)

Scan rendered surfaces, source CSS, repo files, and content. Resolve every
**non-negotiable** craft finding before rolling:

- **Contrast**: body < 4.5:1 or UI < 3:1 on actual surfaces
- **Spacing**: no scale, arbitrary margins with no token system
- **States**: interactive elements missing hover/focus/active/disabled
- **Tells**: named AI slop patterns present (gradient, centered hero, 3 cards)
- **Accessibility**: missing alt, unlabeled controls, broken heading order
- **Structure**: missing main landmark, no skip link, no focus-visible

Flag findings outside craft scope (bad copy, content gaps, broken features) and hand them off;
tasteroll does not fix them.

A single-word "preserve" overrides an intentional low-contrast or missing-state choice;
otherwise resolve every finding.

For greenfield, scan brief/content for contradictions, missing scope, and vague direction.

## 2. Intake

Choose by available signal:

**Infer** (default): read the conversation and scan repo files (README, CSS, package.json,
content). Skip questions when product and audience are clear.

**Mini-interview** (fallback): ask three questions when inference is thin:

1. **What are you building?** → unlocks structure, density, IA
2. **Who is it for?** → unlocks personality, accessibility posture, complexity
3. **One word for how it should feel?** → unlocks aesthetic, accent direction

Three answers cover the brief without the full 11-field `design-system-interview`.

## 3. Fix (deterministic)

Resolve every finding here. Separate seed-independent "resolved findings" from random
"rolled choices" in the output.

## 4. Generate

For each open dimension (personality, aesthetic, type, color_mode, density, rhythm,
signature, imagery, motion, accent), generate **2–5 candidate options** from audit/intake
context at roll time; no static list.

Candidates must satisfy **compatibility rules** in `assets/design-rails.json`: compact
density/metronomic rhythm, airy/syncopated, brutalist/restrained motion, etc. No conflicts.

Respect **locked dimensions** from previous rolls.

## 5. Roll (seeded pick)

The PRNG (`assets/tasteroll-engine.js`) picks one candidate per open dimension. Same seed
+ candidates → same roll, always; seeds make rolls reproducible/shareable.

If Chance (kyanitelabs/chance) is available via MCP, prefer it for multi-source entropy
mixing and reproducible audit trails; the inline engine is the fallback.

## 6. Lock and re-roll

Mode:

- **One-shot**: roll once; take it or re-roll from scratch.
- **Iterative**: roll → review → lock working dimensions → re-roll unlocked only →
  converge. Each re-roll increments the seed and excludes shown directions.
- **Shotgun**: roll N seeds → compare side by side → pick one to develop.

Locked dimensions and resolved findings persist; only open dimensions vary.

## 7. Gate

Tasteroll output is a personal artifact/prototype, not shipped; use a lighter gate than
`tastecheck-pass`:

- **Readable**: start with body ≥ 1rem, measure 58–75ch, and line-height ≥ 1.5; a brief may
  justify another measure with rendered evidence
- **WCAG AA**: body ≥ 4.5:1, UI ≥ 3:1 (verified on the rolled surfaces)
- **Self-contained**: no external requests in exports
- **Inert**: no scripts in exported HTML
- **Keyboard-reachable**: all interactive elements focusable with visible focus

Escalate **shipped public surfaces** to `tastecheck-pass`.

## Invariants

Invariant floors and brief defaults live in `assets/design-rails.json`. Contrast, keyboard
reachability, self-containment, and truthful findings stay invariant. Briefs may override
measure, line-height, weight, density, texture, radius, accent count, and section rhythm
only with reasons and rendered proof.

Rails contain no option lists; generate options fresh.

## Difference

- **v0 / LLM generators**: no seed, audit, rules, reproducibility
- **Coolors**: random colors, no system, structure, gate
- **Tasteroll**: audit fixes + context-aware candidates + seeded pick + lock/reroll +
  complete design system + quality gate

## References

- `assets/design-rails.json` — dimensions, floors, defaults, scope, questions, rules.
- `assets/tasteroll-engine.js` — pasteable xoshiro128++ PRNG with lock, reroll, shotgun,
  and exclude operations.

## How to deliver

Deliver seed, deterministic findings, seed-dependent choices, DESIGN-SYSTEM.md, gate evidence,
and `design-system-interview` handoff fields.

"Roll again" increments the seed; never silently reuse it with different answers.

## Evidence

| Status | Reason | Remediation | Evidence | Provenance |
| --- | --- | --- | --- | --- |
|  | audit — findings and their resolution status |  |  |  |
|  | intake — inference result or mini-interview answers |  |  |  |
|  | fixes — resolved findings (seed-independent) |  |  |  |
|  | roll — seed, locked dimensions, rolled choices |  |  |  |
|  | gate — relaxed-gate contrast, readability, self-containment |  |  |  |

<!-- contract:v1:start -->
## Contract (generated)

Canonical detail: [contract.json](contract.json).

- Route: Rapid design exploration or surprise direction without a full interview (+2 in contract.json); avoid: The user wants to commit to a specific direction by hand (+2 in contract.json)
- Exclude: Do not roll outside the design rails or bypass the audit findings (+3 in contract.json)
- Stop / handoff: Stop when the output will be a shipped public surface — escalate to tastecheck-pass strict gate (+1 in contract.json); receives [design-system-interview, improve-existing-website] -> sends [color-system, web-typography, spacing-system, theming, responsive-layout, art-direction, micro-motion, component-states, data-viz, empty-states, form-ux, humanize-copy]
- Output: A seeded DESIGN-SYSTEM.md with resolved findings, rolled choices, and gate evidence
- Evidence: `table_with_evidence` with `status`, `reason`, `remediation`, `evidence`, `provenance`.
<!-- contract:v1:end -->

Files in this skill

  • SKILL.md8.5 KB
  • assets/design-rails.json3.9 KB
  • assets/tasteroll-engine.js4 KB
  • contract.json2.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.