@r1z4x/tezgah 1.9.2 → 1.13.0
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/CHANGELOG.md +415 -1
- package/MANIFEST +404 -144
- package/README.de.md +1 -1
- package/README.es.md +1 -1
- package/README.fr.md +1 -1
- package/README.md +5 -4
- package/README.tr.md +1 -1
- package/bin/codegen +5 -2
- package/bin/tezgah-design +288 -1
- package/bin/tezgah-docs +1 -1
- package/bin/tezgah-doctor +39 -2
- package/bin/tezgah-import-ai-research +26 -12
- package/bin/tezgah-ocr-review +296 -0
- package/bin/tezgah-research +255 -44
- package/bin/tezgah-review-quote +185 -0
- package/bin/tezgah-setup +1365 -55
- package/bin/tezgah-skill +1 -1
- package/bin/tezgah-status +201 -3
- package/bin/tezgah-task +258 -20
- package/commands/adhd.md +2 -2
- package/commands/ponytail.md +4 -4
- package/docs/architecture.md +2 -2
- package/docs/citations-baseline.json +3 -3
- package/docs/clarity-baseline.json +11 -5
- package/docs/contract.md +91 -43
- package/docs/environment.md +5 -2
- package/docs/evidence.md +109 -17
- package/docs/feature-audit.md +2 -2
- package/docs/gate.md +60 -33
- package/docs/glossary.md +6 -3
- package/docs/hosts.md +313 -17
- package/docs/index.json +34 -8
- package/docs/judge.md +4 -2
- package/docs/layers.md +4 -4
- package/docs/models.md +37 -9
- package/docs/operations.md +141 -5
- package/docs/research.md +815 -8
- package/docs/skills.md +137 -13
- package/docs/status-line.md +121 -1
- package/docs/testing.md +3 -1
- package/hooks/hooks.json +2 -2
- package/hooks/lang/en.json +21 -0
- package/hooks/lang/tr.json +22 -1
- package/hooks/projects-stop.py +2 -1
- package/hooks/tezgah_agents.py +65 -25
- package/hooks/tezgah_apps.py +18 -0
- package/hooks/tezgah_attest.py +79 -10
- package/hooks/tezgah_components.py +4 -0
- package/hooks/tezgah_context.py +207 -55
- package/hooks/tezgah_extension.py +337 -0
- package/hooks/tezgah_gate.py +267 -79
- package/hooks/tezgah_integrity.py +864 -143
- package/hooks/tezgah_judge.py +6 -4
- package/hooks/tezgah_models.py +59 -19
- package/hooks/tezgah_orca.py +1 -1
- package/hooks/tezgah_paths.py +145 -8
- package/hooks/tezgah_policy.py +128 -57
- package/hooks/tezgah_rank.py +9 -6
- package/hooks/tezgah_replay.py +12 -6
- package/hooks/tezgah_research.py +1414 -76
- package/hooks/tezgah_research_capture.py +1544 -0
- package/hooks/tezgah_research_evidence.py +842 -0
- package/hooks/tezgah_research_stats.py +258 -0
- package/hooks/tezgah_skill_pick.py +408 -106
- package/hooks/tezgah_stack.py +236 -1
- package/hooks/tezgah_stopspec.py +8 -1
- package/hooks/tezgah_task.py +14 -5
- package/hooks/tezgah_taste_ledger.py +1 -1
- package/hosts/amp/hook.py +217 -0
- package/hosts/amp/tezgah-plugin.ts.in +386 -0
- package/hosts/antigravity/hook.py +255 -0
- package/hosts/codex/hook.py +2 -1
- package/hosts/commandcode/hook.py +239 -0
- package/hosts/copilot/hook.py +284 -0
- package/hosts/cursor/hook.py +31 -3
- package/hosts/droid/hook.py +259 -0
- package/hosts/dsh/hooks.json +1 -1
- package/hosts/gemini/hook.py +213 -0
- package/hosts/goose/hook.py +145 -0
- package/hosts/omp/hook.py +4 -1
- package/hosts/omp/tezgah-hook.ts.in +30 -7
- package/hosts/opencode/plugins/tezgah.js +309 -48
- package/hosts/opencode/tui/cli/tui.tsx +100 -0
- package/hosts/opencode/tui/tezgah-tui.tsx +2 -1
- package/hosts/qwen/hook.py +206 -0
- package/output-styles/tezgah.md +20 -15
- package/package.json +1 -1
- package/skills/ai-research/SKILL.md +21 -14
- package/skills/ai-research/SOURCE +7 -5
- package/skills/ai-research/index/1-frame.md +6 -6
- package/skills/ai-research/index/2-data.md +9 -9
- package/skills/ai-research/index/3-train.md +36 -36
- package/skills/ai-research/index/4-measure.md +13 -13
- package/skills/ai-research/index/5-run.md +11 -11
- package/skills/ai-research/index/6-write.md +23 -23
- package/skills/ai-research/library.json +104 -104
- package/skills/analyze-app/SKILL.md +17 -12
- package/skills/design-contract/SKILL.md +42 -7
- package/skills/design-contract/data-views.md +2 -2
- package/skills/design-library/EVALS.md +1 -1
- package/skills/design-library/INDEX.md +39 -39
- package/skills/design-library/SKILL.md +19 -13
- package/skills/design-library/SOURCE +45 -43
- package/skills/feature-audit/SKILL.md +20 -14
- package/skills/hallmark/LICENSE +21 -0
- package/skills/hallmark/SKILL.md +154 -0
- package/skills/hallmark/SOURCE +207 -0
- package/skills/hallmark/agents/openai.yaml +13 -0
- package/skills/hallmark/references/anatomy.md +71 -0
- package/skills/hallmark/references/brand-truth.md +40 -0
- package/skills/hallmark/references/comp.md +104 -0
- package/skills/hallmark/references/craft.md +116 -0
- package/skills/hallmark/references/dark-mode.md +49 -0
- package/skills/hallmark/references/data-viz.md +48 -0
- package/skills/hallmark/references/design-md.md +53 -0
- package/skills/hallmark/references/direction.md +52 -0
- package/skills/hallmark/references/export-formats.md +80 -0
- package/skills/hallmark/references/flow.md +131 -0
- package/skills/hallmark/references/fonts.md +58 -0
- package/skills/hallmark/references/gates.md +243 -0
- package/skills/hallmark/references/genres/atmospheric.md +24 -0
- package/skills/hallmark/references/genres/editorial.md +24 -0
- package/skills/hallmark/references/genres/modern-minimal.md +24 -0
- package/skills/hallmark/references/genres/playful.md +24 -0
- package/skills/hallmark/references/imagery.md +99 -0
- package/skills/hallmark/references/interaction-and-states.md +89 -0
- package/skills/hallmark/references/layout.md +104 -0
- package/skills/hallmark/references/macrostructures/01-bento-grid.md +21 -0
- package/skills/hallmark/references/macrostructures/02-long-document.md +35 -0
- package/skills/hallmark/references/macrostructures/03-marquee-hero.md +21 -0
- package/skills/hallmark/references/macrostructures/04-stat-led.md +21 -0
- package/skills/hallmark/references/macrostructures/05-workbench.md +21 -0
- package/skills/hallmark/references/macrostructures/06-conversational-faq.md +28 -0
- package/skills/hallmark/references/macrostructures/07-manifesto.md +28 -0
- package/skills/hallmark/references/macrostructures/08-photographic.md +21 -0
- package/skills/hallmark/references/macrostructures/09-quote-led.md +21 -0
- package/skills/hallmark/references/macrostructures/10-specimen.md +21 -0
- package/skills/hallmark/references/macrostructures/11-catalogue.md +21 -0
- package/skills/hallmark/references/macrostructures/12-letter.md +21 -0
- package/skills/hallmark/references/macrostructures/13-index-first.md +21 -0
- package/skills/hallmark/references/macrostructures/14-narrative-workflow.md +21 -0
- package/skills/hallmark/references/macrostructures/15-split-studio.md +21 -0
- package/skills/hallmark/references/macrostructures/16-feature-stack.md +23 -0
- package/skills/hallmark/references/macrostructures/17-type-specimen.md +19 -0
- package/skills/hallmark/references/macrostructures/18-portfolio-grid.md +21 -0
- package/skills/hallmark/references/macrostructures/19-map-diagram.md +21 -0
- package/skills/hallmark/references/macrostructures/20-ecosystem-index.md +19 -0
- package/skills/hallmark/references/macrostructures/21-component-playground.md +21 -0
- package/skills/hallmark/references/macrostructures.md +119 -0
- package/skills/hallmark/references/microinteractions.md +80 -0
- package/skills/hallmark/references/patterns.md +202 -0
- package/skills/hallmark/references/redesign.md +88 -0
- package/skills/hallmark/references/responsive.md +46 -0
- package/skills/hallmark/references/review-finish.md +19 -0
- package/skills/hallmark/references/review-hero.md +20 -0
- package/skills/hallmark/references/scroll-choreography.md +110 -0
- package/skills/hallmark/references/texture.md +90 -0
- package/skills/hallmark/references/themes/README.md +58 -0
- package/skills/hallmark/references/themes/almanac.jpg +0 -0
- package/skills/hallmark/references/themes/almanac.md +103 -0
- package/skills/hallmark/references/themes/arcade.jpg +0 -0
- package/skills/hallmark/references/themes/arcade.md +102 -0
- package/skills/hallmark/references/themes/atelier.jpg +0 -0
- package/skills/hallmark/references/themes/atelier.md +98 -0
- package/skills/hallmark/references/themes/bloom.jpg +0 -0
- package/skills/hallmark/references/themes/bloom.md +102 -0
- package/skills/hallmark/references/themes/blueprint.jpg +0 -0
- package/skills/hallmark/references/themes/blueprint.md +103 -0
- package/skills/hallmark/references/themes/broadside.jpg +0 -0
- package/skills/hallmark/references/themes/broadside.md +108 -0
- package/skills/hallmark/references/themes/brutal.jpg +0 -0
- package/skills/hallmark/references/themes/brutal.md +95 -0
- package/skills/hallmark/references/themes/carnival.jpg +0 -0
- package/skills/hallmark/references/themes/carnival.md +104 -0
- package/skills/hallmark/references/themes/cobalt.jpg +0 -0
- package/skills/hallmark/references/themes/cobalt.md +101 -0
- package/skills/hallmark/references/themes/console.jpg +0 -0
- package/skills/hallmark/references/themes/console.md +99 -0
- package/skills/hallmark/references/themes/coral.jpg +0 -0
- package/skills/hallmark/references/themes/coral.md +102 -0
- package/skills/hallmark/references/themes/darkroom.jpg +0 -0
- package/skills/hallmark/references/themes/darkroom.md +99 -0
- package/skills/hallmark/references/themes/dose.jpg +0 -0
- package/skills/hallmark/references/themes/dose.md +98 -0
- package/skills/hallmark/references/themes/dusk.jpg +0 -0
- package/skills/hallmark/references/themes/dusk.md +105 -0
- package/skills/hallmark/references/themes/editorial.jpg +0 -0
- package/skills/hallmark/references/themes/editorial.md +97 -0
- package/skills/hallmark/references/themes/formwork.jpg +0 -0
- package/skills/hallmark/references/themes/formwork.md +107 -0
- package/skills/hallmark/references/themes/furrow.jpg +0 -0
- package/skills/hallmark/references/themes/furrow.md +98 -0
- package/skills/hallmark/references/themes/garden.jpg +0 -0
- package/skills/hallmark/references/themes/garden.md +97 -0
- package/skills/hallmark/references/themes/grid.jpg +0 -0
- package/skills/hallmark/references/themes/grid.md +101 -0
- package/skills/hallmark/references/themes/halftone.jpg +0 -0
- package/skills/hallmark/references/themes/halftone.md +106 -0
- package/skills/hallmark/references/themes/hedgerow.jpg +0 -0
- package/skills/hallmark/references/themes/hedgerow.md +104 -0
- package/skills/hallmark/references/themes/hum.jpg +0 -0
- package/skills/hallmark/references/themes/hum.md +99 -0
- package/skills/hallmark/references/themes/index.json +2191 -0
- package/skills/hallmark/references/themes/ink.jpg +0 -0
- package/skills/hallmark/references/themes/ink.md +106 -0
- package/skills/hallmark/references/themes/kiln.jpg +0 -0
- package/skills/hallmark/references/themes/kiln.md +108 -0
- package/skills/hallmark/references/themes/loom.jpg +0 -0
- package/skills/hallmark/references/themes/loom.md +106 -0
- package/skills/hallmark/references/themes/lumen.jpg +0 -0
- package/skills/hallmark/references/themes/lumen.md +103 -0
- package/skills/hallmark/references/themes/manifesto.jpg +0 -0
- package/skills/hallmark/references/themes/manifesto.md +101 -0
- package/skills/hallmark/references/themes/midnight.jpg +0 -0
- package/skills/hallmark/references/themes/midnight.md +97 -0
- package/skills/hallmark/references/themes/newsprint.jpg +0 -0
- package/skills/hallmark/references/themes/newsprint.md +102 -0
- package/skills/hallmark/references/themes/overprint.jpg +0 -0
- package/skills/hallmark/references/themes/overprint.md +101 -0
- package/skills/hallmark/references/themes/pasteup.jpg +0 -0
- package/skills/hallmark/references/themes/pasteup.md +100 -0
- package/skills/hallmark/references/themes/piste.jpg +0 -0
- package/skills/hallmark/references/themes/piste.md +99 -0
- package/skills/hallmark/references/themes/ribbon.jpg +0 -0
- package/skills/hallmark/references/themes/ribbon.md +106 -0
- package/skills/hallmark/references/themes/rim.jpg +0 -0
- package/skills/hallmark/references/themes/rim.md +96 -0
- package/skills/hallmark/references/themes/riso.jpg +0 -0
- package/skills/hallmark/references/themes/riso.md +98 -0
- package/skills/hallmark/references/themes/solstice.jpg +0 -0
- package/skills/hallmark/references/themes/solstice.md +104 -0
- package/skills/hallmark/references/themes/specimen.jpg +0 -0
- package/skills/hallmark/references/themes/specimen.md +100 -0
- package/skills/hallmark/references/themes/spore.jpg +0 -0
- package/skills/hallmark/references/themes/spore.md +104 -0
- package/skills/hallmark/references/themes/sport.jpg +0 -0
- package/skills/hallmark/references/themes/sport.md +101 -0
- package/skills/hallmark/references/themes/squeeze.jpg +0 -0
- package/skills/hallmark/references/themes/squeeze.md +99 -0
- package/skills/hallmark/references/themes/sticker.jpg +0 -0
- package/skills/hallmark/references/themes/sticker.md +106 -0
- package/skills/hallmark/references/themes/studio.jpg +0 -0
- package/skills/hallmark/references/themes/studio.md +99 -0
- package/skills/hallmark/references/themes/terminal.jpg +0 -0
- package/skills/hallmark/references/themes/terminal.md +96 -0
- package/skills/hallmark/references/themes/terrazzo.jpg +0 -0
- package/skills/hallmark/references/themes/terrazzo.md +106 -0
- package/skills/hallmark/references/themes/ultraviolet.jpg +0 -0
- package/skills/hallmark/references/themes/ultraviolet.md +106 -0
- package/skills/hallmark/references/themes/vellum.jpg +0 -0
- package/skills/hallmark/references/themes/vellum.md +105 -0
- package/skills/hallmark/references/themes/wayfind.jpg +0 -0
- package/skills/hallmark/references/themes/wayfind.md +105 -0
- package/skills/hallmark/references/themes/werkstatt.jpg +0 -0
- package/skills/hallmark/references/themes/werkstatt.md +105 -0
- package/skills/hallmark/scripts/capture.mjs +125 -0
- package/skills/hallmark/scripts/fixtures/exemplars/atmospheric.html +324 -0
- package/skills/hallmark/scripts/fixtures/exemplars/editorial.html +363 -0
- package/skills/hallmark/scripts/fixtures/exemplars/modern-minimal.html +527 -0
- package/skills/hallmark/scripts/fixtures/exemplars/playful.html +353 -0
- package/skills/hallmark/scripts/fixtures/eyebrow-fail/index.html +118 -0
- package/skills/hallmark/scripts/fixtures/eyebrow-pass/index.html +137 -0
- package/skills/hallmark/scripts/fixtures/kept/after.html +27 -0
- package/skills/hallmark/scripts/fixtures/kept/before.html +26 -0
- package/skills/hallmark/scripts/fixtures/slopped.html +145 -0
- package/skills/hallmark/scripts/fixtures/tailwind-fail/Feature.vue +14 -0
- package/skills/hallmark/scripts/fixtures/tailwind-fail/Hero.tsx +33 -0
- package/skills/hallmark/scripts/fixtures/tailwind-fail/index.html +74 -0
- package/skills/hallmark/scripts/fixtures/tailwind-fail/style.css +6 -0
- package/skills/hallmark/scripts/fixtures/tailwind-pass/Hero.tsx +33 -0
- package/skills/hallmark/scripts/fixtures/tailwind-pass/index.html +57 -0
- package/skills/hallmark/scripts/fixtures/tailwind-pass/style.css +15 -0
- package/skills/hallmark/scripts/fixtures/waiver/index.html +54 -0
- package/skills/hallmark/scripts/imagegen.mjs +85 -0
- package/skills/hallmark/scripts/install-hook.mjs +70 -0
- package/skills/hallmark/scripts/install.mjs +141 -0
- package/skills/hallmark/scripts/lint-hook.mjs +49 -0
- package/skills/hallmark/scripts/photos.json +1 -0
- package/skills/hallmark/scripts/picture.mjs +71 -0
- package/skills/hallmark/scripts/refcheck.mjs +352 -0
- package/skills/hallmark/scripts/sloplint-render.mjs +1252 -0
- package/skills/hallmark/scripts/sloplint.mjs +4422 -0
- package/skills/hallmark/scripts/theme.mjs +650 -0
- package/skills/harness/SKILL.md +17 -8
- package/skills/i-have-adhd/SKILL.md +32 -12
- package/skills/no-ai-slop/SKILL.md +15 -1
- package/skills/plan-add/SKILL.md +38 -27
- package/skills/plan-status/SKILL.md +13 -7
- package/skills/plan-sync/SKILL.md +18 -12
- package/skills/pm-frameworks/SKILL.md +19 -10
- package/skills/pm-frameworks/SOURCE +7 -5
- package/skills/ponytail/SKILL.md +19 -14
- package/skills/product-analysis/SKILL.md +22 -18
- package/skills/product-flow/SKILL.md +14 -9
- package/skills/research/SKILL.md +97 -48
- package/skills/rl-env/SKILL.md +25 -13
- package/skills/rl-env/SOURCE +8 -6
- package/skills/tezgah-contract/SKILL.md +65 -47
- package/statusline.py +20 -9
- package/workflows/graph-review.js +14 -2
- package/bin/tezgah-skill.py +0 -59
- /package/skills/ai-research/0-autoresearch-skill/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/01-model-architecture/litgpt/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/01-model-architecture/mamba/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/01-model-architecture/nanogpt/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/01-model-architecture/rwkv/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/01-model-architecture/torchtitan/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/02-tokenization/huggingface-tokenizers/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/02-tokenization/sentencepiece/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/03-fine-tuning/axolotl/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/03-fine-tuning/llama-factory/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/03-fine-tuning/peft/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/03-fine-tuning/unsloth/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/04-mechanistic-interpretability/nnsight/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/04-mechanistic-interpretability/pyvene/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/04-mechanistic-interpretability/saelens/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/05-data-processing/nemo-curator/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/05-data-processing/ray-data/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/06-post-training/grpo-rl-training/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/06-post-training/miles/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/06-post-training/openrlhf/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/06-post-training/simpo/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/06-post-training/slime/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/06-post-training/torchforge/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/06-post-training/trl-fine-tuning/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/06-post-training/verl/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/07-safety-alignment/constitutional-ai/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/07-safety-alignment/llamaguard/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/07-safety-alignment/nemo-guardrails/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/07-safety-alignment/prompt-guard/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/08-distributed-training/accelerate/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/08-distributed-training/deepspeed/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/08-distributed-training/megatron-core/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/08-distributed-training/pytorch-fsdp2/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/08-distributed-training/pytorch-lightning/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/08-distributed-training/ray-train/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/09-infrastructure/lambda-labs/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/09-infrastructure/modal/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/09-infrastructure/skypilot/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/10-optimization/awq/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/10-optimization/bitsandbytes/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/10-optimization/flash-attention/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/10-optimization/gguf/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/10-optimization/gptq/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/10-optimization/hqq/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/10-optimization/ml-training-recipes/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/11-evaluation/lm-evaluation-harness/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/11-evaluation/nemo-evaluator/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/12-inference-serving/llama-cpp/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/12-inference-serving/sglang/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/12-inference-serving/tensorrt-llm/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/12-inference-serving/vllm/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/13-mlops/mlflow/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/13-mlops/swanlab/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/13-mlops/tensorboard/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/13-mlops/weights-and-biases/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/14-agents/a-evolve/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/14-agents/autogpt/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/14-agents/crewai/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/14-agents/langchain/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/14-agents/llamaindex/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/15-rag/chroma/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/15-rag/faiss/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/15-rag/pinecone/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/15-rag/qdrant/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/15-rag/sentence-transformers/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/16-prompt-engineering/dspy/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/16-prompt-engineering/guidance/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/16-prompt-engineering/instructor/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/16-prompt-engineering/outlines/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/17-observability/langsmith/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/17-observability/phoenix/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/audiocraft/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/blip-2/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/clip/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/cosmos-policy/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/llava/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/openpi/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/openvla-oft/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/segment-anything/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/stable-diffusion/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/whisper/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/19-emerging-techniques/knowledge-distillation/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/19-emerging-techniques/long-context/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/19-emerging-techniques/model-merging/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/19-emerging-techniques/model-pruning/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/19-emerging-techniques/moe-training/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/19-emerging-techniques/speculative-decoding/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/20-ml-paper-writing/academic-plotting/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/21-research-ideation/brainstorming-research-ideas/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/21-research-ideation/creative-thinking-for-research/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/22-agent-native-research-artifact/compiler/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/22-agent-native-research-artifact/research-manager/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/colour-independence/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/flexible-typography/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/information-density/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/preference-audit/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/responsive-accessibility/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/responsive-review/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/simplified-views/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/specify/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/user-preference-respect/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/adaptive-personalisation/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/assess-load/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/cognitive-load-assessment/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/contextual-help-design/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/error-prevention-recovery/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/focus-attention-design/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/memory-load-reduction/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/plain-language-design/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/review/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/simplify/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/wayfinding-navigation/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/design-research/skills/behavioural-analytics/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/design-research/skills/qual-quant-triangulation/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/audit/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/design-flow/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/feedback-and-status/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/gesture-alternatives/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/keyboard-navigation/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/keyboard-review/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/motion-sensitivity/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/multi-modal-input/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/touch-target-design/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/voice-interaction/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/visual-critique/skills/critique-affordance/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/visual-critique/skills/critique-brand-consistency/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/visual-critique/skills/critique-color/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/visual-critique/skills/critique-composition/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/visual-critique/skills/critique-information-density/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/visual-critique/skills/critique-typography/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/visual-critique/skills/critique-visual-hierarchy/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/pm-frameworks/intended-vs-implemented/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/pm-frameworks/opportunity-solution-tree/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/rl-env/generate-nemo-gym-env/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/rl-env/generate-openenv-env/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/rl-env/generate-ors-env/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/rl-env/generate-verifiers-env/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/rl-env/rl-env-from-description/{SKILL.md → ENTRY.md} +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## 12 · Letter
|
|
2
|
+
|
|
3
|
+
First-person, written, intimate. Opens with a greeting. Reads as a personal note from the founder.
|
|
4
|
+
|
|
5
|
+
- **Heading:** the salutation in the display italic ("Dear reader,"), 1.5 to 2 times body size; the whole line one style.
|
|
6
|
+
- **Body:** prose, single column, narrow measure (50ch), as if typed.
|
|
7
|
+
- **Divider:** paragraph spacing only; an occasional `* * *` separator.
|
|
8
|
+
- **Button:** no button. The sign-off link at the foot carries a verb ("Join the list"). In the fold the one visible action is the link in the first paragraph (44b).
|
|
9
|
+
- **Image:** one signature scan, or a quiet inline photograph, or nothing.
|
|
10
|
+
- **Reveal:** none.
|
|
11
|
+
|
|
12
|
+
Reach for it for personal brands, indie founder announcements, sabbatical or pivot pages, donation appeals.
|
|
13
|
+
|
|
14
|
+
Avoid for transactional commerce. Letter is intimate; commerce is functional.
|
|
15
|
+
|
|
16
|
+
Compositions: the Corridor hero (`layout.md` § 6); the footer is a letter close (§ 7).
|
|
17
|
+
|
|
18
|
+
**Sample opening lines** (first-person greetings, dated, with a place if it matters):
|
|
19
|
+
> *"Hello, I'm Anya."* One line: a name, a full stop.
|
|
20
|
+
> *"Saturday, 6:14 a.m. The dough went in at midnight."* Opens on a moment, then explains it (Maple Street Bread).
|
|
21
|
+
> *"Hey there. This page is soft because the surface should be soft."* A colloquial open and a principle.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## 13 · Index-First
|
|
2
|
+
|
|
3
|
+
The page is a list of links. No hero image, no narrative flow. Navigation as design.
|
|
4
|
+
|
|
5
|
+
- **Heading:** a short head at the hero size naming the index (*Everything published here, newest first*) and one line; the index starts on the first screen.
|
|
6
|
+
- **Body:** a vertical list of categorised links; a filter row above it or a disclosure, never a sidebar by default.
|
|
7
|
+
- **Divider:** hairline rules between rows, or no rules and bands of paper.
|
|
8
|
+
- **Button:** the links are the buttons.
|
|
9
|
+
- **Image:** none, or one photograph of the collection itself, and a small mark by each entry.
|
|
10
|
+
- **Reveal:** none.
|
|
11
|
+
|
|
12
|
+
Reach for it for documentation hubs, knowledge bases, archive front pages, design-system entries, link pages with substance.
|
|
13
|
+
|
|
14
|
+
Avoid for a hard sell (a launch, a checkout). Index-First serves a browsing audience; a personal site that offers its owner's time is fine.
|
|
15
|
+
|
|
16
|
+
Compositions: Rows at full width (`layout.md` § 5).
|
|
17
|
+
|
|
18
|
+
**Sample opening lines** (headers for what sits below, sometimes no more than a line):
|
|
19
|
+
> *"Selected work, 2018 to 2026."* A date range, no preamble.
|
|
20
|
+
> *"Everything published here, newest first."* Names the sort and the scope.
|
|
21
|
+
> *"Writer and photographer."* Three words that summarise the whole site.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## 14 · Narrative Workflow
|
|
2
|
+
|
|
3
|
+
Numbered stages tell the story of how the user uses the product over time. Each section is a phase; the page is a process timeline.
|
|
4
|
+
|
|
5
|
+
- **Heading:** the stage number rides inside the heading (`<h2>1.0 Intake</h2>`) or is generated by `<ol>` with `counter()`. Never a separate label beside the heading: that is an eyebrow at stage scale (54).
|
|
6
|
+
- **Body:** each stage has a short explanation and one object at full size: a product capture 360px tall or more when the user gave screens, otherwise a figure or rows from the prompt (a timer, a count, the thing the stage makes). Three stages holding the same kind of object read as three features (8): vary the object from stage to stage.
|
|
7
|
+
- **Divider:** a rule between stages, in the theme's rule weight; the number stays in the heading, never on the rule.
|
|
8
|
+
- **Button:** the hero's one action (44b), returning once at the foot ("Start at stage one"); links inside stages.
|
|
9
|
+
- **Image:** a real capture per stage, often annotated, in a `<figure>` or a slot; with one screen or none, never a slot per stage (68).
|
|
10
|
+
- **Reveal:** one horizontal sweep, on the first stage, when the theme allows a reveal; the later stages are simply there. A scrub-linked stage sequence may use [`../scroll-choreography.md`](../scroll-choreography.md) § 1 Pinned chapter instead: one pattern per page.
|
|
11
|
+
|
|
12
|
+
Reach for it for products with explicit workflows: project management, design-to-dev pipelines, writing tools.
|
|
13
|
+
|
|
14
|
+
Avoid for tools that work in one moment. Narrative Workflow needs a real sequence.
|
|
15
|
+
|
|
16
|
+
Compositions: Steps, each stage with its capture (`layout.md` § 5).
|
|
17
|
+
|
|
18
|
+
**Sample opening lines** (stage headings: numbered, declarative, in process language, one stage per line):
|
|
19
|
+
> *"1. Sourdough overnight. 2. Score at dawn. 3. Pull at seven."* Three numbered stages, no marketing (Maple Street Bread).
|
|
20
|
+
> *"1.0 Parse. 2.0 Filter. 3.0 Route."* Versioned numbers, three concrete verbs (Streampipe).
|
|
21
|
+
> *"I. We design products that last twelve years. II. A material is sustainable when someone can repair it."* Roman numerals and declaratives (Meridian).
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## 15 · Split Studio
|
|
2
|
+
|
|
3
|
+
Diptych. Every major block divides the screen, text on one side, proof on the other, and the proof keeps its side down the page (one mirror at most, never a zigzag, `layout.md` § 7).
|
|
4
|
+
|
|
5
|
+
- **Heading:** half the screen wide; the other half holds a capture or a supplied quote.
|
|
6
|
+
- **Body:** text-and-proof rows that vary by weight, not by side: one lead row gives the proof the larger share, the rest split evenly; one column gap for all of them (F15).
|
|
7
|
+
- **Divider:** a clear gutter between halves; no rules.
|
|
8
|
+
- **Button:** an outlined chip below the text half.
|
|
9
|
+
- **Image:** on the proof side in every row: a real capture, or the product built in a slot (`imagery.md` § 4).
|
|
10
|
+
- **Reveal:** the hero's two halves fade in once, 60 to 100ms apart; the rows below are simply there.
|
|
11
|
+
|
|
12
|
+
Reach for it for SaaS feature pages, developer tools that pair explanation with code, anything where every claim wants a visual proof.
|
|
13
|
+
|
|
14
|
+
Avoid for narrative or photographic brands. Split halves the attention; some pages need one focus.
|
|
15
|
+
|
|
16
|
+
Compositions: Split (`layout.md` § 5), the proof keeping its side.
|
|
17
|
+
|
|
18
|
+
**Sample opening lines** (a positioning statement paired with a proof column):
|
|
19
|
+
> *"A studio for what comes next."* Italic display beside a selected-work column.
|
|
20
|
+
> *"Print discipline, on screen."* Two phrases, set like a masthead.
|
|
21
|
+
> *"We design and build products for small ambitious teams."* Names the verbs and the audience.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
## 16 · Feature Stack
|
|
2
|
+
|
|
3
|
+
Sticky left pane holding the heading, scroll-synced right pane cycling through related captures. Paced like film.
|
|
4
|
+
|
|
5
|
+
- **Heading:** held inside the sticky pane; persists while content cycles beside it.
|
|
6
|
+
- **Body:** two columns, left sticky, right scrolling; the right pane plays through 3 to 6 detail captures per section.
|
|
7
|
+
- **Divider:** section bands; the sticky pane re-anchors per section, at `top: var(--banner-height)` under a sticky nav (56).
|
|
8
|
+
- **Button:** in the sticky pane, shown once the section's last capture is reached; with scripting off it is simply there (62).
|
|
9
|
+
- **Image:** the scrolling column is real captures, or the product built in slots until they arrive (`imagery.md` § 4); never a run of empty frames (68).
|
|
10
|
+
- **Reveal:** none of the fade kind; the sticky scroll is the motion. Choreograph it with [`../scroll-choreography.md`](../scroll-choreography.md) § 4 Sticky diptych with the pane kept on the left, or § 1 Pinned chapter: one pattern per page.
|
|
11
|
+
|
|
12
|
+
Reach for it for premium products, complex feature stories, anywhere the pacing should be controlled as the visitor scrolls.
|
|
13
|
+
|
|
14
|
+
Avoid for mobile-first audiences without a strong fallback. Sticky scroll-sync is rough on small screens.
|
|
15
|
+
|
|
16
|
+
Compositions: a pinned Split (`layout.md` § 5), the pin per `scroll-choreography.md` § 4.
|
|
17
|
+
|
|
18
|
+
Mobile: under 60rem the sticky pane becomes a heading above its captures, stacked in flow.
|
|
19
|
+
|
|
20
|
+
**Sample opening lines** (pin one statement, then walk the visitor through):
|
|
21
|
+
> *"Plan, build, ship."* Three verbs, three sticky panes.
|
|
22
|
+
> *"Read anything that emits lines."* Names what is possible, then walks through it (Streampipe).
|
|
23
|
+
> *"From stdin, through the pipe, into your dashboard."* Names the data path, then explains each step.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
## 17 · Type Specimen
|
|
2
|
+
|
|
3
|
+
The typeface is the design. Foundry pages and design systems where a custom face is the proof.
|
|
4
|
+
|
|
5
|
+
- **Heading:** the typeface set at several sizes, demonstrating what it does.
|
|
6
|
+
- **Body:** a progressive demonstration: display size, body size, italic, language coverage, OpenType features.
|
|
7
|
+
- **Divider:** a `<figcaption>` under each specimen; a caption below is legal, a label above is an eyebrow (54).
|
|
8
|
+
- **Button:** one outlined action ("Buy the family") in the fold (44b), returning at the foot.
|
|
9
|
+
- **Image:** none; the typography is the imagery.
|
|
10
|
+
- **Reveal:** one type-unmask, on the first specimen as it paints; the rest is simply there.
|
|
11
|
+
|
|
12
|
+
Reach for it for type foundries, design systems where a custom face is the differentiator, font product pages.
|
|
13
|
+
|
|
14
|
+
Avoid when the brand uses an off-the-shelf face. Type Specimen needs something distinctive to celebrate.
|
|
15
|
+
|
|
16
|
+
**Sample opening lines** (foundry voice: name the face, the weights, the use):
|
|
17
|
+
> *"Corvid Display, set at 96pt."* Names the face and the size, nothing else.
|
|
18
|
+
> *"Eight weights. Three optical sizes. One good italic."* Counts the system in three short phrases.
|
|
19
|
+
> *"A type system for editorial."* Refusal of the verb, one noun phrase.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## 18 · Portfolio Grid
|
|
2
|
+
|
|
3
|
+
Filterable cards of projects. Studio and designer homepages where the work is the product.
|
|
4
|
+
|
|
5
|
+
- **Heading:** a short line above the grid; no display.
|
|
6
|
+
- **Body:** a responsive grid of project cards, same size or with slight size variation; image tracks `minmax(0, 1fr)` (50).
|
|
7
|
+
- **Divider:** the filter row above the grid; no internal rules.
|
|
8
|
+
- **Button:** a link inside each card ("View the case study"); no global CTA. The fold's one visible action is the first card's link (44b).
|
|
9
|
+
- **Image:** a thumbnail per card, from the user's work; until it arrives, the projects are set in type with one slot at most (68).
|
|
10
|
+
- **Reveal:** card fade on filter change.
|
|
11
|
+
|
|
12
|
+
Reach for it for design studios, agencies, photographer portfolios, any creative business where the work is the pitch.
|
|
13
|
+
|
|
14
|
+
Avoid for products. Portfolio Grid is a service-business shape.
|
|
15
|
+
|
|
16
|
+
Compositions: Grid with a filter row (`layout.md` § 5).
|
|
17
|
+
|
|
18
|
+
**Sample opening lines** (name the volume and the era):
|
|
19
|
+
> *"Selected work, 2018 to 2026."* A date range, nothing else.
|
|
20
|
+
> *"Twelve projects, six clients, two countries."* Three counts, no adjective.
|
|
21
|
+
> *"Work, indexed by year."* The index is the whole site.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## 19 · Map / Diagram
|
|
2
|
+
|
|
3
|
+
A single large spatial diagram organises the page: flowchart, floor plan, network graph, system map. Information is laid out spatially, not linearly.
|
|
4
|
+
|
|
5
|
+
- **Heading:** an orientation head at the section size above or beside the map; the map carries the page.
|
|
6
|
+
- **Body:** the map itself, nodes and edges, with a legend.
|
|
7
|
+
- **Divider:** none inside; the diagram is one composition.
|
|
8
|
+
- **Button:** links inside nodes; the page's one action sits with the orientation phrase, inside the fold (44b), never under the map.
|
|
9
|
+
- **Image:** the map is the image: SVG drawn from the real places or the real system, with hover states, labelled or `aria-hidden` with a text legend carrying every fact (33). Geometry that is geometry is a first-class medium (47c).
|
|
10
|
+
- **Reveal:** node-by-node ink-on as the map enters the viewport, capped at five nodes, once.
|
|
11
|
+
|
|
12
|
+
Reach for it for system overviews, ecosystem maps, process diagrams, organisation charts.
|
|
13
|
+
|
|
14
|
+
Avoid as a substitute for narrative. Some stories should not be read spatially.
|
|
15
|
+
|
|
16
|
+
Mobile: under 60rem the map scrolls sideways inside a wrapper, or collapses to an ordered list of its nodes.
|
|
17
|
+
|
|
18
|
+
**Sample opening lines** (name the path or the territory):
|
|
19
|
+
> *"Browser, then API, then database. Tracejam sits between the last two."* Names the layers and the position.
|
|
20
|
+
> *"From stdin, through the pipe, into your dashboard."* Labels the flow drawn below.
|
|
21
|
+
> *"Three tiers across two regions, one ledger."* Counts the system, geographic and structural.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
## 20 · Ecosystem Index
|
|
2
|
+
|
|
3
|
+
Multiple discovery surfaces: featured, latest, by category, by people. The platform's value is browsing, not declaration.
|
|
4
|
+
|
|
5
|
+
- **Heading:** a prompt positioning line; no display.
|
|
6
|
+
- **Body:** several horizontal rails or grids, each surfacing a different cut of the platform's content.
|
|
7
|
+
- **Divider:** each rail opens with its own `<h2>`, never a label band; a hairline or a change of paper between rails.
|
|
8
|
+
- **Button:** a link at each rail's edge carrying a verb ("See all templates"); rarely a global CTA, so the fold's one visible action is the first rail's link (44b).
|
|
9
|
+
- **Image:** thumbnails throughout; the page is dense imagery, all of it the platform's real content.
|
|
10
|
+
- **Reveal:** none.
|
|
11
|
+
|
|
12
|
+
Reach for it for community platforms, content marketplaces, asset stores, any curated catalogue front page.
|
|
13
|
+
|
|
14
|
+
Avoid for single-product pages. Ecosystem needs several things to surface.
|
|
15
|
+
|
|
16
|
+
**Sample opening lines** (rail headings, dated, with a count):
|
|
17
|
+
> *"Featured this week."* Then *"Latest."* Then *"By category."* Three rail headings, each on its own line.
|
|
18
|
+
> *"What is on this week, the editor's pick, and the whole catalogue."* Names cadence, curation and breadth in one sentence.
|
|
19
|
+
> *"Made by the people who use it, sorted by the people who read it."* Second-position copy that breaks the template.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## 21 · Component Playground
|
|
2
|
+
|
|
3
|
+
Interactive code-and-preview blocks are the page's primary content. Each block previews a thing and shows how to copy it.
|
|
4
|
+
|
|
5
|
+
- **Heading:** each category is a real `<h2>` ("Buttons", "Forms", "Cards") in the display face, sentence case; never a label band.
|
|
6
|
+
- **Body:** a preview, then its code, block after block, often with a tab row to switch frameworks; the row scrolls sideways under 60rem.
|
|
7
|
+
- **Divider:** a change of paper per category; hairlines between examples.
|
|
8
|
+
- **Button:** a "Copy" button on every code block; its label swaps to "Copied", never a toast (16).
|
|
9
|
+
- **Image:** the previews are the imagery; one photograph band of the real machines or setting at most.
|
|
10
|
+
- **Reveal:** none.
|
|
11
|
+
|
|
12
|
+
Reach for it for design systems, component libraries, snippet sites, framework documentation.
|
|
13
|
+
|
|
14
|
+
Avoid for marketing pages. Playground is utility, not pitch.
|
|
15
|
+
|
|
16
|
+
Mono is legal here only inside the code blocks (64); tab labels and captions stay in the body face.
|
|
17
|
+
|
|
18
|
+
**Sample opening lines** (tangible: open on a real example, not a claim):
|
|
19
|
+
> *"Try it inline. Then take it home."* Two short imperatives.
|
|
20
|
+
> *"Every example is editable. Every output is real."* Pairs the claim with its proof.
|
|
21
|
+
> *"From `npm install` to your first chart in eight lines."* Names the step count, makes a concrete promise.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Macrostructures
|
|
2
|
+
|
|
3
|
+
Twenty-one named landing-page shapes. Each is a complete fingerprint (heading placement, body composition, divider language, button voice, image treatment, reveal pattern) bundled under one name. **This is a vocabulary, not a menu.** Design the page the prompt asks for, then name the shape you designed so Rotation and gate 32 have something to read; reaching in here first and building whatever comes back is how twenty-one shapes collapse into the same three. When nothing here fits what you designed, say so, describe the shape as a fingerprint (§ The fingerprint, below), and give it a short name for the stamp and the log (*a season page*).
|
|
4
|
+
|
|
5
|
+
## The 21 macrostructures, index
|
|
6
|
+
|
|
7
|
+
**Read only the one file** for the shape you landed on, from `references/macrostructures/`. Do not load the whole catalogue. Slugs are stable; Rotation reads the shape from the stamp and the log. Nav and footer are part of the shape, settled with the hero. Each shape file names the `layout.md` compositions it is built from; the code is yours.
|
|
8
|
+
|
|
9
|
+
- **01 · Bento Grid.** Modular blocks of varying sizes laid out as an irregular grid. Each block is a feature, a figure, an image or a quote the user supplied. Rhythm comes from size variation, not card uniformity. [`macrostructures/01-bento-grid.md`](macrostructures/01-bento-grid.md)
|
|
10
|
+
- **02 · Long Document.** Reads like a memo, a letter or a journal entry. No marketing structure. Continuous prose with inline section heads. The page is literature about the product. [`macrostructures/02-long-document.md`](macrostructures/02-long-document.md)
|
|
11
|
+
- **03 · Marquee Hero.** The hero is the page above the fold. A single statement or visual fills the viewport. Below the fold the page becomes something else (a list, a grid, prose). [`macrostructures/03-marquee-hero.md`](macrostructures/03-marquee-hero.md)
|
|
12
|
+
- **04 · Stat-Led.** The hero is a figure the user gave, with the line that says what it means. Everything that follows supports or qualifies it. [`macrostructures/04-stat-led.md`](macrostructures/04-stat-led.md)
|
|
13
|
+
- **05 · Workbench.** Real product captures are the primary content. The page is a guided tour of the app in use, with short captions in place of marketing copy. [`macrostructures/05-workbench.md`](macrostructures/05-workbench.md)
|
|
14
|
+
- **06 · Conversational FAQ.** Bold questions, prompt answers. The page reads like an honest interview with the product. Each pair may be a disclosure. [`macrostructures/06-conversational-faq.md`](macrostructures/06-conversational-faq.md)
|
|
15
|
+
- **07 · Manifesto.** Polemical large type. The page tells the reader what to believe before it tells them what to buy. [`macrostructures/07-manifesto.md`](macrostructures/07-manifesto.md)
|
|
16
|
+
- **08 · Photographic.** A single huge image dominates each fold. Text is small annotation, not headline. The design says look before it says read. [`macrostructures/08-photographic.md`](macrostructures/08-photographic.md)
|
|
17
|
+
- **09 · Quote-Led.** The hero is a quote the user supplied, with its attribution. The headline is someone else's voice. [`macrostructures/09-quote-led.md`](macrostructures/09-quote-led.md)
|
|
18
|
+
- **10 · Specimen.** Large serif display, asymmetric spans, hairline rules, a typographic CTA, generous whitespace. Only for prompts about type, publishing or writing (a foundry, a journal, a press); the editorial genre alone does not qualify. [`macrostructures/10-specimen.md`](macrostructures/10-specimen.md)
|
|
19
|
+
- **11 · Catalogue.** Uniform grid of variations of the same thing: typefaces, palettes, SKUs. The page is a visual index of inventory. [`macrostructures/11-catalogue.md`](macrostructures/11-catalogue.md)
|
|
20
|
+
- **12 · Letter.** First-person, written, intimate. Opens with a greeting. Reads as a personal note from the founder. [`macrostructures/12-letter.md`](macrostructures/12-letter.md)
|
|
21
|
+
- **13 · Index-First.** The page is a list of links. No hero image, no narrative flow. Navigation as design. [`macrostructures/13-index-first.md`](macrostructures/13-index-first.md)
|
|
22
|
+
- **14 · Narrative Workflow.** Numbered stages tell the story of how the user uses the product over time. Each section is a phase; the page is a process timeline. [`macrostructures/14-narrative-workflow.md`](macrostructures/14-narrative-workflow.md)
|
|
23
|
+
- **15 · Split Studio.** Diptych. Every major block divides the screen, text on one side, proof on the other; the proof keeps its side and the rows vary by weight. [`macrostructures/15-split-studio.md`](macrostructures/15-split-studio.md)
|
|
24
|
+
- **16 · Feature Stack.** Sticky left pane holding the heading, scroll-synced right pane cycling through related captures. Paced like film. [`macrostructures/16-feature-stack.md`](macrostructures/16-feature-stack.md)
|
|
25
|
+
- **17 · Type Specimen.** The typeface is the design. Foundry pages and design systems where a custom face is the proof. [`macrostructures/17-type-specimen.md`](macrostructures/17-type-specimen.md)
|
|
26
|
+
- **18 · Portfolio Grid.** Filterable cards of projects. Studio and designer homepages where the work is the product. [`macrostructures/18-portfolio-grid.md`](macrostructures/18-portfolio-grid.md)
|
|
27
|
+
- **19 · Map / Diagram.** A single large spatial diagram organises the page: flowchart, floor plan, network graph, system map. [`macrostructures/19-map-diagram.md`](macrostructures/19-map-diagram.md)
|
|
28
|
+
- **20 · Ecosystem Index.** Multiple discovery surfaces: featured, latest, by category, by people. The platform's value is browsing, not declaration. [`macrostructures/20-ecosystem-index.md`](macrostructures/20-ecosystem-index.md)
|
|
29
|
+
- **21 · Component Playground.** Interactive code-and-preview blocks are the page's primary content. Each block previews a thing and shows how to copy it. [`macrostructures/21-component-playground.md`](macrostructures/21-component-playground.md)
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## SaaS section deck: deal it, do not sequence it
|
|
34
|
+
|
|
35
|
+
When the shape is **Bento Grid, Stat-Led, Workbench or Marquee Hero** and the prompt is a B2B SaaS page, build from this deck. Cards have roles, not positions. The base of the deck is made of things the page can show honestly without inventing anything; the top of the deck exists only when the user handed over the material.
|
|
36
|
+
|
|
37
|
+
**Base cards** (always available):
|
|
38
|
+
|
|
39
|
+
| Card | Role | Composition |
|
|
40
|
+
| --- | --- | --- |
|
|
41
|
+
| Spec sheet | what it is, in figures the product ships with: limits, formats, versions, regions | Table or Rows (`layout.md` § 5) |
|
|
42
|
+
| Worked example | the product doing one real job on the user's material: a command and its output, a capture and its caption | Showcase or Split |
|
|
43
|
+
| Changelog | the last three or four entries with their real dates; the page proves it is alive | Rows |
|
|
44
|
+
| Comparison anatomy | the product beside the way it is done today, row by row, no scores | Table |
|
|
45
|
+
| Pricing table | the actual price, two or three tiers; "Contact sales" on every tier says the brand does not trust the buyer | `craft.md` § 9 Pricing |
|
|
46
|
+
| FAQ | real objections answered like a person; "Yes, both providers work out of the box" beats "integrates with leading providers" | [`macrostructures/06-conversational-faq.md`](macrostructures/06-conversational-faq.md) |
|
|
47
|
+
| CTA strip | the ask, once, one button | Band |
|
|
48
|
+
| Footer | the close, in the theme's voice | `layout.md` § 7 |
|
|
49
|
+
|
|
50
|
+
**Material cards** (exist only when the user supplied the material, and the Picks block names what was supplied):
|
|
51
|
+
|
|
52
|
+
| Card | Needs | Without it |
|
|
53
|
+
| --- | --- | --- |
|
|
54
|
+
| Hero visual | a real capture | the product built in a `data-slot` (`imagery.md` § 4), or a typographic hero; never a styled-div UI outside a slot (47c) |
|
|
55
|
+
| Logo row | the user's own customer marks, with permission to show them | the card does not exist; no invented marks, no "Trusted by" line (46a, 54) |
|
|
56
|
+
| Three features | three named capabilities, each with a capture or figure to show | fold them into the worked example or the spec sheet |
|
|
57
|
+
| Testimonials | quotes the user supplied verbatim, with the person's name, role and company as given | the card does not exist; no plausible names, no paraphrase (46a, 19) |
|
|
58
|
+
|
|
59
|
+
**Every deal deviates twice.** (a) Drop at least one base card and name it (the CTA strip is the usual cut; footer never drops). (b) Either promote a second base card into the hero's place (a spec sheet as the hero object says "the numbers are the pitch"; a worked example as the hero says "watch it work") or reorder one adjacent pair meaningfully (pricing before the example says "the price is the pitch"). State both moves in the Picks block: `deck: -cta +changelog` or `deck: -faq · pricing<example`. A deal that keeps at least five cards still reads complete; below five it is a landing strip, not a landing page: re-add cards or switch shape.
|
|
60
|
+
|
|
61
|
+
Cards part by the three `--section-gap` steps, mixed (59), and each fills its section (`layout.md` § 4).
|
|
62
|
+
|
|
63
|
+
The deck is not a template you stamp out: the shape determines how each card looks. A Bento Grid page interleaves the spec sheet and the example inside the grid; a Stat-Led page sequences them top to bottom under the figure; a Marquee Hero page lets the marquee carry the claim and the example carry the proof.
|
|
64
|
+
|
|
65
|
+
For non-SaaS work (Editorial, Manifesto, Letter, Long Document, Quote-Led) this deck does not apply. A bakery does not need a pricing tier comparison.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## How to pick
|
|
70
|
+
|
|
71
|
+
On a theme build the draw deals the shape (SKILL.md Step 2); these steps are for a swap the material forces, or a run without Node.
|
|
72
|
+
|
|
73
|
+
0. **Read the material inventory** (SKILL.md Step 2). A shape built on screenshots or figures needs them, real or as slots the user asked for; with neither, pick a shape that carries type and facts.
|
|
74
|
+
1. **Read the prompt.** Note any words that strongly signal one shape ("data heavy", "tell a story", "a list of links", "many small features", "personal note").
|
|
75
|
+
2. **Read `.hallmark/log.json`** (newest first) and the `shape:` field of any Hallmark stamp in the project; the last three shapes are excluded.
|
|
76
|
+
3. **Match the prompt to a shape** using the index lines above and § Domain to trio below, then open only the file you land on. Most prompts match two to four; pick the one most distant from the logged shapes, and check the mirror test in SKILL.md Step 2.
|
|
77
|
+
4. **State the pick once**, in the Picks block's Shape row and the stamp's `shape:` field.
|
|
78
|
+
5. If torn, take the domain's trio (§ Domain to trio) and pick the one most distant from the log.
|
|
79
|
+
|
|
80
|
+
Two pages Hallmark builds for two different prompts must look like different sites, not colour swaps of one template.
|
|
81
|
+
|
|
82
|
+
## The fingerprint: six axes
|
|
83
|
+
|
|
84
|
+
**1. Heading placement.** Left-margin (marginalia beside the body; a label beside a heading is an eyebrow, gate 54) · Hanging (the heading floats above in air) · Centred display · Bottom-aligned (the heading anchors the base, content above) · Overlapping (over a photo or colour block) · Sticky or pinned · Numbered by structure (a real `<ol>` with `counter()`, or one numeral at graphic scale) · Inline with the body (no break, the heading emerges from the prose). Any placement is fair; what reads as a mistake is a narrow auto-centred head over full-width left-flush content.
|
|
85
|
+
|
|
86
|
+
**2. Body composition.** Single column · Two-column asymmetric (wide body, narrow margin for captions) · Multi-column justified with hyphenation · Marginalia (sidenotes in the outer margin) · Three equal columns (reference density) · Full-bleed with margin reset (65ch body, pull quotes and images bleed) · Asymmetric spans (2-1-3 ratios on a grid).
|
|
87
|
+
|
|
88
|
+
**3. Divider language.** Hairline rule (0.5 to 1px, inset or full-bleed) · Ornament (a fleuron, a dot, a mark) · Negative space (the gap is the divider) · Bleed-colour block (a paper change is the edge) · Double rule. Pick one language for the page and vary its weight and placement by seam (9): the same rule at the same gap at every seam is the template.
|
|
89
|
+
|
|
90
|
+
**4. Button voice.** Solid (one filled primary) · Outlined · Unstyled link (an underlined word) · Oversized solid · Typographic only (a word in a weight, no box) · Form as CTA (the action is fill-this-field).
|
|
91
|
+
|
|
92
|
+
**5. Image treatment.** Full-bleed · Tightly cropped to the grid · Inline with the text · Margin-aligned · None.
|
|
93
|
+
|
|
94
|
+
**6. Reveal pattern.** Fade-up stagger (once, orchestrated) · Horizontal sweep · Type-unmask (a clip-path opening over text) · Number-tick (counters, only on real figures) · Typewriter (a terminal only, the caret inside a typed command) · None.
|
|
95
|
+
|
|
96
|
+
Fingerprint: one choice per axis, written `Hanging|Asymmetric spans|Hairline|Outlined|Margin-aligned|None`. Two rules: coherence (choices from the same world; a justified newspaper body wants a typographic CTA, not an oversized solid) and anti-repetition (no more than three of six axes shared with any of the last three logged entries; a None on Image or Reveal that the theme or the material forces is not a shared choice).
|
|
97
|
+
|
|
98
|
+
## Domain to trio, when the prompt names no shape
|
|
99
|
+
|
|
100
|
+
Three shapes from different families (grid-led, document-led, poster-led, product-led) that fit the domain, never three near-twins; the one most distant from the last logged shape is the pick:
|
|
101
|
+
|
|
102
|
+
| Domain words | Trio |
|
|
103
|
+
| --- | --- |
|
|
104
|
+
| podcast, audio, music, listening | Photographic · Quote-Led · Letter |
|
|
105
|
+
| shop, store, product, merch, commerce | Catalogue · Photographic · Bento Grid |
|
|
106
|
+
| docs, CLI, SDK, API, library, open source | Workbench · Long Document · Component Playground |
|
|
107
|
+
| platform, infra, observability, B2B tool | Bento Grid · Workbench · Stat-Led |
|
|
108
|
+
| agency, studio, case studies, portfolio | Portfolio Grid · Split Studio · Index-First |
|
|
109
|
+
| personal one-pager, about-me, resume | Long Document · Letter · Index-First |
|
|
110
|
+
| restaurant, café, bar, food, menu | Photographic · Long Document · Catalogue |
|
|
111
|
+
| fashion, apparel, beauty, lookbook | Photographic (with real photographs) · Catalogue · Marquee Hero |
|
|
112
|
+
| fintech, banking, payments, trading | Stat-Led · Workbench · Long Document |
|
|
113
|
+
| manifesto, campaign, cause, advocacy | Manifesto · Quote-Led · Stat-Led |
|
|
114
|
+
| editorial, foundry, magazine, type | Specimen · Long Document · Type Specimen |
|
|
115
|
+
| product launch, SaaS marketing | Bento Grid · Workbench · Stat-Led |
|
|
116
|
+
| conference, event, speaker | Marquee Hero · Manifesto · Photographic |
|
|
117
|
+
| no signal at all | Bento Grid · Long Document · Manifesto |
|
|
118
|
+
|
|
119
|
+
Developer docs and developer marketing are different prompts (a walkthrough wants Workbench; the landing wants Bento plus Stat-Led), as are a one-pager and a case-study portfolio; the Step 1 use decides. A vague tone word ("modern", "clean") is read through the genre and stated as an inference, never a second question.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Microinteractions
|
|
2
|
+
|
|
3
|
+
Loaded when the page has stateful UI. `craft.md` § 5 owns the durations, the three easings and the bans; `gates.md` owns the tells (10, 11, 12, 15, 16, 17, 18, 26, 27, 62); the theme's Motion section decides how much moves. This file owns the recipes, and repeats none of them.
|
|
4
|
+
|
|
5
|
+
## Principles
|
|
6
|
+
|
|
7
|
+
- **Motion has a job or it is cut.** Every animation clarifies, guides or confirms. Ask what would be lost if it were instant; if nothing, remove it.
|
|
8
|
+
- **Silent success.** When the user can see the result, no toast. Toasts are for failures and for effects the page cannot show.
|
|
9
|
+
- **Optimism with rollback.** Update the interface at once, send the request behind it, and roll back with a way to retry when it fails.
|
|
10
|
+
- **Reduced motion is a state, not an afterthought.** Every recipe below names it: spatial motion collapses to a 150ms opacity crossfade, functional state still changes.
|
|
11
|
+
- **Keyboard first.** Every hover affordance has a focus equivalent; nothing is hover-only.
|
|
12
|
+
- **Three primitives at most per page** (a reveal, a hover signal, one functional loop such as a marquee or a counter count as three). A theme whose character is still runs none beyond functional state changes.
|
|
13
|
+
|
|
14
|
+
## Recipes
|
|
15
|
+
|
|
16
|
+
Durations are `--dur-micro` 120ms, `--dur-short` 220ms and `--dur-long` 420ms; enters `--ease-out`, exits `--ease-in` at 60 to 75% of the enter, toggles `--ease-in-out`. A spring appears only under a declared spring posture on a playful theme, on the primary control and one character moment (12).
|
|
17
|
+
|
|
18
|
+
**Button press.** Hover is one signal, a colour change; press is a 1px drop, released on pointer up. The focus ring never animates.
|
|
19
|
+
|
|
20
|
+
```css
|
|
21
|
+
.btn { transition: background-color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out); }
|
|
22
|
+
.btn:hover { background: var(--color-paper-3); }
|
|
23
|
+
.btn:active { transform: translateY(1px); }
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Input focus.** The outline appears at once, inset on inputs; the border may deepen one step but its width never changes (39a). The label sits above the field at rest and never moves: a floating label starts life as a placeholder, which is the tell.
|
|
27
|
+
|
|
28
|
+
**Validation.** First on blur once the field has been touched, then on every input; never on the first keystroke. The helper line swaps for the error in the same reserved line (F14): what broke, why, what to do. `aria-invalid` and `aria-describedby` on the field.
|
|
29
|
+
|
|
30
|
+
**Toast.** Failures and invisible effects only (16). One corner, newest pushes the stack one way, nothing else repositions. In over `--dur-long`, 4 to 6s dwell, out at 65%; auto-dismiss pauses on hover and focus; an error toast carries one retry action and does not leave on its own.
|
|
31
|
+
|
|
32
|
+
**Modal.** A `<dialog>` opened with `showModal()`, `inert` on the page behind it. Backdrop fades and the panel scales 0.96 to 1 over `--dur-long` `--ease-out`; it closes at about 65% with `--ease-in`. First focus goes to the first interactive element, not the close button. Reduced motion: the 150ms crossfade.
|
|
33
|
+
|
|
34
|
+
**Menu.** The Popover API (light-dismiss, Escape and stacking for free), CSS anchor positioning that flips within 16px of an edge. Opens over `--dur-short` `--ease-out`, closes at 65% with `--ease-in`; items may stagger 30ms when there are eight or fewer.
|
|
35
|
+
|
|
36
|
+
**Tooltip.** Hover delay 800 to 1000ms, focus delay 0 (17); opacity over `--dur-micro`. It stays while the pointer moves onto it and leaves on Escape (WCAG 1.4.13).
|
|
37
|
+
|
|
38
|
+
**Tab change.** The indicator moves by `transform` (translate and scale on the x axis, never `width`) over `--dur-short`; the outgoing panel fades at `--dur-micro`, the incoming one follows. A panel that changes height animates `grid-template-rows: 0fr` to `1fr`, never `height`.
|
|
39
|
+
|
|
40
|
+
**Number tick.** Real figures only (46a). On data load, count from the previous value (zero on first load) over 400 to 800ms with `--ease-out` applied to the value, formatted by `Intl.NumberFormat`. Announce only the final value (`aria-live="polite"`). Reduced motion: the final value at once.
|
|
41
|
+
|
|
42
|
+
**Copy to clipboard.** The label swaps to *Copied* for 2.5s; no toast, the label is the feedback.
|
|
43
|
+
|
|
44
|
+
```js
|
|
45
|
+
btn.addEventListener("click", async () => {
|
|
46
|
+
await navigator.clipboard.writeText(value);
|
|
47
|
+
btn.dataset.state = "copied";
|
|
48
|
+
setTimeout(() => delete btn.dataset.state, 2500);
|
|
49
|
+
});
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Drag to reorder.** The handle appears on hover and on focus; the cursor is `grab`, then `grabbing`; a ghost at 50% opacity follows the pointer and a 1px accent line marks the drop target. Release snaps over `--dur-short` `--ease-out`, no spring. Arrow keys reorder a focused row; `aria-live` announces the move.
|
|
53
|
+
|
|
54
|
+
**Optimistic update.** The row changes at once and the request runs behind it. Success says nothing. Failure rolls the row back over `--dur-short` and raises a toast with *Try again*, which stays until acted on.
|
|
55
|
+
|
|
56
|
+
```js
|
|
57
|
+
const prev = item.done;
|
|
58
|
+
item.done = !prev; render();
|
|
59
|
+
try { await api.update(item); }
|
|
60
|
+
catch { item.done = prev; render(); toast({ tone: "error", message: "Could not save.", action: { label: "Try again", run: retry } }); }
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Search as you type.** Debounce 250ms; while waiting, a quiet signal on the field (the border one step deeper). Matches in `<mark>`. Announce the result count once the debounce settles, never per keystroke.
|
|
64
|
+
|
|
65
|
+
**Command palette.** Opens at once on ⌘K or `/`; the input keeps focus throughout. Arrow keys move a highlight that slides by `transform` over `--dur-micro`; the rows themselves never move. Enter selects, Escape closes. Rows may fade in on first open, never on filtering.
|
|
66
|
+
|
|
67
|
+
**Page-load reveal.** One orchestrated entrance, per `craft.md` § 5: staggered by DOM order, 0.4 to 0.8s in all, IntersectionObserver rather than scroll listeners, once. A still theme skips it, and that is correct.
|
|
68
|
+
|
|
69
|
+
## Motion character
|
|
70
|
+
|
|
71
|
+
Every system declares one: a catalog theme in its Motion section, a custom page in its own stylesheet. The same press is louder in a severe system than in a calm one.
|
|
72
|
+
|
|
73
|
+
| Character | Duration scale | Feels like |
|
|
74
|
+
| --- | --- | --- |
|
|
75
|
+
| **still** | none | Print. Nothing moves; a caret may blink inside a typed command, four or five beats and then solid, never on its own. |
|
|
76
|
+
| **severe** | 0.7 to 0.75 times | Fast and decisive; snaps into place; no spring anywhere. |
|
|
77
|
+
| **brisk** | 0.85 to 0.9 times | Technical and functional: an instrument panel. |
|
|
78
|
+
| **calm** | 1.0 to 1.3 times | Restrained to generous, `--ease-out` at its gentlest. |
|
|
79
|
+
|
|
80
|
+
Most pages have too much motion, not too little. The static answer is usually the right one.
|