@nurix/etna 0.19.49 → 0.19.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/harness-index.json +1 -1
- package/data/harnesses/apollo/harness.json +2 -2
- package/data/harnesses/apollo/hooks/hooks.json +3 -1
- package/data/harnesses/apollo/skills/design/SKILL.md +55 -29
- package/data/harnesses/apollo/skills/design/references/compose.md +8 -4
- package/data/harnesses/apollo/skills/design/references/content.md +5 -5
- package/data/harnesses/apollo/skills/design/references/existing-apps.md +1 -1
- package/data/harnesses/apollo/skills/design/references/intake.md +11 -7
- package/data/harnesses/apollo/skills/design/references/object-pass.md +1 -1
- package/data/harnesses/apollo/skills/design/references/ship-gate.md +3 -3
- package/data/harnesses/apollo/skills/design/scripts/select-chart.mjs +26 -6
- package/data/harnesses/code/harness.json +2 -2
- package/data/harnesses/code/hooks/hooks.json +3 -1
- package/data/harnesses/code/skills/design/SKILL.md +55 -29
- package/data/harnesses/code/skills/design/references/compose.md +8 -4
- package/data/harnesses/code/skills/design/references/content.md +5 -5
- package/data/harnesses/code/skills/design/references/existing-apps.md +1 -1
- package/data/harnesses/code/skills/design/references/intake.md +11 -7
- package/data/harnesses/code/skills/design/references/object-pass.md +1 -1
- package/data/harnesses/code/skills/design/references/ship-gate.md +3 -3
- package/data/harnesses/code/skills/design/scripts/select-chart.mjs +26 -6
- package/package.json +2 -2
- package/data/harnesses/apollo/skills/design/data/blueprints/browse.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/creation-flow.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/dashboard.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/grid.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/queue.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/record-detail.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/settings.md +0 -38
- package/data/harnesses/apollo/skills/design/data/chart-styling/Readme.md +0 -33
- package/data/harnesses/apollo/skills/design/data/chart-styling/carbon-accessible-alert-semantic.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/carbon-monochrome-sequential-trend.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/datadog-classic-six-aligned.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/datawrapper-tiered-gray-hierarchy.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/econ-red-rule-horizontal.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/financial-diverging-threshold-overlay.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/ft-vocabulary-ranked-muted.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/grafana-dark-threshold-bands.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/material-rounded-explicit-label.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/nyt-ghost-grid-direct-label.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/plot-currentcolor-inherit.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/saas-gradient-glow-area.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/shadcn-composable-css-vars.md +0 -19
- package/data/harnesses/apollo/skills/design/data/charts/census.csv +0 -58
- package/data/harnesses/apollo/skills/design/data/checklists/browse.md +0 -21
- package/data/harnesses/apollo/skills/design/data/checklists/creation-flow.md +0 -20
- package/data/harnesses/apollo/skills/design/data/checklists/dashboard.md +0 -21
- package/data/harnesses/apollo/skills/design/data/checklists/grid.md +0 -21
- package/data/harnesses/apollo/skills/design/data/checklists/queue.md +0 -21
- package/data/harnesses/apollo/skills/design/data/checklists/record-detail.md +0 -21
- package/data/harnesses/apollo/skills/design/data/checklists/settings.md +0 -21
- package/data/harnesses/apollo/skills/design/data/chrome/board-column.md +0 -68
- package/data/harnesses/apollo/skills/design/data/chrome/data-table.md +0 -63
- package/data/harnesses/apollo/skills/design/data/chrome/side-panel.md +0 -60
- package/data/harnesses/apollo/skills/design/data/chrome/sidebar.md +0 -78
- package/data/harnesses/apollo/skills/design/data/chrome/stat-cards.md +0 -62
- package/data/harnesses/apollo/skills/design/data/chrome/topbar.md +0 -65
- package/data/harnesses/apollo/skills/design/data/color/accent-presets.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/aesop-earth-mute.md +0 -91
- package/data/harnesses/apollo/skills/design/data/color/arc-peach-play.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/attio-hunter-teal.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/carbon-cyan-signal.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/clay-parchment.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/duolingo-feather.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/geist-mono-signal.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/linear-graphite-violet.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/mercury-onyx-cobalt.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/notion-paper-ink.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/radix-slate-iris.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/raycast-void-spectrum.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/spectrum-celery-fuchsia.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/stripe-blurple-ruby.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/superhuman-cod-picton.md +0 -89
- package/data/harnesses/apollo/skills/design/data/corpora/operations-review/companies.csv +0 -15
- package/data/harnesses/apollo/skills/design/data/corpora/operations-review/corpus.md +0 -87
- package/data/harnesses/apollo/skills/design/data/corpora/operations-review/people.csv +0 -25
- package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/companies.csv +0 -15
- package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/corpus.md +0 -83
- package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/people.csv +0 -25
- package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/companies.csv +0 -15
- package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/corpus.md +0 -89
- package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/people.csv +0 -25
- package/data/harnesses/apollo/skills/design/data/elevation/ant-design-directional-shadow.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/apple-liquid-glass-material.md +0 -18
- package/data/harnesses/apollo/skills/design/data/elevation/atlassian-surface-shadow-pairing.md +0 -20
- package/data/harnesses/apollo/skills/design/data/elevation/fluent-2-key-ambient-ramp.md +0 -20
- package/data/harnesses/apollo/skills/design/data/elevation/github-primer-sparing-shadow.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/ibm-carbon-layer-and-border.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/linear-dark-surface-ladder.md +0 -17
- package/data/harnesses/apollo/skills/design/data/elevation/material-2-key-ambient-dp-ramp.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/material-3-tonal-elevation.md +0 -21
- package/data/harnesses/apollo/skills/design/data/elevation/neobrutalist-hard-offset.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/neumorphic-soft-dual-shadow.md +0 -18
- package/data/harnesses/apollo/skills/design/data/elevation/notion-warm-minimal-hairline.md +0 -17
- package/data/harnesses/apollo/skills/design/data/elevation/polaris-elevation-inset-bevel.md +0 -21
- package/data/harnesses/apollo/skills/design/data/elevation/radix-themes-alpha-ring-scale.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/shadcn-neutral-derived-radius.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/stripe-brand-tinted-dual-shadow.md +0 -18
- package/data/harnesses/apollo/skills/design/data/elevation/tailwind-default-utility-scale.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/vercel-geist-shadow-as-border.md +0 -20
- package/data/harnesses/apollo/skills/design/data/gradients/amber-attention-fill.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/cloud-shadow-wash.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/confident-lavender-wash.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/ember-ship-flare.md +0 -18
- package/data/harnesses/apollo/skills/design/data/gradients/full-metal-wash.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/indigo-ruby-cta-band.md +0 -18
- package/data/harnesses/apollo/skills/design/data/gradients/linear-graphite-wash.md +0 -18
- package/data/harnesses/apollo/skills/design/data/gradients/marble-quartz-wash.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/midnight-aurora-panel.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/neutral-volume-fill.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/revenue-uptrend-fill.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/risk-decline-fill.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/signal-blue-develop.md +0 -18
- package/data/harnesses/apollo/skills/design/data/gradients/slate-mist-wash.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/stripe-atmosphere-mesh.md +0 -18
- package/data/harnesses/apollo/skills/design/data/gradients/teal-signal-accent.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/violet-magenta-promo.md +0 -16
- package/data/harnesses/apollo/skills/design/data/iconography.md +0 -199
- package/data/harnesses/apollo/skills/design/data/motion/accordion-expand.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/destructive-hold-confirm.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/drag-dismiss-momentum.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/empty-state-arrive.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/hover-lift.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/modal-center-arrive.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/number-ticker-roll.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/onboarding-bounce.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/panel-slide.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/press-feedback.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/progress-linear-loop.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/route-crossfade.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/rubber-band-overscroll.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/skeleton-shimmer.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/stagger-arrive.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/toast-enter-stack.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/tooltip-chain-instant.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/trigger-anchored-reveal.md +0 -18
- package/data/harnesses/apollo/skills/design/data/tells.csv +0 -34
- package/data/harnesses/apollo/skills/design/data/typography/anton-work-sans.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/archivo-black-archivo.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/bitter-karla.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/dm-serif-dm-sans.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/fraunces-inter.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/geist-geist-mono.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/hubot-sans-mona-sans.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/ibm-plex-sans-operator-single-family.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/instrument-serif-instrument-sans.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/inter-operator-single-family.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/libre-baskerville-libre-franklin.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/newsreader-inter.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/playfair-display-source-sans.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/public-sans-operator-single-family.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/sohne-inter-fintech.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/source-serif-source-sans.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/space-grotesk-work-sans-space-mono.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/spectral-manrope.md +0 -17
- package/data/harnesses/apollo/skills/design/data/voices/bright-collaborator.md +0 -29
- package/data/harnesses/apollo/skills/design/data/voices/direct-operator.md +0 -29
- package/data/harnesses/apollo/skills/design/data/voices/earnest-helper.md +0 -29
- package/data/harnesses/apollo/skills/design/data/voices/editorial-composed.md +0 -29
- package/data/harnesses/apollo/skills/design/data/voices/quiet-concierge.md +0 -29
- package/data/harnesses/apollo/skills/design/data/voices/warm-guide.md +0 -29
- package/data/harnesses/apollo/skills/design/design-md/SCHEMA.md +0 -179
- package/data/harnesses/apollo/skills/design/design-md/index.csv +0 -67
- package/data/harnesses/apollo/skills/design/design-md/library/airbnb.md +0 -207
- package/data/harnesses/apollo/skills/design/design-md/library/airtable.md +0 -205
- package/data/harnesses/apollo/skills/design/design-md/library/anthropic-claude.md +0 -203
- package/data/harnesses/apollo/skills/design/design-md/library/apple.md +0 -206
- package/data/harnesses/apollo/skills/design/design-md/library/binance.md +0 -210
- package/data/harnesses/apollo/skills/design/design-md/library/bmw.md +0 -210
- package/data/harnesses/apollo/skills/design/design-md/library/cal.md +0 -209
- package/data/harnesses/apollo/skills/design/design-md/library/clay.md +0 -204
- package/data/harnesses/apollo/skills/design/design-md/library/clickhouse.md +0 -205
- package/data/harnesses/apollo/skills/design/design-md/library/cohere.md +0 -205
- package/data/harnesses/apollo/skills/design/design-md/library/coinbase.md +0 -198
- package/data/harnesses/apollo/skills/design/design-md/library/composio.md +0 -198
- package/data/harnesses/apollo/skills/design/design-md/library/cursor.md +0 -197
- package/data/harnesses/apollo/skills/design/design-md/library/elevenlabs.md +0 -199
- package/data/harnesses/apollo/skills/design/design-md/library/expo.md +0 -200
- package/data/harnesses/apollo/skills/design/design-md/library/figma.md +0 -199
- package/data/harnesses/apollo/skills/design/design-md/library/framer.md +0 -202
- package/data/harnesses/apollo/skills/design/design-md/library/hashicorp.md +0 -205
- package/data/harnesses/apollo/skills/design/design-md/library/ibm.md +0 -205
- package/data/harnesses/apollo/skills/design/design-md/library/intercom.md +0 -204
- package/data/harnesses/apollo/skills/design/design-md/library/kraken.md +0 -200
- package/data/harnesses/apollo/skills/design/design-md/library/linear-app.md +0 -198
- package/data/harnesses/apollo/skills/design/design-md/library/lovable.md +0 -199
- package/data/harnesses/apollo/skills/design/design-md/library/meta.md +0 -204
- package/data/harnesses/apollo/skills/design/design-md/library/minimax.md +0 -204
- package/data/harnesses/apollo/skills/design/design-md/library/mintlify.md +0 -210
- package/data/harnesses/apollo/skills/design/design-md/library/miro.md +0 -209
- package/data/harnesses/apollo/skills/design/design-md/library/mistral-ai.md +0 -201
- package/data/harnesses/apollo/skills/design/design-md/library/mongodb.md +0 -201
- package/data/harnesses/apollo/skills/design/design-md/library/notion.md +0 -204
- package/data/harnesses/apollo/skills/design/design-md/library/nvidia.md +0 -215
- package/data/harnesses/apollo/skills/design/design-md/library/ollama.md +0 -213
- package/data/harnesses/apollo/skills/design/design-md/library/opencode-ai.md +0 -216
- package/data/harnesses/apollo/skills/design/design-md/library/posthog.md +0 -218
- package/data/harnesses/apollo/skills/design/design-md/library/raycast.md +0 -214
- package/data/harnesses/apollo/skills/design/design-md/library/replicate.md +0 -202
- package/data/harnesses/apollo/skills/design/design-md/library/resend.md +0 -203
- package/data/harnesses/apollo/skills/design/design-md/library/revolut.md +0 -203
- package/data/harnesses/apollo/skills/design/design-md/library/runwayml.md +0 -203
- package/data/harnesses/apollo/skills/design/design-md/library/sanity.md +0 -200
- package/data/harnesses/apollo/skills/design/design-md/library/sentry.md +0 -201
- package/data/harnesses/apollo/skills/design/design-md/library/shopify.md +0 -202
- package/data/harnesses/apollo/skills/design/design-md/library/slack.md +0 -202
- package/data/harnesses/apollo/skills/design/design-md/library/spacex.md +0 -206
- package/data/harnesses/apollo/skills/design/design-md/library/spotify.md +0 -206
- package/data/harnesses/apollo/skills/design/design-md/library/stripe.md +0 -196
- package/data/harnesses/apollo/skills/design/design-md/library/supabase.md +0 -196
- package/data/harnesses/apollo/skills/design/design-md/library/superhuman.md +0 -194
- package/data/harnesses/apollo/skills/design/design-md/library/tesla.md +0 -198
- package/data/harnesses/apollo/skills/design/design-md/library/theverge.md +0 -199
- package/data/harnesses/apollo/skills/design/design-md/library/together-ai.md +0 -193
- package/data/harnesses/apollo/skills/design/design-md/library/uber.md +0 -195
- package/data/harnesses/apollo/skills/design/design-md/library/vercel.md +0 -195
- package/data/harnesses/apollo/skills/design/design-md/library/voltagent.md +0 -197
- package/data/harnesses/apollo/skills/design/design-md/library/warp.md +0 -196
- package/data/harnesses/apollo/skills/design/design-md/library/webflow.md +0 -197
- package/data/harnesses/apollo/skills/design/design-md/library/wired.md +0 -197
- package/data/harnesses/apollo/skills/design/design-md/library/wise.md +0 -198
- package/data/harnesses/apollo/skills/design/design-md/library/x-ai.md +0 -199
- package/data/harnesses/apollo/skills/design/design-md/library/zapier.md +0 -198
- package/data/harnesses/apollo/skills/design/design-md/nurix.md +0 -214
- package/data/harnesses/apollo/skills/design/design-md/variants/editorial-luxury.md +0 -184
- package/data/harnesses/apollo/skills/design/design-md/variants/expressive-saas.md +0 -216
- package/data/harnesses/apollo/skills/design/design-md/variants/quiet-premium.md +0 -211
- package/data/harnesses/apollo/skills/design/design-md/variants/terse-dense-operator.md +0 -212
- package/data/harnesses/apollo/skills/design/design-md/variants/warm-approachable.md +0 -216
- package/data/harnesses/code/skills/design/data/blueprints/browse.md +0 -38
- package/data/harnesses/code/skills/design/data/blueprints/creation-flow.md +0 -38
- package/data/harnesses/code/skills/design/data/blueprints/dashboard.md +0 -38
- package/data/harnesses/code/skills/design/data/blueprints/grid.md +0 -38
- package/data/harnesses/code/skills/design/data/blueprints/queue.md +0 -38
- package/data/harnesses/code/skills/design/data/blueprints/record-detail.md +0 -38
- package/data/harnesses/code/skills/design/data/blueprints/settings.md +0 -38
- package/data/harnesses/code/skills/design/data/chart-styling/Readme.md +0 -33
- package/data/harnesses/code/skills/design/data/chart-styling/carbon-accessible-alert-semantic.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/carbon-monochrome-sequential-trend.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/datadog-classic-six-aligned.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/datawrapper-tiered-gray-hierarchy.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/econ-red-rule-horizontal.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/financial-diverging-threshold-overlay.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/ft-vocabulary-ranked-muted.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/grafana-dark-threshold-bands.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/material-rounded-explicit-label.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/nyt-ghost-grid-direct-label.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/plot-currentcolor-inherit.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/saas-gradient-glow-area.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/shadcn-composable-css-vars.md +0 -19
- package/data/harnesses/code/skills/design/data/charts/census.csv +0 -58
- package/data/harnesses/code/skills/design/data/checklists/browse.md +0 -21
- package/data/harnesses/code/skills/design/data/checklists/creation-flow.md +0 -20
- package/data/harnesses/code/skills/design/data/checklists/dashboard.md +0 -21
- package/data/harnesses/code/skills/design/data/checklists/grid.md +0 -21
- package/data/harnesses/code/skills/design/data/checklists/queue.md +0 -21
- package/data/harnesses/code/skills/design/data/checklists/record-detail.md +0 -21
- package/data/harnesses/code/skills/design/data/checklists/settings.md +0 -21
- package/data/harnesses/code/skills/design/data/chrome/board-column.md +0 -68
- package/data/harnesses/code/skills/design/data/chrome/data-table.md +0 -63
- package/data/harnesses/code/skills/design/data/chrome/side-panel.md +0 -60
- package/data/harnesses/code/skills/design/data/chrome/sidebar.md +0 -78
- package/data/harnesses/code/skills/design/data/chrome/stat-cards.md +0 -62
- package/data/harnesses/code/skills/design/data/chrome/topbar.md +0 -65
- package/data/harnesses/code/skills/design/data/color/accent-presets.md +0 -90
- package/data/harnesses/code/skills/design/data/color/aesop-earth-mute.md +0 -91
- package/data/harnesses/code/skills/design/data/color/arc-peach-play.md +0 -90
- package/data/harnesses/code/skills/design/data/color/attio-hunter-teal.md +0 -90
- package/data/harnesses/code/skills/design/data/color/carbon-cyan-signal.md +0 -90
- package/data/harnesses/code/skills/design/data/color/clay-parchment.md +0 -90
- package/data/harnesses/code/skills/design/data/color/duolingo-feather.md +0 -90
- package/data/harnesses/code/skills/design/data/color/geist-mono-signal.md +0 -90
- package/data/harnesses/code/skills/design/data/color/linear-graphite-violet.md +0 -90
- package/data/harnesses/code/skills/design/data/color/mercury-onyx-cobalt.md +0 -90
- package/data/harnesses/code/skills/design/data/color/notion-paper-ink.md +0 -90
- package/data/harnesses/code/skills/design/data/color/radix-slate-iris.md +0 -90
- package/data/harnesses/code/skills/design/data/color/raycast-void-spectrum.md +0 -90
- package/data/harnesses/code/skills/design/data/color/spectrum-celery-fuchsia.md +0 -90
- package/data/harnesses/code/skills/design/data/color/stripe-blurple-ruby.md +0 -90
- package/data/harnesses/code/skills/design/data/color/superhuman-cod-picton.md +0 -89
- package/data/harnesses/code/skills/design/data/corpora/operations-review/companies.csv +0 -15
- package/data/harnesses/code/skills/design/data/corpora/operations-review/corpus.md +0 -87
- package/data/harnesses/code/skills/design/data/corpora/operations-review/people.csv +0 -25
- package/data/harnesses/code/skills/design/data/corpora/procurement-approvals/companies.csv +0 -15
- package/data/harnesses/code/skills/design/data/corpora/procurement-approvals/corpus.md +0 -83
- package/data/harnesses/code/skills/design/data/corpora/procurement-approvals/people.csv +0 -25
- package/data/harnesses/code/skills/design/data/corpora/revenue-analytics/companies.csv +0 -15
- package/data/harnesses/code/skills/design/data/corpora/revenue-analytics/corpus.md +0 -89
- package/data/harnesses/code/skills/design/data/corpora/revenue-analytics/people.csv +0 -25
- package/data/harnesses/code/skills/design/data/elevation/ant-design-directional-shadow.md +0 -19
- package/data/harnesses/code/skills/design/data/elevation/apple-liquid-glass-material.md +0 -18
- package/data/harnesses/code/skills/design/data/elevation/atlassian-surface-shadow-pairing.md +0 -20
- package/data/harnesses/code/skills/design/data/elevation/fluent-2-key-ambient-ramp.md +0 -20
- package/data/harnesses/code/skills/design/data/elevation/github-primer-sparing-shadow.md +0 -19
- package/data/harnesses/code/skills/design/data/elevation/ibm-carbon-layer-and-border.md +0 -19
- package/data/harnesses/code/skills/design/data/elevation/linear-dark-surface-ladder.md +0 -17
- package/data/harnesses/code/skills/design/data/elevation/material-2-key-ambient-dp-ramp.md +0 -19
- package/data/harnesses/code/skills/design/data/elevation/material-3-tonal-elevation.md +0 -21
- package/data/harnesses/code/skills/design/data/elevation/neobrutalist-hard-offset.md +0 -19
- package/data/harnesses/code/skills/design/data/elevation/neumorphic-soft-dual-shadow.md +0 -18
- package/data/harnesses/code/skills/design/data/elevation/notion-warm-minimal-hairline.md +0 -17
- package/data/harnesses/code/skills/design/data/elevation/polaris-elevation-inset-bevel.md +0 -21
- package/data/harnesses/code/skills/design/data/elevation/radix-themes-alpha-ring-scale.md +0 -19
- package/data/harnesses/code/skills/design/data/elevation/shadcn-neutral-derived-radius.md +0 -19
- package/data/harnesses/code/skills/design/data/elevation/stripe-brand-tinted-dual-shadow.md +0 -18
- package/data/harnesses/code/skills/design/data/elevation/tailwind-default-utility-scale.md +0 -19
- package/data/harnesses/code/skills/design/data/elevation/vercel-geist-shadow-as-border.md +0 -20
- package/data/harnesses/code/skills/design/data/gradients/amber-attention-fill.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/cloud-shadow-wash.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/confident-lavender-wash.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/ember-ship-flare.md +0 -18
- package/data/harnesses/code/skills/design/data/gradients/full-metal-wash.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/indigo-ruby-cta-band.md +0 -18
- package/data/harnesses/code/skills/design/data/gradients/linear-graphite-wash.md +0 -18
- package/data/harnesses/code/skills/design/data/gradients/marble-quartz-wash.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/midnight-aurora-panel.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/neutral-volume-fill.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/revenue-uptrend-fill.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/risk-decline-fill.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/signal-blue-develop.md +0 -18
- package/data/harnesses/code/skills/design/data/gradients/slate-mist-wash.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/stripe-atmosphere-mesh.md +0 -18
- package/data/harnesses/code/skills/design/data/gradients/teal-signal-accent.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/violet-magenta-promo.md +0 -16
- package/data/harnesses/code/skills/design/data/iconography.md +0 -199
- package/data/harnesses/code/skills/design/data/motion/accordion-expand.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/destructive-hold-confirm.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/drag-dismiss-momentum.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/empty-state-arrive.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/hover-lift.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/modal-center-arrive.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/number-ticker-roll.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/onboarding-bounce.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/panel-slide.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/press-feedback.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/progress-linear-loop.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/route-crossfade.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/rubber-band-overscroll.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/skeleton-shimmer.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/stagger-arrive.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/toast-enter-stack.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/tooltip-chain-instant.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/trigger-anchored-reveal.md +0 -18
- package/data/harnesses/code/skills/design/data/tells.csv +0 -34
- package/data/harnesses/code/skills/design/data/typography/anton-work-sans.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/archivo-black-archivo.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/bitter-karla.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/dm-serif-dm-sans.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/fraunces-inter.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/geist-geist-mono.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/hubot-sans-mona-sans.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/ibm-plex-sans-operator-single-family.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/instrument-serif-instrument-sans.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/inter-operator-single-family.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/libre-baskerville-libre-franklin.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/newsreader-inter.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/playfair-display-source-sans.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/public-sans-operator-single-family.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/sohne-inter-fintech.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/source-serif-source-sans.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/space-grotesk-work-sans-space-mono.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/spectral-manrope.md +0 -17
- package/data/harnesses/code/skills/design/data/voices/bright-collaborator.md +0 -29
- package/data/harnesses/code/skills/design/data/voices/direct-operator.md +0 -29
- package/data/harnesses/code/skills/design/data/voices/earnest-helper.md +0 -29
- package/data/harnesses/code/skills/design/data/voices/editorial-composed.md +0 -29
- package/data/harnesses/code/skills/design/data/voices/quiet-concierge.md +0 -29
- package/data/harnesses/code/skills/design/data/voices/warm-guide.md +0 -29
- package/data/harnesses/code/skills/design/design-md/SCHEMA.md +0 -179
- package/data/harnesses/code/skills/design/design-md/index.csv +0 -67
- package/data/harnesses/code/skills/design/design-md/library/airbnb.md +0 -207
- package/data/harnesses/code/skills/design/design-md/library/airtable.md +0 -205
- package/data/harnesses/code/skills/design/design-md/library/anthropic-claude.md +0 -203
- package/data/harnesses/code/skills/design/design-md/library/apple.md +0 -206
- package/data/harnesses/code/skills/design/design-md/library/binance.md +0 -210
- package/data/harnesses/code/skills/design/design-md/library/bmw.md +0 -210
- package/data/harnesses/code/skills/design/design-md/library/cal.md +0 -209
- package/data/harnesses/code/skills/design/design-md/library/clay.md +0 -204
- package/data/harnesses/code/skills/design/design-md/library/clickhouse.md +0 -205
- package/data/harnesses/code/skills/design/design-md/library/cohere.md +0 -205
- package/data/harnesses/code/skills/design/design-md/library/coinbase.md +0 -198
- package/data/harnesses/code/skills/design/design-md/library/composio.md +0 -198
- package/data/harnesses/code/skills/design/design-md/library/cursor.md +0 -197
- package/data/harnesses/code/skills/design/design-md/library/elevenlabs.md +0 -199
- package/data/harnesses/code/skills/design/design-md/library/expo.md +0 -200
- package/data/harnesses/code/skills/design/design-md/library/figma.md +0 -199
- package/data/harnesses/code/skills/design/design-md/library/framer.md +0 -202
- package/data/harnesses/code/skills/design/design-md/library/hashicorp.md +0 -205
- package/data/harnesses/code/skills/design/design-md/library/ibm.md +0 -205
- package/data/harnesses/code/skills/design/design-md/library/intercom.md +0 -204
- package/data/harnesses/code/skills/design/design-md/library/kraken.md +0 -200
- package/data/harnesses/code/skills/design/design-md/library/linear-app.md +0 -198
- package/data/harnesses/code/skills/design/design-md/library/lovable.md +0 -199
- package/data/harnesses/code/skills/design/design-md/library/meta.md +0 -204
- package/data/harnesses/code/skills/design/design-md/library/minimax.md +0 -204
- package/data/harnesses/code/skills/design/design-md/library/mintlify.md +0 -210
- package/data/harnesses/code/skills/design/design-md/library/miro.md +0 -209
- package/data/harnesses/code/skills/design/design-md/library/mistral-ai.md +0 -201
- package/data/harnesses/code/skills/design/design-md/library/mongodb.md +0 -201
- package/data/harnesses/code/skills/design/design-md/library/notion.md +0 -204
- package/data/harnesses/code/skills/design/design-md/library/nvidia.md +0 -215
- package/data/harnesses/code/skills/design/design-md/library/ollama.md +0 -213
- package/data/harnesses/code/skills/design/design-md/library/opencode-ai.md +0 -216
- package/data/harnesses/code/skills/design/design-md/library/posthog.md +0 -218
- package/data/harnesses/code/skills/design/design-md/library/raycast.md +0 -214
- package/data/harnesses/code/skills/design/design-md/library/replicate.md +0 -202
- package/data/harnesses/code/skills/design/design-md/library/resend.md +0 -203
- package/data/harnesses/code/skills/design/design-md/library/revolut.md +0 -203
- package/data/harnesses/code/skills/design/design-md/library/runwayml.md +0 -203
- package/data/harnesses/code/skills/design/design-md/library/sanity.md +0 -200
- package/data/harnesses/code/skills/design/design-md/library/sentry.md +0 -201
- package/data/harnesses/code/skills/design/design-md/library/shopify.md +0 -202
- package/data/harnesses/code/skills/design/design-md/library/slack.md +0 -202
- package/data/harnesses/code/skills/design/design-md/library/spacex.md +0 -206
- package/data/harnesses/code/skills/design/design-md/library/spotify.md +0 -206
- package/data/harnesses/code/skills/design/design-md/library/stripe.md +0 -196
- package/data/harnesses/code/skills/design/design-md/library/supabase.md +0 -196
- package/data/harnesses/code/skills/design/design-md/library/superhuman.md +0 -194
- package/data/harnesses/code/skills/design/design-md/library/tesla.md +0 -198
- package/data/harnesses/code/skills/design/design-md/library/theverge.md +0 -199
- package/data/harnesses/code/skills/design/design-md/library/together-ai.md +0 -193
- package/data/harnesses/code/skills/design/design-md/library/uber.md +0 -195
- package/data/harnesses/code/skills/design/design-md/library/vercel.md +0 -195
- package/data/harnesses/code/skills/design/design-md/library/voltagent.md +0 -197
- package/data/harnesses/code/skills/design/design-md/library/warp.md +0 -196
- package/data/harnesses/code/skills/design/design-md/library/webflow.md +0 -197
- package/data/harnesses/code/skills/design/design-md/library/wired.md +0 -197
- package/data/harnesses/code/skills/design/design-md/library/wise.md +0 -198
- package/data/harnesses/code/skills/design/design-md/library/x-ai.md +0 -199
- package/data/harnesses/code/skills/design/design-md/library/zapier.md +0 -198
- package/data/harnesses/code/skills/design/design-md/nurix.md +0 -214
- package/data/harnesses/code/skills/design/design-md/variants/editorial-luxury.md +0 -184
- package/data/harnesses/code/skills/design/design-md/variants/expressive-saas.md +0 -216
- package/data/harnesses/code/skills/design/design-md/variants/quiet-premium.md +0 -211
- package/data/harnesses/code/skills/design/design-md/variants/terse-dense-operator.md +0 -212
- package/data/harnesses/code/skills/design/design-md/variants/warm-approachable.md +0 -216
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: onboarding-bounce
|
|
3
|
-
class: a6
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "emilkowalski.skills/skills/review-animations/STANDARDS.md (springs — bounce 0.1-0.3, reserved for playful moments) + improve-animations/AUDIT.md §1 (rare/first-time → delight)"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "a springy overshoot on a first-run welcome card reads warm and considered; the same bounce on anything seen daily reads gimmicky"
|
|
8
|
-
aliases: { gimmicky: "spring bounce applied outside a rare/first-time identity moment — the same overshoot on a daily-use control", overdone: "bounce pushed above the 0.1-0.3 range into cartoonish territory" }
|
|
9
|
-
---
|
|
10
|
-
Onboarding welcome screens, first-run tours — rare, high-emotion, seen once or a handful of times ever. The scoped exception where springy/physical vocabulary is admissible; it does not license bounce anywhere else.
|
|
11
|
-
|
|
12
|
-
```yaml values
|
|
13
|
-
duration: 500ms (spring; no fixed duration)
|
|
14
|
-
easing: spring(bounce 0.3)
|
|
15
|
-
element-class: identity-moment
|
|
16
|
-
interruptible: n/a
|
|
17
|
-
budget: { identity-moment: 400-600ms }
|
|
18
|
-
```
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: panel-slide
|
|
3
|
-
class: a6
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "emilkowalski.skills/skills/review-animations/STANDARDS.md (--ease-drawer curve; duration table, modal/drawer row) + apple-design/SKILL.md §3 (interruption; velocity continuity)"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "a 260ms slide on the iOS drawer curve reads native and grabbable; a keyframe slide that restarts on repeated taps reads broken"
|
|
8
|
-
aliases: { broken: "keyframes restarting from zero instead of a transition/spring retargeting mid-slide", floaty: "duration pushed past the panel budget" }
|
|
9
|
-
---
|
|
10
|
-
Side panels, drawers, bottom sheets. Must be interruptible and carry velocity on a gesture-driven close — grabbing a closing panel should follow the pointer, not fight it.
|
|
11
|
-
|
|
12
|
-
```yaml values
|
|
13
|
-
duration: 260ms
|
|
14
|
-
easing: cubic-bezier(0.32, 0.72, 0, 1)
|
|
15
|
-
element-class: panel
|
|
16
|
-
interruptible: required
|
|
17
|
-
budget: { panel: 200-500ms }
|
|
18
|
-
```
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: press-feedback
|
|
3
|
-
class: a6
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "emilkowalski.skills/skills/review-animations/STANDARDS.md (physicality — press feedback; duration table) + improve-animations/AUDIT.md §2-3"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "160ms scale-to-0.97 on pointer-down reads tactile and instant; slower or absent reads dead under the finger"
|
|
8
|
-
aliases: { dead: "no press feedback at all, or duration pushed above the 160ms control budget", mushy: "an easing softer than ease-out, delaying the visible response" }
|
|
9
|
-
---
|
|
10
|
-
Any pressable control — buttons, icon buttons, tap-target rows. The canon prescribes this on every pressable element while forbidding animation on keyboard-initiated actions: it fires on pointer-down only (a tap affordance, not a state transition), and keyboard activation (Enter/Space) never replays it.
|
|
11
|
-
|
|
12
|
-
```yaml values
|
|
13
|
-
duration: 160ms
|
|
14
|
-
easing: cubic-bezier(0.23, 1, 0.32, 1)
|
|
15
|
-
element-class: control
|
|
16
|
-
interruptible: n/a
|
|
17
|
-
budget: { control: 100-160ms }
|
|
18
|
-
```
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: progress-linear-loop
|
|
3
|
-
class: a6
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "emilkowalski.skills/skills/review-animations/STANDARDS.md (easing decision order — constant motion → linear) + animation-vocabulary/SKILL.md (Loop; Marquee); Material's linear token agrees as secondary"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "a constant linear sweep reads honest about an unknown wait; any easing that speeds up and slows down reads like a fake promise"
|
|
8
|
-
aliases: { "fake-promise": "eased (non-linear) motion on an indeterminate progress indicator, implying a completion point that doesn't exist", twitchy: "loop cycle faster than ~1s, reading anxious rather than calm" }
|
|
9
|
-
---
|
|
10
|
-
Indeterminate progress bars, loading spinners, marquees. Constant-speed motion only — the one place `linear` is correct and `ease` curves are wrong.
|
|
11
|
-
|
|
12
|
-
```yaml values
|
|
13
|
-
duration: 1200ms (loop)
|
|
14
|
-
easing: linear
|
|
15
|
-
element-class: control
|
|
16
|
-
interruptible: n/a
|
|
17
|
-
budget: { control: 1000-1500ms }
|
|
18
|
-
```
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: route-crossfade
|
|
3
|
-
class: a6
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "emilkowalski.skills/skills/animation-vocabulary/SKILL.md (Crossfade; Page transition) + review-animations/STANDARDS.md (sub-300ms rule; masking imperfect crossfades; easing decision order — opacity/color → ease)"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "a single ~250ms crossfade between views reads like one continuous product; a staggered reveal of each panel on arrival reads like a slideshow"
|
|
8
|
-
aliases: { slideshow: "child elements staggering in individually on route arrival instead of one crossfade", "double-exposed": "old and new view both fully visible mid-transition — mask with a subtle blur (~2px, never above 20px)" }
|
|
9
|
-
---
|
|
10
|
-
Navigating between routes or top-level views — a same-place opacity morph, not a spatial entrance, so `ease` rather than the entrance curve. One crossfade only; never an orchestrated sequence of the destination's own elements arriving one by one. A product loads into a task, not a reveal.
|
|
11
|
-
|
|
12
|
-
```yaml values
|
|
13
|
-
duration: 250ms
|
|
14
|
-
easing: ease
|
|
15
|
-
element-class: page
|
|
16
|
-
interruptible: n/a
|
|
17
|
-
budget: { page: 200-300ms }
|
|
18
|
-
```
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: rubber-band-overscroll
|
|
3
|
-
class: a6
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "emilkowalski.skills/skills/animation-vocabulary/SKILL.md (Rubber-banding) + apple-design/SKILL.md §8 (boundary resistance) and spring cheat-sheet (critically-damped default)"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "resistance that grows the further you pull, then a quick snap-back, reads alive and physical; a hard stop at the edge reads frozen"
|
|
8
|
-
aliases: { frozen: "a hard stop at the scroll boundary instead of progressive resistance", overshoot: "snap-back overshoots past the origin instead of settling cleanly" }
|
|
9
|
-
---
|
|
10
|
-
Scrollable containers and pull-to-refresh regions at their boundary. Resistance increases continuously with drag distance past the edge; release animates back with a critically-damped spring, never a linear tween.
|
|
11
|
-
|
|
12
|
-
```yaml values
|
|
13
|
-
duration: 300ms (snap-back)
|
|
14
|
-
easing: spring(damping increases near boundary)
|
|
15
|
-
element-class: page
|
|
16
|
-
interruptible: required
|
|
17
|
-
budget: { page: 200-400ms }
|
|
18
|
-
```
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: skeleton-shimmer
|
|
3
|
-
class: a6
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "emilkowalski.skills/skills/animation-vocabulary/SKILL.md (Skeleton/Shimmer) + review-animations/STANDARDS.md (easing decision order — constant motion → linear)"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "a slow, continuous sheen reads like content is genuinely on its way; a fast or jittery shimmer reads anxious"
|
|
8
|
-
aliases: { anxious: "shimmer cycle faster than ~1s, reading twitchy instead of calm", stuck: "a static placeholder with no shimmer at all, giving no sense of progress" }
|
|
9
|
-
---
|
|
10
|
-
Loading placeholders for cards, rows, and detail panes before content resolves. Runs as a continuous ambient loop, exempt from the sub-300ms UI budget (constant-motion class); swap to real content with a quick crossfade, not a hard cut.
|
|
11
|
-
|
|
12
|
-
```yaml values
|
|
13
|
-
duration: 1400ms (loop)
|
|
14
|
-
easing: linear
|
|
15
|
-
element-class: list-item
|
|
16
|
-
interruptible: n/a
|
|
17
|
-
budget: { list-item: 1200-1600ms }
|
|
18
|
-
```
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: stagger-arrive
|
|
3
|
-
class: a6
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "emilkowalski.skills/skills/review-animations/STANDARDS.md (stagger — 30-80ms, decorative, never blocks interaction)"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "a ~50ms cascade with a small upward drift reads considered; everything landing at once reads dumped, and gaps above 80ms read slow"
|
|
8
|
-
aliases: { dumped: "no stagger at all on a multi-item entrance", draggy: "per-item stagger delay above the 80ms budget" }
|
|
9
|
-
---
|
|
10
|
-
List and grid entrances for freshly-loaded content within a task (search results, new rows) — never on initial page load or route arrival (no orchestrated load sequences). Purely decorative — must never delay the list becoming interactive; keep the per-item delay inside 30-80ms so a ten-row list finishes well under half a second.
|
|
11
|
-
|
|
12
|
-
```yaml values
|
|
13
|
-
duration: 300ms
|
|
14
|
-
easing: cubic-bezier(0.23, 1, 0.32, 1)
|
|
15
|
-
element-class: list-item
|
|
16
|
-
interruptible: n/a
|
|
17
|
-
budget: { list-item: 250-350ms }
|
|
18
|
-
```
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: toast-enter-stack
|
|
3
|
-
class: a6
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "emilkowalski.skills/skills/review-animations/STANDARDS.md (interruptibility — toast transition example; cohesion — the Sonner register)"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "a 400ms transition-based stack reads calm even when toasts pile up fast; a keyframe stack reads jumpy every time a new one lands"
|
|
8
|
-
aliases: { jumpy: "@keyframes restarting already-stacked toasts instead of one continuous transition retargeting them", jarring: "no @starting-style/mount fallback, so the first toast snaps in with no entrance" }
|
|
9
|
-
---
|
|
10
|
-
Toast/notification stacks. A new arrival must not restart the position transition of toasts already stacked — everything reflows on one continuous transition, never per-toast keyframes.
|
|
11
|
-
|
|
12
|
-
```yaml values
|
|
13
|
-
duration: 400ms
|
|
14
|
-
easing: ease
|
|
15
|
-
element-class: overlay
|
|
16
|
-
interruptible: required
|
|
17
|
-
budget: { overlay: 300-450ms }
|
|
18
|
-
```
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: tooltip-chain-instant
|
|
3
|
-
class: a6
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "emilkowalski.skills/skills/emil-design-eng/SKILL.md (tooltip-chaining example) + review-animations/STANDARDS.md (duration table, tooltip row; perceived performance)"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "the first tooltip's 125ms fade-and-lift reads considered; every later tooltip in the same toolbar should read instant, with zero animation"
|
|
8
|
-
aliases: { "laggy-toolbar": "every tooltip in a group replaying the full delay+animation instead of chaining to instant after the first", floaty: "duration above the small-popover budget" }
|
|
9
|
-
---
|
|
10
|
-
Tooltips, especially adjacent ones in a toolbar. First open: full delay + animation. While the pointer stays within the tooltip group, later tooltips switch to 0ms — this is the frequency law being satisfied, not an exception to it.
|
|
11
|
-
|
|
12
|
-
```yaml values
|
|
13
|
-
duration: 125ms
|
|
14
|
-
easing: cubic-bezier(0.23, 1, 0.32, 1)
|
|
15
|
-
element-class: control
|
|
16
|
-
interruptible: n/a
|
|
17
|
-
budget: { control: 0-200ms }
|
|
18
|
-
```
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: trigger-anchored-reveal
|
|
3
|
-
class: a6
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "emilkowalski.skills/skills/review-animations/STANDARDS.md (physicality — origin-aware popovers; duration table, dropdown row) + improve-animations/AUDIT.md §3"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "growing out of the trigger at ~200ms reads anchored and native; center-scale or scale(0) reads like a random popup"
|
|
8
|
-
aliases: { disconnected: "transform-origin left at center instead of the trigger element", glitchy: "scale(0) start instead of scale(0.9-0.97) + opacity" }
|
|
9
|
-
---
|
|
10
|
-
Popovers, dropdowns, select menus, tooltips. `transform-origin` follows the trigger (Radix/Base UI expose it as a CSS var); never centers. Rapid open/close/open must retarget, not restart.
|
|
11
|
-
|
|
12
|
-
```yaml values
|
|
13
|
-
duration: 200ms
|
|
14
|
-
easing: cubic-bezier(0.23, 1, 0.32, 1)
|
|
15
|
-
element-class: overlay
|
|
16
|
-
interruptible: required
|
|
17
|
-
budget: { overlay: 150-250ms }
|
|
18
|
-
```
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
id,tell,category,provenance,sourced,status
|
|
2
|
-
tell-001,"every shadow set to zero and every border the same 1px gray — structure without a single elevation decision",wireframe-smell,"design-skill 01 §E5; impeccable detector registry",2026-07-12,active
|
|
3
|
-
tell-002,"rounded-square icon tile stacked above the heading on every card — the universal generated feature-card template",template,"impeccable detector registry (icon-tile-stack)",2026-07-12,active
|
|
4
|
-
tell-003,"cards nested inside cards — double borders and stacked radii standing in for hierarchy",card-abuse,"impeccable detector registry (nested-cards); design-skill 01 §E5",2026-07-12,active
|
|
5
|
-
tell-004,"thick colored stripe down one edge of a card as the accent device",accent-abuse,"impeccable detector registry (side-tab); design-skill 01 §E5",2026-07-12,active
|
|
6
|
-
tell-005,"accent border wrapped around a rounded card — the stripe fighting the corner radius",accent-abuse,"impeccable detector registry (border-accent-on-rounded)",2026-07-12,active
|
|
7
|
-
tell-006,"hero-metric template — a row of identical stat tiles each icon + label + big number, with no comparison, trend, state, or door",template,"design-skill 01 §E5; b2b-ux-patterns dashboards chapter",2026-07-12,active
|
|
8
|
-
tell-007,"cream or warm-beige page surface reached by reflex as the tasteful default",palette,"impeccable detector registry (cream-palette); taste-skill §9.A; design-skill 01 §A2 anti-cream guardband",2026-07-12,active
|
|
9
|
-
tell-008,"ghost cards — bordered or shadowed containers wrapping a single short text run or nothing at all",card-abuse,"design-skill 01 §E5",2026-07-12,active
|
|
10
|
-
tell-009,"purple-violet gradients and cyan-on-dark as the default accent scheme",palette,"impeccable detector registry (ai-color-palette)",2026-07-12,active
|
|
11
|
-
tell-010,"dark theme expressed as colored box-shadow glows instead of a surface-lightness ladder",palette,"impeccable detector registry (dark-glow); design-skill 01 §A3 dark ladder",2026-07-12,active
|
|
12
|
-
tell-011,"gradient fills on heading or metric text",typography,"impeccable detector registry (gradient-text)",2026-07-12,active
|
|
13
|
-
tell-012,"flat type ramp — adjacent sizes too close together to carry hierarchy anywhere on the surface",typography,"impeccable detector registry (flat-type-hierarchy)",2026-07-12,active
|
|
14
|
-
tell-013,"one spacing value everywhere — no tight grouping of related controls, no generous seams between sections",layout,"impeccable detector registry (monotonous-spacing)",2026-07-12,active
|
|
15
|
-
tell-014,"hairline border and a wide diffuse shadow on the same container — two elevation systems at once",elevation,"impeccable detector registry (generated-UI signature set)",2026-07-12,active
|
|
16
|
-
tell-015,"decorative two-axis hairline grid background behind a surface that is not a canvas, map, or measurement view",template,"impeccable detector registry (generated-UI signature set)",2026-07-12,active
|
|
17
|
-
tell-016,"numbered section markers (01 / 02 / 03) as structural scaffolding",template,"impeccable detector registry (numbered-section-markers); taste-skill §9.F",2026-07-12,active
|
|
18
|
-
tell-017,"tiny uppercase letter-spaced kicker label repeated above every section heading",template,"impeccable detector registry (repeated-section-kickers)",2026-07-12,active
|
|
19
|
-
tell-018,"colored status dots decorating every nav item, row, or badge with no real state behind them",chrome,"taste-skill §9.F production-observed tells",2026-07-12,active
|
|
20
|
-
tell-019,"middle-dot chains as the default separator for every metadata strip",chrome,"taste-skill §9.F production-observed tells",2026-07-12,active
|
|
21
|
-
tell-020,"top and bottom hairline borders on every row of a long table or spec list",wireframe-smell,"taste-skill §9.F production-observed tells",2026-07-12,active
|
|
22
|
-
tell-021,"fake build or version strings as decoration where no real build data exists",demo-content,"taste-skill §9.F production-observed tells",2026-07-12,active
|
|
23
|
-
tell-022,"placeholder-generic person names in demo data (the John Doe class)",demo-content,"taste-skill §9.D (Jane Doe effect); design-skill 01 §E5",2026-07-12,active
|
|
24
|
-
tell-023,"the same gray egg or user-icon avatar on every person row",demo-content,"taste-skill §9.D production-observed tells",2026-07-12,active
|
|
25
|
-
tell-024,"fake-perfect numbers — round percentages, sequential IDs, totals that reconcile too neatly",demo-content,"taste-skill §9.D; design-skill 01 §E5",2026-07-12,active
|
|
26
|
-
tell-025,"startup-slop company names in demo data (the Acme / Nexus / Cloudly class)",demo-content,"taste-skill §9.D production-observed tells",2026-07-12,active
|
|
27
|
-
tell-026,"marketing buzzwords in interface copy (streamline, empower, supercharge, enterprise-grade)",copy,"impeccable detector registry (marketing-buzzword); taste-skill §9.D",2026-07-12,active
|
|
28
|
-
tell-027,"em-dash-heavy microcopy — the character recurring across labels, empty states, and tooltips",copy,"taste-skill §9.G; impeccable detector registry (em-dash-overuse)",2026-07-12,active
|
|
29
|
-
tell-028,"transition: all on interactive elements",motion,"design-skill 02 ship-gate Tier-2 motion tells",2026-07-12,active
|
|
30
|
-
tell-029,"ease-in easing on an entrance",motion,"design-skill 02 ship-gate Tier-2 motion tells; emilkowalski motion canon",2026-07-12,active
|
|
31
|
-
tell-030,"animation attached to a keyboard-triggered action",motion,"design-skill 02 ship-gate Tier-2 motion tells; emilkowalski frequency law",2026-07-12,active
|
|
32
|
-
tell-031,"bounce or elastic easing on product chrome",motion,"impeccable detector registry (bounce-easing)",2026-07-12,active
|
|
33
|
-
tell-032,"width, height, padding, or margin animated instead of transform and opacity",motion,"impeccable detector registry (layout-transition)",2026-07-12,active
|
|
34
|
-
tell-033,"orchestrated staggered entrance choreography on a work surface — a product loads into a task",motion,"design-skill 01 §A6 admission criteria; emilkowalski motion canon",2026-07-12,active
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: anton-work-sans
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "Fontpair.co bold/brutalist list; Google Fonts; families verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "loud condensed poster headline against a quiet neutral body — maximum contrast"
|
|
8
|
-
---
|
|
9
|
-
Anton is a single static weight built for shouting — a handful of words at most, never a sentence; Work Sans absorbs every remaining functional role at a calm, neutral register.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "Anton", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400] }
|
|
13
|
-
sans: { family: "Work Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600] }
|
|
14
|
-
mono: { family: "Roboto Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
|
|
15
|
-
register-scope: { display: ["poster headlines", "hero words", "cover moments"], sans: ["body copy", "buttons", "form labels", "table cells", "nav"], mono: ["code", "data values"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: archivo-black-archivo
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "Fontpair.co brutalist list; Google Fonts (Omnibus-Type superfamily); families verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "brutalist poster energy tempered by a disciplined variable-width grotesque body"
|
|
8
|
-
---
|
|
9
|
-
Archivo Black is a single static 900-weight cut reserved for shock headlines; Archivo Variable (same foundry, wdth+wght axes) runs everything else, including a condensed width option for dense tables.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "Archivo Black", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400] }
|
|
13
|
-
sans: { family: "Archivo Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600] }
|
|
14
|
-
mono: { family: "JetBrains Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
|
|
15
|
-
register-scope: { display: ["poster headlines", "hero statements", "cover moments"], sans: ["body copy", "buttons", "form labels", "table cells", "nav"], mono: ["code", "data"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: bitter-karla
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "Google Fonts featured pairings; Fontpair.co warm-approachable list; families verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "friendly slab warmth over a soft, low-contrast grotesque"
|
|
8
|
-
---
|
|
9
|
-
A gentle, approachable pairing for product blogs and onboarding flows that want warmth without going fully editorial; both faces are fully variable so weight can carry hierarchy inside each role too.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "Bitter Variable", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400, 600, 700] }
|
|
13
|
-
sans: { family: "Karla Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600, 700] }
|
|
14
|
-
mono: { family: "JetBrains Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
|
|
15
|
-
register-scope: { display: ["headlines", "hero banners", "cover cards"], sans: ["body copy", "buttons", "form labels", "table cells", "nav"], mono: ["code", "IDs"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: dm-serif-dm-sans
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "Google Fonts featured pairings (Colophon Foundry twin release); Fontpair.co; families verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "quiet warmth from two faces drawn by the same studio in one release"
|
|
8
|
-
---
|
|
9
|
-
The shared authorship keeps x-heights and rhythm aligned without matching stroke contrast — a low-friction pairing for blogs, newsletters, and about-pages that want a soft editorial voice. DM Serif Display ships as a single static weight; treat it as a display voice, not a workhorse.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "DM Serif Display", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400] }
|
|
13
|
-
sans: { family: "DM Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600, 700] }
|
|
14
|
-
mono: { family: "JetBrains Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
|
|
15
|
-
register-scope: { display: ["pull quotes", "hero statements", "identity lockups"], sans: ["body copy", "nav", "buttons", "form labels", "table cells"], mono: ["code samples", "technical asides"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: fraunces-inter
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "Fontpair.co warm-editorial list; Fonts In Use case studies tagged Fraunces; families verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "expressive, ink-trap warmth over a clean, quiet product sans"
|
|
8
|
-
---
|
|
9
|
-
Fraunces carries optical-size (opsz) and WONK/SOFT axes — dial WONK toward 0 and keep opsz high for a calmer display cut in dense layouts; Inter runs the rest of the interface untouched.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "Fraunces Variable", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400, 500, 600, 900] }
|
|
13
|
-
sans: { family: "Inter Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600, 700] }
|
|
14
|
-
mono: { family: "JetBrains Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
|
|
15
|
-
register-scope: { display: ["hero headlines", "cover moments", "editorial pull quotes"], sans: ["body copy", "UI labels", "buttons", "form fields", "table cells"], mono: ["code blocks", "data/IDs"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: geist-geist-mono
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "Vercel's production type system, Geist Sans + Geist Mono (Vercel with Basement Studio, OFL, added to Google Fonts Oct/Nov 2024); families verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "quiet, engineered product register — a single studio's sans and mono built as one system"
|
|
8
|
-
---
|
|
9
|
-
Dense-operator-adjacent: Geist Variable carries both identity moments (heavier weight) and body/UI (regular weight) as the same family, exactly as Vercel ships it on vercel.com and in Next.js docs; Geist Mono is the real sibling mono, not a substitution.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "Geist Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [600, 700] }
|
|
13
|
-
sans: { family: "Geist Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500] }
|
|
14
|
-
mono: { family: "Geist Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
|
|
15
|
-
register-scope: { display: ["hero headlines", "page titles", "top-nav wordmark"], sans: ["body copy", "buttons", "form labels", "table cells", "nav"], mono: ["code blocks", "terminal output", "IDs"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: hubot-sans-mona-sans
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "GitHub's production brand/UI system, Hubot Sans + Mona Sans (GitHub with Degarism Studio, OFL, added to Google Fonts Nov 2024); families verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "friendly technical brand voice — an expressive geometric display over a workhorse variable UI face"
|
|
8
|
-
---
|
|
9
|
-
Hubot Sans is GitHub's display/wordmark face (wide, geometric, confident); Mona Sans is the UI workhorse (wdth+wght axes) for everything functional. Note: GitHub's real code font, Monaspace, is OFL-licensed but not published to Google Fonts — JetBrains Mono is substituted here and should be swapped for Monaspace directly from GitHub's own distribution if code-block authenticity matters.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "Hubot Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [500, 700] }
|
|
13
|
-
sans: { family: "Mona Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600] }
|
|
14
|
-
mono: { family: "JetBrains Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
|
|
15
|
-
register-scope: { display: ["brand lockups", "hero headlines", "cover moments"], sans: ["body copy", "buttons", "form labels", "table cells", "nav"], mono: ["code blocks", "terminal output", "diffs"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|
package/data/harnesses/apollo/skills/design/data/typography/ibm-plex-sans-operator-single-family.md
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: ibm-plex-sans-operator-single-family
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "IBM's own Plex type system (Mike Abbink / Bold Monday); Typ.io; families verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "humanist technical register, one family carrying the entire hierarchy by weight and width"
|
|
8
|
-
---
|
|
9
|
-
Dense-operator entry: IBM Plex Sans Variable (wdth+wght axes) covers both display and sans roles — use 600 weight or a narrower width cut for identity moments only, never for table cells or buttons. Plex Mono (static, same foundry) completes the trio for code and data.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "IBM Plex Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [600, 700] }
|
|
13
|
-
sans: { family: "IBM Plex Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500] }
|
|
14
|
-
mono: { family: "IBM Plex Mono", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500, 600] }
|
|
15
|
-
register-scope: { display: ["page titles", "dashboard section headers", "empty states"], sans: ["body copy", "buttons", "form labels", "table cells", "nav"], mono: ["code", "logs", "data/IDs"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|
package/data/harnesses/apollo/skills/design/data/typography/instrument-serif-instrument-sans.md
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: instrument-serif-instrument-sans
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "Google Fonts (Instrument design agency twin release, 2023); Fonts In Use recent uploads; families verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "bright, high-contrast serif flashes against a friendly variable-width grotesque"
|
|
8
|
-
---
|
|
9
|
-
Instrument Serif ships one weight and an italic only — treat it as a flourish face for a handful of words, never a paragraph; Instrument Sans carries every functional role including its own width axis for compact table headers.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "Instrument Serif", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400] }
|
|
13
|
-
sans: { family: "Instrument Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600, 700] }
|
|
14
|
-
mono: { family: "JetBrains Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
|
|
15
|
-
register-scope: { display: ["hero words", "short pull quotes", "identity lockups"], sans: ["body copy", "buttons", "form labels", "table cells", "dense UI"], mono: ["code", "data values"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: inter-operator-single-family
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "Linear's production UI stack (Inter, confirmed — Linear does not ship a custom typeface); Google Fonts; family verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "precise, restrained SaaS operator surface carried entirely by weight"
|
|
8
|
-
---
|
|
9
|
-
Dense-operator entry: display and sans are the same registered family — identity moments (page titles, top-nav wordmark) take weight 600–700 of Inter Variable itself rather than a separate face; body/UI stays at 400–500. No display face touches table cells or buttons.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "Inter Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [600, 700] }
|
|
13
|
-
sans: { family: "Inter Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500] }
|
|
14
|
-
mono: { family: "JetBrains Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
|
|
15
|
-
register-scope: { display: ["page titles", "top-nav wordmark", "empty-state headlines"], sans: ["body copy", "buttons", "form labels", "table cells", "nav items"], mono: ["code", "IDs", "timestamps", "numeric data"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|
package/data/harnesses/apollo/skills/design/data/typography/libre-baskerville-libre-franklin.md
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: libre-baskerville-libre-franklin
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "Fontpair.co classic-serif list; Google Fonts (both by Impallari Type); families verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "quiet civic literary register, restrained by shared foundry discipline"
|
|
8
|
-
---
|
|
9
|
-
Libre Baskerville is a classic-book face with no variable axis and only three cuts — use it sparingly for titles; Libre Franklin's full variable range does the rest of the civic/documentation work.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "Libre Baskerville", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400, 700] }
|
|
13
|
-
sans: { family: "Libre Franklin Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600, 700] }
|
|
14
|
-
mono: { family: "IBM Plex Mono", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
|
|
15
|
-
register-scope: { display: ["report titles", "cover pages", "section headers"], sans: ["body copy", "buttons", "form labels", "table cells"], mono: ["citations", "reference codes"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: newsreader-inter
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "Google Fonts (Production Type, built for a Google News reading initiative); Typ.io case-study tag; families verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "hushed, long-form literary register that shrinks gracefully at small sizes"
|
|
8
|
-
---
|
|
9
|
-
Newsreader's opsz axis is the point — let it size itself down for dense captions and up for display; pair only with a body sans that disappears, which Inter is built to do.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "Newsreader Variable", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400, 500, 600] }
|
|
13
|
-
sans: { family: "Inter Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600] }
|
|
14
|
-
mono: { family: "Roboto Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
|
|
15
|
-
register-scope: { display: ["article headlines", "pull quotes", "cover text"], sans: ["body copy", "nav", "buttons", "form labels", "table cells"], mono: ["timestamps", "citations", "code refs"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: playfair-display-source-sans
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "Fontpair.co classic-pairings list; Typ.io Adobe-fonts popularity data; families verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "broadsheet gravity meeting a disciplined newsroom reading face"
|
|
8
|
-
---
|
|
9
|
-
Use for long-form editorial and reports where headlines need didone drama but body copy must stay quiet and legible; the mono is a substitution note, not part of the source pairing — bring it in only if the surface needs inline code or IDs.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "Playfair Display Variable", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400, 600, 700, 900] }
|
|
13
|
-
sans: { family: "Source Sans 3 Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600, 700] }
|
|
14
|
-
mono: { family: "IBM Plex Mono", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500, 600] }
|
|
15
|
-
register-scope: { display: ["cover titles", "hero headlines", "section dividers"], sans: ["body copy", "captions", "buttons", "form labels", "table cells"], mono: ["figure references", "dataset IDs", "code snippets"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|
package/data/harnesses/apollo/skills/design/data/typography/public-sans-operator-single-family.md
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: public-sans-operator-single-family
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "U.S. Web Design System (USWDS) production typeface, Public Sans (18F/USWDS, Google Fonts); families verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "quiet civic register, weight-carried hierarchy built for dense government data tables"
|
|
8
|
-
---
|
|
9
|
-
Dense-operator entry: Public Sans Variable is the entire system — no separate display face. Identity moments take 600-700 weight; every table cell, form label, and button stays at 400-500. Built explicitly for accessibility-first government services, so it is the most conservative entry in this set.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "Public Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [600, 700] }
|
|
13
|
-
sans: { family: "Public Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500] }
|
|
14
|
-
mono: { family: "Roboto Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
|
|
15
|
-
register-scope: { display: ["page titles", "section headers", "identity moments"], sans: ["body copy", "buttons", "form labels", "table cells", "nav"], mono: ["reference codes", "data values"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: sohne-inter-fintech
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "Stripe's production marketing/dashboard stack — Söhne, a commercial Klim Type Foundry license (released 2019), reported via industry SaaS-typography surveys; open substitutes verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: licensed
|
|
7
|
-
feel: "fintech institutional precision — a paid grotesque for identity, an open workhorse for everything else"
|
|
8
|
-
---
|
|
9
|
-
Söhne is a commercial Klim Type Foundry release, NOT distributed via Google Fonts — license it directly from Klim (or use the system-font fallback stack as a placeholder) before shipping; Inter Variable is the open substitute carrying every UI, table, and form role so the licensed face never has to.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "Söhne", fallback: "system-ui, -apple-system, \"Segoe UI\", sans-serif", weights: [400, 500, 700] }
|
|
13
|
-
sans: { family: "Inter Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600] }
|
|
14
|
-
mono: { family: "JetBrains Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
|
|
15
|
-
register-scope: { display: ["marketing hero type", "brand lockups", "cover moments"], sans: ["body copy", "buttons", "form labels", "table cells", "dashboard UI"], mono: ["code", "API examples", "numeric data"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: source-serif-source-sans
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "Adobe/Google Fonts superfamily (Source series); Typ.io Adobe-fonts popularity list; families verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "quiet institutional register — one design lineage front to back"
|
|
8
|
-
---
|
|
9
|
-
Both faces share a metrics philosophy from the same Adobe type team, so swapping serif-for-sans mid-document (report body to callout) never jars; good for documentation, legal, and internal-tool surfaces that want restraint over personality.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "Source Serif 4 Variable", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400, 500, 600] }
|
|
13
|
-
sans: { family: "Source Sans 3 Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600, 700] }
|
|
14
|
-
mono: { family: "IBM Plex Mono", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
|
|
15
|
-
register-scope: { display: ["document titles", "section headers", "cover pages"], sans: ["body copy", "buttons", "form labels", "table cells", "nav"], mono: ["reference IDs", "code", "version strings"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|
package/data/harnesses/apollo/skills/design/data/typography/space-grotesk-work-sans-space-mono.md
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: space-grotesk-work-sans-space-mono
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "Fontpair.co technical/startup list; Google Fonts; families verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "geometric technical display over a neutral working body, monospace for code accents"
|
|
8
|
-
---
|
|
9
|
-
A three-role technical system: Space Grotesk's squarish geometry announces sections, Work Sans stays out of the way for body copy, and its Colophon Foundry sibling Space Mono (static, 4 cuts) marks code — a common indie-SaaS combination.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "Space Grotesk Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [500, 700] }
|
|
13
|
-
sans: { family: "Work Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600] }
|
|
14
|
-
mono: { family: "Space Mono", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 700] }
|
|
15
|
-
register-scope: { display: ["section headers", "hero headlines", "feature callouts"], sans: ["body copy", "buttons", "form labels", "table cells"], mono: ["code", "terminal output", "data values"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: spectral-manrope
|
|
3
|
-
class: a1
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "Fontpair.co editorial-meets-product list; Google Fonts (Production Type / Mikhail Sharanda); families verified live against fonts.google.com/metadata/fonts"
|
|
6
|
-
license: open
|
|
7
|
-
feel: "literary display warmth set against a crisp geometric grotesque body"
|
|
8
|
-
---
|
|
9
|
-
Spectral has no variable axis — pick static weights deliberately (400 for long text, 600/700 for emphasis); Manrope is fully variable and should absorb every UI weight need.
|
|
10
|
-
|
|
11
|
-
```yaml values
|
|
12
|
-
display: { family: "Spectral", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400, 600, 700] }
|
|
13
|
-
sans: { family: "Manrope Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600, 700] }
|
|
14
|
-
mono: { family: "Space Mono", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 700] }
|
|
15
|
-
register-scope: { display: ["headlines", "cover statements", "section dividers"], sans: ["body copy", "buttons", "form labels", "table cells"], mono: ["code", "data labels"] }
|
|
16
|
-
oracle-verified: 2026-07-12
|
|
17
|
-
```
|