howone 0.1.20 โ 0.1.23
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/package.json +1 -1
- package/templates/nextjs/lib/sdk.ts +3 -0
- package/templates/vite/.howone/skills/hallmark/LICENSE +21 -0
- package/templates/vite/.howone/skills/hallmark/README.md +147 -0
- package/templates/vite/.howone/skills/hallmark/ROADMAP.md +201 -0
- package/templates/vite/.howone/skills/hallmark/SKILL.md +551 -0
- package/templates/vite/.howone/skills/hallmark/docs/recipes.md +186 -0
- package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-anya.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-bananastudio.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-hyperlane.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-najm.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-slow-pour.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-soroe.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-tally.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-wayfare.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/docs/study-examples.md +176 -0
- package/templates/vite/.howone/skills/hallmark/docs/talk-slides.md +364 -0
- package/templates/vite/.howone/skills/hallmark/package.json +36 -0
- package/templates/vite/.howone/skills/hallmark/references/anti-patterns.md +412 -0
- package/templates/vite/.howone/skills/hallmark/references/assets.md +399 -0
- package/templates/vite/.howone/skills/hallmark/references/color.md +95 -0
- package/templates/vite/.howone/skills/hallmark/references/component-cookbook.md +256 -0
- package/templates/vite/.howone/skills/hallmark/references/components/c1-outlined-chip.md +12 -0
- package/templates/vite/.howone/skills/hallmark/references/components/c2-inline-form-as-cta.md +16 -0
- package/templates/vite/.howone/skills/hallmark/references/components/c3-typographic-link.md +8 -0
- package/templates/vite/.howone/skills/hallmark/references/components/c4-sticky-bottom-bar.md +16 -0
- package/templates/vite/.howone/skills/hallmark/references/components/f1-bento-grid.md +20 -0
- package/templates/vite/.howone/skills/hallmark/references/components/f2-sticky-scroll-stack.md +20 -0
- package/templates/vite/.howone/skills/hallmark/references/components/f3-tabular-spec-sheet.md +11 -0
- package/templates/vite/.howone/skills/hallmark/references/components/f4-step-sequence.md +11 -0
- package/templates/vite/.howone/skills/hallmark/references/components/f5-annotated-screenshot.md +11 -0
- package/templates/vite/.howone/skills/hallmark/references/components/f6-product-card-grid.md +41 -0
- package/templates/vite/.howone/skills/hallmark/references/components/ft1-mast-headed.md +13 -0
- package/templates/vite/.howone/skills/hallmark/references/components/ft2-inline-rule-single-line.md +10 -0
- package/templates/vite/.howone/skills/hallmark/references/components/ft3-index-style-category-list.md +12 -0
- package/templates/vite/.howone/skills/hallmark/references/components/ft4-dense-typographic.md +10 -0
- package/templates/vite/.howone/skills/hallmark/references/components/ft5-statement.md +21 -0
- package/templates/vite/.howone/skills/hallmark/references/components/ft6-letter-close.md +19 -0
- package/templates/vite/.howone/skills/hallmark/references/components/ft7-newsletter-first.md +27 -0
- package/templates/vite/.howone/skills/hallmark/references/components/ft8-marquee-scroll.md +25 -0
- package/templates/vite/.howone/skills/hallmark/references/components/h1-marquee.md +15 -0
- package/templates/vite/.howone/skills/hallmark/references/components/h2-split-diptych.md +15 -0
- package/templates/vite/.howone/skills/hallmark/references/components/h3-quote-led.md +11 -0
- package/templates/vite/.howone/skills/hallmark/references/components/h4-stat-led.md +14 -0
- package/templates/vite/.howone/skills/hallmark/references/components/h5-letter-hero.md +11 -0
- package/templates/vite/.howone/skills/hallmark/references/components/h6-photographic-fold.md +16 -0
- package/templates/vite/.howone/skills/hallmark/references/components/h7-demo-video-clipped-by-viewport-edge.md +27 -0
- package/templates/vite/.howone/skills/hallmark/references/components/h8-mockup-split-browser-framed.md +23 -0
- package/templates/vite/.howone/skills/hallmark/references/components/h9-custom-illustration-centerpiece.md +27 -0
- package/templates/vite/.howone/skills/hallmark/references/components/n1-wordmark-2-links.md +12 -0
- package/templates/vite/.howone/skills/hallmark/references/components/n10-floating-on-scroll-morph.md +19 -0
- package/templates/vite/.howone/skills/hallmark/references/components/n2-floating-chip.md +14 -0
- package/templates/vite/.howone/skills/hallmark/references/components/n3-side-rail.md +14 -0
- package/templates/vite/.howone/skills/hallmark/references/components/n4-hidden-behind-k.md +9 -0
- package/templates/vite/.howone/skills/hallmark/references/components/n5-floating-pill.md +28 -0
- package/templates/vite/.howone/skills/hallmark/references/components/n6-newspaper-masthead.md +24 -0
- package/templates/vite/.howone/skills/hallmark/references/components/n7-brutal-slab.md +22 -0
- package/templates/vite/.howone/skills/hallmark/references/components/n8-terminal-command.md +21 -0
- package/templates/vite/.howone/skills/hallmark/references/components/n9-edge-aligned-minimal.md +17 -0
- package/templates/vite/.howone/skills/hallmark/references/components/s1-left-margin-numbered.md +15 -0
- package/templates/vite/.howone/skills/hallmark/references/components/s2-hanging.md +13 -0
- package/templates/vite/.howone/skills/hallmark/references/components/s3-sticky-pinned.md +19 -0
- package/templates/vite/.howone/skills/hallmark/references/components/s4-inline-no-break.md +11 -0
- package/templates/vite/.howone/skills/hallmark/references/components/s5-bottom-anchored.md +13 -0
- package/templates/vite/.howone/skills/hallmark/references/components/t1-pull-quote-with-marginalia.md +12 -0
- package/templates/vite/.howone/skills/hallmark/references/components/t2-logo-wall-hairline.md +19 -0
- package/templates/vite/.howone/skills/hallmark/references/components/t3-single-huge-quote.md +11 -0
- package/templates/vite/.howone/skills/hallmark/references/components/t4-numbered-stat-strip.md +14 -0
- package/templates/vite/.howone/skills/hallmark/references/contract.md +24 -0
- package/templates/vite/.howone/skills/hallmark/references/copy.md +182 -0
- package/templates/vite/.howone/skills/hallmark/references/custom-craft.md +626 -0
- package/templates/vite/.howone/skills/hallmark/references/custom-theme.md +329 -0
- package/templates/vite/.howone/skills/hallmark/references/design-md.md +116 -0
- package/templates/vite/.howone/skills/hallmark/references/export-formats.md +328 -0
- package/templates/vite/.howone/skills/hallmark/references/floating-nav.md +89 -0
- package/templates/vite/.howone/skills/hallmark/references/genres/atmospheric.md +65 -0
- package/templates/vite/.howone/skills/hallmark/references/genres/editorial.md +70 -0
- package/templates/vite/.howone/skills/hallmark/references/genres/modern-minimal.md +67 -0
- package/templates/vite/.howone/skills/hallmark/references/genres/playful.md +65 -0
- package/templates/vite/.howone/skills/hallmark/references/hero-enrichment.md +474 -0
- package/templates/vite/.howone/skills/hallmark/references/imagery-kit.md +170 -0
- package/templates/vite/.howone/skills/hallmark/references/interaction-and-states.md +207 -0
- package/templates/vite/.howone/skills/hallmark/references/layout-and-space.md +111 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/01-bento-grid.md +35 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/02-long-document.md +34 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/03-marquee-hero.md +31 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/04-stat-led.md +32 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/05-workbench.md +32 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/06-conversational-faq.md +33 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/07-manifesto.md +32 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/08-photographic.md +34 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/09-quote-led.md +32 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/10-specimen.md +32 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/11-catalogue.md +23 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/12-letter.md +23 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/13-index-first.md +23 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/14-narrative-workflow.md +23 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/15-split-studio.md +23 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/16-feature-stack.md +23 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/17-type-specimen.md +23 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/18-portfolio-grid.md +23 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/19-map-diagram.md +23 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/20-ecosystem-index.md +23 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/21-component-playground.md +23 -0
- package/templates/vite/.howone/skills/hallmark/references/macrostructures.md +89 -0
- package/templates/vite/.howone/skills/hallmark/references/microinteractions.md +260 -0
- package/templates/vite/.howone/skills/hallmark/references/motion.md +109 -0
- package/templates/vite/.howone/skills/hallmark/references/preview-examples.md +49 -0
- package/templates/vite/.howone/skills/hallmark/references/responsive.md +138 -0
- package/templates/vite/.howone/skills/hallmark/references/slop-test.md +205 -0
- package/templates/vite/.howone/skills/hallmark/references/structure.md +164 -0
- package/templates/vite/.howone/skills/hallmark/references/study.md +486 -0
- package/templates/vite/.howone/skills/hallmark/references/typography.md +243 -0
- package/templates/vite/.howone/skills/hallmark/references/verbs/audit.md +25 -0
- package/templates/vite/.howone/skills/hallmark/references/verbs/redesign.md +269 -0
- package/templates/vite/.howone/skills/hallmark/site/OG-hallmark.png +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/brief.md +71 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/index.html +64 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/style.css +240 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/brief.md +65 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/index.html +105 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/style.css +250 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/brief.md +64 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/index.html +131 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/style.css +240 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/brief.md +67 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/index.html +86 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/style.css +262 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/brief.md +63 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/index.html +167 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/style.css +457 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/brief.md +65 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/index.html +159 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/style.css +288 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/brief.md +64 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/index.html +146 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/style.css +484 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/brief.md +64 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/index.html +116 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/style.css +354 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/09-slow-pour/index.html +638 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/10-owl-hours/index.html +515 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/11-soroe-ceramics/index.html +515 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/12-loafer/index.html +608 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/13-alma/index.html +587 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/README.md +157 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-still.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-example.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-still.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-still.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Podcast-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-still.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-still.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/after-quiet-hour.png +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-still.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/audit-example.png +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/before-quiet-hour.png +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/example-redesign-uractivation.png +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-still.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/study-example.png +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/uractivation-after-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-still.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/index.html +77 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/style.css +238 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/index.html +110 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/style.css +326 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/index.html +134 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/style.css +262 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/custom/README.md +30 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/README.md +17 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/audit-report.md +56 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/input.html +160 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/notes.md +29 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/input.html +63 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/notes.md +72 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/output.html +374 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/diagnosis.md +52 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/input-description.md +29 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/notes.md +61 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.css +193 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.html +66 -0
- package/templates/vite/.howone/skills/hallmark/site/css/base.css +194 -0
- package/templates/vite/.howone/skills/hallmark/site/css/components.css +4886 -0
- package/templates/vite/.howone/skills/hallmark/site/css/sections.css +2072 -0
- package/templates/vite/.howone/skills/hallmark/site/css/tokens.css +1129 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/index.html +475 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/styles.css +1584 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/tokens.css +96 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/index.html +344 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/script.js +103 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/styles.css +1103 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/tokens.css +83 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/najm/index.html +368 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/najm/script.js +133 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/najm/styles.css +1062 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/najm/tokens.css +97 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/tally/app.js +84 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/tally/index.html +446 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/tally/styles.css +1087 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/tally/tokens.css +101 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/index.html +359 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/style.css +1168 -0
- package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/tokens.css +81 -0
- package/templates/vite/.howone/skills/hallmark/site/favicon-dark.svg +5 -0
- package/templates/vite/.howone/skills/hallmark/site/favicon-light.svg +5 -0
- package/templates/vite/.howone/skills/hallmark/site/index.html +1043 -0
- package/templates/vite/.howone/skills/hallmark/site/js/main.js +1175 -0
- package/templates/vite/.howone/skills/hallmark/vercel.json +6 -0
- package/templates/vite/.howone/skills/howone-sdk/01-architect/01-app-generation.md +126 -0
- package/templates/vite/.howone/skills/howone-sdk/{references/08-manifest-codegen.md โ 01-architect/02-manifest-codegen.md} +31 -19
- package/templates/vite/.howone/skills/howone-sdk/02-database/01-schema-design.md +147 -0
- package/templates/vite/.howone/skills/howone-sdk/02-database/02-schema-operations.md +96 -0
- package/templates/vite/.howone/skills/howone-sdk/02-database/03-data-access-patterns.md +172 -0
- package/templates/vite/.howone/skills/howone-sdk/{references โ 03-sdk}/01-client-setup.md +3 -3
- package/templates/vite/.howone/skills/howone-sdk/{references/04-auth.md โ 03-sdk/03-auth.md} +120 -3
- package/templates/vite/.howone/skills/howone-sdk/{references/06-react-integration.md โ 03-sdk/04-react-integration.md} +2 -4
- package/templates/vite/.howone/skills/howone-sdk/{references/03-ai-actions.md โ 03-sdk/07-ai-action-calls.md} +31 -34
- package/templates/vite/.howone/skills/howone-sdk/04-ai/.gitkeep +1 -0
- package/templates/vite/.howone/skills/howone-sdk/04-ai/01-ai-capability-architecture.md +142 -0
- package/templates/vite/.howone/skills/howone-sdk/04-ai/02-workflow-contract-rules.md +169 -0
- package/templates/vite/.howone/skills/howone-sdk/04-ai/03-ai-sdk-handoff.md +80 -0
- package/templates/vite/.howone/skills/howone-sdk/SKILL.md +118 -93
- package/templates/vite/.howone/skills/howone-sdk/agents/openai.yaml +3 -3
- package/templates/vite/.howone/skills/impeccable/SKILL.md +168 -0
- package/templates/vite/.howone/skills/impeccable/agents/impeccable-asset-producer.md +101 -0
- package/templates/vite/.howone/skills/impeccable/reference/adapt.md +190 -0
- package/templates/vite/.howone/skills/impeccable/reference/animate.md +175 -0
- package/templates/vite/.howone/skills/impeccable/reference/audit.md +133 -0
- package/templates/vite/.howone/skills/impeccable/reference/bolder.md +113 -0
- package/templates/vite/.howone/skills/impeccable/reference/brand.md +118 -0
- package/templates/vite/.howone/skills/impeccable/reference/clarify.md +174 -0
- package/templates/vite/.howone/skills/impeccable/reference/codex.md +105 -0
- package/templates/vite/.howone/skills/impeccable/reference/cognitive-load.md +106 -0
- package/templates/vite/.howone/skills/impeccable/reference/color-and-contrast.md +105 -0
- package/templates/vite/.howone/skills/impeccable/reference/colorize.md +154 -0
- package/templates/vite/.howone/skills/impeccable/reference/craft.md +123 -0
- package/templates/vite/.howone/skills/impeccable/reference/critique.md +273 -0
- package/templates/vite/.howone/skills/impeccable/reference/delight.md +302 -0
- package/templates/vite/.howone/skills/impeccable/reference/distill.md +111 -0
- package/templates/vite/.howone/skills/impeccable/reference/document.md +427 -0
- package/templates/vite/.howone/skills/impeccable/reference/extract.md +69 -0
- package/templates/vite/.howone/skills/impeccable/reference/harden.md +347 -0
- package/templates/vite/.howone/skills/impeccable/reference/heuristics-scoring.md +234 -0
- package/templates/vite/.howone/skills/impeccable/reference/interaction-design.md +195 -0
- package/templates/vite/.howone/skills/impeccable/reference/layout.md +141 -0
- package/templates/vite/.howone/skills/impeccable/reference/live.md +622 -0
- package/templates/vite/.howone/skills/impeccable/reference/motion-design.md +109 -0
- package/templates/vite/.howone/skills/impeccable/reference/onboard.md +234 -0
- package/templates/vite/.howone/skills/impeccable/reference/optimize.md +258 -0
- package/templates/vite/.howone/skills/impeccable/reference/overdrive.md +130 -0
- package/templates/vite/.howone/skills/impeccable/reference/personas.md +179 -0
- package/templates/vite/.howone/skills/impeccable/reference/polish.md +242 -0
- package/templates/vite/.howone/skills/impeccable/reference/product.md +62 -0
- package/templates/vite/.howone/skills/impeccable/reference/quieter.md +99 -0
- package/templates/vite/.howone/skills/impeccable/reference/responsive-design.md +114 -0
- package/templates/vite/.howone/skills/impeccable/reference/shape.md +165 -0
- package/templates/vite/.howone/skills/impeccable/reference/spatial-design.md +100 -0
- package/templates/vite/.howone/skills/impeccable/reference/teach.md +156 -0
- package/templates/vite/.howone/skills/impeccable/reference/typeset.md +124 -0
- package/templates/vite/.howone/skills/impeccable/reference/typography.md +159 -0
- package/templates/vite/.howone/skills/impeccable/reference/ux-writing.md +107 -0
- package/templates/vite/.howone/skills/impeccable/scripts/cleanup-deprecated.mjs +284 -0
- package/templates/vite/.howone/skills/impeccable/scripts/command-metadata.json +94 -0
- package/templates/vite/.howone/skills/impeccable/scripts/critique-storage.mjs +242 -0
- package/templates/vite/.howone/skills/impeccable/scripts/design-parser.mjs +820 -0
- package/templates/vite/.howone/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/templates/vite/.howone/skills/impeccable/scripts/detect.mjs +21 -0
- package/templates/vite/.howone/skills/impeccable/scripts/impeccable-paths.mjs +110 -0
- package/templates/vite/.howone/skills/impeccable/scripts/is-generated.mjs +69 -0
- package/templates/vite/.howone/skills/impeccable/scripts/live-accept.mjs +595 -0
- package/templates/vite/.howone/skills/impeccable/scripts/live-browser-session.js +123 -0
- package/templates/vite/.howone/skills/impeccable/scripts/live-browser.js +4860 -0
- package/templates/vite/.howone/skills/impeccable/scripts/live-complete.mjs +75 -0
- package/templates/vite/.howone/skills/impeccable/scripts/live-completion.mjs +18 -0
- package/templates/vite/.howone/skills/impeccable/scripts/live-inject.mjs +446 -0
- package/templates/vite/.howone/skills/impeccable/scripts/live-poll.mjs +200 -0
- package/templates/vite/.howone/skills/impeccable/scripts/live-resume.mjs +48 -0
- package/templates/vite/.howone/skills/impeccable/scripts/live-server.mjs +838 -0
- package/templates/vite/.howone/skills/impeccable/scripts/live-session-store.mjs +254 -0
- package/templates/vite/.howone/skills/impeccable/scripts/live-status.mjs +47 -0
- package/templates/vite/.howone/skills/impeccable/scripts/live-wrap.mjs +632 -0
- package/templates/vite/.howone/skills/impeccable/scripts/live.mjs +247 -0
- package/templates/vite/.howone/skills/impeccable/scripts/load-context.mjs +141 -0
- package/templates/vite/.howone/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/templates/vite/.howone/skills/impeccable/scripts/pin.mjs +214 -0
- package/templates/vite/AGENTS.md +2 -12
- package/templates/vite/package.json +1 -1
- package/templates/vite/src/lib/sdk.ts +3 -0
- /package/templates/vite/.howone/skills/howone-sdk/{references โ 03-sdk}/02-entity-operations.md +0 -0
- /package/templates/vite/.howone/skills/howone-sdk/{references โ 03-sdk}/05-file-upload.md +0 -0
- /package/templates/vite/.howone/skills/howone-sdk/{references/07-raw-http.md โ 03-sdk/06-raw-http.md} +0 -0
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/* Hallmark ยท macrostructure: Catalogue ยท F1 catalogue knobs: tiles=8, columns=2, rule=hairline-between
|
|
2
|
+
* theme: custom ยท vibe: "moss, lichen, soft pink, herbal" ยท paper: oklch(96% 0.018 145) ยท accent: oklch(72% 0.13 350)
|
|
3
|
+
* display: Cormorant Garamond ยท body: EB Garamond ยท axes: light / roman-serif / chromatic-other (dusty-pink)
|
|
4
|
+
* studied: no ยท context: explicit ยท v0.7.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
:root {
|
|
8
|
+
/* Custom palette โ moss-tinted paper with dusty-pink accent */
|
|
9
|
+
--color-paper: oklch(96% 0.018 145);
|
|
10
|
+
--color-paper-2: oklch(93% 0.020 145);
|
|
11
|
+
--color-paper-3: oklch(90% 0.022 145);
|
|
12
|
+
--color-rule: oklch(82% 0.018 145);
|
|
13
|
+
--color-rule-2: oklch(86% 0.018 145);
|
|
14
|
+
--color-muted: oklch(56% 0.014 140);
|
|
15
|
+
--color-neutral: oklch(46% 0.014 140);
|
|
16
|
+
--color-ink: oklch(22% 0.014 140);
|
|
17
|
+
--color-ink-2: oklch(42% 0.014 140);
|
|
18
|
+
--color-accent: oklch(72% 0.13 350);
|
|
19
|
+
--color-accent-ink: oklch(96% 0.014 145);
|
|
20
|
+
--color-focus: oklch(70% 0.18 350);
|
|
21
|
+
|
|
22
|
+
--font-display: "Cormorant Garamond", "EB Garamond", "Cardo", Georgia, serif;
|
|
23
|
+
--font-body: "EB Garamond", "Crimson Pro", "Cardo", Georgia, serif;
|
|
24
|
+
--font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
|
|
25
|
+
|
|
26
|
+
--space-3xs: 0.25rem;
|
|
27
|
+
--space-2xs: 0.5rem;
|
|
28
|
+
--space-xs: 0.75rem;
|
|
29
|
+
--space-sm: 1rem;
|
|
30
|
+
--space-md: 1.5rem;
|
|
31
|
+
--space-lg: 2rem;
|
|
32
|
+
--space-xl: 3rem;
|
|
33
|
+
--space-2xl: 4.5rem;
|
|
34
|
+
--space-3xl: 6.5rem;
|
|
35
|
+
|
|
36
|
+
--ease-out: cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
37
|
+
--dur-micro: 140ms;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
* { box-sizing: border-box; }
|
|
41
|
+
html, body { overflow-x: clip; }
|
|
42
|
+
|
|
43
|
+
body {
|
|
44
|
+
margin: 0;
|
|
45
|
+
background: var(--color-paper);
|
|
46
|
+
color: var(--color-ink);
|
|
47
|
+
font-family: var(--font-body);
|
|
48
|
+
font-size: 1.0625rem;
|
|
49
|
+
line-height: 1.55;
|
|
50
|
+
-webkit-font-smoothing: antialiased;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.page {
|
|
54
|
+
max-width: 64rem;
|
|
55
|
+
margin: 0 auto;
|
|
56
|
+
padding: var(--space-2xl) var(--space-lg) var(--space-3xl);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* Masthead โ apothecary plate */
|
|
60
|
+
.masthead {
|
|
61
|
+
text-align: center;
|
|
62
|
+
border-block-end: 2px double var(--color-rule);
|
|
63
|
+
padding-block-end: var(--space-lg);
|
|
64
|
+
margin-block-end: var(--space-2xl);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.masthead__rule {
|
|
68
|
+
width: 4ch;
|
|
69
|
+
border: 0;
|
|
70
|
+
border-block-start: 1px solid var(--color-ink);
|
|
71
|
+
margin: 0 auto var(--space-md);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.masthead__brand {
|
|
75
|
+
font-family: var(--font-display);
|
|
76
|
+
font-size: clamp(2.75rem, 6vw, 4.5rem);
|
|
77
|
+
font-weight: 400;
|
|
78
|
+
line-height: 1;
|
|
79
|
+
letter-spacing: 0.005em;
|
|
80
|
+
margin: 0 0 var(--space-2xs);
|
|
81
|
+
color: var(--color-ink);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.masthead__brand .em { color: var(--color-accent); font-style: italic; }
|
|
85
|
+
|
|
86
|
+
.masthead__sub {
|
|
87
|
+
font-family: var(--font-display);
|
|
88
|
+
font-style: italic;
|
|
89
|
+
font-size: 1rem;
|
|
90
|
+
letter-spacing: 0.04em;
|
|
91
|
+
color: var(--color-ink-2);
|
|
92
|
+
margin: 0;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/* Today's batch */
|
|
96
|
+
.todays {
|
|
97
|
+
text-align: center;
|
|
98
|
+
margin-block-end: var(--space-xl);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.todays__head {
|
|
102
|
+
font-family: var(--font-display);
|
|
103
|
+
font-size: clamp(1.625rem, 3vw, 2.25rem);
|
|
104
|
+
font-weight: 400;
|
|
105
|
+
letter-spacing: 0.02em;
|
|
106
|
+
margin: 0 0 var(--space-2xs);
|
|
107
|
+
color: var(--color-ink);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.todays__date {
|
|
111
|
+
font-family: var(--font-display);
|
|
112
|
+
font-style: italic;
|
|
113
|
+
font-size: 1rem;
|
|
114
|
+
color: var(--color-muted);
|
|
115
|
+
margin: 0;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* Catalogue grid */
|
|
119
|
+
.catalogue {
|
|
120
|
+
display: grid;
|
|
121
|
+
grid-template-columns: repeat(2, 1fr);
|
|
122
|
+
gap: 0;
|
|
123
|
+
border-block-start: 1px solid var(--color-rule);
|
|
124
|
+
list-style: none;
|
|
125
|
+
padding: 0;
|
|
126
|
+
margin: 0;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.item {
|
|
130
|
+
display: grid;
|
|
131
|
+
grid-template-columns: 96px 1fr auto;
|
|
132
|
+
align-items: center;
|
|
133
|
+
gap: var(--space-md);
|
|
134
|
+
padding: var(--space-lg) var(--space-md);
|
|
135
|
+
border-block-end: 1px solid var(--color-rule);
|
|
136
|
+
position: relative;
|
|
137
|
+
transition: background var(--dur-micro) var(--ease-out);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.item:nth-child(odd) { border-inline-end: 1px solid var(--color-rule); }
|
|
141
|
+
.item:hover { background: var(--color-paper-2); }
|
|
142
|
+
|
|
143
|
+
.item__shape {
|
|
144
|
+
width: 96px;
|
|
145
|
+
height: 96px;
|
|
146
|
+
display: flex;
|
|
147
|
+
align-items: center;
|
|
148
|
+
justify-content: center;
|
|
149
|
+
color: var(--color-ink-2);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.item__shape svg {
|
|
153
|
+
width: 100%;
|
|
154
|
+
height: 100%;
|
|
155
|
+
fill: none;
|
|
156
|
+
stroke: currentColor;
|
|
157
|
+
stroke-width: 1.4;
|
|
158
|
+
stroke-linecap: round;
|
|
159
|
+
stroke-linejoin: round;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.item__shape--accent svg { stroke: var(--color-accent); }
|
|
163
|
+
|
|
164
|
+
.item__body { min-width: 0; }
|
|
165
|
+
|
|
166
|
+
.item__name {
|
|
167
|
+
font-family: var(--font-display);
|
|
168
|
+
font-size: 1.5rem;
|
|
169
|
+
font-weight: 400;
|
|
170
|
+
letter-spacing: 0.005em;
|
|
171
|
+
margin: 0 0 var(--space-3xs);
|
|
172
|
+
color: var(--color-ink);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.item__name em { font-style: italic; color: var(--color-accent); }
|
|
176
|
+
|
|
177
|
+
.item__desc {
|
|
178
|
+
font-family: var(--font-body);
|
|
179
|
+
font-style: italic;
|
|
180
|
+
font-size: 0.9375rem;
|
|
181
|
+
color: var(--color-ink-2);
|
|
182
|
+
margin: 0;
|
|
183
|
+
line-height: 1.45;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.item__price {
|
|
187
|
+
font-family: var(--font-display);
|
|
188
|
+
font-size: 1.0625rem;
|
|
189
|
+
font-variant-numeric: tabular-nums;
|
|
190
|
+
color: var(--color-ink);
|
|
191
|
+
white-space: nowrap;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.item__price--out {
|
|
195
|
+
color: var(--color-muted);
|
|
196
|
+
font-style: italic;
|
|
197
|
+
font-family: var(--font-body);
|
|
198
|
+
font-size: 0.9375rem;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/* Visit */
|
|
202
|
+
.visit {
|
|
203
|
+
margin-block-start: var(--space-2xl);
|
|
204
|
+
padding: var(--space-xl) var(--space-md);
|
|
205
|
+
border-block-start: 2px double var(--color-rule);
|
|
206
|
+
border-block-end: 2px double var(--color-rule);
|
|
207
|
+
text-align: center;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.visit__head {
|
|
211
|
+
font-family: var(--font-display);
|
|
212
|
+
font-size: 1.625rem;
|
|
213
|
+
font-weight: 400;
|
|
214
|
+
margin: 0 0 var(--space-md);
|
|
215
|
+
color: var(--color-ink);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.visit__lines {
|
|
219
|
+
display: grid;
|
|
220
|
+
gap: var(--space-2xs);
|
|
221
|
+
font-family: var(--font-body);
|
|
222
|
+
font-size: 1rem;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.visit__lines em { font-style: italic; color: var(--color-ink-2); }
|
|
226
|
+
.visit__lines strong { font-weight: 500; color: var(--color-ink); }
|
|
227
|
+
|
|
228
|
+
/* Colophon */
|
|
229
|
+
.colophon {
|
|
230
|
+
margin-block-start: var(--space-2xl);
|
|
231
|
+
text-align: center;
|
|
232
|
+
font-family: var(--font-display);
|
|
233
|
+
font-style: italic;
|
|
234
|
+
font-size: 0.875rem;
|
|
235
|
+
color: var(--color-muted);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.colophon a {
|
|
239
|
+
color: var(--color-muted);
|
|
240
|
+
text-decoration: none;
|
|
241
|
+
border-block-end: 1px solid transparent;
|
|
242
|
+
transition: color var(--dur-micro) var(--ease-out),
|
|
243
|
+
border-color var(--dur-micro) var(--ease-out);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
.colophon a:hover, .colophon a:focus-visible {
|
|
247
|
+
color: var(--color-accent);
|
|
248
|
+
border-block-end-color: var(--color-accent);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
.colophon a:focus-visible {
|
|
252
|
+
outline: 2px solid var(--color-focus);
|
|
253
|
+
outline-offset: 4px;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
@media (max-width: 48rem) {
|
|
257
|
+
.catalogue { grid-template-columns: 1fr; }
|
|
258
|
+
.item:nth-child(odd) { border-inline-end: none; }
|
|
259
|
+
.item { grid-template-columns: 64px 1fr auto; gap: var(--space-sm); padding: var(--space-md) var(--space-2xs); }
|
|
260
|
+
.item__shape { width: 64px; height: 64px; }
|
|
261
|
+
.item__name { font-size: 1.25rem; }
|
|
262
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Custom worked examples
|
|
2
|
+
|
|
3
|
+
Three landing pages produced by the **custom** theme route โ the new opt-in branch added to Hallmark in v0.6.x. Custom is the route for one-off custom palettes + font pairings tuned to a single brand. **Catalog** (the 16 named themes) is the default; custom fires only when the brief signals creative or unique intent.
|
|
4
|
+
|
|
5
|
+
These three pages are the worked examples written into [`references/custom-theme.md`](../../../references/custom-theme.md) ยง G โ rendered as actual HTML so the palette + pairing can be inspected visually.
|
|
6
|
+
|
|
7
|
+
| # | Brand | Vibe | Anchor | Macrostructure | Axes |
|
|
8
|
+
| --- | --- | --- | --- | --- | --- |
|
|
9
|
+
| 01 | **Coffeebox** โ small-batch coffee subscription | "archival warmth, hand-set, no varnish" | terracotta | Long Document | light / italic-serif / chromatic-terracotta |
|
|
10
|
+
| 02 | **Loop** โ payment-rail observability for fintechs | "industrial precision, cool, technical" | sea-blue | Workbench | dark / mono / cool |
|
|
11
|
+
| 03 | **Mossroot** โ herbal apothecary in Porto | "moss, lichen, soft pink, herbal" | (skipped โ derived) | Catalogue | light / roman-serif / chromatic-other (dusty-pink) |
|
|
12
|
+
|
|
13
|
+
Each folder holds:
|
|
14
|
+
|
|
15
|
+
- **`index.html`** โ the rendered page
|
|
16
|
+
- **`style.css`** โ custom palette + pairing as inline `:root` tokens, with the custom stamp at the top
|
|
17
|
+
|
|
18
|
+
## What custom unlocks
|
|
19
|
+
|
|
20
|
+
The 16 named themes can't carry every brand. Coffeebox is closest to **Atelier** but warmer + more terracotta-led; Loop is closest to **Midnight** but mono-everywhere and sea-blue not phosphor-cyan; Mossroot has no catalog match (moss-tinted paper with dusty-pink accent isn't in the catalogue). Without custom, all three pages would compromise on the brand voice. With custom, the palette + pairing are tuned to the specific vibe โ and every existing rule (OKLCH bands, accent footprint, font ban list, slop test) carries forward unchanged. The freedom is the combination, not the rules.
|
|
21
|
+
|
|
22
|
+
## What guards prevent over-invention
|
|
23
|
+
|
|
24
|
+
1. **The opt-in is opt-in.** Custom fires only when the user signals creative/unique intent in their prompt (named brand colour, multi-attribute aesthetic that doesn't match a catalog theme name, explicit "make it custom"). Default route is catalog โ no behavioural change for vanilla briefs.
|
|
25
|
+
2. **One question only.** The skill asks vibe (4โ8 words) + optional anchor colour. Anything more is over-asking.
|
|
26
|
+
3. **Every existing rule applies.** color.md OKLCH bands, typography.md pairing catalogue, anti-patterns.md ban list, the 38 slop-test gates โ same gates fire as on catalog themes.
|
|
27
|
+
4. **The Step 5 preview surfaces the palette + pairing.** Before any code is emitted, the user sees the OKLCH values and the chosen fonts in plain text. They can redirect early.
|
|
28
|
+
5. **Diversification is theme-route-blind.** Each custom run records its three axis values (paper-band / display-style / accent-hue) in `.hallmark/log.json`. The next run rotates against them the same way it does against catalog themes.
|
|
29
|
+
|
|
30
|
+
See [`references/custom-theme.md`](../../../references/custom-theme.md) for the full protocol.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Hallmark verbs โ worked examples
|
|
2
|
+
|
|
3
|
+
Each verb demonstrated on a tiny, realistic input. Folders contain the input, the verb's output, and a one-page note explaining what fired and why.
|
|
4
|
+
|
|
5
|
+
| Verb | Folder | Input | What the verb does |
|
|
6
|
+
| --- | --- | --- | --- |
|
|
7
|
+
| `audit` | [`audit/`](audit/) | An AI-templated landing fragment | Read it, score against the anti-pattern list, return a ranked punch list. **Does not edit.** |
|
|
8
|
+
| `redesign` | [`redesign/`](redesign/) | A page with the AI structural template (centered hero ยท 3 cards ยท CTA ยท footer) | Throw out the structure, rebuild with a different fingerprint. **Preserves copy + IA.** |
|
|
9
|
+
| `study` | [`study/`](study/) | A described screenshot of a Pentagram-style portfolio | Extract DNA โ macrostructure, archetypes, type-pairing role, accent โ return a diagnosis report, then rebuild user content with that DNA. **Never copies pixels.** |
|
|
10
|
+
|
|
11
|
+
Each folder holds:
|
|
12
|
+
|
|
13
|
+
- **`input.html`** (or `input-description.md` for `study`) โ what the user paste / attach.
|
|
14
|
+
- **`output.*`** โ what the verb produces. For `audit` and `study`, this is a Markdown report. For `redesign`, this is a finished `index.html` + `style.css`.
|
|
15
|
+
- **`notes.md`** โ one page explaining what fired, what reference files loaded, and what the durable artifact is.
|
|
16
|
+
|
|
17
|
+
The three verb tests together exercise every load path in the skill that the default-flow tests don't.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# `hallmark audit input.html`
|
|
2
|
+
|
|
3
|
+
> User invocation: *"hallmark audit input.html"*
|
|
4
|
+
|
|
5
|
+
## Verbs loaded
|
|
6
|
+
|
|
7
|
+
- [`anti-patterns.md`](../../../references/anti-patterns.md) โ the named-tells library to score against
|
|
8
|
+
- [`structure.md`](../../../references/structure.md) โ for the structural-fingerprint check (gate 9)
|
|
9
|
+
- [`microinteractions.md`](../../../references/microinteractions.md) โ the timing/easing canon
|
|
10
|
+
|
|
11
|
+
(No write paths. `audit` does not edit.)
|
|
12
|
+
|
|
13
|
+
## Findings โ `input.html` (148 lines, 1 stylesheet inline)
|
|
14
|
+
|
|
15
|
+
### CRITICAL โ page ships as slop ยท 5 findings
|
|
16
|
+
|
|
17
|
+
| # | Tell | Where | Fix |
|
|
18
|
+
| --- | --- | --- | --- |
|
|
19
|
+
| 1 | **AI structural template** โ hero (centered, 100vh) โ 3-equal feature grid โ CTA โ footer. The fingerprint that screams "AI-generated UI". | full page ยท `<section class="hero">` (l. 79) โ `.features` (l. 96) โ `.cta` (l. 113) โ `<footer>` (l. 121) | Pick a non-Hero+3-Card macrostructure from `macrostructures.md`. For an AI/SaaS positioning brief, `Bento Grid`, `Stat-Led`, or `Workbench` is right. **This is a structural finding โ the visual fixes won't save it.** |
|
|
20
|
+
| 2 | **Inter as display font** | `body { font-family: 'Inter' }` (l. 10) | Pair a distinctive display face with body. Geist Mono + Geist; Newsreader + Inter Tight; Bricolage + Sรถhne. Single-Inter is the LLM-default. |
|
|
21
|
+
| 3 | **Purple-to-blue gradient on the hero headline** (`background-clip: text`) | `.hero h1` (l. 24-29) | Single ink colour for the headline. Reserve gradient for one specific decorative band, never for headline text. |
|
|
22
|
+
| 4 | **Pure `#fff` and pure `#000` as base colours** | `body { background: #fff; color: #000; }` (l. 11-12) | OKLCH paper at 96โ98 % L with a slight hue tint (warm or cool); ink at 18โ22 % L tinted to match. Pure-white + pure-black reads industrial-template. |
|
|
23
|
+
| 5 | **Cards have a thick coloured side-stripe + the same gradient-icon on every card + nested card inside one card** | `.feature-card { border-left: 4px solid #8b5cf6 }` (l. 110); `.nested-card` (l. 134); icon-wrap gradient (l. 122) | Drop the side-stripe entirely. Drop the icon-above-headline pattern. Drop the nested card (cards inside cards is the boy-band tell). If you need three feature blocks, ship them as numbered prose rows or a 2-up asymmetric pair, not 3-up icon tiles. |
|
|
24
|
+
|
|
25
|
+
### MAJOR โ looks AI-generated ยท 6 findings
|
|
26
|
+
|
|
27
|
+
| # | Tell | Where | Fix |
|
|
28
|
+
| --- | --- | --- | --- |
|
|
29
|
+
| 6 | **`transition: all`** with bouncy easing on `.btn`, `.feature-card`, `.cta button` | l. 41, l. 117, l. 130 | Specify properties: `transition: transform 100ms var(--ease-out), border-color 200ms var(--ease-out)`. Bouncy `cubic-bezier(0.34, 1.56, ...)` is reserved for *physical* interactions (drag, drop, throw); UI state changes get the named easings. |
|
|
30
|
+
| 7 | **`hover: scale(1.05) translateY(-2px)` + shadow + transform on the same element** | `.btn:hover` (l. 41), `.feature-card:hover` (l. 116), `.cta button:hover` (l. 132) | One hover effect, not three. Pick one of: subtle border-colour shift, subtle background tint, or a 1 px translate. Drop the rest. Multi-property hover is an AI-default tell. |
|
|
31
|
+
| 8 | **Animating `transform` + adding `box-shadow` + colour change in 300 ms** โ at least three layout-perceived properties at once | `.btn:hover` (l. 41) | The hover state should change one observable thing in 100โ150 ms. The user knows it's interactive; you're not selling them. |
|
|
32
|
+
| 9 | **Clichรฉ copy** โ "AI-powered platform for modern teams", "ship faster, collaborate smarter", "Built for the modern team", "Get up and running in seconds", "50,000+ teams" | l. 80, l. 81, l. 110-111, l. 117 | Replace template phrases with claims specific to *this* product. Slop test gate 20 (placeholder names / startup-clichรฉ copy) fires here. |
|
|
33
|
+
| 10 | **Pill-shape buttons (`border-radius: 9999px`) + the same gradient on the button** | `.btn` (l. 35), `.cta button` (l. 122) | Pill buttons are not wrong on principle, but a pill button + gradient + bouncy hover is the third clichรฉ stacked. Pick a sober border-radius (2โ4 px) or own the pill โ but not with the gradient. |
|
|
34
|
+
| 11 | **Auto-rotating section padding all `6rem`** โ every section identical in rhythm | `.features { margin: 6rem auto }`, `.cta { padding: 6rem 2rem }`, hero `min-height: 100vh` | Vary section spacing. The rhythm signals which sections are heavier vs lighter. Identical padding is the equal-whitespace tell from gate 10. |
|
|
35
|
+
|
|
36
|
+
### MINOR โ small taste issues ยท 3 findings
|
|
37
|
+
|
|
38
|
+
| # | Tell | Where | Fix |
|
|
39
|
+
| --- | --- | --- | --- |
|
|
40
|
+
| 12 | **Hero `min-height: 100vh`** | `.hero { min-height: 100vh }` (l. 16) | Most hero copy doesn't earn 100 vh. Set min-height to content + a small floor (`min-height: 70vh` at most). 100vh hero with one centered heading is the AI clichรฉ. |
|
|
41
|
+
| 13 | **No `:focus-visible` ring anywhere** โ `.btn`, `.feature-card`, `.cta button` | l. 35, l. 110, l. 122 | Add `:focus-visible { outline: 2px solid <accent>; outline-offset: 3px; }` on every interactive element. Eight states is the rule (gate 28). |
|
|
42
|
+
| 14 | **No reduced-motion fallback for any of the hover transitions** | full page | Wrap motion in `@media (prefers-reduced-motion: reduce) { .btn, .feature-card, button { transition: none; transform: none; } }`. Slop test gate 29. |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Counts
|
|
47
|
+
|
|
48
|
+
**5 critical ยท 6 major ยท 3 minor.** Total: 14.
|
|
49
|
+
|
|
50
|
+
The page fails the slop test on **at least 14 of 38 gates.** It is not refinable in place โ the structural fingerprint (gate 9) plus the gradient-text headline (gate 5) plus the hover-stack (gate 14) require a `redesign`, not a `refine`.
|
|
51
|
+
|
|
52
|
+
## Recommendation
|
|
53
|
+
|
|
54
|
+
Do **not** run `hallmark refine` here. Run `hallmark redesign` instead โ `refine` preserves structure, and the structure itself is the primary problem. See [`../redesign/`](../redesign/) for what a redesign of a similar page looks like.
|
|
55
|
+
|
|
56
|
+
If the user *insists* on keeping this page's structure (e.g., because the brief explicitly asked for a Hero + 3 features), `refine` can fix the visual tells (font, gradient, easings, side-stripe, hover-stack) but the structural-fingerprint finding will still fail audit on the next pass.
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<title>Nexus โ the AI-powered platform for modern teams</title>
|
|
6
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;900&display=swap" rel="stylesheet" />
|
|
7
|
+
<style>
|
|
8
|
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
9
|
+
body {
|
|
10
|
+
font-family: 'Inter', sans-serif;
|
|
11
|
+
background: #ffffff;
|
|
12
|
+
color: #000000;
|
|
13
|
+
line-height: 1.6;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.hero {
|
|
17
|
+
min-height: 100vh;
|
|
18
|
+
display: flex;
|
|
19
|
+
flex-direction: column;
|
|
20
|
+
align-items: center;
|
|
21
|
+
justify-content: center;
|
|
22
|
+
text-align: center;
|
|
23
|
+
padding: 2rem;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.hero h1 {
|
|
27
|
+
font-size: 4rem;
|
|
28
|
+
font-weight: 900;
|
|
29
|
+
background: linear-gradient(90deg, #8b5cf6 0%, #3b82f6 100%);
|
|
30
|
+
-webkit-background-clip: text;
|
|
31
|
+
background-clip: text;
|
|
32
|
+
-webkit-text-fill-color: transparent;
|
|
33
|
+
margin-bottom: 1.5rem;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.hero p { font-size: 1.25rem; color: #666; max-width: 600px; margin-bottom: 2rem; }
|
|
37
|
+
|
|
38
|
+
.btn {
|
|
39
|
+
display: inline-block;
|
|
40
|
+
padding: 0.875rem 2rem;
|
|
41
|
+
background: linear-gradient(90deg, #8b5cf6, #3b82f6);
|
|
42
|
+
color: #fff;
|
|
43
|
+
border-radius: 9999px;
|
|
44
|
+
text-decoration: none;
|
|
45
|
+
font-weight: 700;
|
|
46
|
+
transition: all 300ms cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.btn:hover { transform: scale(1.05) translateY(-2px); box-shadow: 0 10px 30px rgba(139,92,246,0.4); }
|
|
50
|
+
|
|
51
|
+
.features {
|
|
52
|
+
display: grid;
|
|
53
|
+
grid-template-columns: repeat(3, 1fr);
|
|
54
|
+
gap: 2rem;
|
|
55
|
+
max-width: 1200px;
|
|
56
|
+
margin: 6rem auto;
|
|
57
|
+
padding: 0 2rem;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.feature-card {
|
|
61
|
+
background: #fff;
|
|
62
|
+
border-radius: 16px;
|
|
63
|
+
padding: 2rem;
|
|
64
|
+
box-shadow: 0 10px 30px rgba(0,0,0,0.08);
|
|
65
|
+
border-left: 4px solid #8b5cf6;
|
|
66
|
+
transition: all 300ms cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.feature-card:hover { transform: scale(1.05) translateY(-4px); }
|
|
70
|
+
|
|
71
|
+
.feature-card .icon-wrap {
|
|
72
|
+
width: 60px;
|
|
73
|
+
height: 60px;
|
|
74
|
+
background: linear-gradient(135deg, #8b5cf6, #3b82f6);
|
|
75
|
+
border-radius: 12px;
|
|
76
|
+
margin-bottom: 1rem;
|
|
77
|
+
display: flex;
|
|
78
|
+
align-items: center;
|
|
79
|
+
justify-content: center;
|
|
80
|
+
font-size: 1.5rem;
|
|
81
|
+
color: #fff;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.feature-card h3 { font-size: 1.5rem; font-weight: 700; margin-bottom: 0.75rem; }
|
|
85
|
+
|
|
86
|
+
.feature-card p { color: #666; }
|
|
87
|
+
|
|
88
|
+
.nested-card {
|
|
89
|
+
background: #f9fafb;
|
|
90
|
+
border-radius: 8px;
|
|
91
|
+
padding: 1rem;
|
|
92
|
+
margin-top: 1rem;
|
|
93
|
+
border: 1px solid #e5e7eb;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.cta {
|
|
97
|
+
background: linear-gradient(135deg, #8b5cf6, #3b82f6);
|
|
98
|
+
color: #fff;
|
|
99
|
+
text-align: center;
|
|
100
|
+
padding: 6rem 2rem;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.cta h2 { font-size: 3rem; font-weight: 900; margin-bottom: 1rem; }
|
|
104
|
+
|
|
105
|
+
.cta button {
|
|
106
|
+
padding: 1rem 2.5rem;
|
|
107
|
+
background: #fff;
|
|
108
|
+
color: #8b5cf6;
|
|
109
|
+
border: none;
|
|
110
|
+
border-radius: 9999px;
|
|
111
|
+
font-weight: 700;
|
|
112
|
+
font-size: 1.125rem;
|
|
113
|
+
cursor: pointer;
|
|
114
|
+
transition: all 300ms cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.cta button:hover { transform: scale(1.05); }
|
|
118
|
+
|
|
119
|
+
footer { background: #f9fafb; padding: 2rem; text-align: center; color: #999; }
|
|
120
|
+
</style>
|
|
121
|
+
</head>
|
|
122
|
+
<body>
|
|
123
|
+
<section class="hero">
|
|
124
|
+
<h1>The AI-powered platform for modern teams</h1>
|
|
125
|
+
<p>Nexus helps you ship faster, collaborate smarter, and scale seamlessly with AI-native workflows built for the way teams work today.</p>
|
|
126
|
+
<a href="#" class="btn">Get started free</a>
|
|
127
|
+
</section>
|
|
128
|
+
|
|
129
|
+
<section class="features">
|
|
130
|
+
<div class="feature-card">
|
|
131
|
+
<div class="icon-wrap">โก</div>
|
|
132
|
+
<h3>Lightning fast</h3>
|
|
133
|
+
<p>Get up and running in seconds with our AI-native onboarding flow.</p>
|
|
134
|
+
<div class="nested-card">
|
|
135
|
+
<strong>Pro tip:</strong> Connect Slack, GitHub and Linear in one click.
|
|
136
|
+
</div>
|
|
137
|
+
</div>
|
|
138
|
+
<div class="feature-card">
|
|
139
|
+
<div class="icon-wrap">๐</div>
|
|
140
|
+
<h3>Built to scale</h3>
|
|
141
|
+
<p>From startup to enterprise โ Nexus grows with you, every step of the way.</p>
|
|
142
|
+
</div>
|
|
143
|
+
<div class="feature-card">
|
|
144
|
+
<div class="icon-wrap">๐ฏ</div>
|
|
145
|
+
<h3>Built for the modern team</h3>
|
|
146
|
+
<p>Tools that get out of your way and let your team do their best work.</p>
|
|
147
|
+
</div>
|
|
148
|
+
</section>
|
|
149
|
+
|
|
150
|
+
<section class="cta">
|
|
151
|
+
<h2>Ready to ship faster?</h2>
|
|
152
|
+
<p>Join 50,000+ teams already building with Nexus.</p>
|
|
153
|
+
<button>Start your free trial</button>
|
|
154
|
+
</section>
|
|
155
|
+
|
|
156
|
+
<footer>
|
|
157
|
+
<p>ยฉ 2026 Nexus, Inc. All rights reserved.</p>
|
|
158
|
+
</footer>
|
|
159
|
+
</body>
|
|
160
|
+
</html>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# `audit` verb ยท what fired and why
|
|
2
|
+
|
|
3
|
+
## Input
|
|
4
|
+
|
|
5
|
+
A 148-line `index.html` with inline CSS โ a generic AI-shaped landing page for a fictional product called "Nexus." Hits at least 14 anti-patterns from `references/anti-patterns.md`.
|
|
6
|
+
|
|
7
|
+
## What `audit` does (and what it doesn't)
|
|
8
|
+
|
|
9
|
+
- **Reads the file.** No edits. No new files. The verb is read-only.
|
|
10
|
+
- **Scores against `anti-patterns.md` + the slop test gates** in `SKILL.md`.
|
|
11
|
+
- **Returns one Markdown report** with: tell name ยท file path + line range ยท severity ยท one-line fix.
|
|
12
|
+
- **Groups by severity** (critical / major / minor) and ends with a count.
|
|
13
|
+
|
|
14
|
+
## What loaded
|
|
15
|
+
|
|
16
|
+
- `references/anti-patterns.md` (the full named-tell library)
|
|
17
|
+
- `references/structure.md` (for the structural-fingerprint check, gate 9)
|
|
18
|
+
- `references/microinteractions.md` (for the timing/easing canon, gates 11โ18)
|
|
19
|
+
- `SKILL.md` ยง The slop test (gates 1โ38)
|
|
20
|
+
|
|
21
|
+
## Why this matters as a verb test
|
|
22
|
+
|
|
23
|
+
`audit` is the verb that **doesn't change anything**. It's the safety verb โ the one a user runs before they ask for `refine` or `redesign`. The output gives the user enough information to decide which way to take the page.
|
|
24
|
+
|
|
25
|
+
In this case the audit returns "do not run `refine` โ the structural fingerprint is the problem; run `redesign` instead." That is the ideal output: a verb that helps the user pick *another* verb.
|
|
26
|
+
|
|
27
|
+
## Durable artifact
|
|
28
|
+
|
|
29
|
+
`audit-report.md` โ the kind of output Hallmark produces in a real session. It can be saved to a PR, pasted into a Linear ticket, or used as the brief for the follow-up `redesign` run.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<title>Nexus โ the AI-powered platform for modern teams</title>
|
|
6
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;900&display=swap" rel="stylesheet" />
|
|
7
|
+
<style>
|
|
8
|
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
9
|
+
body { font-family: 'Inter', sans-serif; background: #fff; color: #000; line-height: 1.6; }
|
|
10
|
+
.hero { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 2rem; }
|
|
11
|
+
.hero h1 { font-size: 4rem; font-weight: 900; background: linear-gradient(90deg, #8b5cf6, #3b82f6); -webkit-background-clip: text; -webkit-text-fill-color: transparent; margin-bottom: 1.5rem; }
|
|
12
|
+
.hero p { font-size: 1.25rem; color: #666; max-width: 600px; margin-bottom: 2rem; }
|
|
13
|
+
.btn { display: inline-block; padding: 0.875rem 2rem; background: linear-gradient(90deg, #8b5cf6, #3b82f6); color: #fff; border-radius: 9999px; text-decoration: none; font-weight: 700; transition: all 300ms cubic-bezier(0.34, 1.56, 0.64, 1); }
|
|
14
|
+
.btn:hover { transform: scale(1.05) translateY(-2px); }
|
|
15
|
+
.features { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; max-width: 1200px; margin: 6rem auto; padding: 0 2rem; }
|
|
16
|
+
.feature-card { background: #fff; border-radius: 16px; padding: 2rem; box-shadow: 0 10px 30px rgba(0,0,0,0.08); border-left: 4px solid #8b5cf6; transition: all 300ms cubic-bezier(0.34, 1.56, 0.64, 1); }
|
|
17
|
+
.feature-card:hover { transform: scale(1.05) translateY(-4px); }
|
|
18
|
+
.feature-card .icon-wrap { width: 60px; height: 60px; background: linear-gradient(135deg, #8b5cf6, #3b82f6); border-radius: 12px; margin-bottom: 1rem; display: flex; align-items: center; justify-content: center; font-size: 1.5rem; color: #fff; }
|
|
19
|
+
.feature-card h3 { font-size: 1.5rem; font-weight: 700; margin-bottom: 0.75rem; }
|
|
20
|
+
.feature-card p { color: #666; }
|
|
21
|
+
.cta { background: linear-gradient(135deg, #8b5cf6, #3b82f6); color: #fff; text-align: center; padding: 6rem 2rem; }
|
|
22
|
+
.cta h2 { font-size: 3rem; font-weight: 900; margin-bottom: 1rem; }
|
|
23
|
+
.cta button { padding: 1rem 2.5rem; background: #fff; color: #8b5cf6; border: none; border-radius: 9999px; font-weight: 700; font-size: 1.125rem; cursor: pointer; transition: all 300ms cubic-bezier(0.34, 1.56, 0.64, 1); }
|
|
24
|
+
.cta button:hover { transform: scale(1.05); }
|
|
25
|
+
footer { background: #f9fafb; padding: 2rem; text-align: center; color: #999; }
|
|
26
|
+
</style>
|
|
27
|
+
</head>
|
|
28
|
+
<body>
|
|
29
|
+
<section class="hero">
|
|
30
|
+
<h1>The AI-powered platform for modern teams</h1>
|
|
31
|
+
<p>Nexus helps you ship faster, collaborate smarter, and scale seamlessly with AI-native workflows built for the way teams work today.</p>
|
|
32
|
+
<a href="#" class="btn">Get started free</a>
|
|
33
|
+
</section>
|
|
34
|
+
|
|
35
|
+
<section class="features">
|
|
36
|
+
<div class="feature-card">
|
|
37
|
+
<div class="icon-wrap">โก</div>
|
|
38
|
+
<h3>Lightning fast</h3>
|
|
39
|
+
<p>Get up and running in seconds with our AI-native onboarding flow.</p>
|
|
40
|
+
</div>
|
|
41
|
+
<div class="feature-card">
|
|
42
|
+
<div class="icon-wrap">๐</div>
|
|
43
|
+
<h3>Built to scale</h3>
|
|
44
|
+
<p>From startup to enterprise โ Nexus grows with you, every step of the way.</p>
|
|
45
|
+
</div>
|
|
46
|
+
<div class="feature-card">
|
|
47
|
+
<div class="icon-wrap">๐ฏ</div>
|
|
48
|
+
<h3>Built for the modern team</h3>
|
|
49
|
+
<p>Tools that get out of your way and let your team do their best work.</p>
|
|
50
|
+
</div>
|
|
51
|
+
</section>
|
|
52
|
+
|
|
53
|
+
<section class="cta">
|
|
54
|
+
<h2>Ready to ship faster?</h2>
|
|
55
|
+
<p>Join 50,000+ teams already building with Nexus.</p>
|
|
56
|
+
<button>Start your free trial</button>
|
|
57
|
+
</section>
|
|
58
|
+
|
|
59
|
+
<footer>
|
|
60
|
+
<p>ยฉ 2026 Nexus, Inc. All rights reserved.</p>
|
|
61
|
+
</footer>
|
|
62
|
+
</body>
|
|
63
|
+
</html>
|