@prestyj/cli 5.28.0 → 5.29.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/README.md +2 -2
- package/assets/motion/THIRD-PARTY.md +14 -19
- package/assets/motion/bin/contact-sheet.mjs +9 -3
- package/assets/motion/bin/cues.mjs +337 -0
- package/assets/motion/bin/flash-check.mjs +314 -0
- package/assets/motion/bin/fonts.mjs +17 -13
- package/assets/motion/bin/library.mjs +61 -18
- package/assets/motion/bin/motion-blur.mjs +943 -0
- package/assets/motion/bin/motion-check.mjs +366 -9
- package/assets/motion/bin/music-fit.mjs +436 -0
- package/assets/motion/bin/pdf-extract.mjs +22 -10
- package/assets/motion/bin/reference-study.mjs +346 -0
- package/assets/motion/bin/score-synth.mjs +1052 -93
- package/assets/motion/fonts/finger-paint/OFL.txt +93 -0
- package/assets/motion/fonts/finger-paint/finger-paint-normal.woff2 +0 -0
- package/assets/motion/fonts/fonts.json +56 -0
- package/assets/motion/fonts/short-stack/OFL.txt +94 -0
- package/assets/motion/fonts/short-stack/short-stack-normal.woff2 +0 -0
- package/assets/motion/fonts/sora/OFL.txt +93 -0
- package/assets/motion/fonts/sora/sora-normal.woff2 +0 -0
- package/assets/motion/fonts/specimen.jpg +0 -0
- package/assets/motion/fonts/unbounded/OFL.txt +93 -0
- package/assets/motion/fonts/unbounded/unbounded-normal.woff2 +0 -0
- package/assets/motion/library/README.md +52 -14
- package/assets/motion/library/kit/moves.js +1981 -0
- package/assets/motion/library/library.json +232 -0
- package/assets/motion/library/pieces/camera-rig/meta.json +13 -0
- package/assets/motion/library/pieces/camera-rig/piece.html +153 -0
- package/assets/motion/library/pieces/camera-rig/preview.jpg +0 -0
- package/assets/motion/library/pieces/chain-knock/meta.json +13 -0
- package/assets/motion/library/pieces/chain-knock/piece.html +195 -0
- package/assets/motion/library/pieces/chain-knock/preview.jpg +0 -0
- package/assets/motion/library/pieces/gather-to-logo/meta.json +13 -0
- package/assets/motion/library/pieces/gather-to-logo/piece.html +159 -0
- package/assets/motion/library/pieces/gather-to-logo/preview.jpg +0 -0
- package/assets/motion/library/pieces/morph-carry/meta.json +13 -0
- package/assets/motion/library/pieces/morph-carry/piece.html +173 -0
- package/assets/motion/library/pieces/morph-carry/preview.jpg +0 -0
- package/assets/motion/library/pieces/one-shape-journey/meta.json +13 -0
- package/assets/motion/library/pieces/one-shape-journey/piece.html +195 -0
- package/assets/motion/library/pieces/one-shape-journey/preview.jpg +0 -0
- package/assets/motion/library/pieces/open-from-subject/meta.json +13 -0
- package/assets/motion/library/pieces/open-from-subject/piece.html +168 -0
- package/assets/motion/library/pieces/open-from-subject/preview.jpg +0 -0
- package/assets/motion/library/pieces/request-to-result/meta.json +13 -0
- package/assets/motion/library/pieces/request-to-result/piece.html +212 -0
- package/assets/motion/library/pieces/request-to-result/preview.jpg +0 -0
- package/assets/motion/library/pieces/scale-dive/meta.json +13 -0
- package/assets/motion/library/pieces/scale-dive/piece.html +321 -0
- package/assets/motion/library/pieces/scale-dive/preview.jpg +0 -0
- package/assets/motion/library/pieces/screen-replica-steps/meta.json +13 -0
- package/assets/motion/library/pieces/screen-replica-steps/piece.html +366 -0
- package/assets/motion/library/pieces/screen-replica-steps/preview.jpg +0 -0
- package/assets/motion/library/pieces/zoom-into-card/meta.json +13 -0
- package/assets/motion/library/pieces/zoom-into-card/piece.html +179 -0
- package/assets/motion/library/pieces/zoom-into-card/preview.jpg +0 -0
- package/assets/motion/library/sheets/diagram.jpg +0 -0
- package/assets/motion/library/sheets/frame.jpg +0 -0
- package/assets/motion/library/sheets/transition.jpg +0 -0
- package/assets/motion/library/sheets/ui.jpg +0 -0
- package/assets/motion/plugin.json +1 -1
- package/assets/motion/references/build-sheet.md +206 -0
- package/assets/motion/references/runtime/determinism-rules.md +3 -3
- package/assets/motion/references/runtime/gsap-easing-and-stagger.md +28 -28
- package/assets/motion/references/runtime/gsap.md +3 -3
- package/assets/motion/references/runtime/inputs-and-assets.md +21 -16
- package/assets/motion/references/runtime/lint-validate-inspect.md +3 -3
- package/assets/motion/references/runtime/minimal-composition.md +6 -0
- package/assets/motion/references/runtime/preview-render.md +3 -3
- package/assets/motion/skills/app-walkthrough/SKILL.md +66 -0
- package/assets/motion/skills/before-after/SKILL.md +53 -0
- package/assets/motion/skills/brand-kit/SKILL.md +17 -16
- package/assets/motion/skills/dev-tool-video/SKILL.md +57 -0
- package/assets/motion/skills/launch-video/SKILL.md +62 -0
- package/assets/motion/skills/match-reference/SKILL.md +58 -0
- package/assets/motion/skills/motion/SKILL.md +167 -98
- package/assets/motion/skills/source-ingest/SKILL.md +23 -15
- package/assets/motion/skills/website-video/SKILL.md +59 -0
- package/assets/skills/bulletproof/SKILL.md +36 -11
- package/assets/skills/bulletproof/references/agent-surface.md +19 -9
- package/assets/skills/bulletproof/references/audit-protocol.md +20 -5
- package/assets/skills/bulletproof/references/platform-playbooks.md +5 -4
- package/assets/skills/bulletproof/references/provenance.md +26 -1
- package/assets/skills/bulletproof/references/secure-defaults.md +6 -5
- package/assets/skills/bulletproof/references/supply-chain.md +21 -17
- package/assets/skills/bulletproof/references/threat-landscape.md +28 -26
- package/assets/skills/bulletproof/references/verification.md +2 -0
- package/assets/skills/clarify/SKILL.md +25 -16
- package/assets/skills/code-review/SKILL.md +71 -13
- package/assets/skills/code-review/references/agent-diffs.md +27 -0
- package/assets/skills/code-review/references/tests.md +19 -0
- package/assets/skills/compliance-guard/SKILL.md +20 -5
- package/assets/skills/compliance-guard/references/artifacts.md +1 -1
- package/assets/skills/compliance-guard/references/eu-uk.md +16 -16
- package/assets/skills/compliance-guard/references/lawsuit-vectors.md +5 -5
- package/assets/skills/compliance-guard/references/provenance.md +41 -2
- package/assets/skills/compliance-guard/references/sector-gates.md +3 -3
- package/assets/skills/compliance-guard/references/security-baseline.md +2 -2
- package/assets/skills/compliance-guard/references/trigger-map.md +5 -5
- package/assets/skills/compliance-guard/references/us.md +27 -21
- package/assets/skills/durable/SKILL.md +87 -79
- package/assets/skills/durable/references/agent-db-safety.md +69 -0
- package/assets/skills/durable/references/backups-and-runtime.md +19 -12
- package/assets/skills/durable/references/migrations-and-schema.md +13 -6
- package/assets/skills/evidence-led-ui/SKILL.md +69 -127
- package/assets/skills/evidence-led-ui/references/anti-defaults.md +107 -208
- package/assets/skills/evidence-led-ui/references/direction.md +124 -0
- package/assets/skills/evidence-led-ui/references/production-contract.md +8 -0
- package/assets/skills/evidence-led-ui/references/provenance.md +24 -1
- package/assets/skills/lean/SKILL.md +90 -71
- package/assets/skills/lean/references/memory-and-processes.md +3 -2
- package/assets/skills/lean/references/playbooks.md +37 -12
- package/assets/skills/refactoring/SKILL.md +24 -3
- package/assets/skills/refactoring/references/agent-pitfalls.md +4 -1
- package/assets/skills/refactoring/references/legacy.md +21 -0
- package/assets/skills/root-cause/SKILL.md +20 -10
- package/assets/skills/shared-language/SKILL.md +16 -14
- package/assets/skills/tdd/SKILL.md +27 -15
- package/dist/app-sidecar.js +203 -47
- package/dist/app-sidecar.js.map +1 -1
- package/dist/cli.js +20 -28
- package/dist/cli.js.map +1 -1
- package/dist/core/acceptance-checks.d.ts +48 -0
- package/dist/core/acceptance-checks.js +144 -0
- package/dist/core/acceptance-checks.js.map +1 -0
- package/dist/core/agent-session.d.ts +119 -75
- package/dist/core/agent-session.js +561 -395
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/agents.d.ts +6 -5
- package/dist/core/agents.js +12 -3
- package/dist/core/agents.js.map +1 -1
- package/dist/core/ask-user.d.ts +90 -8
- package/dist/core/ask-user.js +124 -13
- package/dist/core/ask-user.js.map +1 -1
- package/dist/core/auth-providers.js +1 -1
- package/dist/core/auth-providers.js.map +1 -1
- package/dist/core/autopilot-verdict.d.ts +5 -1
- package/dist/core/autopilot-verdict.js +30 -13
- package/dist/core/autopilot-verdict.js.map +1 -1
- package/dist/core/bundled-agents.js +1 -3
- package/dist/core/bundled-agents.js.map +1 -1
- package/dist/core/cache-diagnostics.d.ts +68 -0
- package/dist/core/cache-diagnostics.js +196 -0
- package/dist/core/cache-diagnostics.js.map +1 -0
- package/dist/core/cache-expiry.d.ts +87 -0
- package/dist/core/cache-expiry.js +111 -0
- package/dist/core/cache-expiry.js.map +1 -0
- package/dist/core/compaction/compactor.js +78 -48
- package/dist/core/compaction/compactor.js.map +1 -1
- package/dist/core/compaction/plan-step-policy.d.ts +46 -0
- package/dist/core/compaction/plan-step-policy.js +57 -0
- package/dist/core/compaction/plan-step-policy.js.map +1 -0
- package/dist/core/destructive-git-guard.d.ts +90 -0
- package/dist/core/destructive-git-guard.js +871 -0
- package/dist/core/destructive-git-guard.js.map +1 -0
- package/dist/core/event-bus.d.ts +3 -0
- package/dist/core/event-bus.js +5 -0
- package/dist/core/event-bus.js.map +1 -1
- package/dist/core/fast-apply-benchmark.d.ts +1 -1
- package/dist/core/fast-apply-benchmark.js +2 -2
- package/dist/core/fast-apply-benchmark.js.map +1 -1
- package/dist/core/injection-detect.d.ts +38 -0
- package/dist/core/injection-detect.js +232 -0
- package/dist/core/injection-detect.js.map +1 -0
- package/dist/core/keep-awake.d.ts +88 -0
- package/dist/core/keep-awake.js +251 -0
- package/dist/core/keep-awake.js.map +1 -0
- package/dist/core/mcp/client.d.ts +72 -0
- package/dist/core/mcp/client.js +264 -41
- package/dist/core/mcp/client.js.map +1 -1
- package/dist/core/mcp/content.js +6 -2
- package/dist/core/mcp/content.js.map +1 -1
- package/dist/core/mcp/store.d.ts +6 -1
- package/dist/core/mcp/store.js +12 -1
- package/dist/core/mcp/store.js.map +1 -1
- package/dist/core/mcp/types.d.ts +18 -0
- package/dist/core/model-unavailable.d.ts +14 -0
- package/dist/core/model-unavailable.js +23 -0
- package/dist/core/model-unavailable.js.map +1 -0
- package/dist/core/node-debugger.d.ts +148 -0
- package/dist/core/node-debugger.js +642 -0
- package/dist/core/node-debugger.js.map +1 -0
- package/dist/core/nolan-context.d.ts +7 -5
- package/dist/core/nolan-context.js +106 -16
- package/dist/core/nolan-context.js.map +1 -1
- package/dist/core/nolan-prompt.js +24 -21
- package/dist/core/nolan-prompt.js.map +1 -1
- package/dist/core/package-threats.d.ts +18 -0
- package/dist/core/package-threats.js +168 -0
- package/dist/core/package-threats.js.map +1 -0
- package/dist/core/persistent-shell.d.ts +58 -6
- package/dist/core/persistent-shell.js +331 -49
- package/dist/core/persistent-shell.js.map +1 -1
- package/dist/core/process-manager.d.ts +14 -0
- package/dist/core/process-manager.js +61 -0
- package/dist/core/process-manager.js.map +1 -1
- package/dist/core/progress/git-xp.js +8 -14
- package/dist/core/progress/git-xp.js.map +1 -1
- package/dist/core/project-discovery.js +77 -26
- package/dist/core/project-discovery.js.map +1 -1
- package/dist/core/semantic-search-benchmark.d.ts +1 -1
- package/dist/core/semantic-search-benchmark.js +2 -2
- package/dist/core/semantic-search-benchmark.js.map +1 -1
- package/dist/core/session-history.d.ts +12 -0
- package/dist/core/session-history.js +27 -0
- package/dist/core/session-history.js.map +1 -1
- package/dist/core/session-manager.d.ts +13 -1
- package/dist/core/session-manager.js +38 -18
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-summary-index.d.ts +37 -0
- package/dist/core/session-summary-index.js +172 -0
- package/dist/core/session-summary-index.js.map +1 -0
- package/dist/core/settings-manager.d.ts +2 -0
- package/dist/core/settings-manager.js +10 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/shell-threats-popular-packages.d.ts +11 -0
- package/dist/core/shell-threats-popular-packages.js +675 -0
- package/dist/core/shell-threats-popular-packages.js.map +1 -0
- package/dist/core/shell-threats.d.ts +8 -0
- package/dist/core/shell-threats.js +186 -0
- package/dist/core/shell-threats.js.map +1 -0
- package/dist/core/skills.js +16 -4
- package/dist/core/skills.js.map +1 -1
- package/dist/core/stream-rules.d.ts +30 -0
- package/dist/core/stream-rules.js +151 -0
- package/dist/core/stream-rules.js.map +1 -0
- package/dist/core/subagent-manager.d.ts +23 -6
- package/dist/core/subagent-manager.js +25 -9
- package/dist/core/subagent-manager.js.map +1 -1
- package/dist/core/subagent-policy.js +1 -1
- package/dist/core/subagent-policy.js.map +1 -1
- package/dist/core/subagent-receipt.d.ts +54 -0
- package/dist/core/subagent-receipt.js +276 -0
- package/dist/core/subagent-receipt.js.map +1 -0
- package/dist/core/subagent-turn-record.d.ts +2 -0
- package/dist/core/subagent-turn-record.js.map +1 -1
- package/dist/core/test-impact.d.ts +73 -0
- package/dist/core/test-impact.js +467 -0
- package/dist/core/test-impact.js.map +1 -0
- package/dist/core/thinking-level.d.ts +1 -1
- package/dist/core/thinking-level.js +1 -1
- package/dist/core/thinking-level.js.map +1 -1
- package/dist/core/verification-gate.d.ts +2 -0
- package/dist/core/verification-gate.js +4 -0
- package/dist/core/verification-gate.js.map +1 -1
- package/dist/core/verification-snapshot.js +3 -5
- package/dist/core/verification-snapshot.js.map +1 -1
- package/dist/core/workspace-guard.d.ts +18 -7
- package/dist/core/workspace-guard.js +227 -60
- package/dist/core/workspace-guard.js.map +1 -1
- package/dist/core/worktree-setup.d.ts +23 -0
- package/dist/core/worktree-setup.js +128 -9
- package/dist/core/worktree-setup.js.map +1 -1
- package/dist/core/worktree.d.ts +20 -2
- package/dist/core/worktree.js +74 -31
- package/dist/core/worktree.js.map +1 -1
- package/dist/interactive.js +2 -1
- package/dist/interactive.js.map +1 -1
- package/dist/modes/json-mode.js +11 -2
- package/dist/modes/json-mode.js.map +1 -1
- package/dist/modes/subagent-worker-mode.d.ts +36 -1
- package/dist/modes/subagent-worker-mode.js +100 -42
- package/dist/modes/subagent-worker-mode.js.map +1 -1
- package/dist/motion-agent/motion-agent.d.ts +7 -3
- package/dist/motion-agent/motion-agent.js +6 -8
- package/dist/motion-agent/motion-agent.js.map +1 -1
- package/dist/motion-agent/motion-prompt.d.ts +1 -1
- package/dist/motion-agent/motion-prompt.js +16 -25
- package/dist/motion-agent/motion-prompt.js.map +1 -1
- package/dist/motion-agent/motion-review-session.js +1 -1
- package/dist/motion-agent/motion-review-session.js.map +1 -1
- package/dist/motion-agent/motion-review.d.ts +10 -3
- package/dist/motion-agent/motion-review.js +15 -7
- package/dist/motion-agent/motion-review.js.map +1 -1
- package/dist/motion-agent/motion-studio-context.js +1 -1
- package/dist/motion-agent/motion-studio-context.js.map +1 -1
- package/dist/system-prompt.d.ts +2 -1
- package/dist/system-prompt.js +15 -4
- package/dist/system-prompt.js.map +1 -1
- package/dist/test-support/keep-alive.d.ts +14 -0
- package/dist/test-support/keep-alive.js +17 -0
- package/dist/test-support/keep-alive.js.map +1 -0
- package/dist/tools/ask-user.js +3 -3
- package/dist/tools/ask-user.js.map +1 -1
- package/dist/tools/bash-read-evidence.d.ts +10 -0
- package/dist/tools/bash-read-evidence.js +133 -0
- package/dist/tools/bash-read-evidence.js.map +1 -0
- package/dist/tools/bash.d.ts +10 -1
- package/dist/tools/bash.js +179 -7
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/debug.d.ts +54 -0
- package/dist/tools/debug.js +233 -0
- package/dist/tools/debug.js.map +1 -0
- package/dist/tools/edit.js +13 -5
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/goals.d.ts +1 -1
- package/dist/tools/index.d.ts +25 -2
- package/dist/tools/index.js +48 -7
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/prompt-hints.js +2 -0
- package/dist/tools/prompt-hints.js.map +1 -1
- package/dist/tools/read-tracker.d.ts +35 -2
- package/dist/tools/read-tracker.js +108 -11
- package/dist/tools/read-tracker.js.map +1 -1
- package/dist/tools/read.js +39 -7
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/skill.js +5 -0
- package/dist/tools/skill.js.map +1 -1
- package/dist/tools/subagent-control.js +44 -8
- package/dist/tools/subagent-control.js.map +1 -1
- package/dist/tools/subagent-shared.d.ts +48 -8
- package/dist/tools/subagent-shared.js +75 -14
- package/dist/tools/subagent-shared.js.map +1 -1
- package/dist/tools/subagent.d.ts +8 -2
- package/dist/tools/subagent.js +28 -10
- package/dist/tools/subagent.js.map +1 -1
- package/dist/tools/task-output.js +3 -2
- package/dist/tools/task-output.js.map +1 -1
- package/dist/tools/task-send.d.ts +1 -1
- package/dist/tools/task-send.js +15 -1
- package/dist/tools/task-send.js.map +1 -1
- package/dist/tools/tool-tiers.d.ts +2 -2
- package/dist/tools/tool-tiers.js +3 -2
- package/dist/tools/tool-tiers.js.map +1 -1
- package/dist/tools/truncate.d.ts +21 -0
- package/dist/tools/truncate.js +187 -0
- package/dist/tools/truncate.js.map +1 -1
- package/dist/tools/ui-adopt.js +2 -0
- package/dist/tools/ui-adopt.js.map +1 -1
- package/dist/tools/write.js +4 -3
- package/dist/tools/write.js.map +1 -1
- package/dist/ui/App.d.ts +0 -4
- package/dist/ui/App.js +5 -28
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/components/ActivityIndicator.js +1 -0
- package/dist/ui/components/ActivityIndicator.js.map +1 -1
- package/dist/ui/components/Footer.js +1 -1
- package/dist/ui/components/Footer.js.map +1 -1
- package/dist/ui/hooks/useAgentLoop.d.ts +1 -8
- package/dist/ui/hooks/useAgentLoop.js +1 -119
- package/dist/ui/hooks/useAgentLoop.js.map +1 -1
- package/dist/ui/render.d.ts +2 -4
- package/dist/ui/render.js +3 -2
- package/dist/ui/render.js.map +1 -1
- package/dist/utils/git.d.ts +77 -0
- package/dist/utils/git.js +285 -21
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/github-ci.js +2 -1
- package/dist/utils/github-ci.js.map +1 -1
- package/dist/utils/github.js +11 -9
- package/dist/utils/github.js.map +1 -1
- package/dist/utils/image.d.ts +14 -0
- package/dist/utils/image.js +16 -0
- package/dist/utils/image.js.map +1 -1
- package/dist/utils/process.d.ts +20 -0
- package/dist/utils/process.js +98 -0
- package/dist/utils/process.js.map +1 -1
- package/dist/utils/text.d.ts +12 -0
- package/dist/utils/text.js +11 -0
- package/dist/utils/text.js.map +1 -1
- package/package.json +6 -6
- package/assets/motion/skills/mixkit-split-text-617/SKILL.md +0 -115
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-480.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-494.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-5.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-508.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6525.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6539.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6647.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6663.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6677.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6691.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6706.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6722.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6736.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6750.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6764.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6780.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6794.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6810.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6823.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6872.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-6936.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/compositions/comp-76.json +0 -1
- package/assets/motion/skills/mixkit-split-text-617/data/manifest.json +0 -495
- package/assets/motion/skills/mixkit-split-text-617/references/RECONSTRUCTION.md +0 -201
- package/assets/motion/skills/mixkit-split-text-617/references/VERIFICATION.md +0 -107
- package/assets/motion/skills/mixkit-split-text-617/tools/inspect_motion.py +0 -130
- package/assets/motion/skills/video-qa/SKILL.md +0 -66
- package/dist/core/ideal-review-subagent.d.ts +0 -42
- package/dist/core/ideal-review-subagent.js +0 -95
- package/dist/core/ideal-review-subagent.js.map +0 -1
- package/dist/core/ideal-review.d.ts +0 -82
- package/dist/core/ideal-review.js +0 -242
- package/dist/core/ideal-review.js.map +0 -1
- package/dist/motion-agent/motion-check-tool.d.ts +0 -21
- package/dist/motion-agent/motion-check-tool.js +0 -206
- package/dist/motion-agent/motion-check-tool.js.map +0 -1
|
@@ -1,158 +1,100 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: evidence-led-ui
|
|
3
|
-
description: Use
|
|
3
|
+
description: Use when building or changing web/mobile UI: net-new screens or pages, redesigns, design systems, visual polish, UI review, and mid-build edits touching colour, type, spacing, icons, focus/hover/selected states, borders, dropdown icons, motion, or UI copy layout. Also use when output looks generic or AI-made. Small styling fixes take the small-edit path. Do NOT use for behavior-only wiring with no visual state, copy-only text changes, database/API schemas, CLI output, or standalone image generation; speed/bundle work is lean, legal/privacy review of public pages is compliance-guard.
|
|
4
4
|
license: See LICENSES.md
|
|
5
|
-
compatibility: Full review requires filesystem inspection and rendered screenshots; web research and
|
|
5
|
+
compatibility: Full review requires filesystem inspection and rendered screenshots (deferred `screenshot` tool); web research and device tooling are optional and unavailable checks must be reported as unverified.
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Evidence-Led UI
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Pick your mode, then follow only that section:
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
2. For focus, borders, glass effects, or dropdown icons, read `references/craft-rulings.md` § Control icon insets and § No sticky pointer focus. Identify the rule drawing the defect before adding an override.
|
|
18
|
-
3. Fix the shared owner, not each screen. Check affected variants and remove superseded local treatments within scope. Any supporting copy added or changed must pass § Copy must earn its space in `references/craft-rulings.md`; small edits must not accumulate redundant descriptions.
|
|
19
|
-
4. Run the applicable interaction regression matrix in the craft rulings using the project's browser checks or manual browser verification. Screenshots alone cannot pass interaction checks. Report actual evidence and any unverified platform.
|
|
20
|
-
|
|
21
|
-
## Governing rule
|
|
22
|
-
|
|
23
|
-
Inspect before inventing. Preserve the project's visual language unless the user explicitly requests a redesign. Treat corpus findings as conditional observations, not official brand truth, universal rules, or a house style.
|
|
24
|
-
|
|
25
|
-
Aesthetic distinction is contextual. Semantic structure, operability, responsive stability, performance, honest content, accessibility, and user trust are the non-negotiable floor.
|
|
26
|
-
|
|
27
|
-
## Binding craft defaults
|
|
28
|
-
|
|
29
|
-
Apply these on every UI task. Read `references/craft-rulings.md` when implementing or reviewing their details.
|
|
30
|
-
|
|
31
|
-
- **No emoji UI:** Never use emoji as icons, bullets, status marks, or decoration unless explicitly requested. Reuse the project icon system; otherwise use one coherent icon package.
|
|
32
|
-
- **Uniform geometry:** Align containers, columns, section edges, baselines, dividers, control heights, and repeated component anatomy. Break alignment only for a clear content reason.
|
|
33
|
-
- **One shared content rail:** Default navigation, header, main content, footer, and adjacent sections to the same max-width, inline gutters, and breakpoint padding. Full-bleed backgrounds may differ, but their inner content edges must align. Any different width or offset needs an explicit user or content reason, never one-off margin or padding.
|
|
34
|
-
- **No edge-hugging control icons:** Select, dropdown, and combobox chevrons and other trailing icons need a deliberate inline-end inset plus enough reserved text padding for the icon and gap. They must never touch the control edge or overlap content; use logical properties so the anatomy also works in RTL.
|
|
35
|
-
- **Reuse first:** Search for existing components, variants, tokens, utilities, icon wrappers, focus rings, and motion curves before creating new ones.
|
|
36
|
-
- **Purposeful feedback:** Relevant hover, focus, press, selected, expanded, loading, success, and error states need clear feedback. Avoid abrupt changes when a short transition improves continuity.
|
|
37
|
-
- **No soft semantic tint-on-tint:** Do not default badges, buttons, toasts, cards, selected states, or icon medallions to a low-opacity semantic-color background with saturated same-hue text or icons, with or without a matching border. Unless the user explicitly requests that treatment or an established system must be preserved, choose a product-specific alternative rather than imposing one universal replacement style.
|
|
38
|
-
- **Focus is not selection or decoration:** Diagnose the actual painted layer before changing it. Reuse one shared focus treatment, separate from glass borders/reflections and selected, expanded, or error states. Do not stack local rings on it. Prevent stale pointer-originated highlights without blurring controls, suppressing keyboard focus, or removing legitimate state cues. Prefer native `:focus-visible` behavior; custom modality handling requires a reproduced platform defect and the regression matrix in `references/craft-rulings.md`.
|
|
39
|
-
- **No generic hover lift:** Do not default to `translateY`, bobbing, floating, or scale-up on hover. Prefer color, border, underline, icon fill, opacity, or restrained shadow changes.
|
|
40
|
-
- **No `transition: all`:** Name transition properties, reuse duration/easing tokens, and provide a reduced-motion path.
|
|
41
|
-
- **Intentional type:** Reuse the existing type system. For net-new web work, select an appropriate modern family or pairing; do not use Arial, Helvetica, or bare `system-ui` as the aesthetic direction.
|
|
42
|
-
- **WCAG 2.2 Level AA is the accessibility floor:** Every web UI and complete user flow must meet every applicable Level A and Level AA success criterion, not a hand-picked subset. Native apps apply WCAG2ICT where relevant plus current platform accessibility requirements. Stricter project, contract, platform, or jurisdiction rules win; accessibility cannot be traded for aesthetics, scope, delivery speed, or a higher rubric score.
|
|
43
|
-
- **No unsupported accessibility claims:** Treat ADA as an equal-access legal obligation, not a badge earned by Lighthouse, axe, or another scanner. Never label a UI `ADA compliant` or `WCAG conformant` from source review or automated checks alone; a claim requires a defined scope, per-criterion evidence, manual keyboard and assistive-technology testing, and qualified legal or product-owner review when legal compliance is asserted.
|
|
44
|
-
- **Measured contrast:** Meet WCAG 2.2 contrast for text, controls, icons, focus, and meaningful graphics. Muted text must remain readable.
|
|
45
|
-
- **Consistent flow:** Repeated navigation and actions keep the same order, labels, icons, placement, and behavior across sections and pages.
|
|
46
|
-
- **Copy must earn its space:** Start with clear labels, controls, and relevant status, not automatic subtitles, helper paragraphs, or footer notes. Supporting text must add information needed here that the interface does not already communicate. Remove repetition, show state-specific guidance when needed, and move optional detail into contextual help. Keep essential instructions and consequences visible before action. Reduce unnecessary copy before compressing layout; verify reading effort in the rendered UI. See `references/craft-rulings.md` § Copy must earn its space.
|
|
47
|
-
- **No generated em dashes:** Do not write em dashes in user-facing UI copy unless explicitly requested or exact supplied source text must remain unchanged.
|
|
48
|
-
|
|
49
|
-
## Reference map
|
|
50
|
-
|
|
51
|
-
Resolve every path from the installed skill root. Load only what the task needs:
|
|
52
|
-
|
|
53
|
-
- `references/craft-rulings.md`: implementation detail for the binding defaults above.
|
|
54
|
-
- `references/ui-libraries.md`: real Bklit/Kokonut component discovery/adoption and Motion APIs. Read for relevant React UI creation after checking existing project UI; use deferred `ui_registry` and `ui_adopt` rather than inventing a library lookalike.
|
|
55
|
-
- `references/production-contract.md`: binding pass/fail semantics, WCAG/ADA accessibility, forms, performance, resilience, platform, trust, AI, media, theme, and release checks. Read its accessibility sections for every implemented or reviewed UI; read the full contract for broad features, behavior changes, forms, navigation, data/AI interfaces, native work, performance work, or release review.
|
|
56
|
-
- `references/archetypes.md`: surface-specific direction and relevant source slugs. Read for net-new UI, redesigns, or unresolved visual direction.
|
|
57
|
-
- `references/observed-patterns.md`: measured corpus observations. Read only sections that answer a real design question.
|
|
58
|
-
- `references/anti-defaults.md`: transferable AI-generated patterns to challenge. Read for broad visual work or generic-looking output.
|
|
59
|
-
- `references/quality-rubric.md`: rendered scoring and revision gate. Read before critiquing broad output.
|
|
60
|
-
- `references/methodology.md`: extraction method, denominators, and limitations. Read only to audit evidence.
|
|
61
|
-
- `references/provenance.md` and `LICENSES.md`: sources, licenses, standards status, and Refero boundaries.
|
|
62
|
-
|
|
63
|
-
Do not load `data/observations.json` or the raw corpus by default. Open a raw source only to audit one claim or inspect one selected exemplar. Never load the full corpus into context.
|
|
64
|
-
|
|
65
|
-
## Workflow
|
|
12
|
+
| Situation | Mode | Go to |
|
|
13
|
+
| --- | --- | --- |
|
|
14
|
+
| One control, state, border, icon inset, focus bug, or token tweak | Small edit | § Small-edit path |
|
|
15
|
+
| New screen/page/component, redesign, or "make it look less generic" | Build | § Build loop |
|
|
16
|
+
| "Review this UI", audit screens or flows, pre-ship look | Review | § Review mode |
|
|
66
17
|
|
|
67
|
-
|
|
18
|
+
Every mode obeys § Binding defaults. Preserve the project's visual language unless the user asked for a redesign.
|
|
68
19
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
Reuse the local system. Do not add a design library merely to obtain a look. For a net-new project with no neighbors, derive direction from the brief and matching archetype rather than choosing a fashionable default.
|
|
72
|
-
|
|
73
|
-
### 2. Write a design read
|
|
74
|
-
|
|
75
|
-
Resolve:
|
|
76
|
-
|
|
77
|
-
- **Surface:** marketing, application UI, dashboard/data-dense, commerce/marketplace, editorial/content, documentation/developer tool, mobile/native, or one named hybrid with a clear leader.
|
|
78
|
-
- **Audience:** user, expertise, environment, and access needs.
|
|
79
|
-
- **Single job:** the one outcome this screen must make easiest.
|
|
80
|
-
- **Task and risk:** frequency, decision cost, error cost, and time pressure.
|
|
81
|
-
- **Content:** real hierarchy, density, variability, media, data, and longest plausible values.
|
|
82
|
-
- **Platform:** viewport/window, input modes, support policy, navigation behavior, and framework conventions.
|
|
83
|
-
- **Constraints:** existing tokens/assets, redesign scope, performance limits, and required tone.
|
|
84
|
-
|
|
85
|
-
Infer missing facts from the project and state the inference. Ask only when code cannot resolve a genuine product or taste decision.
|
|
86
|
-
|
|
87
|
-
### 3. Select evidence only when it helps
|
|
88
|
-
|
|
89
|
-
For broad net-new work or a redesign, read the matching archetype and usually choose two aligned source slugs plus one contrast. Record why each applies.
|
|
90
|
-
|
|
91
|
-
For a small change in an established system, local components and tokens may be sufficient. A frequency can support investigation, not automatically become a recommendation. Prefer local product evidence, then archetype evidence, then corpus-wide frequency.
|
|
92
|
-
|
|
93
|
-
Refero is optional. Use it only through an authorized Refero MCP or user-provided authorized export. Do not scrape Refero, call undocumented endpoints, or access disallowed routes.
|
|
94
|
-
|
|
95
|
-
### 4. Form one design thesis
|
|
96
|
-
|
|
97
|
-
State one compact direction:
|
|
98
|
-
|
|
99
|
-
- semantic color/type/icon/spacing/grid/motion roles and a reuse map;
|
|
100
|
-
- first glance, second glance, primary action, and supporting evidence;
|
|
101
|
-
- composition and uniform alignment rules;
|
|
102
|
-
- reasons for borders, surfaces, shadows, blur, gradients, or imagery;
|
|
103
|
-
- feedback, duration/easing, resting behavior, and reduced-motion equivalent;
|
|
104
|
-
- one memorable device grounded in the subject, content, or interaction.
|
|
105
|
-
|
|
106
|
-
One thesis leads. Do not combine several aesthetic directions into a mood-board compromise.
|
|
20
|
+
## Small-edit path
|
|
107
21
|
|
|
108
|
-
|
|
22
|
+
Skip the design workflow, not verification:
|
|
109
23
|
|
|
110
|
-
|
|
24
|
+
1. Read the shared primitive, tokens, state rules, and callers. Reproduce the reported sequence before editing.
|
|
25
|
+
2. Focus, borders, glass, or dropdown icons: read `references/craft-rulings.md` § Control icon insets and § No sticky pointer focus. Find the rule that paints the defect before adding an override.
|
|
26
|
+
3. Fix the shared owner, not each screen. Check variants; remove superseded local treatments in scope. Added copy must pass § Copy must earn its space.
|
|
27
|
+
4. Run the applicable interaction regression matrix in `references/craft-rulings.md` via browser checks. Screenshots alone cannot pass interaction checks. Report actual evidence and unverified platforms.
|
|
111
28
|
|
|
112
|
-
|
|
29
|
+
## Build loop
|
|
113
30
|
|
|
114
|
-
|
|
31
|
+
One design thesis, one author. Do not blend directions.
|
|
115
32
|
|
|
116
|
-
|
|
33
|
+
1. **Inspect.** Read nearest routes, components, tokens, type, icons, motion, and states. Reuse the local system; add no library just for a look. React and nothing local fits: read `references/ui-libraries.md` and use `ui_registry`/`ui_adopt` (via `tool_search`) for real Bklit/Kokonut source, never a lookalike.
|
|
34
|
+
2. **Content first.** Write real headline, labels, section copy, and realistic data (longest, empty, 0/1/many) before layout. Rank it. Delete sections with nothing true to say. Never invent metrics, testimonials, logos, or ratings; label fixtures. Details: `references/direction.md` § 1.
|
|
35
|
+
3. **Read the job.** Surface type, audience, single job, risk, platform, constraints. Infer from the project and state the inference; ask only for genuine taste or product decisions. Net-new or redesign: read the matching section of `references/archetypes.md`.
|
|
36
|
+
4. **Write the thesis** using the template in `references/direction.md` § 2: signature, type roles, OKLCH colour tokens with intended contrast pairs, spacing/density, radius/material, imagery, motion, rejected defaults. Broad work goes in `DESIGN.md`.
|
|
37
|
+
5. **Slop check the thesis** against `references/anti-defaults.md`. Every tell is replaced or justified with "This belongs because…". Run the neighbour test (§ 7 there).
|
|
38
|
+
6. **Plan states:** loading, empty, error, retry, success, disabled, destructive; hover, focus-visible, press, selected, expanded, pending; keyboard order, overlays, narrow/wide, reduced motion, zoom/reflow, long and localized text. Apply the accessibility sections of `references/production-contract.md`; the full contract for forms, navigation, data/AI, native, or release work.
|
|
39
|
+
7. **Implement** the complete flow with real content. Decision-critical information and the primary action stay visible or one obvious action away on desktop and mobile.
|
|
40
|
+
8. **Verify rendered output** (§ Rendered verification loop).
|
|
117
41
|
|
|
118
|
-
|
|
119
|
-
- hover, focus-visible, press, selected, expanded, and pending feedback;
|
|
120
|
-
- keyboard order, accessible names/status, overlay focus, and drag alternatives;
|
|
121
|
-
- pointer-versus-keyboard focus behavior, including native popup dismissal and clicks onto non-focusable space;
|
|
122
|
-
- narrow, intermediate, desktop, wide/resizable, pointer, touch, and no-hover behavior;
|
|
123
|
-
- reduced motion, forced colors, zoom/reflow, long/localized/RTL text, missing media, and realistic data extremes;
|
|
124
|
-
- text alternatives and media equivalents, landmarks/headings, language, labels/instructions/errors, status announcements, timing, flashing, and sensory-independent instructions where applicable.
|
|
42
|
+
## Rendered verification loop
|
|
125
43
|
|
|
126
|
-
|
|
44
|
+
1. Load `screenshot` via `tool_search`. Capture desktop (~1440 px) and mobile (~390 px), plus key states.
|
|
45
|
+
2. Compare each capture against the written thesis line by line, then against `references/anti-defaults.md`.
|
|
46
|
+
3. Score with `references/quality-rubric.md`. Measure contrast of real rendered pairs; record pass/fail/unverified for applicable contract checks.
|
|
47
|
+
4. Fix the weakest criterion and every contract failure. Remove one decorative idea that does not serve the job. Re-capture.
|
|
48
|
+
5. Stop after one revision unless the gate still fails. Gate: **20/24 or higher**, no zero in accessibility, consistency and flow, responsive behaviour, state completeness, or content authenticity, and no applicable WCAG A/AA failure. Small components: 2 on every applicable floor criterion.
|
|
127
49
|
|
|
128
|
-
|
|
50
|
+
No screenshot tool or browser available: say so, mark visual checks unverified, never claim the look was verified.
|
|
129
51
|
|
|
130
|
-
|
|
52
|
+
## Review mode
|
|
131
53
|
|
|
132
|
-
|
|
54
|
+
Inspect code and rendered output. Return findings ordered by impact, each with screenshot or file:line evidence, label (`RUNTIME` observed, `CODE` read in source, `DEDUCED`, `SNAPSHOT` dated source), and the fix. Separate floor defects (accessibility, states, broken layout) from aesthetic opportunities (slop tells). Recommend one resolved direction.
|
|
133
55
|
|
|
134
|
-
|
|
56
|
+
## Binding defaults
|
|
135
57
|
|
|
136
|
-
|
|
58
|
+
Details and fixes: `references/craft-rulings.md`.
|
|
137
59
|
|
|
138
|
-
|
|
60
|
+
- **No emoji UI.** One coherent icon family; reuse the project's.
|
|
61
|
+
- **Uniform geometry and one content rail.** Shared max-width, gutters, and breakpoint padding for nav, header, main, footer. Break alignment only for a stated content reason.
|
|
62
|
+
- **Control icon insets.** Chevrons and trailing icons get a deliberate inline-end inset plus reserved text padding; never touch the edge or overlap text; logical properties for RTL.
|
|
63
|
+
- **Reuse first.** Existing components, variants, tokens, focus rings, motion curves before new ones.
|
|
64
|
+
- **Focus is not selection or decoration.** Diagnose the painted layer; one shared focus treatment separate from borders, glass, selected, expanded, error. No stacked rings. Prefer native `:focus-visible`; custom modality handling needs a reproduced defect and the regression matrix.
|
|
65
|
+
- **No soft semantic tint-on-tint** unless requested or required by an existing variant.
|
|
66
|
+
- **Motion:** no generic hover lift, no `transition: all`, named properties, tokens, reduced-motion path.
|
|
67
|
+
- **Intentional type and colour:** see `references/direction.md`. Not Inter/violet-gradient by default on brand surfaces.
|
|
68
|
+
- **Copy must earn its space.** No automatic subtitles, helper paragraphs, or footer notes; supporting text adds information the interface lacks. Named-outcome CTAs.
|
|
69
|
+
- **No em dashes in UI copy** unless requested or exact supplied copy.
|
|
70
|
+
- **WCAG 2.2 Level AA is the accessibility floor** for every applicable A/AA criterion across complete flows; native apps add WCAG2ICT and platform rules. Stricter project or legal rules win. Accessibility is never traded for aesthetics or speed.
|
|
71
|
+
- **No unsupported accessibility claims.** Never say `ADA compliant`, `WCAG conformant`, or "accessible" from source review or scanners; that needs a defined scope, per-criterion evidence, manual keyboard and assistive-technology testing, and owner/legal review. Dated legal context: `references/production-contract.md` § 2.
|
|
139
72
|
|
|
140
|
-
|
|
73
|
+
## Scaling: one agent or several
|
|
141
74
|
|
|
142
|
-
|
|
75
|
+
| Situation | Policy |
|
|
76
|
+
| --- | --- |
|
|
77
|
+
| Small edit, build, redesign | Main thread only. One thesis, one author; never split a design across children. |
|
|
78
|
+
| Review of one or two flows you can render and read yourself | Main thread only. |
|
|
79
|
+
| Review of many screens/flows, or several apps | Build a ledger: rows = flows/screens × {slop tells, states, accessibility contract, responsive}. Fan out read-only general-purpose children (they have the `skill` tool), one per disjoint flow, all in ONE `spawn_agent` call, ≤ 6 per wave. |
|
|
80
|
+
| A dated legal or platform claim needs checking | One `researcher` child. |
|
|
143
81
|
|
|
144
|
-
|
|
82
|
+
Each child brief contains: the absolute skill root path (the `Skill root directory` shown when this skill loaded), files to read (`references/anti-defaults.md`, `references/quality-rubric.md`, the accessibility sections of `references/production-contract.md`), the flow's routes and how to run the app, the ledger rows it owns, the instruction to capture desktop and mobile screenshots with the `screenshot` tool, the evidence labels, and the output schema: findings (screen, screenshot or file:line, label, severity, fix) plus explicit `checked` and `not checked` lists. Children do not edit.
|
|
145
83
|
|
|
146
|
-
|
|
84
|
+
Merge: a failed, timed-out, or silent row is `not checked`, never clean. Re-open each reported file:line or re-capture before reporting it. Large pre-ship reviews get one fresh verifier child that tries to disprove the findings. Fixes stay on the main thread (or `bee` children on strictly disjoint files) against the single thesis; run checks once after merging.
|
|
147
85
|
|
|
148
|
-
##
|
|
86
|
+
## Reference map
|
|
149
87
|
|
|
150
|
-
|
|
88
|
+
Load only what the task needs; resolve paths from the skill root.
|
|
151
89
|
|
|
152
|
-
|
|
90
|
+
- `references/direction.md`: content-first, thesis template, type, OKLCH colour, spacing, imagery, motion, verified Baseline features, INP practice.
|
|
91
|
+
- `references/anti-defaults.md`: slop tells with replacement moves and the neighbour test.
|
|
92
|
+
- `references/craft-rulings.md`: icons, geometry, insets, focus vs selection, regression matrix, type loading, contrast, copy rules.
|
|
93
|
+
- `references/production-contract.md`: pass/fail semantics, WCAG/ADA/EAA context, forms, performance, platform, trust, AI, release evidence.
|
|
94
|
+
- `references/quality-rubric.md`: rendered scoring gate.
|
|
95
|
+
- `references/ui-libraries.md`: Bklit/Kokonut adoption and Motion APIs.
|
|
96
|
+
- `references/archetypes.md`: surface-specific direction and corpus source slugs.
|
|
97
|
+
- `references/observed-patterns.md`: measured corpus observations; read only the section that answers a question; keep numerator/denominator with any claim.
|
|
98
|
+
- `references/methodology.md`, `references/provenance.md`, `LICENSES.md`: method, sources, standards status, licences, Refero boundary.
|
|
153
99
|
|
|
154
|
-
|
|
155
|
-
- Treat source slugs as observations of selected public surfaces, not official systems or permission to reproduce a brand.
|
|
156
|
-
- Never recommend a color, font, radius, theme, or layout solely because it is frequent.
|
|
157
|
-
- State corpus gaps plainly. Mobile/native has zero direct documents in this snapshot; use platform guidance and device testing.
|
|
158
|
-
- If local evidence conflicts with corpus evidence, follow the product and record why.
|
|
100
|
+
Never load `data/observations.json` or the raw `corpus/` into context; open one raw source only to audit one claim. Corpus frequencies are observations of public surfaces, not brand truth or a reason to pick a colour, font, or layout. Mobile/native has no corpus documents; use platform guidance. Refero only through an authorized MCP or user export.
|
|
@@ -1,211 +1,110 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Slop Tells and Replacement Moves
|
|
2
2
|
|
|
3
3
|
## Contents
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
##
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
**Legitimate when:** The screen is genuinely an overview of heterogeneous modules and tile persistence supports scanning or rearrangement.
|
|
112
|
-
|
|
113
|
-
## Ambient perpetual motion
|
|
114
|
-
|
|
115
|
-
**AI tell:** Marquees, floating particles, pulsing glows, or auto-rotating cards that continue without user intent.
|
|
116
|
-
|
|
117
|
-
**Default action:** Keep the resting screen still; animate state change, spatial continuity, feedback, or a finite narrative beat.
|
|
118
|
-
|
|
119
|
-
**Legitimate when:** Motion is the content (audio, time, live system activity), remains comprehensible when paused, and has a reduced-motion alternative.
|
|
120
|
-
|
|
121
|
-
## Generic icon medallions
|
|
122
|
-
|
|
123
|
-
**AI tell:** Every section starts with a line icon inside the same tinted rounded square.
|
|
124
|
-
|
|
125
|
-
**Default action:** Remove icons that repeat the heading; use diagrams, imagery, or symbols only where recognition becomes faster.
|
|
126
|
-
|
|
127
|
-
**Legitimate when:** Icons support repeated navigation, status scanning, compact controls, or a real category system.
|
|
128
|
-
|
|
129
|
-
## False authenticity
|
|
130
|
-
|
|
131
|
-
**AI tell:** Invented testimonials, logos, avatars, customer counts, ratings, or precise business data.
|
|
132
|
-
|
|
133
|
-
**Default action:** Use real project content; if unavailable, label honest illustrative content plainly and avoid claims.
|
|
134
|
-
|
|
135
|
-
**Legitimate when:** The user explicitly supplies approved fixtures or asks for a clearly marked prototype dataset.
|
|
136
|
-
|
|
137
|
-
## Emoji used as interface imagery
|
|
138
|
-
|
|
139
|
-
**AI tell:** Emoji stand in for icons, status marks, bullets, empty-state art, or section decoration, producing platform-dependent color and inconsistent geometry.
|
|
140
|
-
|
|
141
|
-
**Default action:** Reuse the project's icon system or one coherent icon package, with accessible labels and consistent optical sizing.
|
|
142
|
-
|
|
143
|
-
**Legitimate when:** The user explicitly requests emoji, emoji is the actual content being entered or discussed, or exact supplied source copy must retain it.
|
|
144
|
-
|
|
145
|
-
## Mixed or improvised icon language
|
|
146
|
-
|
|
147
|
-
**AI tell:** Package icons, hand-drawn SVGs, text glyphs, and platform symbols appear together with mismatched stroke, fill, weight, and bounding boxes.
|
|
148
|
-
|
|
149
|
-
**Default action:** Select one installed family and one wrapper component. Normalize size, stroke/fill, color, target, label, and state treatment.
|
|
150
|
-
|
|
151
|
-
**Legitimate when:** A required third-party brand mark or native platform symbol carries meaning that the product icon family cannot replace.
|
|
152
|
-
|
|
153
|
-
## Generic hover lift
|
|
154
|
-
|
|
155
|
-
**AI tell:** Cards and buttons jump upward, scale, bob, or float on every hover regardless of material or task.
|
|
156
|
-
|
|
157
|
-
**Default action:** Use a short background, border, underline, icon-fill, opacity, or restrained shadow transition. Keep geometry stable.
|
|
158
|
-
|
|
159
|
-
**Legitimate when:** Spatial movement communicates actual drag, depth, stacking, or physical direct manipulation, and reduced motion removes non-essential travel.
|
|
160
|
-
|
|
161
|
-
## Abrupt interactive states
|
|
162
|
-
|
|
163
|
-
**AI tell:** Hover, press, expand, selection, loading, success, and error snap with no continuity or acknowledgement.
|
|
164
|
-
|
|
165
|
-
**Default action:** Give every relevant state clear feedback and transition interpolable properties with shared duration/easing tokens. Keep focus visible immediately.
|
|
166
|
-
|
|
167
|
-
**Legitimate when:** Reduced-motion preference, urgent safety feedback, or an inherently discrete state requires an immediate change; meaning must still remain clear.
|
|
168
|
-
|
|
169
|
-
## Accidental misalignment
|
|
170
|
-
|
|
171
|
-
**AI tell:** Almost-shared edges, drifting section widths, mismatched card padding, uneven control heights, and dividers that miss neighboring boundaries.
|
|
172
|
-
|
|
173
|
-
**Default action:** Establish key lines, grid, spacing tokens, component anatomy, and responsive alignment before adding decoration.
|
|
174
|
-
|
|
175
|
-
**Legitimate when:** A deliberate editorial or media break communicates hierarchy and remains visibly intentional across viewports.
|
|
176
|
-
|
|
177
|
-
## Reimplemented local styling
|
|
178
|
-
|
|
179
|
-
**AI tell:** A new button, modal, card, status color, icon wrapper, or focus ring duplicates an existing project primitive with slightly different values.
|
|
180
|
-
|
|
181
|
-
**Default action:** Reuse the existing component or extend its documented variant API. Add a new primitive only for a genuinely different semantic role.
|
|
182
|
-
|
|
183
|
-
**Legitimate when:** The project has no suitable primitive or reuse would corrupt semantics; document the new role and make it reusable.
|
|
184
|
-
|
|
185
|
-
## Generic type by neglect
|
|
186
|
-
|
|
187
|
-
**AI tell:** Net-new aesthetic work ships with Arial, Helvetica, or bare `system-ui` because typography was never designed.
|
|
188
|
-
|
|
189
|
-
**Default action:** Reuse the product type system or choose an intentional, efficiently loaded family/pairing from `craft-rulings.md`. Assign clear display, body, utility, and technical roles.
|
|
190
|
-
|
|
191
|
-
**Legitimate when:** The existing system requires it, native platform fidelity is the goal, network/self-hosted fonts are prohibited, or performance evidence favors the established stack.
|
|
192
|
-
|
|
193
|
-
## Generated em dash voice
|
|
194
|
-
|
|
195
|
-
**AI tell:** UI headings, descriptions, empty states, and helper text repeatedly use em dashes as an LLM writing habit.
|
|
196
|
-
|
|
197
|
-
**Default action:** Rewrite with a period, comma, colon, parentheses, or two sentences.
|
|
198
|
-
|
|
199
|
-
**Legitimate when:** The user explicitly wants em dashes or exact supplied, quoted, brand, or legal copy must remain unchanged.
|
|
200
|
-
|
|
201
|
-
## Anti-default review
|
|
202
|
-
|
|
203
|
-
Before implementation, flag every pattern above that appears in the thesis. Keep a flagged choice only with its one-sentence product-specific justification.
|
|
204
|
-
|
|
205
|
-
After the first screenshot:
|
|
206
|
-
|
|
207
|
-
1. Cover the logo and product name. Identify what still makes the screen specific.
|
|
208
|
-
2. Remove one decorative idea and compare hierarchy.
|
|
209
|
-
3. Replace one block of generic copy with real content.
|
|
210
|
-
4. Check whether the signature survives mobile without becoming clutter.
|
|
211
|
-
5. If another unrelated product could use the same screenshot unchanged, revise the weakest area.
|
|
5
|
+
1. How to use this list
|
|
6
|
+
2. Composition tells
|
|
7
|
+
3. Colour, type, and surface tells
|
|
8
|
+
4. Content and copy tells
|
|
9
|
+
5. Motion and interaction tells
|
|
10
|
+
6. Craft regressions
|
|
11
|
+
7. Calibration: the default clusters
|
|
12
|
+
8. Final slop review
|
|
13
|
+
|
|
14
|
+
## 1. How to use this list
|
|
15
|
+
|
|
16
|
+
A tell is not a ban. It is a choice that appears whatever the subject, so it signals "nobody decided this". Where the user's brief or the existing product pins down a direction, follow it exactly, even if it matches a tell. Where an axis is free, do not spend it on a tell.
|
|
17
|
+
|
|
18
|
+
For each tell found in a plan or render, apply the replacement move, or keep it only if the "Keep when" condition holds and you write one sentence: **"This belongs because…"** naming the product, audience, or content reason. "Modern", "premium", "clean", "engaging", or "on brand" is not a reason.
|
|
19
|
+
|
|
20
|
+
Run the list twice: on the written design thesis before code, and on desktop + mobile screenshots after.
|
|
21
|
+
|
|
22
|
+
## 2. Composition tells
|
|
23
|
+
|
|
24
|
+
| Tell | Replacement move | Keep when |
|
|
25
|
+
| --- | --- | --- |
|
|
26
|
+
| Centered gradient hero: oversized centered headline, violet/blue glow, two CTAs, floating screenshot below | Open with the most characteristic thing in the subject's world: real product state, real data, a working demo, a strong photograph, or a plain typographic claim. Choose alignment after content. | The brand owns the gradient/light, the page has one conversion job, and the centered pause serves the narrative. |
|
|
27
|
+
| Three equal icon-title-copy feature cards | Rank the content; give the main point more space; show the feature working; use a list or table for true peers. | Exactly three peer choices exist and comparison is the task. |
|
|
28
|
+
| Bento grid by default | Map module size to priority and reading order; use a sequence or list otherwise. | A genuine overview of heterogeneous modules that users scan or rearrange. |
|
|
29
|
+
| SaaS card kit: everything in identical rounded cards, one radius, same soft grey shadow | Group with whitespace and alignment. Containers only for real objects (selectable, draggable, separate records). Radius varies by role. | The items really are separate records. |
|
|
30
|
+
| Decorative eyebrow: tracked ALL-CAPS or mono label above every heading | Delete it. | It names real taxonomy, step, status, or technical context. |
|
|
31
|
+
| Numbered markers (01 / 02 / 03) on non-sequential content | Remove numbers. | The content is a real sequence: steps, timeline, ranking. |
|
|
32
|
+
| Big-number stat strip ("10x faster", "99.9%", "50k+") | Show a sourced metric with unit, time frame, and consequence, or remove it. | The metric is auditable and central to the screen's decision. |
|
|
33
|
+
| Floating tilted screenshot or fake dashboard mockup | Real UI at readable scale, cropped to the part that proves the adjacent claim. | Spatial overview matters, the image is current, perspective hides nothing. |
|
|
34
|
+
| Fake terminal or code theatre | Real, copyable, versioned commands and output, or ordinary product evidence. | The user's task is genuinely code/CLI. |
|
|
35
|
+
| Pills everywhere: nav, buttons, filters, badges, inputs | Pills for toggles/tags only; a small radius vocabulary elsewhere. | The product already uses a capsule motif deliberately. |
|
|
36
|
+
| Icon medallion: line icon in the same tinted square above every section | Remove icons that repeat the heading. | Icons speed navigation, status scanning, or a real category system. |
|
|
37
|
+
| Logo wall of invented or unlicensed customers | Real, permitted logos, or no social proof. | Supplied and approved. |
|
|
38
|
+
|
|
39
|
+
## 3. Colour, type, and surface tells
|
|
40
|
+
|
|
41
|
+
| Tell | Replacement move | Keep when |
|
|
42
|
+
| --- | --- | --- |
|
|
43
|
+
| Purple/indigo/violet gradient as the default brand; Tailwind `indigo-500`/`violet-600` primary | Derive the hue from the subject, materials, or existing brand; build an OKLCH ramp (`references/direction.md` § Colour). | The existing brand is that hue. |
|
|
44
|
+
| Out-of-box shadcn/Tailwind look: `slate`/`zinc` greys, `rounded-lg` everywhere, `ring-2 ring-offset-2`, default button set | Keep primitives for behaviour; restyle tokens: neutrals tinted toward the brand hue, a deliberate radius scale, the project's own focus treatment. | The project already ships that look; then preserve it. |
|
|
45
|
+
| Inter, Geist, or bare `system-ui` as the whole aesthetic; Arial/Helvetica by neglect | Choose a family or pairing for this subject (`references/direction.md` § Type). | The existing system uses it, native fidelity is the goal, webfonts are prohibited, or it is dense app chrome. |
|
|
46
|
+
| One headline word accented in gradient, italic, or colour | Let the whole headline carry the treatment, or make emphasis carry meaning (a value, a name). | The accented word is data. |
|
|
47
|
+
| Glass cards: blurred translucent panels over colour blobs | One clear material model (flat, tonal, bordered, or measured elevation), one reason per layer. | Content sits over live media/map/video, or translucency is the local platform material. |
|
|
48
|
+
| Dark equals premium; near-black `#0B0B0B`/`#111` with one acid-green or vermilion accent | Choose theme from environment, task duration, and media. If dark, tune OKLCH neutrals and measure contrast in both themes. | Media needs darkness, low-light use, or a tested dark-first brand. |
|
|
49
|
+
| Warm cream (~`#F4F1EA`) + high-contrast serif + terracotta (~`#D97757`) | Anthropic names this its own Claude-interaction look; on a user's brief it reads as a tell. Choose another direction. | The brief asks for it. |
|
|
50
|
+
| Broadsheet pastiche: hairline rules, zero radius, dense columns | Editorial structure only for editorial content. | The surface is editorial. |
|
|
51
|
+
| Soft semantic tint-on-tint (low-opacity hue bg + same-hue text/icon/border) | `references/craft-rulings.md` § No soft semantic tint-on-tint. This one is a binding default, not a style preference. | The user requests it or scope requires reusing an existing variant. |
|
|
52
|
+
| Huge type (96–160px) as the only idea | Build contrast from wording, measure, weight, width, and placement before size. | Campaign/editorial, short phrase, localization tested, type is the signature. |
|
|
53
|
+
| Monospace for small data labels by reflex | Mono only for code and IDs; tabular numerals of the body face for figures. | Technical context the user reads as code. |
|
|
54
|
+
|
|
55
|
+
## 4. Content and copy tells
|
|
56
|
+
|
|
57
|
+
| Tell | Replacement move | Keep when |
|
|
58
|
+
| --- | --- | --- |
|
|
59
|
+
| Lorem ipsum or "Feature one / Feature two" in review | Write real copy first (content-first rule in SKILL.md). | Never in review; label fixtures as fixtures. |
|
|
60
|
+
| Fake metrics, testimonials, ratings, avatars, customer names, precise business data | Real content, or plainly labelled example data, or omit. | The user supplies approved fixtures or asks for a clearly marked prototype dataset. |
|
|
61
|
+
| Generic CTAs: "Get started", "Learn more", "Submit", "Unlock the power of…" | Name the outcome ("Create invoice", "Book a table"). Keep the verb through the flow ("Publish" → toast "Published"). | Never as a default. |
|
|
62
|
+
| Hype voice: "seamless", "effortless", "supercharge", "next-level", "revolutionize" | Say what it does in the user's own words. | Supplied brand copy. |
|
|
63
|
+
| Middle-dot meta strings, `WORD — fragment` labels, `→` on every link | Plain sentence-case labels; arrows only where direction is literal. | Supplied copy. |
|
|
64
|
+
| Emoji as icons, bullets, status, empty-state art | One coherent icon family (`references/craft-rulings.md` § 1). | Requested, or emoji is the content itself. |
|
|
65
|
+
| Placeholder illustration: blob people, abstract 3D shapes, generic stock, unrelated generated hero art | Real product imagery, photography, data, or no image. | Requested and appropriate to the subject. |
|
|
66
|
+
| Subtitle under every heading restating it | `references/craft-rulings.md` § Copy must earn its space. | It adds information needed here. |
|
|
67
|
+
| Em dashes in UI copy | Full stop, comma, colon, parentheses, or two sentences. | Requested, or exact supplied/quoted/legal copy. |
|
|
68
|
+
| Apologetic or vague errors ("Oops! Something went wrong") | Say what happened and how to fix it; no apology. | Never. |
|
|
69
|
+
|
|
70
|
+
## 5. Motion and interaction tells
|
|
71
|
+
|
|
72
|
+
| Tell | Replacement move | Keep when |
|
|
73
|
+
| --- | --- | --- |
|
|
74
|
+
| Fade-and-slide-up on every section as it scrolls in | At most one orchestrated moment; content readable with motion off. | A single deliberate narrative beat. |
|
|
75
|
+
| Hover lift, bob, or scale on every card/button | Colour, border, underline, icon-fill, opacity, or restrained shadow; stable geometry. | Movement communicates real drag, depth, or direct manipulation. |
|
|
76
|
+
| Ambient perpetual motion: particles, gradient drift, marquees, auto-rotating cards | Still resting screen; animate state change only. Pause control if > 5 s. | Motion is the content (audio, time, live activity) and works paused. |
|
|
77
|
+
| `transition: all` | Name properties; shared duration/easing tokens. | Never. |
|
|
78
|
+
| Abrupt state swaps; layout shift on load | Short transitions on interpolable properties; skeletons matching final geometry; focus visible immediately. | Reduced motion or urgent feedback needs an instant change. |
|
|
79
|
+
| Whole card clickable with nested buttons | One link target per card, or explicit buttons; never nested interactive elements. | Never. |
|
|
80
|
+
|
|
81
|
+
## 6. Craft regressions
|
|
82
|
+
|
|
83
|
+
Treat each as a tell when found in a render; fixes live in `references/craft-rulings.md`:
|
|
84
|
+
|
|
85
|
+
- accidental misalignment and drifting content rails;
|
|
86
|
+
- a local button, modal, card, status colour, or focus ring duplicating an existing primitive with slightly different values;
|
|
87
|
+
- mixed icon families (package icons, hand-drawn SVG, text glyphs together);
|
|
88
|
+
- sticky pointer focus, stacked focus rings, edge-hugging dropdown chevrons.
|
|
89
|
+
|
|
90
|
+
## 7. Calibration: the default clusters
|
|
91
|
+
|
|
92
|
+
Generated UI clusters into a few looks that appear whatever the subject (SNAPSHOT/DEDUCED; sources in `references/provenance.md` § Slop-tell sources). Recognise them in your own plan:
|
|
93
|
+
|
|
94
|
+
1. Purple-to-blue SaaS: centered hero, glow, Inter, three feature cards, logo wall, three-tier pricing.
|
|
95
|
+
2. shadcn default: zinc greys, `rounded-lg` cards, outline buttons, four KPI cards over a line chart.
|
|
96
|
+
3. Dark "premium": near-black, one neon accent, glass cards, grid-line background, mono labels.
|
|
97
|
+
4. Warm editorial: cream, serif display, terracotta accent, hairline rules.
|
|
98
|
+
5. Template chrome: ALL-CAPS eyebrows, middle-dot meta, `→` on links, emoji section markers.
|
|
99
|
+
|
|
100
|
+
Ask: "Would I produce this same plan for a neighbouring product?" If yes, change the most transferable axis (usually colour, type, or hero composition) and state what changed and why.
|
|
101
|
+
|
|
102
|
+
## 8. Final slop review
|
|
103
|
+
|
|
104
|
+
On the rendered desktop and mobile screenshots:
|
|
105
|
+
|
|
106
|
+
1. Cover the logo and accent colour. Can you still name the product and task?
|
|
107
|
+
2. Does any tell from §§ 2–5 remain without a "This belongs because…" sentence?
|
|
108
|
+
3. Is every number, quote, and logo traceable to real content or labelled as a fixture?
|
|
109
|
+
4. Is there exactly one memorable device, with everything around it quiet, and does it survive mobile without clutter?
|
|
110
|
+
5. Remove one decorative element. If the screen did not get worse, leave it removed.
|