CANON ships with every planned skill written, every harness bundle compiled, and a working detector CLI.
Phase 3 — themes, content, accessibility deep-dive (11 skills):
canon-dark-mode— lightness inversion (not hue shift), surface stacking, semantic tokens, contrast re-audit, three-state togglecanon-density— compact/default/comfortable modes, spacing multiplier, font size unchanged, mobile floor preservedcanon-rtl— CSS logical properties, mirroring rules (what flips, what doesn't), bidi text,<bdi>elementcanon-i18n— string externalization, ICU MessageFormat pluralization,IntlAPI formatting, 40% text expansion budget, no concatenationcanon-brand-voice— voice attributes with do/don't pairs, tone spectrum per context, banned phrase list, AI copy guardrailscanon-content-strategy— content-first design, progressive disclosure, scannability, content inventory, heading-as-statementcanon-information-architecture— flat vs deep hierarchy, URL design, labeling in user language, card sorting/tree testing validationcanon-keyboard— tab order = visual order, roving tabindex for composites, shortcut conventions, no tabindex > 0canon-screen-reader— semantic HTML first, heading hierarchy, ARIA only when HTML fails, live regions, .sr-only patterncanon-focus— :focus-visible spec, 2–3px ring at 3:1 contrast, double-ring technique, SPA focus managementcanon-color-blindness— color never the only signal, CVD-safe palettes, grayscale squint test, chart shape/pattern rules
Phase 4 — patterns and engineering (13 skills):
canon-micro-interactions— trigger-feedback loop, 100–300ms budget, reduced-motion fallback, what earns animationcanon-onboarding— self-evident UI > smart defaults > empty states > coachmarks > checklists > tours > videocanon-error-handling— what/why/how anatomy, inline vs toast vs banner vs modal, retry with backoff, error boundaries, offline bannercanon-illustrations— when illustrations help vs clutter, one style per product, sizing by placement, decorative vs informative altcanon-cursors— cursor-affordance pairing table, hover+cursor rule, custom cursor rules, no pointer on non-interactivecanon-grids— Grid for 2D / Flexbox for 1D, auto-fill vs auto-fit, gap from spatial scale, subgrid for alignmentcanon-data-viz— big number + context pattern, sparkline spec, progress bar ARIA, metric comparison, dashboard compositioncanon-bundle-size— 200KB JS budget, heavy dependency alternatives, code splitting, lazy loading, Brotlicanon-images— AVIF/WebP format tree, srcset + sizes, LCP image treatment, width/height for CLS, lazy below foldcanon-fonts-loading— font-display: swap, preload critical weight, WOFF2 only, subsetting, FOUT reduction with metric overridescanon-seo— semantic HTML is SEO, essential meta tags, JSON-LD structured data, sitemap, CWV as ranking factorcanon-meta-og— OG tags, Twitter cards, 1200×630 image spec, dynamic OG generation, validation toolscanon-favicons— minimal set (ico, svg, apple-touch, manifest), SVG dark mode, design rules at 16px, no transparency on iOS
Totals at v1.0:
- 52 skills (12 fundamentals + 16 components + 4 themes + 3 content + 4 accessibility + 7 patterns + 6 engineering)
- 19 commands
- 89 detector rules
- 15 harness bundles
- 32 tests passing
Phase 2: 16 component-tier skills, detector expanded from 50 to 89 rules. See previous changelog for details.
Initial release: 12 fundamental skills, 19 commands, 50 detector rules, 15 harnesses, 32 tests.