taste-lint 0.0.1
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/LICENSE.md +9 -0
- package/README.md +141 -0
- package/data/config.schema.json +123 -0
- package/data/corpus/blode-co-review.jsonl +80 -0
- package/data/corpus/copywriting.jsonl +139 -0
- package/data/corpus/typography.jsonl +53 -0
- package/data/rule-drafts/README.md +9 -0
- package/data/rule-drafts/interaction/interaction-layout-shift.yaml +54 -0
- package/data/rule-drafts/typography/typography-long-content-safety.yaml +60 -0
- package/data/rules/authoring/authoring-approval-every-step.yaml +44 -0
- package/data/rules/authoring/authoring-fixed-agent-quota.yaml +44 -0
- package/data/rules/authoring/authoring-generic-coding-advice.yaml +44 -0
- package/data/rules/authoring/authoring-generic-verification.yaml +45 -0
- package/data/rules/authoring/authoring-plan-vague-acceptance.yaml +43 -0
- package/data/rules/copywriting/copywriting-announced-honesty.yaml +43 -0
- package/data/rules/copywriting/copywriting-anthropomorphism.yaml +29 -0
- package/data/rules/copywriting/copywriting-artificial-balance.yaml +35 -0
- package/data/rules/copywriting/copywriting-bare-confirm-label.yaml +23 -0
- package/data/rules/copywriting/copywriting-boilerplate-offer.yaml +38 -0
- package/data/rules/copywriting/copywriting-canned-phrasing.yaml +53 -0
- package/data/rules/copywriting/copywriting-changed-supplied-facts.yaml +31 -0
- package/data/rules/copywriting/copywriting-claim-without-evidence.yaml +59 -0
- package/data/rules/copywriting/copywriting-click-here-links.yaml +22 -0
- package/data/rules/copywriting/copywriting-conditions-first.yaml +50 -0
- package/data/rules/copywriting/copywriting-confirmshaming.yaml +43 -0
- package/data/rules/copywriting/copywriting-cta-names-outcome.yaml +54 -0
- package/data/rules/copywriting/copywriting-dead-weight-hedges.yaml +58 -0
- package/data/rules/copywriting/copywriting-drafting-instruction-echo.yaml +31 -0
- package/data/rules/copywriting/copywriting-emoji-in-ui.yaml +20 -0
- package/data/rules/copywriting/copywriting-empty-state-no-action.yaml +51 -0
- package/data/rules/copywriting/copywriting-error-descriptions.yaml +53 -0
- package/data/rules/copywriting/copywriting-excessive-hedging.yaml +48 -0
- package/data/rules/copywriting/copywriting-fabricated-specificity.yaml +35 -0
- package/data/rules/copywriting/copywriting-filler-words.yaml +55 -0
- package/data/rules/copywriting/copywriting-flat-description.yaml +37 -0
- package/data/rules/copywriting/copywriting-friction-cta.yaml +53 -0
- package/data/rules/copywriting/copywriting-generic-audience.yaml +55 -0
- package/data/rules/copywriting/copywriting-generic-framing.yaml +35 -0
- package/data/rules/copywriting/copywriting-generic-language.yaml +35 -0
- package/data/rules/copywriting/copywriting-generic-validation.yaml +46 -0
- package/data/rules/copywriting/copywriting-idea-repetition.yaml +34 -0
- package/data/rules/copywriting/copywriting-latinisms.yaml +25 -0
- package/data/rules/copywriting/copywriting-leaked-error-message.yaml +23 -0
- package/data/rules/copywriting/copywriting-live-region-feedback.yaml +24 -0
- package/data/rules/copywriting/copywriting-machine-prose.yaml +73 -0
- package/data/rules/copywriting/copywriting-mechanism-over-outcome.yaml +33 -0
- package/data/rules/copywriting/copywriting-meta-commentary.yaml +48 -0
- package/data/rules/copywriting/copywriting-missing-reasoning-link.yaml +33 -0
- package/data/rules/copywriting/copywriting-nominalisations.yaml +45 -0
- package/data/rules/copywriting/copywriting-over-explanation.yaml +34 -0
- package/data/rules/copywriting/copywriting-passive-voice.yaml +53 -0
- package/data/rules/copywriting/copywriting-permission-benefit.yaml +43 -0
- package/data/rules/copywriting/copywriting-profile-register-mismatch.yaml +31 -0
- package/data/rules/copywriting/copywriting-promotional-docs-voice.yaml +58 -0
- package/data/rules/copywriting/copywriting-prompt-restatement.yaml +35 -0
- package/data/rules/copywriting/copywriting-punctuation-tics.yaml +35 -0
- package/data/rules/copywriting/copywriting-reader-first.yaml +59 -0
- package/data/rules/copywriting/copywriting-register-shift.yaml +58 -0
- package/data/rules/copywriting/copywriting-repetitive-transitions.yaml +48 -0
- package/data/rules/copywriting/copywriting-requirements-language.yaml +50 -0
- package/data/rules/copywriting/copywriting-searchable-headings.yaml +52 -0
- package/data/rules/copywriting/copywriting-semantic-links.yaml +23 -0
- package/data/rules/copywriting/copywriting-structural-symmetry.yaml +35 -0
- package/data/rules/copywriting/copywriting-success-state-specific.yaml +43 -0
- package/data/rules/copywriting/copywriting-temporal-words.yaml +55 -0
- package/data/rules/copywriting/copywriting-toast-successfully.yaml +22 -0
- package/data/rules/copywriting/copywriting-unexplained-action.yaml +33 -0
- package/data/rules/copywriting/copywriting-unnatural-polish.yaml +48 -0
- package/data/rules/copywriting/copywriting-unraised-objection.yaml +43 -0
- package/data/rules/copywriting/copywriting-unverifiable-proof.yaml +23 -0
- package/data/rules/copywriting/copywriting-vague-error.yaml +58 -0
- package/data/rules/copywriting/copywriting-vague-personal-request.yaml +43 -0
- package/data/rules/copywriting/copywriting-visual-direction-instruction.yaml +43 -0
- package/data/rules/craft/craft-affordance-mismatch.yaml +23 -0
- package/data/rules/craft/craft-decoration-no-role.yaml +27 -0
- package/data/rules/craft/craft-faux-product-chrome.yaml +22 -0
- package/data/rules/craft/craft-hover-only-affordance.yaml +23 -0
- package/data/rules/craft/craft-i18n-rtl-untested.yaml +23 -0
- package/data/rules/craft/craft-i18n-untested.yaml +28 -0
- package/data/rules/craft/craft-image-dimensions-and-priority.yaml +23 -0
- package/data/rules/craft/craft-inline-styles.yaml +24 -0
- package/data/rules/craft/craft-lazy-load-offscreen.yaml +28 -0
- package/data/rules/craft/craft-near-duplicate-scale.yaml +29 -0
- package/data/rules/craft/craft-token-drift.yaml +22 -0
- package/data/rules/craft/craft-viewport-scaling.yaml +25 -0
- package/data/rules/craft/craft-virtualize-large-lists.yaml +24 -0
- package/data/rules/interaction/interaction-a11y-color-only-meaning.yaml +23 -0
- package/data/rules/interaction/interaction-a11y-data-table-semantics.yaml +24 -0
- package/data/rules/interaction/interaction-a11y-disabled-control-tooltip.yaml +23 -0
- package/data/rules/interaction/interaction-a11y-document-language.yaml +24 -0
- package/data/rules/interaction/interaction-a11y-icon-controls-labeled.yaml +23 -0
- package/data/rules/interaction/interaction-a11y-image-alt-text.yaml +24 -0
- package/data/rules/interaction/interaction-a11y-media-captions.yaml +24 -0
- package/data/rules/interaction/interaction-a11y-semantic-html-first.yaml +23 -0
- package/data/rules/interaction/interaction-a11y-skip-link-heading-order.yaml +24 -0
- package/data/rules/interaction/interaction-a11y-tooltip-no-interactive.yaml +23 -0
- package/data/rules/interaction/interaction-broken-focus-trap.yaml +25 -0
- package/data/rules/interaction/interaction-dont-block-paste-ime.yaml +23 -0
- package/data/rules/interaction/interaction-error-association.yaml +24 -0
- package/data/rules/interaction/interaction-focus-visible.yaml +25 -0
- package/data/rules/interaction/interaction-inline-errors-first-focus.yaml +24 -0
- package/data/rules/interaction/interaction-input-affix-hit-target.yaml +23 -0
- package/data/rules/interaction/interaction-keyboard-operable.yaml +23 -0
- package/data/rules/interaction/interaction-labels-and-autocomplete.yaml +23 -0
- package/data/rules/interaction/interaction-lost-data-on-error.yaml +23 -0
- package/data/rules/interaction/interaction-mobile-input-font-size.yaml +24 -0
- package/data/rules/interaction/interaction-no-disable-while-submitting.yaml +23 -0
- package/data/rules/interaction/interaction-no-empty-state.yaml +26 -0
- package/data/rules/interaction/interaction-no-error-boundary.yaml +27 -0
- package/data/rules/interaction/interaction-no-error-state.yaml +26 -0
- package/data/rules/interaction/interaction-no-suspense-boundary.yaml +23 -0
- package/data/rules/interaction/interaction-not-restored.yaml +25 -0
- package/data/rules/interaction/interaction-on-dynamic-content.yaml +25 -0
- package/data/rules/interaction/interaction-optimistic-without-rollback.yaml +23 -0
- package/data/rules/interaction/interaction-out-of-order-responses.yaml +27 -0
- package/data/rules/interaction/interaction-target-size.yaml +26 -0
- package/data/rules/interaction/interaction-use-form-status-misuse.yaml +23 -0
- package/data/rules/product/product-nested-modals.yaml +26 -0
- package/data/rules/product/product-select-for-few-options.yaml +24 -0
- package/data/rules/schema/rule.schema.json +262 -0
- package/data/rules/tuning.json +1 -0
- package/data/rules/typography/typography-dashes.yaml +28 -0
- package/data/rules/typography/typography-ellipsis.yaml +27 -0
- package/data/rules/typography/typography-hover-weight-shift.yaml +24 -0
- package/data/rules/typography/typography-midpoint-separators.yaml +21 -0
- package/data/rules/typography/typography-multiplication-sign.yaml +27 -0
- package/data/rules/typography/typography-nbsp-value-unit.yaml +27 -0
- package/data/rules/typography/typography-readable-scale.yaml +23 -0
- package/data/rules/typography/typography-straight-quotes.yaml +37 -0
- package/data/rules/typography/typography-title-case-heading.yaml +49 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +6317 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +736 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5330 -0
- package/dist/index.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
{"categoryId":"actionable-microcopy","id":"tt-j-states-empty-first-action-a","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":true,"copywriting-empty-state-no-action":true,"copywriting-bare-confirm-label":true},"source":{"id":"states-empty-first-action","path":"apps/web/content/judgements/decide-what-it-does.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"No data","context":{"docType":"ui","role":"body"}}
|
|
2
|
+
{"categoryId":"actionable-microcopy","id":"tt-j-states-empty-first-action-b","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"states-empty-first-action","path":"apps/web/content/judgements/decide-what-it-does.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"No invoices yet Create your first one to start tracking payments. New invoice","context":{"docType":"ui","role":"body"}}
|
|
3
|
+
{"categoryId":"reader-first-framing","id":"tt-j-editing-first-pass-a","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":true},"source":{"id":"editing-first-pass","path":"apps/web/content/judgements/keep-your-taste-with-ai.tsx","repo":"mblode/taste-training","option":"a"},"split":"holdout","text":"Trusted by 10,000+ teams Sync smarter, faster, better Northwind is the all-in-one platform for keeping every device in sync, wherever work happens. Get started Learn more Watch demo","context":{"docType":"ui","role":"heading"}}
|
|
4
|
+
{"categoryId":"reader-first-framing","id":"tt-j-editing-first-pass-b","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":false},"source":{"id":"editing-first-pass","path":"apps/web/content/judgements/keep-your-taste-with-ai.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"Every device, one set of files Edit on your laptop and the change reaches your phone before you close the lid. Start syncing","context":{"docType":"ui","role":"heading"}}
|
|
5
|
+
{"categoryId":"machine-prose","id":"tt-j-machine-prose-echo-a","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-machine-prose":true},"source":{"id":"machine-prose-echo","path":"apps/web/content/judgements/keep-your-taste-with-ai.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"Here is some empty-state copy for the Northwind invoices list: “Your Northwind invoices list is currently empty.”","context":{"docType":"ui","role":"body"}}
|
|
6
|
+
{"categoryId":"machine-prose","id":"tt-j-machine-prose-echo-b","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-machine-prose":false},"source":{"id":"machine-prose-echo","path":"apps/web/content/judgements/keep-your-taste-with-ai.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"“No invoices yet. The first one you send will show up here, with what you are owed and when.”","context":{"docType":"ui","role":"body"}}
|
|
7
|
+
{"categoryId":"machine-prose","id":"tt-j-machine-prose-false-contrast-a","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-machine-prose":true},"source":{"id":"machine-prose-false-contrast","path":"apps/web/content/judgements/keep-your-taste-with-ai.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"“Northwind is not just a file sync tool, it is a way of working. It serves as the connective tissue for teams who refuse to compromise.”","context":{"docType":"ui","role":"body"}}
|
|
8
|
+
{"categoryId":"machine-prose","id":"tt-j-machine-prose-false-contrast-b","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-machine-prose":false},"source":{"id":"machine-prose-false-contrast","path":"apps/web/content/judgements/keep-your-taste-with-ai.tsx","repo":"mblode/taste-training","option":"b"},"split":"holdout","text":"“Northwind syncs your files. Edit on a laptop and the change reaches your phone before you close the lid.”","context":{"docType":"ui","role":"body"}}
|
|
9
|
+
{"categoryId":"typographic-detail","id":"tt-j-typo-measurement-marks-a","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":true,"typography-dashes":true,"typography-ellipsis":true,"typography-nbsp-value-unit":true},"source":{"id":"typo-measurement-marks","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"Export at 1920x1080 Print size 8.5\" x 11\", margin 0.5\"","context":{"docType":"ui","role":"body"}}
|
|
10
|
+
{"categoryId":"typographic-detail","id":"tt-j-typo-measurement-marks-b","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":false,"typography-dashes":false,"typography-ellipsis":false,"typography-nbsp-value-unit":false},"source":{"id":"typo-measurement-marks","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"Export at 1920×1080 Print size 8.5″ × 11″, margin 0.5″","context":{"docType":"ui","role":"body"}}
|
|
11
|
+
{"categoryId":"typographic-detail","id":"tt-j-punctuation-testimonial-a","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":true,"typography-dashes":true,"typography-ellipsis":true,"typography-nbsp-value-unit":true},"source":{"id":"punctuation-testimonial","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"\"We cut review time from 4-6 days to hours. It's the team's favourite tool.\" Head of operations","context":{"docType":"ui","role":"body"}}
|
|
12
|
+
{"categoryId":"typographic-detail","id":"tt-j-punctuation-testimonial-b","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":false,"typography-dashes":false,"typography-ellipsis":false,"typography-nbsp-value-unit":false},"source":{"id":"punctuation-testimonial","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"b"},"split":"holdout","text":"“We cut review time from 4–6 days to hours. It’s the team’s favourite tool.” Head of operations","context":{"docType":"ui","role":"body"}}
|
|
13
|
+
{"categoryId":"typographic-detail","id":"tt-j-typo-widow-headline-a","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":true,"typography-dashes":true,"typography-ellipsis":true,"typography-nbsp-value-unit":true},"source":{"id":"typo-widow-headline","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"Sync every file across every device, automatically","context":{"docType":"ui","role":"body"}}
|
|
14
|
+
{"categoryId":"typographic-detail","id":"tt-j-typo-widow-headline-b","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":false,"typography-dashes":false,"typography-ellipsis":false,"typography-nbsp-value-unit":false},"source":{"id":"typo-widow-headline","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"Sync every file across every device, automatically","context":{"docType":"ui","role":"body"}}
|
|
15
|
+
{"categoryId":"typographic-detail","id":"tt-j-typo-metadata-separator-a","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":true,"typography-dashes":true,"typography-ellipsis":true,"typography-nbsp-value-unit":true},"source":{"id":"typo-metadata-separator","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"12 files | 3 members | Updated today","context":{"docType":"ui","role":"body"}}
|
|
16
|
+
{"categoryId":"typographic-detail","id":"tt-j-typo-metadata-separator-b","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":false,"typography-dashes":false,"typography-ellipsis":false,"typography-nbsp-value-unit":false},"source":{"id":"typo-metadata-separator","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"12 files · 3 members · Updated today","context":{"docType":"ui","role":"body"}}
|
|
17
|
+
{"categoryId":"actionable-microcopy","id":"tt-j-microcopy-filled-slots-a","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":true,"copywriting-empty-state-no-action":true,"copywriting-bare-confirm-label":true},"source":{"id":"microcopy-filled-slots","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"First Name Please enter your first name. Password Please enter your password.","context":{"docType":"ui","role":"body"}}
|
|
18
|
+
{"categoryId":"actionable-microcopy","id":"tt-j-microcopy-filled-slots-b","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"microcopy-filled-slots","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"First name Password At least 8 characters, including a number.","context":{"docType":"ui","role":"body"}}
|
|
19
|
+
{"categoryId":"evidence-over-claims","id":"tt-j-adjective-stack-a","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":true},"source":{"id":"adjective-stack","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"a"},"split":"holdout","text":"“A powerful, intuitive, modern platform for data-driven teams.”","context":{"docType":"ui","role":"body"}}
|
|
20
|
+
{"categoryId":"evidence-over-claims","id":"tt-j-adjective-stack-b","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":false},"source":{"id":"adjective-stack","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"“Every teammate’s edits, merged in order, on one shared folder.”","context":{"docType":"ui","role":"body"}}
|
|
21
|
+
{"categoryId":"evidence-over-claims","id":"tt-j-evidence-adjective-exception-a","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":true},"source":{"id":"evidence-adjective-exception","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"“Enterprise-grade security, built for teams that take compliance seriously.”","context":{"docType":"ui","role":"body"}}
|
|
22
|
+
{"categoryId":"evidence-over-claims","id":"tt-j-evidence-adjective-exception-b","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":false},"source":{"id":"evidence-adjective-exception","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"“End-to-end encrypted, so Northwind cannot read your files and nor can the company hosting them.”","context":{"docType":"ui","role":"body"}}
|
|
23
|
+
{"categoryId":"machine-prose","id":"tt-j-machine-prose-self-billing-a","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-machine-prose":true},"source":{"id":"machine-prose-self-billing","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"“Here is where it gets interesting. We have made a subtle but powerful change to how sync resolves conflicts, and the implications are significant.”","context":{"docType":"ui","role":"body"}}
|
|
24
|
+
{"categoryId":"machine-prose","id":"tt-j-machine-prose-self-billing-b","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-machine-prose":false},"source":{"id":"machine-prose-self-billing","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"“When two people edit the same file offline, Northwind now keeps both versions instead of picking one. Nothing is overwritten.”","context":{"docType":"ui","role":"body"}}
|
|
25
|
+
{"categoryId":"machine-prose","id":"tt-j-machine-prose-lost-specific-a","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-machine-prose":true},"source":{"id":"machine-prose-lost-specific","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"“Northwind syncs your files in seconds across all your devices, so your team can stay productive wherever they work.”","context":{"docType":"ui","role":"body"}}
|
|
26
|
+
{"categoryId":"machine-prose","id":"tt-j-machine-prose-lost-specific-b","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-machine-prose":false},"source":{"id":"machine-prose-lost-specific","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"“Northwind syncs a 2GB folder in under 40 seconds, on the hotel wifi we tested it on.”","context":{"docType":"ui","role":"body"}}
|
|
27
|
+
{"categoryId":"reader-first-framing","id":"tt-j-the-edit-opening-a","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":true},"source":{"id":"the-edit-opening","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"“Northwind is a powerful platform designed to help teams of all sizes collaborate more effectively and stay in sync.”","context":{"docType":"ui","role":"heading"}}
|
|
28
|
+
{"categoryId":"reader-first-framing","id":"tt-j-the-edit-opening-b","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":false},"source":{"id":"the-edit-opening","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"“Two teammates edit the same file. Both edits survive. No cleanup.”","context":{"docType":"ui","role":"heading"}}
|
|
29
|
+
{"categoryId":"reader-first-framing","id":"tt-j-why-first-headline-a","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":true},"source":{"id":"why-first-headline","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"“Northwind is a workspace for teams.”","context":{"docType":"ui","role":"heading"}}
|
|
30
|
+
{"categoryId":"reader-first-framing","id":"tt-j-why-first-headline-b","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":false},"source":{"id":"why-first-headline","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"“Never lose a teammate’s work to a bad save again. Northwind merges every change in order.”","context":{"docType":"ui","role":"heading"}}
|
|
31
|
+
{"categoryId":"reader-first-framing","id":"tt-j-benefit-not-feature-subject-a","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":true},"source":{"id":"benefit-not-feature-subject","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"“Northwind uses conflict-free merge technology.”","context":{"docType":"ui","role":"heading"}}
|
|
32
|
+
{"categoryId":"reader-first-framing","id":"tt-j-benefit-not-feature-subject-b","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":false},"source":{"id":"benefit-not-feature-subject","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"“Edit the same file as a teammate; both changes survive.”","context":{"docType":"ui","role":"heading"}}
|
|
33
|
+
{"categoryId":"evidence-over-claims","id":"tt-j-show-dont-tell-sync-a","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":true},"source":{"id":"show-dont-tell-sync","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"“Seamless sync across every device.”","context":{"docType":"ui","role":"body"}}
|
|
34
|
+
{"categoryId":"evidence-over-claims","id":"tt-j-show-dont-tell-sync-b","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":false},"source":{"id":"show-dont-tell-sync","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"“Edit on your laptop; the change is on your phone before you switch tabs.”","context":{"docType":"ui","role":"body"}}
|
|
35
|
+
{"categoryId":"actionable-microcopy","id":"tt-j-microcopy-failed-save-a","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":true,"copywriting-empty-state-no-action":true,"copywriting-bare-confirm-label":true},"source":{"id":"microcopy-failed-save","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"Something went wrong. OK","context":{"docType":"ui","role":"body"}}
|
|
36
|
+
{"categoryId":"actionable-microcopy","id":"tt-j-microcopy-failed-save-b","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"microcopy-failed-save","path":"apps/web/content/judgements/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"Couldn’t save your changes You’re offline. We kept your edits on this device. Try again","context":{"docType":"ui","role":"body"}}
|
|
37
|
+
{"categoryId":"reader-first-framing","id":"tt-j-tye-copy-reader-numbers-a","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":true},"source":{"id":"tye-copy-reader-numbers","path":"apps/web/content/judgements/train-your-eye.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"Sync runs every 300 seconds across three data centres.","context":{"docType":"ui","role":"heading"}}
|
|
38
|
+
{"categoryId":"reader-first-framing","id":"tt-j-tye-copy-reader-numbers-b","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":false},"source":{"id":"tye-copy-reader-numbers","path":"apps/web/content/judgements/train-your-eye.tsx","repo":"mblode/taste-training","option":"b"},"split":"holdout","text":"Your files reach every laptop within five minutes.","context":{"docType":"ui","role":"heading"}}
|
|
39
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-state-rank-errors-named","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"state-rank-errors","path":"apps/web/content/exercises/decide-what-it-does.tsx","repo":"mblode/taste-training","option":"named"},"split":"dev","text":"Roadmap.pdf is 38MB, over the 25MB limit. Choose another file","context":{"docType":"ui","role":"body"}}
|
|
40
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-state-rank-errors-vague","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":true,"copywriting-empty-state-no-action":true,"copywriting-bare-confirm-label":true},"source":{"id":"state-rank-errors","path":"apps/web/content/exercises/decide-what-it-does.tsx","repo":"mblode/taste-training","option":"vague"},"split":"dev","text":"Something went wrong. Please try again.","context":{"docType":"ui","role":"body"}}
|
|
41
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-scope-repair-cancel-fixed","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"scope-repair-cancel","path":"apps/web/content/exercises/decide-what-it-does.tsx","repo":"mblode/taste-training","option":"outcomes"},"split":"dev","text":"Discard your changes to INV-1042? Edits made since you opened it will be lost. Keep editing Discard changes","context":{"docType":"ui","role":"body"}}
|
|
42
|
+
{"categoryId":"evidence-over-claims","id":"tt-x-ai-locate-claim-badge","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":true},"source":{"id":"ai-locate-claim","path":"apps/web/content/exercises/keep-your-taste-with-ai.tsx","repo":"mblode/taste-training","option":"badge"},"split":"dev","text":"Trusted by 10,000+ teams","context":{"docType":"ui","role":"body"}}
|
|
43
|
+
{"categoryId":"evidence-over-claims","id":"tt-x-ai-locate-claim-plan","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":false},"source":{"id":"ai-locate-claim","path":"apps/web/content/exercises/keep-your-taste-with-ai.tsx","repo":"mblode/taste-training","option":"plan"},"split":"holdout","text":"Northwind Team","context":{"docType":"ui","role":"body"}}
|
|
44
|
+
{"categoryId":"evidence-over-claims","id":"tt-x-ai-locate-claim-price","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":false},"source":{"id":"ai-locate-claim","path":"apps/web/content/exercises/keep-your-taste-with-ai.tsx","repo":"mblode/taste-training","option":"price"},"split":"holdout","text":"$24 per seat, monthly","context":{"docType":"ui","role":"body"}}
|
|
45
|
+
{"categoryId":"actionable-cta","id":"tt-x-ai-repair-structure-before","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":true,"copywriting-friction-cta":true},"source":{"id":"ai-repair-structure","path":"apps/web/content/exercises/keep-your-taste-with-ai.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Every file, in sync","context":{"docType":"ui","role":"body"}}
|
|
46
|
+
{"categoryId":"actionable-cta","id":"tt-x-ai-repair-structure-fixed","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":false,"copywriting-friction-cta":false},"source":{"id":"ai-repair-structure","path":"apps/web/content/exercises/keep-your-taste-with-ai.tsx","repo":"mblode/taste-training","option":"one-primary"},"split":"dev","text":"Every file, in sync Create your workspace Or talk to sales","context":{"docType":"ui","role":"body"}}
|
|
47
|
+
{"categoryId":"evidence-over-claims","id":"tt-x-ai-repair-copy-before","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":true},"source":{"id":"ai-repair-copy","path":"apps/web/content/exercises/keep-your-taste-with-ai.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Let’s dive in! Experts believe that seamless synchronisation is essential for modern teams looking to streamline their workflow.","context":{"docType":"ui","role":"body"}}
|
|
48
|
+
{"categoryId":"evidence-over-claims","id":"tt-x-ai-repair-copy-fixed","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":false},"source":{"id":"ai-repair-copy","path":"apps/web/content/exercises/keep-your-taste-with-ai.tsx","repo":"mblode/taste-training","option":"specific"},"split":"dev","text":"Edit a file on your laptop and the change reaches your phone before you close the lid.","context":{"docType":"ui","role":"body"}}
|
|
49
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-fb-repair-toast-before","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":true,"copywriting-empty-state-no-action":true,"copywriting-bare-confirm-label":true},"source":{"id":"fb-repair-toast","path":"apps/web/content/exercises/make-every-interaction-feel-considered.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Export started","context":{"docType":"ui","role":"body"}}
|
|
50
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-fb-repair-toast-fixed","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"fb-repair-toast","path":"apps/web/content/exercises/make-every-interaction-feel-considered.tsx","repo":"mblode/taste-training","option":"row"},"split":"dev","text":"Exporting invoices 1,240 of 3,880 Cancel","context":{"docType":"ui","role":"body"}}
|
|
51
|
+
{"categoryId":"typographic-detail","id":"tt-x-polish-locate-quotes-heading","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":false,"typography-dashes":false,"typography-ellipsis":false,"typography-nbsp-value-unit":false},"source":{"id":"polish-locate-quotes","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"heading"},"split":"dev","text":"Northwind for teams","context":{"docType":"ui","role":"body"}}
|
|
52
|
+
{"categoryId":"typographic-detail","id":"tt-x-polish-locate-quotes-price","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":false,"typography-dashes":false,"typography-ellipsis":false,"typography-nbsp-value-unit":false},"source":{"id":"polish-locate-quotes","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"price"},"split":"dev","text":"$24 per seat, per month","context":{"docType":"ui","role":"body"}}
|
|
53
|
+
{"categoryId":"typographic-detail","id":"tt-x-polish-locate-quotes-note","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":true,"typography-dashes":true,"typography-ellipsis":true,"typography-nbsp-value-unit":true},"source":{"id":"polish-locate-quotes","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"note"},"split":"dev","text":"We'll invoice your team monthly. Cancel any time.","context":{"docType":"ui","role":"body"}}
|
|
54
|
+
{"categoryId":"typographic-detail","id":"tt-x-polish-locate-quotes-cta","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":false,"typography-dashes":false,"typography-ellipsis":false,"typography-nbsp-value-unit":false},"source":{"id":"polish-locate-quotes","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"cta"},"split":"dev","text":"Start your team’s trial","context":{"docType":"ui","role":"body"}}
|
|
55
|
+
{"categoryId":"typographic-detail","id":"tt-x-polish-locate-dash-title","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":false,"typography-dashes":false,"typography-ellipsis":false,"typography-nbsp-value-unit":false},"source":{"id":"polish-locate-dash","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"title"},"split":"dev","text":"Northwind Team","context":{"docType":"ui","role":"body"}}
|
|
56
|
+
{"categoryId":"typographic-detail","id":"tt-x-polish-locate-dash-seats","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":true,"typography-dashes":true,"typography-ellipsis":true,"typography-nbsp-value-unit":true},"source":{"id":"polish-locate-dash","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"seats"},"split":"dev","text":"2-14 users","context":{"docType":"ui","role":"body"}}
|
|
57
|
+
{"categoryId":"typographic-detail","id":"tt-x-polish-locate-dash-compound","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":false,"typography-dashes":false,"typography-ellipsis":false,"typography-nbsp-value-unit":false},"source":{"id":"polish-locate-dash","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"compound"},"split":"holdout","text":"Cloud-based file sync","context":{"docType":"ui","role":"body"}}
|
|
58
|
+
{"categoryId":"typographic-detail","id":"tt-x-polish-locate-dash-renewal","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":false,"typography-dashes":false,"typography-ellipsis":false,"typography-nbsp-value-unit":false},"source":{"id":"polish-locate-dash","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"renewal"},"split":"dev","text":"Renews yearly, 2026–2027","context":{"docType":"ui","role":"body"}}
|
|
59
|
+
{"categoryId":"typographic-detail","id":"tt-x-polish-repair-widow-before","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":true,"typography-dashes":true,"typography-ellipsis":true,"typography-nbsp-value-unit":true},"source":{"id":"polish-repair-widow","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Every file in your workspace syncs automatically","context":{"docType":"ui","role":"body"}}
|
|
60
|
+
{"categoryId":"typographic-detail","id":"tt-x-polish-repair-widow-fixed","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":false,"typography-dashes":false,"typography-ellipsis":false,"typography-nbsp-value-unit":false},"source":{"id":"polish-repair-widow","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"tie"},"split":"dev","text":"Every file in your workspace syncs automatically","context":{"docType":"ui","role":"body"}}
|
|
61
|
+
{"categoryId":"reader-first-framing","id":"tt-x-lead-locate-mission-headline","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":false},"source":{"id":"lead-locate-mission","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"headline"},"split":"dev","text":"Stop emailing “final_v3” back and forth.","context":{"docType":"ui","role":"heading"}}
|
|
62
|
+
{"categoryId":"reader-first-framing","id":"tt-x-lead-locate-mission-sub","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":true},"source":{"id":"lead-locate-mission","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"sub"},"split":"holdout","text":"We built Northwind after years of fighting scattered tools.","context":{"docType":"ui","role":"heading"}}
|
|
63
|
+
{"categoryId":"reader-first-framing","id":"tt-x-lead-locate-mission-proof","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":false},"source":{"id":"lead-locate-mission","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"proof"},"split":"dev","text":"“We stopped losing a day a week to merge cleanup.” Priya N., design lead","context":{"docType":"ui","role":"heading"}}
|
|
64
|
+
{"categoryId":"reader-first-framing","id":"tt-x-lead-locate-mission-cta","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":false},"source":{"id":"lead-locate-mission","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"cta"},"split":"holdout","text":"Start syncing free","context":{"docType":"ui","role":"heading"}}
|
|
65
|
+
{"categoryId":"evidence-over-claims","id":"tt-x-evidence-locate-tell-open","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":false},"source":{"id":"evidence-locate-tell","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"open"},"split":"dev","text":"Open-source sync engine","context":{"docType":"ui","role":"body"}}
|
|
66
|
+
{"categoryId":"evidence-over-claims","id":"tt-x-evidence-locate-tell-native","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":false},"source":{"id":"evidence-locate-tell","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"native"},"split":"holdout","text":"Native macOS and Windows apps","context":{"docType":"ui","role":"body"}}
|
|
67
|
+
{"categoryId":"evidence-over-claims","id":"tt-x-evidence-locate-tell-reliable","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":true},"source":{"id":"evidence-locate-tell","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"reliable"},"split":"dev","text":"World-class reliability","context":{"docType":"ui","role":"body"}}
|
|
68
|
+
{"categoryId":"evidence-over-claims","id":"tt-x-evidence-locate-tell-encrypted","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":false},"source":{"id":"evidence-locate-tell","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"encrypted"},"split":"dev","text":"End-to-end encrypted in transit and at rest","context":{"docType":"ui","role":"body"}}
|
|
69
|
+
{"categoryId":"evidence-over-claims","id":"tt-x-evidence-locate-proof-stat","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":false},"source":{"id":"evidence-locate-proof","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"stat"},"split":"dev","text":"4,200 teams across 60 countries, as of March.","context":{"docType":"ui","role":"body"}}
|
|
70
|
+
{"categoryId":"evidence-over-claims","id":"tt-x-evidence-locate-proof-testimonial","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":false},"source":{"id":"evidence-locate-proof","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"testimonial"},"split":"dev","text":"“We stopped losing a day a week to merge cleanup.” Priya N., design lead at Borealis","context":{"docType":"ui","role":"body"}}
|
|
71
|
+
{"categoryId":"evidence-over-claims","id":"tt-x-evidence-locate-proof-logos","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":true},"source":{"id":"evidence-locate-proof","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"logos"},"split":"dev","text":"Trusted by Acme · Borealis · Corvid · Dunhill","context":{"docType":"ui","role":"body"}}
|
|
72
|
+
{"categoryId":"evidence-over-claims","id":"tt-x-evidence-locate-proof-uptime","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":false},"source":{"id":"evidence-locate-proof","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"uptime"},"split":"dev","text":"99.97% uptime across 3 regions, on our status page.","context":{"docType":"ui","role":"body"}}
|
|
73
|
+
{"categoryId":"actionable-cta","id":"tt-x-cta-locate-mismatch-headline","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":false,"copywriting-friction-cta":false},"source":{"id":"cta-locate-mismatch","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"headline"},"split":"dev","text":"Never lose a teammate’s work to a bad save.","context":{"docType":"ui","role":"body"}}
|
|
74
|
+
{"categoryId":"actionable-cta","id":"tt-x-cta-locate-mismatch-sub","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":false,"copywriting-friction-cta":false},"source":{"id":"cta-locate-mismatch","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"sub"},"split":"dev","text":"Connect a folder in one afternoon. No config files.","context":{"docType":"ui","role":"body"}}
|
|
75
|
+
{"categoryId":"actionable-cta","id":"tt-x-cta-locate-mismatch-proof","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":false,"copywriting-friction-cta":false},"source":{"id":"cta-locate-mismatch","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"proof"},"split":"dev","text":"“Set up in one afternoon, not one quarter.” Marcus T., engineering manager","context":{"docType":"ui","role":"body"}}
|
|
76
|
+
{"categoryId":"actionable-cta","id":"tt-x-cta-locate-mismatch-cta","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":true,"copywriting-friction-cta":true},"source":{"id":"cta-locate-mismatch","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"cta"},"split":"dev","text":"Book a 30-minute demo","context":{"docType":"ui","role":"body"}}
|
|
77
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-micro-locate-empty-folders","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"micro-locate-empty","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"folders"},"split":"dev","text":"Folders No folders yet. Create your first folder to start syncing.","context":{"docType":"ui","role":"body"}}
|
|
78
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-micro-locate-empty-invites","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"micro-locate-empty","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"invites"},"split":"holdout","text":"People Nobody invited yet. Send an invitation to share this folder.","context":{"docType":"ui","role":"body"}}
|
|
79
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-micro-locate-empty-search","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"micro-locate-empty","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"search"},"split":"dev","text":"Search No matches for “merge”. Try a shorter word, or clear the date filter.","context":{"docType":"ui","role":"body"}}
|
|
80
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-micro-locate-empty-activity","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":true,"copywriting-empty-state-no-action":true,"copywriting-bare-confirm-label":true},"source":{"id":"micro-locate-empty","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"activity"},"split":"holdout","text":"Activity Nothing here.","context":{"docType":"ui","role":"body"}}
|
|
81
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-micro-locate-ellipsis-rename","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"micro-locate-ellipsis","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"rename"},"split":"dev","text":"Rename…","context":{"docType":"ui","role":"body"}}
|
|
82
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-micro-locate-ellipsis-move","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"micro-locate-ellipsis","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"move"},"split":"dev","text":"Move to…","context":{"docType":"ui","role":"body"}}
|
|
83
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-micro-locate-ellipsis-save","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":true,"copywriting-empty-state-no-action":true,"copywriting-bare-confirm-label":true},"source":{"id":"micro-locate-ellipsis","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"save"},"split":"dev","text":"Save…","context":{"docType":"ui","role":"body"}}
|
|
84
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-micro-locate-ellipsis-duplicate","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"micro-locate-ellipsis","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"duplicate"},"split":"dev","text":"Duplicate","context":{"docType":"ui","role":"body"}}
|
|
85
|
+
{"categoryId":"reader-first-framing","id":"tt-x-path-rank-temperature-scene","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":false},"source":{"id":"path-rank-temperature","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"scene"},"split":"dev","text":"Two people edit the same file. One version wins. The other’s afternoon disappears.","context":{"docType":"ui","role":"heading"}}
|
|
86
|
+
{"categoryId":"reader-first-framing","id":"tt-x-path-rank-temperature-price","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":true},"source":{"id":"path-rank-temperature","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"price"},"split":"holdout","text":"$24 per seat, per month. Cancel any time.","context":{"docType":"ui","role":"heading"}}
|
|
87
|
+
{"categoryId":"reader-first-framing","id":"tt-x-lead-rank-layers-why","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":false},"source":{"id":"lead-rank-layers","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"why"},"split":"dev","text":"Never lose a teammate’s work to a bad save.","context":{"docType":"ui","role":"heading"}}
|
|
88
|
+
{"categoryId":"reader-first-framing","id":"tt-x-lead-rank-layers-what","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":true},"source":{"id":"lead-rank-layers","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"what"},"split":"dev","text":"Northwind is a workspace for teams.","context":{"docType":"ui","role":"heading"}}
|
|
89
|
+
{"categoryId":"evidence-over-claims","id":"tt-x-evidence-rank-faith-sourced","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":false},"source":{"id":"evidence-rank-faith","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"sourced"},"split":"dev","text":"Changes appear on every device in under a second, median across 4,200 teams, on our status page.","context":{"docType":"ui","role":"body"}}
|
|
90
|
+
{"categoryId":"evidence-over-claims","id":"tt-x-evidence-rank-faith-vague","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":true},"source":{"id":"evidence-rank-faith","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"vague"},"split":"holdout","text":"Up to 10x faster than a shared drive.","context":{"docType":"ui","role":"body"}}
|
|
91
|
+
{"categoryId":"actionable-cta","id":"tt-x-cta-rank-parts-qualified","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":false,"copywriting-friction-cta":false},"source":{"id":"cta-rank-parts","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"qualified"},"split":"dev","text":"Start syncing free","context":{"docType":"ui","role":"body"}}
|
|
92
|
+
{"categoryId":"actionable-cta","id":"tt-x-cta-rank-parts-generic","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":true,"copywriting-friction-cta":true},"source":{"id":"cta-rank-parts","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"generic"},"split":"holdout","text":"Get started","context":{"docType":"ui","role":"body"}}
|
|
93
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-micro-rank-labels-count","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"micro-rank-labels","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"count"},"split":"dev","text":"Delete 3 files","context":{"docType":"ui","role":"body"}}
|
|
94
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-micro-rank-labels-confirm","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":true,"copywriting-empty-state-no-action":true,"copywriting-bare-confirm-label":true},"source":{"id":"micro-rank-labels","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"confirm"},"split":"dev","text":"Confirm","context":{"docType":"ui","role":"body"}}
|
|
95
|
+
{"categoryId":"reader-first-framing","id":"tt-x-lead-repair-feature-before","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":true},"source":{"id":"lead-repair-feature","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Feature block Now with offline editing.","context":{"docType":"ui","role":"heading"}}
|
|
96
|
+
{"categoryId":"reader-first-framing","id":"tt-x-lead-repair-feature-fixed","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":false},"source":{"id":"lead-repair-feature","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"outcome"},"split":"dev","text":"Keep working on the train. It syncs when you reconnect.","context":{"docType":"ui","role":"heading"}}
|
|
97
|
+
{"categoryId":"reader-first-framing","id":"tt-x-lead-repair-pricing-before","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":true},"source":{"id":"lead-repair-pricing","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Pricing page, first screen Two people edit the same file. One version wins. The other’s afternoon disappears.","context":{"docType":"ui","role":"heading"}}
|
|
98
|
+
{"categoryId":"reader-first-framing","id":"tt-x-lead-repair-pricing-fixed","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":false},"source":{"id":"lead-repair-pricing","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"offer"},"split":"dev","text":"Two plans. $24 per seat on Team, free for up to 3 people.","context":{"docType":"ui","role":"heading"}}
|
|
99
|
+
{"categoryId":"evidence-over-claims","id":"tt-x-evidence-repair-number-before","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":true},"source":{"id":"evidence-repair-number","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"before"},"split":"holdout","text":"Feature page Up to 10x faster than a shared drive.","context":{"docType":"ui","role":"body"}}
|
|
100
|
+
{"categoryId":"evidence-over-claims","id":"tt-x-evidence-repair-number-fixed","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-claim-without-evidence":false},"source":{"id":"evidence-repair-number","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"scoped"},"split":"holdout","text":"Median 0.8 seconds to appear on a second device, across 4,200 teams. Method on our status page.","context":{"docType":"ui","role":"body"}}
|
|
101
|
+
{"categoryId":"actionable-cta","id":"tt-x-cta-repair-generic-before","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":true,"copywriting-friction-cta":true},"source":{"id":"cta-repair-generic","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Pricing card $24 per seat, per month Get started","context":{"docType":"ui","role":"body"}}
|
|
102
|
+
{"categoryId":"actionable-cta","id":"tt-x-cta-repair-generic-fixed","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":false,"copywriting-friction-cta":false},"source":{"id":"cta-repair-generic","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"full"},"split":"dev","text":"Start syncing free","context":{"docType":"ui","role":"body"}}
|
|
103
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-micro-repair-error-before","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":true,"copywriting-empty-state-no-action":true,"copywriting-bare-confirm-label":true},"source":{"id":"micro-repair-error","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Something went wrong. OK","context":{"docType":"ui","role":"body"}}
|
|
104
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-micro-repair-error-fixed","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"micro-repair-error","path":"apps/web/content/exercises/make-words-earn-their-place.tsx","repo":"mblode/taste-training","option":"three"},"split":"holdout","text":"Couldn’t rename “Clients” — you’re an editor on this folder. Ask Priya, the owner, for admin access.","context":{"docType":"ui","role":"body"}}
|
|
105
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-seams-locate-numbered-heading","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"seams-locate-numbered","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"heading"},"split":"dev","text":"Create your workspace","context":{"docType":"ui","role":"body"}}
|
|
106
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-seams-locate-numbered-button","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"seams-locate-numbered","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"button"},"split":"dev","text":"Create account","context":{"docType":"ui","role":"body"}}
|
|
107
|
+
{"categoryId":"reader-first-framing","id":"tt-x-hero-locate-promise-chip","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":false},"source":{"id":"hero-locate-promise","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"chip"},"split":"dev","text":"✦ AI-powered","context":{"docType":"ui","role":"heading"}}
|
|
108
|
+
{"categoryId":"reader-first-framing","id":"tt-x-hero-locate-promise-headline","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":true},"source":{"id":"hero-locate-promise","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"headline"},"split":"dev","text":"The Future of Work, Reimagined","context":{"docType":"ui","role":"heading"}}
|
|
109
|
+
{"categoryId":"reader-first-framing","id":"tt-x-hero-locate-promise-sub","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":false},"source":{"id":"hero-locate-promise","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"sub"},"split":"dev","text":"Push one update and every laptop runs it by morning.","context":{"docType":"ui","role":"heading"}}
|
|
110
|
+
{"categoryId":"reader-first-framing","id":"tt-x-hero-locate-promise-buttons","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":false},"source":{"id":"hero-locate-promise","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"buttons"},"split":"dev","text":"Learn more Learn more","context":{"docType":"ui","role":"heading"}}
|
|
111
|
+
{"categoryId":"reader-first-framing","id":"tt-x-price-locate-buyer-features","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":false},"source":{"id":"price-locate-buyer","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"features"},"split":"dev","text":"Unlimited projects","context":{"docType":"ui","role":"heading"}}
|
|
112
|
+
{"categoryId":"reader-first-framing","id":"tt-x-price-locate-buyer-buttons","kind":"jsx-text","labelSource":"manifest","labels":{"copywriting-reader-first":false},"source":{"id":"price-locate-buyer","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"buttons"},"split":"dev","text":"Get started","context":{"docType":"ui","role":"heading"}}
|
|
113
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-set-locate-public-heading","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":true,"copywriting-empty-state-no-action":true,"copywriting-bare-confirm-label":true},"source":{"id":"set-locate-public","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"heading"},"split":"dev","text":"Profile","context":{"docType":"ui","role":"body"}}
|
|
114
|
+
{"categoryId":"typographic-detail","id":"tt-x-audit-locate-unit-title","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":false,"typography-dashes":false,"typography-ellipsis":false,"typography-nbsp-value-unit":false},"source":{"id":"audit-locate-unit","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"title"},"split":"dev","text":"This month","context":{"docType":"ui","role":"body"}}
|
|
115
|
+
{"categoryId":"typographic-detail","id":"tt-x-audit-locate-unit-members","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":false,"typography-dashes":false,"typography-ellipsis":false,"typography-nbsp-value-unit":false},"source":{"id":"audit-locate-unit","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"members"},"split":"dev","text":"24 members","context":{"docType":"ui","role":"body"}}
|
|
116
|
+
{"categoryId":"typographic-detail","id":"tt-x-audit-locate-unit-storage","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":true,"typography-dashes":true,"typography-ellipsis":true,"typography-nbsp-value-unit":true},"source":{"id":"audit-locate-unit","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"storage"},"split":"holdout","text":"482 GB","context":{"docType":"ui","role":"body"}}
|
|
117
|
+
{"categoryId":"typographic-detail","id":"tt-x-audit-locate-unit-uptime","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":false,"typography-dashes":false,"typography-ellipsis":false,"typography-nbsp-value-unit":false},"source":{"id":"audit-locate-unit","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"uptime"},"split":"holdout","text":"99.9% uptime","context":{"docType":"ui","role":"body"}}
|
|
118
|
+
{"categoryId":"actionable-cta","id":"tt-x-seams-rank-label-object","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":false,"copywriting-friction-cta":false},"source":{"id":"seams-rank-label","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"object"},"split":"dev","text":"Delete Acme launch","context":{"docType":"ui","role":"body"}}
|
|
119
|
+
{"categoryId":"actionable-cta","id":"tt-x-seams-rank-label-bare","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":true,"copywriting-friction-cta":true},"source":{"id":"seams-rank-label","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"bare"},"split":"dev","text":"Delete","context":{"docType":"ui","role":"body"}}
|
|
120
|
+
{"categoryId":"actionable-cta","id":"tt-x-hero-repair-cta-before","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":true,"copywriting-friction-cta":true},"source":{"id":"hero-repair-cta","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Learn more Learn more","context":{"docType":"ui","role":"body"}}
|
|
121
|
+
{"categoryId":"actionable-cta","id":"tt-x-hero-repair-cta-fixed","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":false,"copywriting-friction-cta":false},"source":{"id":"hero-repair-cta","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"single"},"split":"dev","text":"Start free trial See how it works","context":{"docType":"ui","role":"body"}}
|
|
122
|
+
{"categoryId":"actionable-cta","id":"tt-x-pop-repair-labels-before","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":true,"copywriting-friction-cta":true},"source":{"id":"pop-repair-labels","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Feedback Submit","context":{"docType":"ui","role":"body"}}
|
|
123
|
+
{"categoryId":"actionable-cta","id":"tt-x-pop-repair-labels-fixed","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":false,"copywriting-friction-cta":false},"source":{"id":"pop-repair-labels","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"outcome"},"split":"dev","text":"Send feedback The more detail, the faster we can fix it. Send","context":{"docType":"ui","role":"body"}}
|
|
124
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-pop-repair-ack-before","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":true,"copywriting-empty-state-no-action":true,"copywriting-bare-confirm-label":true},"source":{"id":"pop-repair-ack","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"before"},"split":"holdout","text":"Feedback","context":{"docType":"ui","role":"body"}}
|
|
125
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-pop-repair-ack-fixed","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"pop-repair-ack","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"near"},"split":"dev","text":"Thanks, we have got it","context":{"docType":"ui","role":"body"}}
|
|
126
|
+
{"categoryId":"actionable-cta","id":"tt-x-price-repair-ctas-before","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":true,"copywriting-friction-cta":true},"source":{"id":"price-repair-ctas","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Get started","context":{"docType":"ui","role":"body"}}
|
|
127
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-set-repair-loss-before","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":true,"copywriting-empty-state-no-action":true,"copywriting-bare-confirm-label":true},"source":{"id":"set-repair-loss","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Delete Account Delete Account","context":{"docType":"ui","role":"body"}}
|
|
128
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-set-repair-loss-fixed","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"set-repair-loss","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"loss"},"split":"dev","text":"Delete account This removes your account, your profile and every file in it. It cannot be undone. Delete account","context":{"docType":"ui","role":"body"}}
|
|
129
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-set-repair-feedback-before","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":true,"copywriting-empty-state-no-action":true,"copywriting-bare-confirm-label":true},"source":{"id":"set-repair-feedback","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Save","context":{"docType":"ui","role":"body"}}
|
|
130
|
+
{"categoryId":"actionable-microcopy","id":"tt-x-set-repair-feedback-fixed","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-vague-error":false,"copywriting-empty-state-no-action":false,"copywriting-bare-confirm-label":false},"source":{"id":"set-repair-feedback","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"near"},"split":"dev","text":"Save Saved","context":{"docType":"ui","role":"body"}}
|
|
131
|
+
{"categoryId":"actionable-cta","id":"tt-x-qc-locate-default-heading","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":false,"copywriting-friction-cta":false},"source":{"id":"qc-locate-default","path":"apps/web/content/exercises/train-your-eye.tsx","repo":"mblode/taste-training","option":"heading"},"split":"dev","text":"Create your workspace","context":{"docType":"ui","role":"body"}}
|
|
132
|
+
{"categoryId":"actionable-cta","id":"tt-x-qc-locate-default-sub","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":false,"copywriting-friction-cta":false},"source":{"id":"qc-locate-default","path":"apps/web/content/exercises/train-your-eye.tsx","repo":"mblode/taste-training","option":"sub"},"split":"dev","text":"Your team’s files, in sync from the first day.","context":{"docType":"ui","role":"body"}}
|
|
133
|
+
{"categoryId":"actionable-cta","id":"tt-x-qc-locate-default-button","kind":"jsx-text","labelSource":"manifest-weak","labels":{"copywriting-cta-names-outcome":true,"copywriting-friction-cta":true},"source":{"id":"qc-locate-default","path":"apps/web/content/exercises/train-your-eye.tsx","repo":"mblode/taste-training","option":"button"},"split":"dev","text":"Submit","context":{"docType":"ui","role":"body"}}
|
|
134
|
+
{"categoryId":"typographic-detail","id":"tt-x-tye-repair-quotes-before","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":true,"typography-dashes":true,"typography-ellipsis":true,"typography-nbsp-value-unit":true},"source":{"id":"tye-repair-quotes","path":"apps/web/content/exercises/train-your-eye.tsx","repo":"mblode/taste-training","option":"before"},"split":"holdout","text":"\"Sync everything.\"","context":{"docType":"ui","role":"body"}}
|
|
135
|
+
{"categoryId":"typographic-detail","id":"tt-x-tye-repair-quotes-fixed","kind":"jsx-text","labelSource":"manifest-weak","labels":{"typography-straight-quotes":false,"typography-dashes":false,"typography-ellipsis":false,"typography-nbsp-value-unit":false},"source":{"id":"tye-repair-quotes","path":"apps/web/content/exercises/train-your-eye.tsx","repo":"mblode/taste-training","option":"curly"},"split":"dev","text":"“Sync everything.”","context":{"docType":"ui","role":"body"}}
|
|
136
|
+
{"categoryId":"evidence-over-claims","context":{"docType":"marketing","role":"body"},"id":"tt-sweep-sample-1","kind":"paragraph","labelSource":"sweep","labels":{"copywriting-dead-weight-hedges":true,"copywriting-generic-audience":true,"copywriting-claim-without-evidence":true,"copywriting-register-shift":true,"copywriting-machine-prose":true},"source":{"id":"SAMPLE_COPY","path":"apps/web/components/demos/copywriting/sweep-runner.tsx","repo":"mblode/taste-training"},"split":"dev","text":"We believe that teams of all sizes deserve powerful, easy to use analytics. Our mission is to help you be more productive and save time and money."}
|
|
137
|
+
{"categoryId":"evidence-over-claims","context":{"docType":"marketing","role":"body"},"id":"tt-sweep-sample-2","kind":"paragraph","labelSource":"sweep","labels":{"copywriting-dead-weight-hedges":true,"copywriting-generic-audience":true,"copywriting-claim-without-evidence":true,"copywriting-register-shift":true,"copywriting-machine-prose":true},"source":{"id":"SAMPLE_COPY","path":"apps/web/components/demos/copywriting/sweep-runner.tsx","repo":"mblode/taste-training"},"split":"dev","text":"This is a comprehensive platform that provides seamless integration with all the tools you need. It is a robust solution designed to be flexible and intuitive."}
|
|
138
|
+
{"categoryId":"evidence-over-claims","context":{"docType":"marketing","role":"body"},"id":"tt-sweep-sample-3","kind":"paragraph","labelSource":"sweep","labels":{"copywriting-dead-weight-hedges":true,"copywriting-generic-audience":true,"copywriting-claim-without-evidence":true,"copywriting-register-shift":true,"copywriting-machine-prose":true},"source":{"id":"SAMPLE_COPY","path":"apps/web/components/demos/copywriting/sweep-runner.tsx","repo":"mblode/taste-training"},"split":"holdout","text":"Whether you're a startup founder or an enterprise leader, our cutting-edge product helps you grow your business and take it to the next level. In order to get started, sign up and create an account."}
|
|
139
|
+
{"categoryId":"evidence-over-claims","context":{"docType":"marketing","role":"body"},"id":"tt-sweep-sample-4","kind":"paragraph","labelSource":"sweep","labels":{"copywriting-dead-weight-hedges":true,"copywriting-generic-audience":true,"copywriting-claim-without-evidence":true,"copywriting-register-shift":true,"copywriting-machine-prose":true},"source":{"id":"SAMPLE_COPY","path":"apps/web/components/demos/copywriting/sweep-runner.tsx","repo":"mblode/taste-training"},"split":"dev","text":"Furthermore, our innovative approach utilizes next-generation technology to deliver best-in-class results. Contact us to request a demo and see everything you need, and much more."}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{"categoryId":"reading-comfort","id":"tt-j-typo-body-weight-a","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-letterspaced-body":true,"typography-body-below-15px":true,"typography-line-height-out-of-band":true},"source":{"id":"typo-body-weight","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"a"},"split":"holdout","text":"Notification rules","classes":["font-semibold","text-base","text-foreground"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"p","text":"Choose which sync events reach your inbox and which stay in the activity feed. Anything you mute here still appears on the folder itself.","typography":{"colourClasses":["text-foreground/70"],"unresolved":[],"fontWeight":300,"fontSizePx":14,"lineHeight":1.625}}}}
|
|
2
|
+
{"categoryId":"reading-comfort","id":"tt-j-typo-body-weight-b","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-letterspaced-body":false,"typography-body-below-15px":false,"typography-line-height-out-of-band":false},"source":{"id":"typo-body-weight","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"Notification rules","classes":["font-semibold","text-base","text-foreground"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"p","text":"Choose which sync events reach your inbox and which stay in the activity feed. Anything you mute here still appears on the folder itself.","typography":{"colourClasses":["text-foreground"],"unresolved":[],"fontSizePx":14,"lineHeight":1.625}}}}
|
|
3
|
+
{"categoryId":"type-hierarchy","id":"tt-j-hierarchy-feel-skim-a","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":true,"typography-stacked-emphasis":true},"source":{"id":"hierarchy-feel-skim","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"Notification rules","classes":["text-[17px]","font-semibold"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"p","text":"Choose which sync events reach your inbox and which stay in the activity feed.","typography":{"colourClasses":["text-muted-foreground"],"unresolved":[],"fontSizePx":15}}}}
|
|
4
|
+
{"categoryId":"type-hierarchy","id":"tt-j-hierarchy-feel-skim-b","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"hierarchy-feel-skim","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"Notification rules","classes":["text-[26px]","font-semibold","leading-tight","tracking-tight"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"p","text":"Choose which sync events reach your inbox and which stay in the activity feed.","typography":{"colourClasses":["text-muted-foreground"],"unresolved":[],"fontSizePx":15}}}}
|
|
5
|
+
{"categoryId":"type-hierarchy","id":"tt-j-hierarchy-heading-weight-a","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"hierarchy-heading-weight","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"Sync history","classes":["text-[30px]","font-semibold","leading-tight","tracking-tight"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"p","text":"Every file change, in order.","typography":{"colourClasses":["text-muted-foreground"],"unresolved":[],"fontSizePx":14,"lineHeightPx":20,"lineHeight":1.429}}}}
|
|
6
|
+
{"categoryId":"type-hierarchy","id":"tt-j-hierarchy-heading-weight-b","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":true,"typography-stacked-emphasis":true},"source":{"id":"hierarchy-heading-weight","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"Sync history","classes":["text-[30px]","font-black","leading-tight","tracking-tight"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"p","text":"Every file change, in order.","typography":{"colourClasses":["text-muted-foreground"],"unresolved":[],"fontSizePx":14,"lineHeightPx":20,"lineHeight":1.429}}}}
|
|
7
|
+
{"categoryId":"reading-comfort","id":"tt-j-alignment-centred-paragraph-a","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-letterspaced-body":true,"typography-body-below-15px":true,"typography-line-height-out-of-band":true},"source":{"id":"alignment-centred-paragraph","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"a"},"split":"holdout","text":"Northwind keeps a full history of every file, so you can restore any version from any device. Changes sync in the background, and conflicts are flagged before they overwrite anyone’s work.","classes":["max-w-[320px]","text-center","text-sm","leading-relaxed"],"context":{"docType":"ui","role":"body"}}
|
|
8
|
+
{"categoryId":"reading-comfort","id":"tt-j-alignment-centred-paragraph-b","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-letterspaced-body":false,"typography-body-below-15px":false,"typography-line-height-out-of-band":false},"source":{"id":"alignment-centred-paragraph","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"Northwind keeps a full history of every file, so you can restore any version from any device. Changes sync in the background, and conflicts are flagged before they overwrite anyone’s work.","classes":["max-w-[320px]","text-sm","leading-relaxed"],"context":{"docType":"ui","role":"body"}}
|
|
9
|
+
{"categoryId":"type-hierarchy","id":"tt-j-display-headline-tightening-a","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":true,"typography-stacked-emphasis":true},"source":{"id":"display-headline-tightening","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"a"},"split":"holdout","text":"Every file, synced before you ask","classes":["max-w-[200px]","text-[28px]","font-bold","leading-normal","tracking-normal"],"context":{"docType":"ui","role":"body"}}
|
|
10
|
+
{"categoryId":"type-hierarchy","id":"tt-j-display-headline-tightening-b","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"display-headline-tightening","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"Every file, synced before you ask","classes":["max-w-[200px]","text-[28px]","font-bold","leading-[1.1]","tracking-tight"],"context":{"docType":"ui","role":"body"}}
|
|
11
|
+
{"categoryId":"type-hierarchy","id":"tt-j-hierarchy-quiet-levers-a","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":true,"typography-stacked-emphasis":true},"source":{"id":"hierarchy-quiet-levers","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"a"},"split":"holdout","text":"Storage","classes":["text-[24px]","font-semibold","tracking-tight"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"p","text":"Usage this month","typography":{"colourClasses":[],"unresolved":[],"fontSizePx":20,"fontWeight":600}}}}
|
|
12
|
+
{"categoryId":"type-hierarchy","id":"tt-j-hierarchy-quiet-levers-b","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"hierarchy-quiet-levers","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"Storage","classes":["text-[24px]","font-semibold","tracking-tight"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"p","text":"Usage this month","typography":{"colourClasses":["text-muted-foreground"],"unresolved":[],"fontSizePx":11,"fontWeight":600,"uppercase":true,"letterSpacingEm":0.1}}}}
|
|
13
|
+
{"categoryId":"reading-comfort","id":"tt-j-reading-comfort-size-a","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-letterspaced-body":true,"typography-body-below-15px":true,"typography-line-height-out-of-band":true},"source":{"id":"reading-comfort-size","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"Invite your team from the workspace menu. Anyone you add can see shared folders straight away, and their edits sync to every device within seconds of saving.","classes":["max-w-[38ch]","text-[12px]","leading-normal"],"context":{"docType":"ui","role":"body"}}
|
|
14
|
+
{"categoryId":"reading-comfort","id":"tt-j-reading-comfort-size-b","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-letterspaced-body":false,"typography-body-below-15px":false,"typography-line-height-out-of-band":false},"source":{"id":"reading-comfort-size","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"b"},"split":"holdout","text":"Invite your team from the workspace menu. Anyone you add can see shared folders straight away, and their edits sync to every device within seconds of saving.","classes":["max-w-[38ch]","text-[17px]","leading-normal"],"context":{"docType":"ui","role":"body"}}
|
|
15
|
+
{"categoryId":"reading-comfort","id":"tt-j-reading-leading-by-measure-a","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-letterspaced-body":false,"typography-body-below-15px":false,"typography-line-height-out-of-band":false},"source":{"id":"reading-leading-by-measure","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"Sync runs every five minutes, on every plan, on every device.","classes":["border-border","border-l-2","pl-2","text-[11px]","text-muted-foreground"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"p","text":"Northwind keeps every file in your workspace current across every device your team signs in from, so nobody has to email an attachment around, and nobody has to stop and work out which copy of it is the one that actually matters.","typography":{"colourClasses":["text-foreground"],"unresolved":[],"fontSizePx":11}}}}
|
|
16
|
+
{"categoryId":"reading-comfort","id":"tt-j-reading-leading-by-measure-b","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-letterspaced-body":true,"typography-body-below-15px":true,"typography-line-height-out-of-band":true},"source":{"id":"reading-leading-by-measure","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"Sync runs every five minutes, on every plan, on every device.","classes":["border-border","border-l-2","pl-2","text-[11px]","text-muted-foreground"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"p","text":"Northwind keeps every file in your workspace current across every device your team signs in from, so nobody has to email an attachment around, and nobody has to stop and work out which copy of it is the one that actually matters.","typography":{"colourClasses":["text-foreground"],"unresolved":[],"fontSizePx":11}}}}
|
|
17
|
+
{"categoryId":"reading-comfort","id":"tt-j-reading-comfort-line-height-a","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-letterspaced-body":false,"typography-body-below-15px":false,"typography-line-height-out-of-band":false},"source":{"id":"reading-comfort-line-height","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"Version history keeps every draft. Restore an earlier copy at any time, and Northwind keeps the current one safe alongside it.","classes":["max-w-[34ch]","text-[15px]","leading-[1.5]"],"context":{"docType":"ui","role":"body"}}
|
|
18
|
+
{"categoryId":"reading-comfort","id":"tt-j-reading-comfort-line-height-b","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-letterspaced-body":true,"typography-body-below-15px":true,"typography-line-height-out-of-band":true},"source":{"id":"reading-comfort-line-height","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"Version history keeps every draft. Restore an earlier copy at any time, and Northwind keeps the current one safe alongside it.","classes":["max-w-[34ch]","text-[15px]","leading-[1.15]"],"context":{"docType":"ui","role":"body"}}
|
|
19
|
+
{"categoryId":"type-hierarchy","id":"tt-j-hierarchy-labels-last-a","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":true,"typography-stacked-emphasis":true},"source":{"id":"hierarchy-labels-last","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"Name","classes":["text-zinc-500"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"p","text":"Priya Shah","typography":{"colourClasses":["text-zinc-900"],"unresolved":[],"fontWeight":500}}}}
|
|
20
|
+
{"categoryId":"type-hierarchy","id":"tt-j-hierarchy-labels-last-b","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"hierarchy-labels-last","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"Priya Shah","classes":["font-semibold","text-sm","text-zinc-900"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"p","text":"priya@northwind.app","typography":{"colourClasses":["text-zinc-700"],"unresolved":[],"fontSizePx":12,"lineHeightPx":16,"lineHeight":1.333}}}}
|
|
21
|
+
{"categoryId":"type-hierarchy","id":"tt-j-hierarchy-link-colour-a","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"hierarchy-link-colour","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"a"},"split":"dev","text":"Brief.pdf","classes":["font-medium","text-zinc-900","underline"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"span","text":"·","typography":{"colourClasses":["text-zinc-500"],"unresolved":[]}}}}
|
|
22
|
+
{"categoryId":"type-hierarchy","id":"tt-j-hierarchy-link-colour-b","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":true,"typography-stacked-emphasis":true},"source":{"id":"hierarchy-link-colour","path":"apps/web/content/judgements/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"b"},"split":"dev","text":"Brief.pdf","classes":["font-medium","text-sky-600","underline"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"span","text":"·","typography":{"colourClasses":["text-zinc-500"],"unresolved":[]}}}}
|
|
23
|
+
{"categoryId":"reading-comfort","id":"tt-x-ai-repair-centred-before","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-letterspaced-body":true,"typography-body-below-15px":true,"typography-line-height-out-of-band":true},"source":{"id":"ai-repair-centred","path":"apps/web/content/exercises/keep-your-taste-with-ai.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Northwind keeps every device in sync. Edit a file on your laptop and the change reaches your phone before you close the lid, with version history on every save.","classes":["text-center","text-muted-foreground","text-xs","leading-relaxed"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
24
|
+
{"categoryId":"reading-comfort","id":"tt-x-ai-repair-centred-fixed","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-letterspaced-body":false,"typography-body-below-15px":false,"typography-line-height-out-of-band":false},"source":{"id":"ai-repair-centred","path":"apps/web/content/exercises/keep-your-taste-with-ai.tsx","repo":"mblode/taste-training","option":"left"},"split":"dev","text":"Northwind keeps every device in sync. Edit a file on your laptop and the change reaches your phone before you close the lid, with version history on every save.","classes":["text-muted-foreground","text-xs","leading-relaxed"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
25
|
+
{"categoryId":"reading-comfort","id":"tt-x-comfort-locate-crowded-first","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-letterspaced-body":false,"typography-body-below-15px":false,"typography-line-height-out-of-band":false},"source":{"id":"comfort-locate-crowded","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"first"},"split":"dev","text":"Northwind syncs your workspace in the background, so every device your team signs in from opens the same files.","classes":["text-foreground","text-sm"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
26
|
+
{"categoryId":"reading-comfort","id":"tt-x-comfort-locate-crowded-second","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-letterspaced-body":true,"typography-body-below-15px":true,"typography-line-height-out-of-band":true},"source":{"id":"comfort-locate-crowded","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"second"},"split":"dev","text":"Choose the folders that follow you across devices. Everything else stays where you left it, on the machine you left it on.","classes":["text-foreground","text-sm"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
27
|
+
{"categoryId":"reading-comfort","id":"tt-x-comfort-locate-crowded-third","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-letterspaced-body":false,"typography-body-below-15px":false,"typography-line-height-out-of-band":false},"source":{"id":"comfort-locate-crowded","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"third"},"split":"holdout","text":"Version history keeps every earlier draft one click away, for thirty days on Team and for a year on Business.","classes":["text-foreground","text-sm"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
28
|
+
{"categoryId":"reading-comfort","id":"tt-x-comfort-locate-crowded-fourth","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-letterspaced-body":false,"typography-body-below-15px":false,"typography-line-height-out-of-band":false},"source":{"id":"comfort-locate-crowded","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"fourth"},"split":"holdout","text":"When a sync fails, check the connection and retry from the status menu in the corner of the window.","classes":["text-foreground","text-sm"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
29
|
+
{"categoryId":"type-hierarchy","id":"tt-x-hierarchy-locate-nearequal-title","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"hierarchy-locate-nearequal","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"title"},"split":"dev","text":"Settings","classes":["font-semibold","text-2xl","text-foreground"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
30
|
+
{"categoryId":"type-hierarchy","id":"tt-x-hierarchy-locate-nearequal-section","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":true,"typography-stacked-emphasis":true},"source":{"id":"hierarchy-locate-nearequal","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"section"},"split":"holdout","text":"Billing","classes":["font-semibold","text-foreground"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
31
|
+
{"categoryId":"type-hierarchy","id":"tt-x-hierarchy-locate-nearequal-body","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"hierarchy-locate-nearequal","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"body"},"split":"dev","text":"Your plan renews monthly. Change it any time before the renewal date.","classes":["text-foreground","leading-relaxed"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
32
|
+
{"categoryId":"type-hierarchy","id":"tt-x-hierarchy-locate-nearequal-helper","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"hierarchy-locate-nearequal","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"helper"},"split":"dev","text":"Invoices go to the workspace owner.","classes":["text-muted-foreground","text-xs"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
33
|
+
{"categoryId":"type-hierarchy","id":"tt-x-hierarchy-locate-label-dump-title","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"hierarchy-locate-label-dump","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"title"},"split":"holdout","text":"Team","classes":["font-semibold","text-lg","text-foreground"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
34
|
+
{"categoryId":"type-hierarchy","id":"tt-x-hierarchy-locate-label-dump-contact","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":true,"typography-stacked-emphasis":true},"source":{"id":"hierarchy-locate-label-dump","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"contact"},"split":"dev","text":"Name","classes":["text-muted-foreground"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"p","text":"Priya Shah","typography":{"colourClasses":["text-foreground"],"unresolved":[],"fontWeight":500}}}}
|
|
35
|
+
{"categoryId":"type-hierarchy","id":"tt-x-hierarchy-locate-label-dump-plan","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"hierarchy-locate-label-dump","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"plan"},"split":"dev","text":"Pro plan · renews May","classes":["text-muted-foreground","text-xs"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
36
|
+
{"categoryId":"type-hierarchy","id":"tt-x-display-locate-tracked-body-eyebrow","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"display-locate-tracked-body","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"eyebrow"},"split":"dev","text":"Now in beta","classes":["text-muted-foreground","text-xs","uppercase"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
37
|
+
{"categoryId":"type-hierarchy","id":"tt-x-display-locate-tracked-body-headline","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"display-locate-tracked-body","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"headline"},"split":"dev","text":"Every file, synced before you ask","classes":["font-semibold","text-3xl","text-foreground"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
38
|
+
{"categoryId":"type-hierarchy","id":"tt-x-display-locate-tracked-body-body","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":true,"typography-stacked-emphasis":true},"source":{"id":"display-locate-tracked-body","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"body"},"split":"dev","text":"Northwind keeps your workspace current across every device your team signs in from.","classes":["text-foreground","text-sm","leading-relaxed"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
39
|
+
{"categoryId":"type-hierarchy","id":"tt-x-display-locate-tracked-body-caption","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"display-locate-tracked-body","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"caption"},"split":"dev","text":"No card needed for the trial.","classes":["text-muted-foreground","text-xs"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
40
|
+
{"categoryId":"type-hierarchy","id":"tt-x-display-locate-caps-tracking-eyebrow","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":true,"typography-stacked-emphasis":true},"source":{"id":"display-locate-caps-tracking","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"eyebrow"},"split":"dev","text":"Now in beta","classes":["text-muted-foreground","text-xs","uppercase"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
41
|
+
{"categoryId":"type-hierarchy","id":"tt-x-display-locate-caps-tracking-headline","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"display-locate-caps-tracking","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"headline"},"split":"dev","text":"Every file, synced before you ask","classes":["font-semibold","text-3xl","text-foreground"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
42
|
+
{"categoryId":"type-hierarchy","id":"tt-x-display-locate-caps-tracking-body","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"display-locate-caps-tracking","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"body"},"split":"holdout","text":"Northwind keeps your workspace current across every device your team signs in from.","classes":["text-foreground","text-sm","leading-relaxed"],"context":{"docType":"ui","role":"body"},"neighbours":{}}
|
|
43
|
+
{"categoryId":"type-hierarchy","id":"tt-x-display-locate-caps-tracking-button","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"display-locate-caps-tracking","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"button"},"split":"dev","text":"Start the trial","classes":["w-full","rounded-lg","bg-foreground","py-2","font-medium","text-background","text-sm"],"context":{"docType":"ui","role":"button"},"neighbours":{}}
|
|
44
|
+
{"categoryId":"reading-comfort","id":"tt-x-reading-repair-wide-leading-before","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-letterspaced-body":true,"typography-body-below-15px":true,"typography-line-height-out-of-band":true},"source":{"id":"reading-repair-wide-leading","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Version history keeps every earlier draft of every file for thirty days on Team and for a full year on Business, so a document overwritten on Tuesday can be restored on Friday without anyone opening a ticket, and the copy that was overwritten is kept alongside the one that replaced it rather than thrown away, which is what makes it safe to work on the same file as somebody else.","classes":["text-[10px]","text-foreground"],"context":{"docType":"ui","role":"body"}}
|
|
45
|
+
{"categoryId":"type-hierarchy","id":"tt-x-hierarchy-repair-link-colour-before","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":true,"typography-stacked-emphasis":true},"source":{"id":"hierarchy-repair-link-colour","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"before"},"split":"holdout","text":"Brief.pdf","classes":["font-medium","text-sky-600","underline"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"span","text":"·","typography":{"colourClasses":["text-zinc-400"],"unresolved":[]}}}}
|
|
46
|
+
{"categoryId":"type-hierarchy","id":"tt-x-hierarchy-repair-link-colour-fixed","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"hierarchy-repair-link-colour","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"ink"},"split":"holdout","text":"Brief.pdf","classes":["font-medium","text-zinc-900","underline"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"span","text":"·","typography":{"colourClasses":["text-zinc-400"],"unresolved":[]}}}}
|
|
47
|
+
{"categoryId":"type-hierarchy","id":"tt-x-display-repair-hero-before","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":true,"typography-stacked-emphasis":true},"source":{"id":"display-repair-hero","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Every file, synced before you ask","classes":["text-2xl","text-foreground"],"context":{"docType":"ui","role":"body"}}
|
|
48
|
+
{"categoryId":"type-hierarchy","id":"tt-x-display-repair-hero-fixed","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"display-repair-hero","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"tracking"},"split":"dev","text":"Every file, synced before you ask","classes":["text-2xl","text-foreground"],"context":{"docType":"ui","role":"body"}}
|
|
49
|
+
{"categoryId":"type-hierarchy","id":"tt-x-display-repair-leading-before","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":true,"typography-stacked-emphasis":true},"source":{"id":"display-repair-leading","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Every file, synced before you ask","classes":["w-full","max-w-[16ch]","text-foreground","text-2xl"],"context":{"docType":"ui","role":"body"}}
|
|
50
|
+
{"categoryId":"type-hierarchy","id":"tt-x-display-repair-leading-fixed","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"display-repair-leading","path":"apps/web/content/exercises/make-text-feel-right.tsx","repo":"mblode/taste-training","option":"leading"},"split":"dev","text":"Every file, synced before you ask","classes":["w-full","max-w-[16ch]","text-foreground","text-2xl"],"context":{"docType":"ui","role":"body"}}
|
|
51
|
+
{"categoryId":"type-hierarchy","id":"tt-x-hero-repair-gradient-before","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":true,"typography-stacked-emphasis":true},"source":{"id":"hero-repair-gradient","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Every laptop on the same version by morning","classes":["mt-1.5","text-lg"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"p","text":"Push one update from here. Northwind does the rest overnight.","typography":{"colourClasses":[],"unresolved":[],"fontSizePx":14,"lineHeightPx":20,"lineHeight":1.429}},"prev":{"element":"span","text":"✦ For IT teams"}}}
|
|
52
|
+
{"categoryId":"type-hierarchy","id":"tt-x-pop-repair-order-before","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":true,"typography-stacked-emphasis":true},"source":{"id":"pop-repair-order","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"before"},"split":"dev","text":"Send feedback","classes":["text-foreground","text-sm"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"p","text":"The more detail, the faster we can fix it.","typography":{"colourClasses":["text-foreground"],"unresolved":[],"fontSizePx":14,"lineHeightPx":20,"lineHeight":1.429}}}}
|
|
53
|
+
{"categoryId":"type-hierarchy","id":"tt-x-pop-repair-order-fixed","kind":"class-list","labelSource":"manifest-weak","labels":{"typography-hierarchy-size-only":false,"typography-stacked-emphasis":false},"source":{"id":"pop-repair-order","path":"apps/web/content/exercises/rebuild-real-screens.tsx","repo":"mblode/taste-training","option":"ranked"},"split":"dev","text":"Send feedback","classes":["font-semibold","text-foreground","text-sm"],"context":{"docType":"ui","role":"body"},"neighbours":{"next":{"element":"p","text":"The more detail, the faster we can fix it.","typography":{"colourClasses":["text-muted-foreground"],"unresolved":[],"fontSizePx":12,"lineHeight":1.625}}}}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Rule drafts
|
|
2
|
+
|
|
3
|
+
Source rules `scripts/port-rules.ts` could not ship as they stand. The loader never reads this folder; `taste-lint rules check` ignores it.
|
|
4
|
+
|
|
5
|
+
Each draft says why in `portNotes`: the detection is a shell pipeline or loop, the rg pattern uses syntax JavaScript regexes lack, the check needs a rendered page, or the rule needs a question a person has to write. To promote one, finish the missing part, list the keys you wrote under `handWritten`, move the file to `data/rules/<domain>/`, and run `taste-lint rules check`.
|
|
6
|
+
|
|
7
|
+
Two drafts remain, both `detect: rendered` in the source: `interaction-layout-shift` (content that moves after paint) and `typography-long-content-safety` (overflow and truncation of real text). A regex over source cannot see either; they wait for the rendered extractor (`taste-lint lint --url`) to carry layout deltas and overflow. Every other draft the script once produced has been hand-ported to a regex-plus-`absent` rule under `data/rules/` or authored as its own rule.
|
|
8
|
+
|
|
9
|
+
Regenerate with `npm run port-rules -- --skills-dir ../agent-skills --write`. It writes every unshipped source rule as a draft, including the ones already covered by hand-authored rules under other ids, so prune what you do not intend to promote before committing. A draft that has been moved under `data/rules/` is not written again.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Ported from mblode/agent-skills skills/ui-design/rules/states-layout-shift.md by scripts/port-rules.ts.
|
|
2
|
+
# Keys listed in handWritten are preserved on re-run; everything else is regenerated.
|
|
3
|
+
id: interaction-layout-shift
|
|
4
|
+
title: Loading state causes layout shift on data arrival
|
|
5
|
+
categoryId: state-coverage
|
|
6
|
+
domain: interaction
|
|
7
|
+
source:
|
|
8
|
+
line: 9
|
|
9
|
+
path: skills/ui-design/rules/states-layout-shift.md
|
|
10
|
+
repo: mblode/agent-skills
|
|
11
|
+
ruleId: states-layout-shift
|
|
12
|
+
tier: fix-this-sprint
|
|
13
|
+
scope:
|
|
14
|
+
exclude:
|
|
15
|
+
- "**/*.test.*"
|
|
16
|
+
- "**/*.spec.*"
|
|
17
|
+
- "**/*.stories.*"
|
|
18
|
+
include:
|
|
19
|
+
- "**/*.ts"
|
|
20
|
+
- "**/*.tsx"
|
|
21
|
+
unit:
|
|
22
|
+
- element
|
|
23
|
+
tier: jev
|
|
24
|
+
question:
|
|
25
|
+
context:
|
|
26
|
+
- element
|
|
27
|
+
- docType
|
|
28
|
+
criteria:
|
|
29
|
+
"false":
|
|
30
|
+
examples:
|
|
31
|
+
- TODO
|
|
32
|
+
what: >-
|
|
33
|
+
- Skip files with `// ui-audit-ignore:states-layout-shift`.
|
|
34
|
+
|
|
35
|
+
- Below-the-fold `content-visibility: auto` may CLS-shift inside its own subtree (acceptable).
|
|
36
|
+
|
|
37
|
+
- Skip components declaring `min-height` via CSS class (Tailwind `min-h-*`); inspect class strings first.
|
|
38
|
+
|
|
39
|
+
- Skip Storybook fixtures.
|
|
40
|
+
"true":
|
|
41
|
+
examples:
|
|
42
|
+
- TODO
|
|
43
|
+
what: TODO
|
|
44
|
+
instructions: "TODO: The skeleton or spinner takes 0x0 (or some height); loaded content takes 200x400; when data arrives every element below it jumps. This is the default Cumulative Layout Shift bug, everywhere: skeletons without `min-height`, images without `width`/`height`, fonts without `font-display: swap` and `size-adjust`. Fix is mechanical, one-time per surface."
|
|
45
|
+
type: noul
|
|
46
|
+
severity: minor
|
|
47
|
+
fix:
|
|
48
|
+
hint: "TODO: The skeleton or spinner takes 0x0 (or some height); loaded content takes 200x400; when data arrives every element below it jumps. This is the default Cumulative Layout Shift bug, everywhere: skeletons"
|
|
49
|
+
mode: none
|
|
50
|
+
status: draft
|
|
51
|
+
handWritten: []
|
|
52
|
+
portNotes:
|
|
53
|
+
- detection is a shell pipeline or loop; port by hand
|
|
54
|
+
- "detect: rendered; only the rendered extractor can decide this rule"
|