Repository navigation
Releases
d-pill 1.6.0
The useful release. Findings teach, tokens speak the standard format, and
a release is a tag away.
- Findings that teach: every finding now carries the registry's fix and
the reference file behind its rule. The stderr line ends with
See: references/…;--json(and the MCPcritiquetool) carry them as
fixandreffields, so a hook or a pipeline can point the agent at
the reading without a lookup. The registry law got stricter to match:
an entry without a fix, or with a reference that does not resolve, is
drift — the engine refuses to run it. - The DTCG export:
references/tokens.dtcg.jsonis the Design Tokens
Community Group shape of the token system (85 tokens — color,
dimension, duration, cubicBezier, fontFamily, number, strokeStyle,
shadow). Tokens Studio, Style Dictionary, and the Figma plugins that
speak the standard consume it directly, so a design-tool pipeline and
the gate read the same numbers.scripts/export-dtcg.pywrites it,
--checkverifies it, and the no-silent-omissions law holds: a new
token nobody mapped fails the export. - Release automation: push a
vX.Y.Ztag and the release workflow cuts
the GitHub release from the changelog section for that version. A
version without a section is not a release. The floatingv1tag
still moves by hand, on purpose. CONTRIBUTING.md: the four laws, the anatomy of a rule proposal, the
local loop, and the release procedure — the contributor contract.docs/og.png: the social preview, generated offline from the real
token colors and the mark; both demo pages carry theog:metadata.- New guards in CI: the DTCG check, the changelog-section check in
check-skill.py, and the MCP smoke test now asserts every finding
carries its teaching.
v1.5.1 — one deploy path, a stricter gate, a proof page that proves itself
The robustness release. The engine is stricter and more honest, the repo verifies more of itself, and the site has one deployment path.
- The gate refuses a broken invocation: a path that does not exist, or is not HTML/CSS, now exits 1 instead of silently checking nothing and passing.
- Durations and easings can no longer hide beside a var(): literal ms/s values next to token references are checked, animation shorthand easing is checked, and linear in an animation is treated as constant velocity. The inline-token-bypass rule no longer fires on var() values.
- The MCP token tool resolves its own documented names — color.light.ink, motion.dur-1, type.ramp.text-lg, bare roles with a theme, color.hue — and reports the resolved path. The server honors a client-requested protocol version.
- The Soft editorial recipe passes its own gate: ambient loops run on named clocks (--loop-*), the equalizer bars are pills, and the micro-gaps are token-derived. The proof page lives at docs/soft.html — gated in CI and twin-checked against the recipe — and is live on the site.
- One Pages deployment path: branch main / docs, served as written. The stock Jekyll workflow, which built the repo root and raced the branch deploy on every push, is retired.
- action.yml passes inputs through the environment, never interpolated into the script.
- New CI guards: scripts/check-skill.py (spec-legal frontmatter + version agreement) and scripts/mcp-smoke.py (a real JSON-RPC session, including the hallucination refusal).
- The universal ~/.agents/skills install path; CHANGELOG.md, SECURITY.md, ROADMAP.md, docs/llms.txt; reconciled one-liners across type/direction/mobile/craft/details/sense. Versions agree at 1.5.1 everywhere.
Full notes: CHANGELOG.md. Demo: https://srivtx.github.io/d-pill/
v1.5.0 — the gate
The critique is now executable.
The machine half of the gate
scripts/critique.py checks written HTML and CSS against d-pill's own token scales and access floors. Zero dependencies — Python's standard library and nothing else.
- Findings:
file:line:col [dpill/rule] severity: message, on stderr - Exit 0 clean, 2 findings, 1 broken invocation — exit 2 with stderr is the Claude Code hook contract
--jsonfor pipelines,--allowfor written exceptions,--strict,--quiet--selftestproves every rule fires; CI runs it on every push
Rules as data
references/rules.json — the registry: id, severity, what the engine checks, the fix, the reference behind each rule. The engine verifies the registry matches its implementation before every run. The scales it checks are read from tokens.json. No second set of numbers anywhere.
Three shells, one engine
- CLI — the engine itself
- MCP —
scripts/mcp-server.py, stdio JSON-RPC 2.0 on the standard library:critique,list_rules,token - CI — this repository is a GitHub Action:
uses: srivtx/d-pill@v1
Adoption
- Spec-legal frontmatter (closed field set; triggers live in
description; off-spec keys are no longer silently dropped) - Install:
git clone,npx skills add srivtx/d-pill, or/plugin marketplace add srivtx/d-pill llms.txtat the root; demo page indocs/that passes its own gate- Frontmatter follows the Agent Skills spec exactly
Frontier (2026 jury data)
New gated moves: micro-interaction density, scrollytelling, page-transition identity, generative imagery, liquid glass, and the post-2026 native-CSS set. Anti-grid verdict recorded: 3 of ~80 award winners — peaked as a meme, the gates were right.
The number behind the gate: a 2026 audit of 375 production sites found 40.4% average token coverage and 17,731 hardcoded values. Drift is counted. Now it is checked.