--- import { getCollection } from 'astro:content'; import Base from '../../layouts/Base.astro'; import DocsSidebar from '../../components/DocsSidebar.astro'; import '../../styles/sub-pages.css'; import '../../styles/docs-kinpaku.css'; import { SKILL_CATEGORIES, CATEGORY_ORDER, CATEGORY_LABELS, } from '../../data/sub-pages-data'; const entries = await getCollection('skills'); const referenceEntries = (await getCollection('reference')) .sort((a, b) => a.data.order - b.data.order); const tutorials = (await getCollection('tutorials')) .sort((a, b) => a.data.order - b.data.order); const taglineFor = (slug: string) => entries.find(e => e.id === slug)?.data.tagline ?? ''; const grouped: Record = {}; for (const cat of CATEGORY_ORDER) { grouped[cat] = entries .filter(e => SKILL_CATEGORIES[e.id] === cat) .sort((a, b) => a.id.localeCompare(b.id)) .map(e => ({ slug: e.id, tagline: e.data.tagline })); } const session = [ { slug: 'shape', verb: 'Plan' }, { slug: 'craft', verb: 'Build' }, { slug: 'critique', verb: 'Review' }, { slug: 'polish', verb: 'Refine' }, ]; const startSteps = [ { label: 'Install', command: 'npx impeccable install', line: 'Run this from the project root, then reload your AI coding tool.', }, { label: 'Set context', command: '/impeccable init', line: 'Answer the short setup interview. Say yes when it offers DESIGN.md.', }, { label: 'Try it', command: '/impeccable polish the pricing page', line: 'Pick any page or component that already exists.', }, ]; const choices = [ { need: 'Set up a project', command: '/impeccable init', href: '/docs/init', line: 'Create PRODUCT.md and DESIGN.md.', }, { need: 'Improve an existing page', command: '/impeccable polish', href: '/docs/polish', line: 'Fix spacing, type, states, copy, and consistency.', }, { need: 'Find design issues', command: '/impeccable critique', href: '/docs/critique', line: 'Get the highest-priority design problems.', }, { need: 'Check implementation quality', command: '/impeccable audit', href: '/docs/audit', line: 'Check accessibility, responsiveness, performance, and detector findings.', }, { need: 'Point at UI in the browser', command: '/impeccable live', href: '/docs/live', line: 'Pick an element, generate variants, accept one into source.', }, { need: 'Build a new feature', command: '/impeccable craft', href: '/docs/craft', line: 'Plan, build, and visually check the feature.', }, ]; const manualTopics = [ { topic: 'Design Context', href: '/docs/context', label: 'PRODUCT.md + DESIGN.md', line: 'What gets loaded, when it wins, and how the sidecar fits.', }, { topic: 'Detector CLI', href: '/docs/detector', label: 'npx impeccable detect', line: 'Run deterministic checks on files, folders, stdin, and URLs.', }, { topic: 'Design hooks', href: '/docs/hooks', label: '/impeccable hooks', line: 'Automatic detector feedback inside Claude Code, Codex, and Cursor.', }, { topic: 'Config and ignores', href: '/docs/config', label: '.impeccable/config.json', line: 'Shared exceptions, private overrides, and design-system toggles.', }, ].filter(topic => referenceEntries.some(entry => `/docs/${entry.id}` === topic.href)); const chains: { id: string; a: string; b: string; arrow: string; line: string }[] = [ { id: 'bolder-quieter', a: 'bolder', b: 'quieter', arrow: '↔', line: 'Two halves of voice. Loud or restrained, never neutral.' }, { id: 'audit-harden', a: 'audit', b: 'harden', arrow: '→', line: 'Find the technical issues. Then fix them.' }, { id: 'critique-polish', a: 'critique', b: 'polish', arrow: '→', line: 'Review the work. Then refine it.' }, { id: 'shape-craft', a: 'shape', b: 'craft', arrow: '→', line: 'Plan the feature. Then build the plan.' }, ]; ---

Start with /impeccable

Install, run setup, then try one command on an existing page.

    {startSteps.map((step, i) => (
  1. {String(i + 1).padStart(2, "0")} {step.label} {step.command} {step.line}
  2. ))}

Full walkthrough: Getting started.

Choose a command

Understand the system

Commands are only one layer. These docs explain the files, checks, hooks, and config that make them behave consistently.

{manualTopics.map(topic => ( {topic.topic} {topic.label} {topic.line} ))}

Iterate where you can see it

Use Live Mode when an issue is easier to point at than describe. Pick an element, generate variants, accept one into source.

Read the live docs

Full session path

Plan, build, review, refine.

    {session.map((step, i) => (
  1. {step.verb} /impeccable {step.slug} {taglineFor(step.slug)} {i < session.length - 1 && ( )}
  2. ))}

Already shipped? Use /impeccable polish on the page that needs work, or /impeccable audit for checks.

Useful command pairs

Use these when one pass is not enough.

{chains.map(chain => ( ))}

Full command reference

{CATEGORY_ORDER.map(cat => (

{CATEGORY_LABELS[cat]} {grouped[cat].length}

))}