@nurix/etna 0.18.19 → 0.18.21
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/README.md +1 -1
- package/data/harness-index.json +1 -1
- package/data/harnesses/code/CLAUDE.md +1 -1
- package/data/harnesses/code/agents/brainstorm.md +1 -1
- package/data/harnesses/code/agents/maintenance.md +2 -2
- package/data/harnesses/code/harness.json +2 -2
- package/data/harnesses/code/rules/database.md +38 -0
- package/data/harnesses/code/rules/express.md +28 -0
- package/data/harnesses/code/rules/frontend.md +14 -0
- package/data/harnesses/code/rules/general.md +2 -40
- package/data/harnesses/code/rules/nomenclature.md +1 -8
- package/data/harnesses/code/rules/nustack.md +150 -0
- package/data/harnesses/code/skills/brainstorm/README.md +1 -1
- package/data/harnesses/code/skills/brainstorm/SKILL.md +1 -1
- package/data/harnesses/code/skills/brainstorm/exit-artifacts.md +4 -4
- package/data/harnesses/code/skills/brainstorm/templates/source-of-truth.md +3 -3
- package/data/harnesses/code/skills/design/SKILL.md +68 -0
- package/data/harnesses/code/skills/design/data/catalog/rules.csv +132 -0
- package/data/harnesses/code/skills/design/data/combinations/Readme.md +29 -0
- package/data/harnesses/code/skills/design/data/combinations/charts.csv +33 -0
- package/data/harnesses/code/skills/design/data/combinations/fonts-known.json +437 -0
- package/data/harnesses/code/skills/design/data/combinations/icons.csv +157 -0
- package/data/harnesses/code/skills/design/data/combinations/landing.csv +38 -0
- package/data/harnesses/code/skills/design/data/combinations/lucide-names.json +2001 -0
- package/data/harnesses/code/skills/design/data/combinations/manifest.json +283 -0
- package/data/harnesses/code/skills/design/data/combinations/palettes.csv +49 -0
- package/data/harnesses/code/skills/design/data/combinations/product-router.csv +80 -0
- package/data/harnesses/code/skills/design/data/combinations/styles.csv +54 -0
- package/data/harnesses/code/skills/design/data/combinations/typography.csv +61 -0
- package/data/harnesses/code/skills/design/data/design-md/SCHEMA.md +106 -0
- package/data/harnesses/code/skills/design/data/design-md/library/airbnb.md +154 -0
- package/data/harnesses/code/skills/design/data/design-md/library/airtable.md +151 -0
- package/data/harnesses/code/skills/design/data/design-md/library/anthropic-claude.md +139 -0
- package/data/harnesses/code/skills/design/data/design-md/library/apple.md +139 -0
- package/data/harnesses/code/skills/design/data/design-md/library/binance.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/bmw.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/cal.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/clay.md +139 -0
- package/data/harnesses/code/skills/design/data/design-md/library/clickhouse.md +139 -0
- package/data/harnesses/code/skills/design/data/design-md/library/cohere.md +147 -0
- package/data/harnesses/code/skills/design/data/design-md/library/coinbase.md +156 -0
- package/data/harnesses/code/skills/design/data/design-md/library/composio.md +138 -0
- package/data/harnesses/code/skills/design/data/design-md/library/cursor.md +138 -0
- package/data/harnesses/code/skills/design/data/design-md/library/elevenlabs.md +137 -0
- package/data/harnesses/code/skills/design/data/design-md/library/expo.md +148 -0
- package/data/harnesses/code/skills/design/data/design-md/library/figma.md +141 -0
- package/data/harnesses/code/skills/design/data/design-md/library/framer.md +156 -0
- package/data/harnesses/code/skills/design/data/design-md/library/hashicorp.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/ibm.md +153 -0
- package/data/harnesses/code/skills/design/data/design-md/library/intercom.md +158 -0
- package/data/harnesses/code/skills/design/data/design-md/library/kraken.md +156 -0
- package/data/harnesses/code/skills/design/data/design-md/library/linear-app.md +122 -0
- package/data/harnesses/code/skills/design/data/design-md/library/lovable.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/meta.md +139 -0
- package/data/harnesses/code/skills/design/data/design-md/library/minimax.md +139 -0
- package/data/harnesses/code/skills/design/data/design-md/library/mintlify.md +139 -0
- package/data/harnesses/code/skills/design/data/design-md/library/miro.md +153 -0
- package/data/harnesses/code/skills/design/data/design-md/library/mistral-ai.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/mongodb.md +155 -0
- package/data/harnesses/code/skills/design/data/design-md/library/notion.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/nvidia.md +141 -0
- package/data/harnesses/code/skills/design/data/design-md/library/ollama.md +145 -0
- package/data/harnesses/code/skills/design/data/design-md/library/opencode-ai.md +142 -0
- package/data/harnesses/code/skills/design/data/design-md/library/posthog.md +152 -0
- package/data/harnesses/code/skills/design/data/design-md/library/raycast.md +137 -0
- package/data/harnesses/code/skills/design/data/design-md/library/replicate.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/resend.md +170 -0
- package/data/harnesses/code/skills/design/data/design-md/library/revolut.md +145 -0
- package/data/harnesses/code/skills/design/data/design-md/library/runwayml.md +137 -0
- package/data/harnesses/code/skills/design/data/design-md/library/sanity.md +168 -0
- package/data/harnesses/code/skills/design/data/design-md/library/sentry.md +163 -0
- package/data/harnesses/code/skills/design/data/design-md/library/shopify.md +147 -0
- package/data/harnesses/code/skills/design/data/design-md/library/slack.md +158 -0
- package/data/harnesses/code/skills/design/data/design-md/library/spacex.md +171 -0
- package/data/harnesses/code/skills/design/data/design-md/library/spotify.md +166 -0
- package/data/harnesses/code/skills/design/data/design-md/library/stripe.md +160 -0
- package/data/harnesses/code/skills/design/data/design-md/library/supabase.md +173 -0
- package/data/harnesses/code/skills/design/data/design-md/library/superhuman.md +145 -0
- package/data/harnesses/code/skills/design/data/design-md/library/tesla.md +153 -0
- package/data/harnesses/code/skills/design/data/design-md/library/theverge.md +167 -0
- package/data/harnesses/code/skills/design/data/design-md/library/together-ai.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/uber.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/vercel.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/voltagent.md +130 -0
- package/data/harnesses/code/skills/design/data/design-md/library/warp.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/webflow.md +140 -0
- package/data/harnesses/code/skills/design/data/design-md/library/wired.md +139 -0
- package/data/harnesses/code/skills/design/data/design-md/library/wise.md +137 -0
- package/data/harnesses/code/skills/design/data/design-md/library/x-ai.md +138 -0
- package/data/harnesses/code/skills/design/data/design-md/library/zapier.md +158 -0
- package/data/harnesses/code/skills/design/data/design-md/nurix.md +134 -0
- package/data/harnesses/code/skills/design/data/design-tokens/SCHEMA.md +580 -0
- package/data/harnesses/code/skills/design/data/design-tokens/airbnb/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/airbnb/design.tokens.json +964 -0
- package/data/harnesses/code/skills/design/data/design-tokens/airtable/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/airtable/design.tokens.json +960 -0
- package/data/harnesses/code/skills/design/data/design-tokens/anthropic-claude/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/anthropic-claude/design.tokens.json +965 -0
- package/data/harnesses/code/skills/design/data/design-tokens/apple/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/apple/design.tokens.json +954 -0
- package/data/harnesses/code/skills/design/data/design-tokens/binance/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/binance/design.tokens.json +949 -0
- package/data/harnesses/code/skills/design/data/design-tokens/bmw/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/bmw/design.tokens.json +962 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cal/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cal/design.tokens.json +958 -0
- package/data/harnesses/code/skills/design/data/design-tokens/clay/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/clay/design.tokens.json +953 -0
- package/data/harnesses/code/skills/design/data/design-tokens/clickhouse/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/clickhouse/design.tokens.json +960 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cohere/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cohere/design.tokens.json +973 -0
- package/data/harnesses/code/skills/design/data/design-tokens/coinbase/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/coinbase/design.tokens.json +954 -0
- package/data/harnesses/code/skills/design/data/design-tokens/composio/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/composio/design.tokens.json +963 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cursor/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cursor/design.tokens.json +968 -0
- package/data/harnesses/code/skills/design/data/design-tokens/elevenlabs/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/elevenlabs/design.tokens.json +981 -0
- package/data/harnesses/code/skills/design/data/design-tokens/expo/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/expo/design.tokens.json +962 -0
- package/data/harnesses/code/skills/design/data/design-tokens/figma/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/figma/design.tokens.json +964 -0
- package/data/harnesses/code/skills/design/data/design-tokens/framer/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/framer/design.tokens.json +959 -0
- package/data/harnesses/code/skills/design/data/design-tokens/goldens.json +251 -0
- package/data/harnesses/code/skills/design/data/design-tokens/hashicorp/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/hashicorp/design.tokens.json +965 -0
- package/data/harnesses/code/skills/design/data/design-tokens/ibm/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/ibm/design.tokens.json +978 -0
- package/data/harnesses/code/skills/design/data/design-tokens/intercom/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/intercom/design.tokens.json +982 -0
- package/data/harnesses/code/skills/design/data/design-tokens/kraken/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/kraken/design.tokens.json +958 -0
- package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.resolver.json +23 -0
- package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.dark.json +589 -0
- package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.json +964 -0
- package/data/harnesses/code/skills/design/data/design-tokens/lovable/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/lovable/design.tokens.json +955 -0
- package/data/harnesses/code/skills/design/data/design-tokens/meta/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/meta/design.tokens.json +977 -0
- package/data/harnesses/code/skills/design/data/design-tokens/minimax/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/minimax/design.tokens.json +950 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mintlify/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mintlify/design.tokens.json +976 -0
- package/data/harnesses/code/skills/design/data/design-tokens/miro/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/miro/design.tokens.json +979 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mistral-ai/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mistral-ai/design.tokens.json +955 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mongodb/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mongodb/design.tokens.json +958 -0
- package/data/harnesses/code/skills/design/data/design-tokens/notion/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/notion/design.tokens.json +953 -0
- package/data/harnesses/code/skills/design/data/design-tokens/nurix/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/nurix/design.tokens.json +904 -0
- package/data/harnesses/code/skills/design/data/design-tokens/nvidia/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/nvidia/design.tokens.json +957 -0
- package/data/harnesses/code/skills/design/data/design-tokens/ollama/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/ollama/design.tokens.json +945 -0
- package/data/harnesses/code/skills/design/data/design-tokens/opencode-ai/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/opencode-ai/design.tokens.json +960 -0
- package/data/harnesses/code/skills/design/data/design-tokens/posthog/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/posthog/design.tokens.json +953 -0
- package/data/harnesses/code/skills/design/data/design-tokens/raycast/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/raycast/design.tokens.json +955 -0
- package/data/harnesses/code/skills/design/data/design-tokens/replicate/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/replicate/design.tokens.json +958 -0
- package/data/harnesses/code/skills/design/data/design-tokens/resend/design.resolver.json +23 -0
- package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.dark.json +613 -0
- package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.json +968 -0
- package/data/harnesses/code/skills/design/data/design-tokens/revolut/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/revolut/design.tokens.json +956 -0
- package/data/harnesses/code/skills/design/data/design-tokens/runwayml/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/runwayml/design.tokens.json +960 -0
- package/data/harnesses/code/skills/design/data/design-tokens/sanity/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/sanity/design.tokens.json +958 -0
- package/data/harnesses/code/skills/design/data/design-tokens/sentry/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/sentry/design.tokens.json +980 -0
- package/data/harnesses/code/skills/design/data/design-tokens/shopify/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/shopify/design.tokens.json +964 -0
- package/data/harnesses/code/skills/design/data/design-tokens/slack/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/slack/design.tokens.json +957 -0
- package/data/harnesses/code/skills/design/data/design-tokens/spacex/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/spacex/design.tokens.json +979 -0
- package/data/harnesses/code/skills/design/data/design-tokens/spotify/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/spotify/design.tokens.json +974 -0
- package/data/harnesses/code/skills/design/data/design-tokens/stripe/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/stripe/design.tokens.json +973 -0
- package/data/harnesses/code/skills/design/data/design-tokens/supabase/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/supabase/design.tokens.json +979 -0
- package/data/harnesses/code/skills/design/data/design-tokens/superhuman/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/superhuman/design.tokens.json +966 -0
- package/data/harnesses/code/skills/design/data/design-tokens/tesla/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/tesla/design.tokens.json +961 -0
- package/data/harnesses/code/skills/design/data/design-tokens/theverge/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/theverge/design.tokens.json +977 -0
- package/data/harnesses/code/skills/design/data/design-tokens/together-ai/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/together-ai/design.tokens.json +991 -0
- package/data/harnesses/code/skills/design/data/design-tokens/uber/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/uber/design.tokens.json +966 -0
- package/data/harnesses/code/skills/design/data/design-tokens/vercel/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/vercel/design.tokens.json +988 -0
- package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.resolver.json +23 -0
- package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.dark.json +602 -0
- package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.json +974 -0
- package/data/harnesses/code/skills/design/data/design-tokens/warp/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/warp/design.tokens.json +979 -0
- package/data/harnesses/code/skills/design/data/design-tokens/webflow/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/webflow/design.tokens.json +960 -0
- package/data/harnesses/code/skills/design/data/design-tokens/wired/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/wired/design.tokens.json +968 -0
- package/data/harnesses/code/skills/design/data/design-tokens/wise/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/wise/design.tokens.json +965 -0
- package/data/harnesses/code/skills/design/data/design-tokens/x-ai/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/x-ai/design.tokens.json +988 -0
- package/data/harnesses/code/skills/design/data/design-tokens/zapier/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/zapier/design.tokens.json +978 -0
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/command-center.tsx +249 -0
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/create-edit.tsx +249 -0
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/dashboard.tsx +248 -0
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/entity-detail.tsx +245 -0
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/list-detail.tsx +223 -0
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/log-stream.tsx +249 -0
- package/data/harnesses/code/skills/design/data/operator-pack/fixtures.md +88 -0
- package/data/harnesses/code/skills/design/data/operator-pack/surface-catalog.md +132 -0
- package/data/harnesses/code/skills/design/data/operator-pack/trust-rubric.md +76 -0
- package/data/harnesses/code/skills/design/references/create.md +131 -0
- package/data/harnesses/code/skills/design/references/diagnosis.md +108 -0
- package/data/harnesses/code/skills/design/references/hard-rules.md +155 -0
- package/data/harnesses/code/skills/design/references/improve.md +87 -0
- package/data/harnesses/code/skills/design/references/interaction.md +77 -0
- package/data/harnesses/code/skills/design/references/introspect.md +100 -0
- package/data/harnesses/code/skills/design/references/lifecycle.md +73 -0
- package/data/harnesses/code/skills/design/references/personality.md +428 -0
- package/data/harnesses/code/skills/design/references/structure.md +138 -0
- package/data/harnesses/code/skills/design/scripts/convert-design-md.mjs +1032 -0
- package/data/harnesses/code/skills/design/scripts/derive-personality.mjs +1006 -0
- package/data/harnesses/code/skills/design/scripts/generate-fixtures.mjs +551 -0
- package/data/harnesses/code/skills/design/scripts/lib/checks.mjs +903 -0
- package/data/harnesses/code/skills/design/scripts/lib/golden.mjs +26 -0
- package/data/harnesses/code/skills/design/scripts/phase-gate.mjs +454 -0
- package/data/harnesses/code/skills/design/scripts/preship-sweep.mjs +267 -0
- package/data/harnesses/code/skills/design/scripts/render-rung.mjs +690 -0
- package/data/harnesses/code/skills/design/scripts/scaffold.mjs +552 -0
- package/data/harnesses/code/skills/design/scripts/self-integrity.mjs +600 -0
- package/data/harnesses/code/skills/design/scripts/snapshot-goldens.mjs +68 -0
- package/data/harnesses/code/skills/design/scripts/validate-combinations.mjs +314 -0
- package/data/harnesses/code/skills/documentation/SKILL.md +61 -17
- package/data/harnesses/code/skills/documentation/references/examples.md +41 -0
- package/data/harnesses/code/skills/documentation/references/style-guide.md +14 -9
- package/data/harnesses/code/skills/documentation/references/templates.md +305 -51
- package/data/harnesses/etna/CLAUDE.md +1 -1
- package/data/harnesses/etna/agents/brainstorm.md +1 -1
- package/data/harnesses/etna/agents/maintenance.md +2 -2
- package/data/harnesses/etna/harness.json +2 -2
- package/data/harnesses/etna/rules/general.md +2 -40
- package/data/harnesses/etna/rules/nomenclature.md +1 -8
- package/data/harnesses/etna/skills/brainstorm/README.md +1 -1
- package/data/harnesses/etna/skills/brainstorm/SKILL.md +1 -1
- package/data/harnesses/etna/skills/brainstorm/exit-artifacts.md +4 -4
- package/data/harnesses/etna/skills/brainstorm/templates/source-of-truth.md +3 -3
- package/data/harnesses/etna/skills/documentation/SKILL.md +61 -17
- package/data/harnesses/etna/skills/documentation/references/examples.md +41 -0
- package/data/harnesses/etna/skills/documentation/references/style-guide.md +14 -9
- package/data/harnesses/etna/skills/documentation/references/templates.md +305 -51
- package/data/harnesses/mobile/CLAUDE.md +1 -1
- package/data/harnesses/mobile/agents/brainstorm.md +1 -1
- package/data/harnesses/mobile/agents/maintenance.md +2 -2
- package/data/harnesses/mobile/harness.json +2 -2
- package/data/harnesses/mobile/rules/database.md +38 -0
- package/data/harnesses/mobile/rules/general.md +2 -40
- package/data/harnesses/mobile/rules/nomenclature.md +1 -8
- package/data/harnesses/mobile/rules/nustack.md +150 -0
- package/data/harnesses/mobile/skills/brainstorm/README.md +1 -1
- package/data/harnesses/mobile/skills/brainstorm/SKILL.md +1 -1
- package/data/harnesses/mobile/skills/brainstorm/exit-artifacts.md +4 -4
- package/data/harnesses/mobile/skills/brainstorm/templates/source-of-truth.md +3 -3
- package/data/harnesses/mobile/skills/documentation/SKILL.md +61 -17
- package/data/harnesses/mobile/skills/documentation/references/examples.md +41 -0
- package/data/harnesses/mobile/skills/documentation/references/style-guide.md +14 -9
- package/data/harnesses/mobile/skills/documentation/references/templates.md +305 -51
- package/package.json +1 -1
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema: design-md/v1
|
|
3
|
+
product: Binance
|
|
4
|
+
provenance: library
|
|
5
|
+
sourced: 2026-07-04
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Binance — the operator reading
|
|
9
|
+
|
|
10
|
+
A confident financial-platform look reduced to one idea: a single electric accent doing all the
|
|
11
|
+
brand voltage against a calm neutral field. This entry is a deliberate operator reading of Binance —
|
|
12
|
+
the trading-terminal density and the black-on-yellow signature carried onto internal tools (a
|
|
13
|
+
markets console, a queue, a settlement dashboard), with the marketing skin left behind.
|
|
14
|
+
|
|
15
|
+
## 1 Visual Theme
|
|
16
|
+
|
|
17
|
+
One accent. Yellow `primary` (#FCD535) carries every primary action and nothing else — its scarcity
|
|
18
|
+
is the brand. Binance ships two native themes and picks by surface intent. **Light is the default
|
|
19
|
+
here** — the transactional surface Binance wears on forms, buy/deposit dialogs, and conversion tables:
|
|
20
|
+
white `background`, ink type, gray-blue hairlines. **Dark is the more iconic read** — a near-black
|
|
21
|
+
trading console (`canvas-dark` #0B0E11, never pure black) where `card` steps carry elevation. Depth is
|
|
22
|
+
flat throughout: color-block contrast and 1px hairlines, never heavy shadow. Density is `dense` — this
|
|
23
|
+
reads like a markets terminal, not a consumer app. Reach for dark on a markets/dashboard/trading
|
|
24
|
+
surface, light for forms and CRM; the black-on-yellow button is identical in both.
|
|
25
|
+
|
|
26
|
+
## 2 Color Roles
|
|
27
|
+
|
|
28
|
+
One accent — `primary` is the only chromatic hue that carries brand meaning; trading green/red and
|
|
29
|
+
info-blue speak status and direction only. Turquoise #2DBDB6 was a single-product experiment, not a
|
|
30
|
+
system color, and survives here only as a chart hue. Light values first; the dark-console value is
|
|
31
|
+
noted where it defines the identity.
|
|
32
|
+
|
|
33
|
+
| Role | Value | Allowed where |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| `primary` | yellow #FCD535 (press #F0B90B, disabled #3A3A1F) | the one primary action, active nav, the wordmark — nowhere else |
|
|
36
|
+
| `primary-foreground` | black #181A20 | text/icon on the yellow fill — never white on yellow |
|
|
37
|
+
| `background` / `card` / `popover` | white #FFFFFF (dark: #0B0E11 canvas, #1E2329 card) | page, cards, overlays |
|
|
38
|
+
| `foreground` | ink #181A20 (dark: #EAECEF) | primary text — the dark body is a deliberate cool gray, not pure white |
|
|
39
|
+
| `muted` | #FAFAFA (dark: #1E2329) | subtle fills, hover rows |
|
|
40
|
+
| `muted-foreground` | slate #707A8A (#929AA5 emphasized) | captions, column headers, breadcrumbs — reads on both themes |
|
|
41
|
+
| `border` / `input` | gray-blue #EAECEF (dark: #2B3139) | every hairline, grid line, field edge — the highest-frequency token |
|
|
42
|
+
| `accent` | #F5F5F5 (dark: #2B3139) | selected/hovered rows and nav — a neutral tint, never a yellow wash |
|
|
43
|
+
| `ring` | info blue #3B82F6 | the focus outline |
|
|
44
|
+
| `success` | trading green #0ECB81 | up-moves and success status |
|
|
45
|
+
| `destructive` | trading red #F6465D on white text | down-moves, destructive actions, error state |
|
|
46
|
+
| `warning` | amber #D97706 | caution — deliberately not brand-yellow |
|
|
47
|
+
|
|
48
|
+
## 3 Typography
|
|
49
|
+
|
|
50
|
+
Two families, split by function. `font-sans` is BinanceNova (Inter is the corpus-named substitute) —
|
|
51
|
+
UI, body, headings. `font-mono` is BinancePlex (JetBrains Mono substitute) — the "trustworthy number"
|
|
52
|
+
voice for prices, volumes, IDs, timestamps, and every numeric column; a sans price ticker loses the
|
|
53
|
+
trading-platform character. Numeric columns render `tabular-nums`. Strong weight runs 600 (a step
|
|
54
|
+
heavier than typical marketing, so figures read at a glance); the 64/48px hero display and its 700
|
|
55
|
+
weight stay behind.
|
|
56
|
+
|
|
57
|
+
| Step | Role | Size · line | Weight · tracking |
|
|
58
|
+
| --- | --- | --- | --- |
|
|
59
|
+
| h1 | page title | 24px / 1.3 | `font-weight-strong` · `heading-tracking` |
|
|
60
|
+
| h2 | section head | 20px / 1.35 | `font-weight-strong` |
|
|
61
|
+
| h3 | card / group head | 16px / 1.4 | `font-weight-strong` |
|
|
62
|
+
| body | UI + prose | 14px / 1.5 | `font-weight-normal` |
|
|
63
|
+
| small | labels, dense table | 13px / 1.5 | `font-weight-normal` |
|
|
64
|
+
| caption | uppercase eyebrow | 12px / 1.4 | `font-weight-strong` |
|
|
65
|
+
| number | table figures | 16px / 1.4 · 500 | `font-mono` (13-14px in dense rows) |
|
|
66
|
+
|
|
67
|
+
## 4 Component Stylings
|
|
68
|
+
|
|
69
|
+
- **Button** — `primary`: filled `primary` on `primary-foreground` (black on yellow), `radius`, no
|
|
70
|
+
pill; press darkens to the active yellow. Secondary: `secondary` fill, 1px `border`, `foreground`.
|
|
71
|
+
- **Input / Card** — `background` / `card` fill, 1px `border` (`border-weight`), `radius` (cards one
|
|
72
|
+
step up from control radius); input focus draws the `ring` at 2px, no glow; cards shadow only when
|
|
73
|
+
lifted off imagery.
|
|
74
|
+
- **Table row** — `table-row-height`; `border` grid lines; `muted` on hover; `accent` on selection;
|
|
75
|
+
`tabular-nums` + `font-mono` on price/amount cells; direction cells take `success` / `destructive`
|
|
76
|
+
as text color, never a fill.
|
|
77
|
+
- **Side panel** — detail and edit open in the side panel (`side-panel-width`,
|
|
78
|
+
`side-panel-width-rich`), beside the work, not over it.
|
|
79
|
+
- **Badge** — hairline `border`, `muted` / status fill, uppercase caption; status badges take
|
|
80
|
+
`success` / `warning` / `destructive`, never `primary`.
|
|
81
|
+
|
|
82
|
+
## 5 Layout
|
|
83
|
+
|
|
84
|
+
Base unit 4px; the on-scale ramp is `4 · 8 · 12 · 16 · 24 · 32 · 48 · 64 · 80` (80px is a marketing
|
|
85
|
+
band — operator surfaces pack tighter). Shell dimensions map one-to-one to the layout primitives: top
|
|
86
|
+
bar `topbar-height` (64px, Binance's native nav height), sidebar `sidebar-width-expanded` /
|
|
87
|
+
`sidebar-width-collapsed`, side panel `side-panel-width` / `side-panel-width-rich`, modal cap
|
|
88
|
+
`modal-width-max`, forms `form-max-width`, tables full-width. Density is governed globally by
|
|
89
|
+
`density-tier` and stepped per archetype — never by absolute overrides.
|
|
90
|
+
|
|
91
|
+
## 6 Depth
|
|
92
|
+
|
|
93
|
+
Flat, by conviction. Hierarchy comes from the surface ladder and hairlines, not shadow:
|
|
94
|
+
|
|
95
|
+
- **0 — canvas** `background`, no border.
|
|
96
|
+
- **1 — panel / card** `card` on a 1px `border`; on dark, the `card` step off `canvas-dark` is a clear
|
|
97
|
+
~12-step lightness jump that reads as elevation with no shadow at all.
|
|
98
|
+
- **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns a single
|
|
99
|
+
soft `sm` shadow.
|
|
100
|
+
|
|
101
|
+
Focus is a 2px `ring` outline at 50% alpha, never a glow; three z-levels (content, sticky chrome,
|
|
102
|
+
overlay); no atmospheric gradients, no glassmorphism.
|
|
103
|
+
|
|
104
|
+
## 7 Do's & Don'ts
|
|
105
|
+
|
|
106
|
+
- **Do** reserve `primary` (yellow) for the single most important action, active nav, and the
|
|
107
|
+
wordmark — nowhere else; its scarcity is what makes it powerful. Keep black `primary-foreground` on
|
|
108
|
+
the fill; the black-on-yellow is the signature.
|
|
109
|
+
- **Do** carry every figure in `font-mono` with `tabular-nums`, and pick the theme by surface intent:
|
|
110
|
+
dark for markets/dashboards/trading, light for forms and transactional work.
|
|
111
|
+
- **Don't** introduce a second brand accent — turquoise, info-blue, and the trading hues are
|
|
112
|
+
status / chart roles, not brand colors; and don't use yellow for body text, large fills, or a
|
|
113
|
+
selected-row wash (accent selection with the neutral `accent` tint).
|
|
114
|
+
- **Don't** fill a card with `success` / `destructive` — direction is text color, not a surface (on a
|
|
115
|
+
surface showing live price direction, keep red for down-moves and treat generic errors distinctly);
|
|
116
|
+
don't pill the CTA outside a hero moment; don't signal rank with heavy shadow — stay flat.
|
|
117
|
+
|
|
118
|
+
## 8 Responsive
|
|
119
|
+
|
|
120
|
+
The operator sweep is 375 / 768 / 1024 / 1440:
|
|
121
|
+
|
|
122
|
+
| Breakpoint | What changes |
|
|
123
|
+
| --- | --- |
|
|
124
|
+
| 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; markets table → horizontally-scrollable rows; density holds |
|
|
125
|
+
| 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
|
|
126
|
+
| 1024 | sidebar expands; two-pane queue+detail holds side by side |
|
|
127
|
+
| 1440 | forms cap at `form-max-width`; tables and dashboards use the full width |
|
|
128
|
+
|
|
129
|
+
## 9 Agent Prompt Guide
|
|
130
|
+
|
|
131
|
+
- One accent, always. Yellow `primary` marks THE action and active nav; black on yellow, never white.
|
|
132
|
+
Choose the theme by surface: dark console for markets / dashboards / trading, light for forms and
|
|
133
|
+
CRM — both native, the primary button identical in both.
|
|
134
|
+
- Numbers are `font-mono` + `tabular-nums`; direction and status ride `success` / `destructive` as
|
|
135
|
+
text color, never a card fill.
|
|
136
|
+
- Stay flat — surface ladder and 1px hairlines before any shadow; radii tight (control radius for
|
|
137
|
+
buttons, one step up for cards); no pill outside a hero.
|
|
138
|
+
- Leave the marketing skin behind: 64/48px hero display, yellow→dark gradients, pill hero CTAs,
|
|
139
|
+
coin-stack illustrations, the light-footer inversion, 80px editorial bands. What carries: the
|
|
140
|
+
palette, its cool temperature, the tight radius character, the tabular number voice, and flat depth.
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema: design-md/v1
|
|
3
|
+
product: BMW
|
|
4
|
+
provenance: library
|
|
5
|
+
sourced: 2026-07-04
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# BMW — measured corporate-automotive, translated for operators
|
|
9
|
+
|
|
10
|
+
The BMW corporate design (distinct from BMW M's motorsport-bombastic variant): measured, settled,
|
|
11
|
+
engineered. A light near-white canvas, a single corporate blue for every primary action, and one
|
|
12
|
+
categorical signature — **everything is rectangular, 0px corners** — with depth from a greyscale
|
|
13
|
+
surface ladder and hairlines, never shadow. This operator reading keeps the palette, the blue
|
|
14
|
+
accent, the 0px geometry, the flatness, and the heavy-display type voice; the marketing graces
|
|
15
|
+
(dark-navy hero bands, 64px display type, full-bleed photography, the M tricolor stripe, 80px
|
|
16
|
+
section rhythm) stay behind.
|
|
17
|
+
|
|
18
|
+
## 1 Visual Theme
|
|
19
|
+
|
|
20
|
+
Light by default; dark is opt-in. Flat and categorically shadowless: hierarchy rides a greyscale surface ladder
|
|
21
|
+
(`background` white → `card` soft-grey plate → hairline `border`) and type weight, never drop shadow. A single accent, BMW
|
|
22
|
+
corporate blue (`primary`, brand `#1c69d4`), is reserved for the one action that matters. The geometry is the identity:
|
|
23
|
+
`radius` 0 — buttons, inputs, cards, and chips all rectangular. The anchor surface is a white canvas beside a soft-grey
|
|
24
|
+
`sidebar`; density is `standard`, stepping denser per archetype — dealership-functional, not cramped.
|
|
25
|
+
|
|
26
|
+
## 2 Color Roles
|
|
27
|
+
|
|
28
|
+
Light values first. One accent — `primary` blue is the only chromatic hue that carries meaning; status
|
|
29
|
+
hues speak only status. BMW reserves blue for action, so selection and hover use a faint blue wash.
|
|
30
|
+
|
|
31
|
+
| Role | Value | Allowed where |
|
|
32
|
+
| --- | --- | --- |
|
|
33
|
+
| `background` / `popover` | white `#ffffff` (canvas) | the dominant page and overlay surface |
|
|
34
|
+
| `card` | soft grey `#fafafa` (surface-card) | card and panel plates — lift by color-block contrast, no shadow |
|
|
35
|
+
| `foreground` / `card-foreground` | ink `#262626` (not pure black) | all primary text |
|
|
36
|
+
| `muted` / `secondary` | `#f7f7f7` (surface-soft) | hover rows, subtle fills, secondary buttons, footer bands |
|
|
37
|
+
| `muted-foreground` | `#6b6b6b` | labels, captions, breadcrumbs, secondary text |
|
|
38
|
+
| `border` / `input` | hairline `#e6e6e6` | every separator, grid line, and field edge |
|
|
39
|
+
| `primary` | BMW blue `#1c69d4` | the one primary action; active nav; selected-tile border |
|
|
40
|
+
| `accent` | faint blue wash `#e9f1fc` | selected / hovered rows and nav, on-accent surfaces only |
|
|
41
|
+
| `ring` | `primary` | the focus outline — unmistakable, because keyboard-first |
|
|
42
|
+
| `destructive` | red `#dc2626` | destructive actions and validation errors only |
|
|
43
|
+
| `success` / `warning` | green `#22c55e` / amber `#f59e0b` | status signalling only, never chrome |
|
|
44
|
+
|
|
45
|
+
The dark navy hero (`#1a2129`) and the M tricolor (`#0066b1` / `#1c69d4` / `#e22718`) are brand graces, not operator
|
|
46
|
+
tokens — no chrome role here (see §7); the M hues resurface only as chart categoricals, the brand's only spare palette.
|
|
47
|
+
|
|
48
|
+
## 3 Typography
|
|
49
|
+
|
|
50
|
+
One sans, one mono. `font-sans` is Inter — the documented open-source stand-in for the licensed BMW Type
|
|
51
|
+
Next Latin, which runs a wide body and takes no negative tracking. `font-mono` is Roboto Mono (Roboto
|
|
52
|
+
sits in BMW's fallback stack) for IDs, codes, timestamps, and logs. The editorial signature is a
|
|
53
|
+
heavy/normal contrast: `font-weight-strong` 700 heads against `font-weight-normal` 400 body; numeric
|
|
54
|
+
columns render `tabular-nums`.
|
|
55
|
+
|
|
56
|
+
| Step | Role | Size · line | Weight · tracking |
|
|
57
|
+
| --- | --- | --- | --- |
|
|
58
|
+
| h1 | page title | 24px / 1.25 | `font-weight-strong` · `heading-tracking` (0) |
|
|
59
|
+
| h2 | section head | 20px / 1.3 | `font-weight-strong` · 0 |
|
|
60
|
+
| h3 | card / group head | 16px / 1.4 | `font-weight-strong` · 0 |
|
|
61
|
+
| body | UI + prose | 14px / 1.5 | `font-weight-normal` |
|
|
62
|
+
| small | labels, meta, dense table | 13px / 1.4 | `font-weight-normal` |
|
|
63
|
+
| caption | uppercase eyebrow / inline link | 13px / 1.3 | `font-weight-strong`, `+1.5px`, uppercase |
|
|
64
|
+
|
|
65
|
+
The uppercase letter-spaced label (`+1.5px`, the "LEARN MORE" machined-precision voice) is BMW's distinctive small-type
|
|
66
|
+
carry-over. The system uses 700 / 400 only — never 500; emphasize by weight, not size.
|
|
67
|
+
|
|
68
|
+
## 4 Component Stylings
|
|
69
|
+
|
|
70
|
+
Every recurring operator component composes from the primitives — no literal values, `radius` 0 everywhere.
|
|
71
|
+
|
|
72
|
+
- **Button** — `primary`: filled `primary` on `primary-foreground`, `radius` (rectangular), no pill.
|
|
73
|
+
Secondary: `background` fill, 1px `border`, `foreground`. Ghost: transparent, `accent` on hover.
|
|
74
|
+
- **Input** — `background` fill, 1px `border` (`border-weight`), `radius`; focus draws the `ring` at
|
|
75
|
+
full 2px, no glow (BMW thickens the field edge to ink — the `ring` carries that emphasis).
|
|
76
|
+
- **Card** — `card` soft-grey plate distinguished by color-block contrast, optional 1px `border`,
|
|
77
|
+
`radius`; no shadow at rest, inset by `density-inset`.
|
|
78
|
+
- **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on
|
|
79
|
+
numeric columns; row selection tints `accent`.
|
|
80
|
+
- **Side panel** — detail and edit open beside the work in the side panel (`side-panel-width` / `side-panel-width-rich`), never over it.
|
|
81
|
+
- **Badge / filter chip** — rectangular, hairline `border`, `muted`/status fill, uppercase caption; an
|
|
82
|
+
active chip fills `foreground` ink with `primary-foreground` text (BMW's chip idiom); status badges
|
|
83
|
+
take `success` / `warning` / `destructive`, never `primary`.
|
|
84
|
+
|
|
85
|
+
## 5 Layout
|
|
86
|
+
|
|
87
|
+
Base spacing unit 4px through Tailwind, but BMW's native 8px rhythm shows in the on-scale ramp `4 · 8 · 12 · 16 · 24 · 32 ·
|
|
88
|
+
48 · 64` (the marketing 80px section rhythm stays behind). Shell dimensions map one-to-one to the layout primitives:
|
|
89
|
+
sidebar `sidebar-width-expanded` / `sidebar-width-collapsed`, topbar `topbar-height` (BMW's 64px nav), side panel
|
|
90
|
+
`side-panel-width` / `side-panel-width-rich`, modal cap `modal-width-max`, forms `form-max-width`, tables full-width capped
|
|
91
|
+
at ~1440px. Density is governed globally by `density-tier` and stepped per archetype by the surface catalog.
|
|
92
|
+
|
|
93
|
+
## 6 Depth
|
|
94
|
+
|
|
95
|
+
Flat, and more so than most — BMW never draws a drop shadow. Hierarchy comes from the surface ladder and hairlines:
|
|
96
|
+
|
|
97
|
+
- **0 — canvas** `background` white, no border.
|
|
98
|
+
- **1 — panel / card** `card` soft-grey plate on an optional 1px `border`; separation is color-block
|
|
99
|
+
contrast, not shadow.
|
|
100
|
+
- **2 — overlay** `popover` / side panel / modal — the only place `shadow-intensity` earns a whisper
|
|
101
|
+
`sm` shadow, kept minimal because the brand is shadowless; a hairline still carries the edge.
|
|
102
|
+
|
|
103
|
+
Focus is a 2px `ring` outline (never a glow), visible everywhere. Three z-levels: content, chrome, overlay.
|
|
104
|
+
|
|
105
|
+
## 7 Do's & Don'ts
|
|
106
|
+
|
|
107
|
+
- **Do** reserve `primary` blue for the single most important action on a surface; everything else is
|
|
108
|
+
neutral or status.
|
|
109
|
+
- **Do** keep every corner rectangular — `radius` 0 on buttons, inputs, cards, and chips is the BMW
|
|
110
|
+
signature; carry hierarchy with the greyscale surface ladder, hairlines, and weight.
|
|
111
|
+
- **Do** set heads in `font-weight-strong` (700) against `font-weight-normal` (400) body; apply
|
|
112
|
+
`tabular-nums` to numeric columns and `font-mono` to IDs, codes, and timestamps.
|
|
113
|
+
- **Don't** promote a second chromatic accent — the M tricolor and dark-navy hero stay marketing-only;
|
|
114
|
+
status uses `success` / `warning` / `destructive`.
|
|
115
|
+
- **Don't** pill or round a control (radius stays inside `radius-scale`), signal elevation with a drop
|
|
116
|
+
shadow, or thin dense body to the marketing Light 300 weight.
|
|
117
|
+
|
|
118
|
+
## 8 Responsive
|
|
119
|
+
|
|
120
|
+
The operator sweep is 375 / 768 / 1024 / 1440.
|
|
121
|
+
|
|
122
|
+
| Breakpoint | What changes |
|
|
123
|
+
| --- | --- |
|
|
124
|
+
| 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
|
|
125
|
+
| 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
|
|
126
|
+
| 1024 | sidebar expands; two-pane queue+detail holds side by side |
|
|
127
|
+
| 1440 | content caps at ~1440px; forms hold `form-max-width`; tables and dashboards use the full width |
|
|
128
|
+
|
|
129
|
+
## 9 Agent Prompt Guide
|
|
130
|
+
|
|
131
|
+
Directives the emitting agent follows verbatim:
|
|
132
|
+
|
|
133
|
+
- Carries over: the palette (white canvas, ink text, `#1c69d4` blue), the single-accent discipline, the
|
|
134
|
+
0px rectangular geometry, the greyscale-ladder flatness, the heavy 700 / normal 400 type voice.
|
|
135
|
+
- Stays behind: dark-navy hero bands, 64px display type, full-bleed photography, the M tricolor stripe,
|
|
136
|
+
the 80px section rhythm — none belong in operator chrome.
|
|
137
|
+
- Everything is rectangular (round only a circular icon button); accent only the primary action with
|
|
138
|
+
blue — if two things want the accent, one is not primary; stay shadowless, reaching for the `card`
|
|
139
|
+
grey plate and hairlines before any elevation, a whisper `sm` shadow only for a true overlay.
|
|
140
|
+
- Numeric columns are `tabular-nums`, IDs / codes / timestamps `font-mono`, every workflow keyboard-complete with the `ring` focus outline always visible.
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema: design-md/v1
|
|
3
|
+
product: Cal.com
|
|
4
|
+
provenance: library
|
|
5
|
+
sourced: 2026-07-04
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Cal.com — operator reading
|
|
9
|
+
|
|
10
|
+
The operator reading of Cal.com's design language, distilled from Cal's marketing surface. It keeps
|
|
11
|
+
what an internal tool can wear — the monochrome near-black action layer, the light-gray surface
|
|
12
|
+
ladder, soft-rounded 8px/12px geometry, the Cal Sans / Inter type voice — and leaves the marketing
|
|
13
|
+
scaffolding behind (§9).
|
|
14
|
+
|
|
15
|
+
## 1 Visual Theme
|
|
16
|
+
|
|
17
|
+
Light by default; dark is opt-in. Near-monochrome: the one action that matters wears a near-black
|
|
18
|
+
`primary` (#111111), not a chromatic accent — the system reads confidently engineered without spending
|
|
19
|
+
color on chrome. Flat but soft: hierarchy is carried by hairline `border`, type weight, and a light-gray
|
|
20
|
+
surface ladder, with soft drop shadows lifting only elevated cards. Geometry is soft-rounded (8px
|
|
21
|
+
controls, 12px cards) — the friendly-modern-SaaS read. The anchor surface is a white content canvas over
|
|
22
|
+
a faint cool-gray `sidebar`; one scarce near-black surface (#101010) frames or closes a view — the
|
|
23
|
+
operator descendant of Cal's dark footer. Density is `spacious`: generous whitespace is the brand's
|
|
24
|
+
signature; surfaces step denser per archetype without cramming.
|
|
25
|
+
|
|
26
|
+
## 2 Color Roles
|
|
27
|
+
|
|
28
|
+
Light values (hex — the corpus's native format). The action layer is monochrome: `primary` is a
|
|
29
|
+
near-black, the only chromatic brand color (`brand-accent` blue) is confined to inline links.
|
|
30
|
+
|
|
31
|
+
| Role | Value | Allowed where |
|
|
32
|
+
| --- | --- | --- |
|
|
33
|
+
| `background` / `card` / `popover` | white `#ffffff` | page, cards, and overlays — the dominant surface |
|
|
34
|
+
| `foreground` | near-black `#111111` | all primary ink and headlines |
|
|
35
|
+
| `muted` / `secondary` | light gray `#f5f5f5` | subtle fills, hover rows, secondary buttons |
|
|
36
|
+
| `muted-foreground` | `#6b7280` | labels, captions, secondary text |
|
|
37
|
+
| `accent` | soft gray `#f3f4f6` | selected/active rows and nav — achromatic, no hue |
|
|
38
|
+
| `border` / `input` | hairline `#e5e7eb` | every separator, grid line, and field edge |
|
|
39
|
+
| `primary` | near-black `#111111` (press `#242424`) | the one primary action — monochrome, never a hue |
|
|
40
|
+
| `ring` | ink `#111111` | the focus outline — border shifts to ink on focus |
|
|
41
|
+
| `destructive` | red `#ef4444` | destructive actions and error state only |
|
|
42
|
+
| `success` / `warning` | green `#10b981` / amber `#f59e0b` | status signalling only, never chrome |
|
|
43
|
+
|
|
44
|
+
The `brand-accent` blue (`#3b82f6`) rides inline links only, never a CTA (§7). The badge pastels —
|
|
45
|
+
orange, pink, violet, emerald — are the chart palette (the one place this monochrome brand spends color).
|
|
46
|
+
|
|
47
|
+
## 3 Typography
|
|
48
|
+
|
|
49
|
+
One UI sans, one mono. `font-sans` is Inter — body, tables, buttons, nav, and captions all ride it. The
|
|
50
|
+
brand's display voice is **Cal Sans** (a custom geometric face, weight 600, negative tracking), but it is
|
|
51
|
+
licensed and unavailable publicly, so headings reproduce the voice through Inter at `font-weight-strong`
|
|
52
|
+
with a tight negative `heading-tracking`. Hero display (48–64px) stays behind; operator headings scale to
|
|
53
|
+
18–24px. `font-mono` is JetBrains Mono for IDs, codes, and timestamps; numeric columns render
|
|
54
|
+
`tabular-nums` (Inter carries `tnum`) so figures align down a column.
|
|
55
|
+
|
|
56
|
+
| Step | Role | Size · line | Weight · tracking |
|
|
57
|
+
| --- | --- | --- | --- |
|
|
58
|
+
| h1 | page title | 24px / 1.25 | `font-weight-strong` · `heading-tracking` |
|
|
59
|
+
| h2 | section head | 18px / 1.4 | `font-weight-strong` · `heading-tracking` |
|
|
60
|
+
| h3 | card / group head | 15px / 1.4 | `font-weight-strong` |
|
|
61
|
+
| body | UI + prose | 14px / 1.5 | `font-weight-normal` |
|
|
62
|
+
| small | labels, meta, dense rows | 13px / 1.4 | `font-weight-normal` |
|
|
63
|
+
| caption | uppercase eyebrow | 12px / 1.2 | `font-weight-strong`, `+0.02em`, uppercase |
|
|
64
|
+
|
|
65
|
+
## 4 Component Stylings
|
|
66
|
+
|
|
67
|
+
Every recurring operator component composes from the primitives — no literal values.
|
|
68
|
+
|
|
69
|
+
- **Button** — `primary`: filled near-black `primary` on `primary-foreground`, `radius` (8px), no pill,
|
|
70
|
+
press darkens to `#242424`. Secondary: `background` fill, 1px `border`, `foreground`. Ghost: `muted` hover.
|
|
71
|
+
- **Input** — `background` fill, 1px `border` (`border-weight`), `radius`; focus shifts the edge to the
|
|
72
|
+
ink `ring` at 2px, no glow.
|
|
73
|
+
- **Card** — `card` surface, 1px `border`, `radius` steps up to 12px for content cards; soft shadow only
|
|
74
|
+
when it lifts off the canvas (`shadow-intensity`); inset by `density-inset`.
|
|
75
|
+
- **Table row** — height `table-row-height`; `border` grid lines; `muted` hover; `tabular-nums` on
|
|
76
|
+
numeric columns; selection tints `accent`.
|
|
77
|
+
- **Side panel** — detail/edit open beside the work, not over it (`side-panel-width` / `side-panel-width-rich`).
|
|
78
|
+
- **Badge** — pill radius, `muted` or status fill, uppercase caption; status badges take `success` /
|
|
79
|
+
`warning` / `destructive`, never `primary`.
|
|
80
|
+
|
|
81
|
+
## 5 Layout
|
|
82
|
+
|
|
83
|
+
Base spacing unit 4px; the on-scale ramp is `4 · 8 · 12 · 16 · 24 · 32 · 48 · 64` (the marketing 96px
|
|
84
|
+
section rhythm stays behind). Shell dimensions map one-to-one to the layout primitives: sidebar
|
|
85
|
+
`sidebar-width-expanded` / `sidebar-width-collapsed`, topbar `topbar-height` (64px — Cal's airier nav
|
|
86
|
+
band), side panel `side-panel-width` / `side-panel-width-rich`, modal cap `modal-width-max`, forms
|
|
87
|
+
`form-max-width`, tables full-width. Density is governed globally by `density-tier` (`spacious`, Cal's
|
|
88
|
+
generous whitespace) and stepped per archetype by the surface catalog.
|
|
89
|
+
|
|
90
|
+
## 6 Depth
|
|
91
|
+
|
|
92
|
+
Soft and modern. Hierarchy comes from the surface ladder and hairlines, with soft shadow reserved for
|
|
93
|
+
true lift — no heavy drops, no neumorphism, no glassmorphism:
|
|
94
|
+
|
|
95
|
+
- **0 — canvas** `background`, no border.
|
|
96
|
+
- **1 — card / panel** `card` on a 1px `border`; a light-gray `muted` fill distinguishes feature
|
|
97
|
+
surfaces; soft `sm` shadow (`0 1px 2px rgba(0,0,0,0.05)`) only when it must lift off the canvas.
|
|
98
|
+
- **2 — overlay** `popover` / side panel / modal — soft `md` shadow (`0 4px 12px rgba(0,0,0,0.08)`); the
|
|
99
|
+
scarce near-black `#101010` surface elevates by color contrast, not a heavier shadow.
|
|
100
|
+
|
|
101
|
+
Focus is an ink `ring` outline (never a glow), visible on every interactive element. Three z-levels:
|
|
102
|
+
content, sticky chrome, overlay.
|
|
103
|
+
|
|
104
|
+
## 7 Do's & Don'ts
|
|
105
|
+
|
|
106
|
+
- **Do** reserve near-black `primary` for the single most important action; keep the action layer
|
|
107
|
+
monochrome, and carry hierarchy with hairlines, weight, whitespace, and the surface ladder before shadow.
|
|
108
|
+
- **Do** hold display weight at 600 with the tight negative `heading-tracking` — Cal's voice reads
|
|
109
|
+
off-brand without it; apply `tabular-nums` to numeric columns and `font-mono` to IDs, codes, timestamps.
|
|
110
|
+
- **Don't** promote a chromatic accent to the action layer — `brand-accent` blue is inline-link-only,
|
|
111
|
+
the badge pastels are chart-only.
|
|
112
|
+
- **Don't** pill the primary CTA or use a card radius beyond 16px — larger reads as consumer-toy, not
|
|
113
|
+
professional software.
|
|
114
|
+
- **Don't** scatter the near-black surface (at most one per view, framing or closing it — a scarce
|
|
115
|
+
signal, not a panel), or signal elevation with heavy drop shadows.
|
|
116
|
+
|
|
117
|
+
## 8 Responsive
|
|
118
|
+
|
|
119
|
+
The operator sweep across breakpoints:
|
|
120
|
+
|
|
121
|
+
| Breakpoint (px) | What changes |
|
|
122
|
+
| --- | --- |
|
|
123
|
+
| 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
|
|
124
|
+
| 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
|
|
125
|
+
| 1024 | sidebar expands; two-pane queue+detail holds side by side |
|
|
126
|
+
| 1440 | forms cap at `form-max-width`; tables and dashboards use the full width |
|
|
127
|
+
|
|
128
|
+
## 9 Agent Prompt Guide
|
|
129
|
+
|
|
130
|
+
What carries from Cal into an operator surface, and what stays on the marketing page.
|
|
131
|
+
|
|
132
|
+
- Reach first for the white canvas, hairline `border`, and light-gray surface ladder — a monochrome
|
|
133
|
+
grayscale system. Accent only the primary action, in near-black; if two things want it, one is not primary.
|
|
134
|
+
- Keep geometry soft: 8px on controls, 12px on cards; never pill a CTA, never exceed 16px on a card.
|
|
135
|
+
- Headings are Inter 600 with tight negative tracking (the Cal Sans voice reproduced) — never ship Cal
|
|
136
|
+
Sans itself, never scale a heading to hero 48–64px. Numeric columns are `tabular-nums`; IDs, codes, and
|
|
137
|
+
timestamps are JetBrains Mono.
|
|
138
|
+
- The near-black `#101010` surface is scarce — one framing element per view, never a panel. Leave behind
|
|
139
|
+
the hero display, the 96px band rhythm, the nav-pill switcher, product-fragment-in-card, and any
|
|
140
|
+
gradient; charts are the only place color spends.
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema: design-md/v1
|
|
3
|
+
product: Clay
|
|
4
|
+
provenance: library
|
|
5
|
+
sourced: 2026-07-04
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Clay — the warm-cream operator reading
|
|
9
|
+
|
|
10
|
+
Clay's marketing surface is the most playful brand in the GTM-data category: a cream-tinted white
|
|
11
|
+
canvas holding 3D claymation illustrations and saturated single-color feature cards in six hues.
|
|
12
|
+
This is the *operator* reading — the warmth, the near-black actions, the generous radius, and the
|
|
13
|
+
Inter body voice carried into a CRM/queue/dashboard; the hero-scale Plain Black display, the 3D
|
|
14
|
+
illustrations, and the saturated feature-card fills stay behind in marketing. What makes a tool read
|
|
15
|
+
as Clay is the cream substrate and the disciplined near-black action, not a colored card.
|
|
16
|
+
|
|
17
|
+
## 1 Visual Theme
|
|
18
|
+
|
|
19
|
+
Light by default; warm, not cool. The canvas is a cream-tinted white (`background` — `#fffaf0`), never
|
|
20
|
+
a gray — that faint warmth is Clay's non-negotiable differentiator from the cool-gray data-platform
|
|
21
|
+
field. Flat: hierarchy comes from hairline `border`, warm surface steps, and type weight, never heavy
|
|
22
|
+
shadow. A single reserved action color — near-black `primary` (`#0a0a0a`), Clay's authentic CTA —
|
|
23
|
+
carries emphasis in the chrome. The anchor surface is the cream content canvas beside a faintly deeper
|
|
24
|
+
cream `sidebar`. Radius is generous (`radius` 12px) to keep Clay's rounded, friendly character. Density
|
|
25
|
+
is `spacious` — this brand breathes, and its operator tools breathe with it.
|
|
26
|
+
|
|
27
|
+
## 2 Color Roles
|
|
28
|
+
|
|
29
|
+
Light values first; hex is Clay's native format. One reserved accent — near-black `primary` is the only
|
|
30
|
+
tone the chrome uses for emphasis; the six saturated brand hues live in charts only, never in chrome.
|
|
31
|
+
|
|
32
|
+
| Role | Value | Allowed where |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| `background` / `card` / `popover` | cream white `#fffaf0` | page, cards, and overlays — the dominant warm surface |
|
|
35
|
+
| `foreground` | ink `#0a0a0a` | all primary text, headings |
|
|
36
|
+
| `muted` | soft cream `#faf5e8` | hover rows, subtle fills |
|
|
37
|
+
| `muted-foreground` | mid gray `#6a6a6a` | labels, captions, secondary text |
|
|
38
|
+
| `secondary` | cream card `#f5f0e0` | secondary buttons, quiet chips |
|
|
39
|
+
| `border` / `input` | hairline `#e5e5e5` | every separator, grid line, and field edge |
|
|
40
|
+
| `primary` | near-black `#0a0a0a` (hover `#1f1f1f`, disabled `#e5e5e5`) | the one primary action; active nav |
|
|
41
|
+
| `accent` | warm cream `#ebe6d6` | selected/hovered rows and active nav, on-accent surfaces only |
|
|
42
|
+
| `ring` | near-black `#0a0a0a` | the focus outline — unmistakable on cream, because keyboard-first |
|
|
43
|
+
| `destructive` | red `#ef4444` | destructive actions and error state only |
|
|
44
|
+
| `success` / `warning` | green `#22c55e` / amber `#f59e0b` | status signalling only, never chrome |
|
|
45
|
+
|
|
46
|
+
The saturated palette — teal, pink, lavender, ochre, coral — is Clay's brand voltage; here it carries
|
|
47
|
+
**data series** (`chart-1..5`), not chrome. The marketing feature cards stay behind (see §7).
|
|
48
|
+
|
|
49
|
+
## 3 Typography
|
|
50
|
+
|
|
51
|
+
One sans, one mono. `font-sans` is Inter — body, UI, and headings all ride it; heading weight and a
|
|
52
|
+
faint negative tracking, not a second family, carry the voice. Clay's display face, Plain Black, is a
|
|
53
|
+
hero-scale marketing type (72px, -2.5px tracking) and stays behind. `font-mono` carries IDs, codes,
|
|
54
|
+
timestamps, and log lines. Numeric columns render `tabular-nums` so figures align down a column.
|
|
55
|
+
|
|
56
|
+
| Step | Role | Size · line | Weight · tracking |
|
|
57
|
+
| --- | --- | --- | --- |
|
|
58
|
+
| h1 | page title | 24px / 1.3 | `font-weight-strong` · `heading-tracking` |
|
|
59
|
+
| h2 | section head | 18px / 1.4 | `font-weight-strong` · `heading-tracking` |
|
|
60
|
+
| h3 | card / group head | 16px / 1.4 | `font-weight-strong` · `0` |
|
|
61
|
+
| body | UI + prose | 16px / 1.55 | `font-weight-normal` |
|
|
62
|
+
| small | labels, meta, dense table | 14px / 1.5 | `font-weight-normal` |
|
|
63
|
+
| caption | uppercase eyebrow | 12px / 1.4 | `font-weight-strong`, `+0.1em`, uppercase |
|
|
64
|
+
|
|
65
|
+
Bump weight one step for emphasis; never change size to emphasize.
|
|
66
|
+
|
|
67
|
+
## 4 Component Stylings
|
|
68
|
+
|
|
69
|
+
Every recurring operator component composes from the primitives — no literal values.
|
|
70
|
+
|
|
71
|
+
- **Button** — `primary`: filled near-black `primary` on `primary-foreground`, `radius` (generous),
|
|
72
|
+
no pill; hover deepens to `#1f1f1f`. Secondary: `secondary` cream fill, 1px `border`. Ghost:
|
|
73
|
+
transparent, `accent` on hover.
|
|
74
|
+
- **Input** — `background` fill, 1px `border` (`border-weight`), `radius`; focus draws the near-black
|
|
75
|
+
`ring` at 2px, no glow.
|
|
76
|
+
- **Card** — `card` surface, 1px `border`, `radius`; shadow only when it must lift off the canvas
|
|
77
|
+
(`shadow-intensity`); inset by `density-inset`.
|
|
78
|
+
- **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on
|
|
79
|
+
numeric columns; row selection tints `accent`.
|
|
80
|
+
- **Side panel** — detail and edit open beside the work in `side-panel-width` (`-rich` when heavy).
|
|
81
|
+
- **Badge** — pill (`radius-scale` 9999, Clay's brand-authentic chip shape), `muted`/status fill,
|
|
82
|
+
uppercase caption; status badges take `success` / `warning` / `destructive`, never `primary`.
|
|
83
|
+
|
|
84
|
+
## 5 Layout
|
|
85
|
+
|
|
86
|
+
Base spacing unit 4px (Clay's documented base); the on-scale ramp is `4 · 8 · 12 · 16 · 24 · 32 · 48 ·
|
|
87
|
+
64` (marketing's 96px section rhythm stays behind). Shell dimensions map one-to-one to the layout
|
|
88
|
+
primitives: sidebar `sidebar-width-expanded` / `sidebar-width-collapsed`, topbar `topbar-height`, side
|
|
89
|
+
panel `side-panel-width` / `side-panel-width-rich`, modal cap `modal-width-max`, forms `form-max-width`,
|
|
90
|
+
tables full-width. Density is governed globally by `density-tier` (`spacious`, rewriting the spacing
|
|
91
|
+
scale through `density-gap`) and stepped per archetype by the surface catalog.
|
|
92
|
+
|
|
93
|
+
## 6 Depth
|
|
94
|
+
|
|
95
|
+
Flat. Hierarchy comes from warm surface steps and hairlines, not shadow:
|
|
96
|
+
|
|
97
|
+
- **0 — canvas** `background` cream, no border.
|
|
98
|
+
- **1 — panel / card** `card` on a 1px `border`; a step to `muted` / `secondary` cream separates
|
|
99
|
+
nested surfaces before any shadow does.
|
|
100
|
+
- **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns a soft `md`
|
|
101
|
+
shadow. No level stacks a heavier shadow to signal rank; rank is border, warm surface, and position.
|
|
102
|
+
|
|
103
|
+
Focus is a 2px near-black `ring` outline, never a glow; three z-levels: content, chrome, overlay.
|
|
104
|
+
|
|
105
|
+
## 7 Do's & Don'ts
|
|
106
|
+
|
|
107
|
+
- **Do** anchor every surface on the cream `background` (`#fffaf0`). The warm tint is the identity.
|
|
108
|
+
- **Do** reserve near-black `primary` for the single most important action; everything else is neutral.
|
|
109
|
+
- **Do** let the saturated palette carry data (`chart-1..5`) — that is where Clay's color belongs.
|
|
110
|
+
- **Do** apply `tabular-nums` to every numeric column and `font-mono` to IDs, codes, and timestamps.
|
|
111
|
+
- **Don't** cool the neutrals to gray. A gray canvas is a different brand.
|
|
112
|
+
- **Don't** bring the saturated feature-card fills into chrome — no hot-pink button, no teal panel.
|
|
113
|
+
- **Don't** pill the primary CTA (pill is for badges/chips) or reach past `radius-scale`.
|
|
114
|
+
- **Don't** import Plain Black or 3D claymation into the tool — they are hero-scale marketing assets.
|
|
115
|
+
- **Don't** signal elevation with heavy drop shadows.
|
|
116
|
+
|
|
117
|
+
## 8 Responsive
|
|
118
|
+
|
|
119
|
+
The operator sweep is 375 / 768 / 1024 / 1440.
|
|
120
|
+
|
|
121
|
+
| Breakpoint | What changes |
|
|
122
|
+
| --- | --- |
|
|
123
|
+
| 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
|
|
124
|
+
| 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
|
|
125
|
+
| 1024 | sidebar expands; two-pane queue+detail holds side by side |
|
|
126
|
+
| 1440 | forms cap at `form-max-width`; tables and dashboards use the full width, generous cream gutters |
|
|
127
|
+
|
|
128
|
+
## 9 Agent Prompt Guide
|
|
129
|
+
|
|
130
|
+
Directives the emitting agent follows verbatim:
|
|
131
|
+
|
|
132
|
+
- Reach for the cream canvas first; the warm `background` is what makes the tool read as Clay.
|
|
133
|
+
- Accent only the primary action, and the accent is near-black. If two want it, one is not primary.
|
|
134
|
+
- Charts carry Clay's saturated palette (`chart-1..5`); chrome stays warm-neutral. Never invert this.
|
|
135
|
+
- Keep radius generous — the rounded character is the brand; do not tighten controls to a hard edge.
|
|
136
|
+
- Detail and edit go in the side panel; a modal is a confirmation, not a workspace.
|
|
137
|
+
- Every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono`.
|
|
138
|
+
- Every workflow completes from the keyboard; the near-black `ring` focus outline is always visible.
|
|
139
|
+
- Plain Black hero type and 3D illustrations are marketing. They never enter the operator surface.
|