@phuc1403/musketeer 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/INSTALLATION.md +52 -52
  2. package/bin/musketeer.js +168 -168
  3. package/package.json +48 -48
  4. package/src/dotnet-scaffold-copier.js +79 -79
  5. package/src/provisioner/detect.js +93 -93
  6. package/src/self-update.js +77 -77
  7. package/template/.claude/agents/git-manager.md +18 -18
  8. package/template/.claude/agents/hallmark-auditor.md +78 -78
  9. package/template/.claude/agents/researcher.md +33 -33
  10. package/template/.claude/hooks/block-unsafe-adr-title.cjs +85 -85
  11. package/template/.claude/hooks/init-adr-dir.cjs +173 -173
  12. package/template/.claude/hooks/inject-adr-flags.cjs +94 -94
  13. package/template/.claude/hooks/lib/adr/command-scan.cjs +115 -115
  14. package/template/.claude/hooks/lib/characteristics/checker.cjs +357 -357
  15. package/template/.claude/hooks/lib/git-info-cache.cjs +191 -191
  16. package/template/.claude/hooks/sync-adr-toc.cjs +146 -146
  17. package/template/.claude/hooks/usage-quota-cache-refresh.cjs +166 -166
  18. package/template/.claude/hooks/validate-characteristics-hook.cjs +66 -66
  19. package/template/.claude/hooks/validate-cml-hook.js +145 -145
  20. package/template/.claude/skills/adr-writer/SKILL.md +48 -48
  21. package/template/.claude/skills/adr-writer/references/adr-example.md +35 -35
  22. package/template/.claude/skills/architecture-characteristic-writer/SKILL.md +215 -215
  23. package/template/.claude/skills/architecture-characteristic-writer/assets/worksheet-template.md +29 -29
  24. package/template/.claude/skills/architecture-characteristic-writer/references/characteristics-catalog.md +40 -40
  25. package/template/.claude/skills/architecture-characteristic-writer/scripts/ranking-table.cjs +171 -171
  26. package/template/.claude/skills/context-map/SKILL.md +80 -80
  27. package/template/.claude/skills/context-map/example.cml +106 -106
  28. package/template/.claude/skills/context-map/reference/Bounded Context/Bounded Context.md +40 -40
  29. package/template/.claude/skills/context-map/reference/Bounded Context/businessModel.md +5 -5
  30. package/template/.claude/skills/context-map/reference/Bounded Context/domainVisionStatement.md +2 -2
  31. package/template/.claude/skills/context-map/reference/Bounded Context/evolution.md +5 -5
  32. package/template/.claude/skills/context-map/reference/Bounded Context/implementationTechnology.md +1 -1
  33. package/template/.claude/skills/context-map/reference/Bounded Context/implements.md +1 -1
  34. package/template/.claude/skills/context-map/reference/Bounded Context/knowledgeLevel.md +4 -4
  35. package/template/.claude/skills/context-map/reference/Bounded Context/realizes.md +9 -9
  36. package/template/.claude/skills/context-map/reference/Bounded Context/refines.md +10 -10
  37. package/template/.claude/skills/context-map/reference/Bounded Context/responsibilities.md +26 -26
  38. package/template/.claude/skills/context-map/reference/Bounded Context/type.md +23 -23
  39. package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Anticorruption Layer.md +5 -5
  40. package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Bounded Context Relationship.md +12 -12
  41. package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Conformist.md +5 -5
  42. package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Customer-Supplier (C-S).md +22 -22
  43. package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Open Host Service.md +4 -4
  44. package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Partnership (P).md +13 -13
  45. package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Published Language.md +4 -4
  46. package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Shared Kernel (SK).md +12 -12
  47. package/template/.claude/skills/context-map/reference/Context Map.md +62 -62
  48. package/template/.claude/skills/context-map/reference/Domain/Domain.md +30 -30
  49. package/template/.claude/skills/context-map/reference/Domain/supports.md +33 -33
  50. package/template/.claude/skills/context-map/reference/Domain/type.md +3 -3
  51. package/template/.claude/skills/context-map/reference/Semantic Rules.md +32 -32
  52. package/template/.claude/skills/hallmark/SKILL.md +552 -552
  53. package/template/.claude/skills/hallmark/references/anti-patterns.md +412 -412
  54. package/template/.claude/skills/hallmark/references/assets.md +406 -406
  55. package/template/.claude/skills/hallmark/references/color.md +95 -95
  56. package/template/.claude/skills/hallmark/references/component-cookbook.md +256 -256
  57. package/template/.claude/skills/hallmark/references/components/c1-outlined-chip.md +12 -12
  58. package/template/.claude/skills/hallmark/references/components/c2-inline-form-as-cta.md +16 -16
  59. package/template/.claude/skills/hallmark/references/components/c3-typographic-link.md +8 -8
  60. package/template/.claude/skills/hallmark/references/components/c4-sticky-bottom-bar.md +16 -16
  61. package/template/.claude/skills/hallmark/references/components/f1-bento-grid.md +20 -20
  62. package/template/.claude/skills/hallmark/references/components/f2-sticky-scroll-stack.md +20 -20
  63. package/template/.claude/skills/hallmark/references/components/f3-tabular-spec-sheet.md +11 -11
  64. package/template/.claude/skills/hallmark/references/components/f4-step-sequence.md +11 -11
  65. package/template/.claude/skills/hallmark/references/components/f5-annotated-screenshot.md +11 -11
  66. package/template/.claude/skills/hallmark/references/components/f6-product-card-grid.md +41 -41
  67. package/template/.claude/skills/hallmark/references/components/ft1-mast-headed.md +13 -13
  68. package/template/.claude/skills/hallmark/references/components/ft2-inline-rule-single-line.md +10 -10
  69. package/template/.claude/skills/hallmark/references/components/ft3-index-style-category-list.md +12 -12
  70. package/template/.claude/skills/hallmark/references/components/ft4-dense-typographic.md +10 -10
  71. package/template/.claude/skills/hallmark/references/components/ft5-statement.md +21 -21
  72. package/template/.claude/skills/hallmark/references/components/ft6-letter-close.md +19 -19
  73. package/template/.claude/skills/hallmark/references/components/ft7-newsletter-first.md +27 -27
  74. package/template/.claude/skills/hallmark/references/components/ft8-marquee-scroll.md +25 -25
  75. package/template/.claude/skills/hallmark/references/components/h1-marquee.md +15 -15
  76. package/template/.claude/skills/hallmark/references/components/h2-split-diptych.md +15 -15
  77. package/template/.claude/skills/hallmark/references/components/h3-quote-led.md +11 -11
  78. package/template/.claude/skills/hallmark/references/components/h4-stat-led.md +14 -14
  79. package/template/.claude/skills/hallmark/references/components/h5-letter-hero.md +11 -11
  80. package/template/.claude/skills/hallmark/references/components/h6-photographic-fold.md +16 -16
  81. package/template/.claude/skills/hallmark/references/components/h7-demo-video-clipped-by-viewport-edge.md +27 -27
  82. package/template/.claude/skills/hallmark/references/components/h8-mockup-split-browser-framed.md +23 -23
  83. package/template/.claude/skills/hallmark/references/components/h9-custom-illustration-centerpiece.md +27 -27
  84. package/template/.claude/skills/hallmark/references/components/n1-wordmark-2-links.md +12 -12
  85. package/template/.claude/skills/hallmark/references/components/n10-floating-on-scroll-morph.md +19 -19
  86. package/template/.claude/skills/hallmark/references/components/n2-floating-chip.md +14 -14
  87. package/template/.claude/skills/hallmark/references/components/n3-side-rail.md +14 -14
  88. package/template/.claude/skills/hallmark/references/components/n4-hidden-behind-k.md +9 -9
  89. package/template/.claude/skills/hallmark/references/components/n5-floating-pill.md +28 -28
  90. package/template/.claude/skills/hallmark/references/components/n6-newspaper-masthead.md +24 -24
  91. package/template/.claude/skills/hallmark/references/components/n7-brutal-slab.md +22 -22
  92. package/template/.claude/skills/hallmark/references/components/n8-terminal-command.md +21 -21
  93. package/template/.claude/skills/hallmark/references/components/n9-edge-aligned-minimal.md +17 -17
  94. package/template/.claude/skills/hallmark/references/components/s1-left-margin-numbered.md +15 -15
  95. package/template/.claude/skills/hallmark/references/components/s2-hanging.md +13 -13
  96. package/template/.claude/skills/hallmark/references/components/s3-sticky-pinned.md +19 -19
  97. package/template/.claude/skills/hallmark/references/components/s4-inline-no-break.md +11 -11
  98. package/template/.claude/skills/hallmark/references/components/s5-bottom-anchored.md +13 -13
  99. package/template/.claude/skills/hallmark/references/components/t1-pull-quote-with-marginalia.md +12 -12
  100. package/template/.claude/skills/hallmark/references/components/t2-logo-wall-hairline.md +19 -19
  101. package/template/.claude/skills/hallmark/references/components/t3-single-huge-quote.md +11 -11
  102. package/template/.claude/skills/hallmark/references/components/t4-numbered-stat-strip.md +14 -14
  103. package/template/.claude/skills/hallmark/references/contract.md +24 -24
  104. package/template/.claude/skills/hallmark/references/copy.md +182 -182
  105. package/template/.claude/skills/hallmark/references/custom-craft.md +626 -626
  106. package/template/.claude/skills/hallmark/references/custom-theme.md +329 -329
  107. package/template/.claude/skills/hallmark/references/design-md.md +116 -116
  108. package/template/.claude/skills/hallmark/references/export-formats.md +328 -328
  109. package/template/.claude/skills/hallmark/references/floating-nav.md +89 -89
  110. package/template/.claude/skills/hallmark/references/genres/atmospheric.md +65 -65
  111. package/template/.claude/skills/hallmark/references/genres/editorial.md +70 -70
  112. package/template/.claude/skills/hallmark/references/genres/modern-minimal.md +67 -67
  113. package/template/.claude/skills/hallmark/references/genres/playful.md +65 -65
  114. package/template/.claude/skills/hallmark/references/hero-enrichment.md +474 -474
  115. package/template/.claude/skills/hallmark/references/imagery-kit.md +170 -170
  116. package/template/.claude/skills/hallmark/references/interaction-and-states.md +207 -207
  117. package/template/.claude/skills/hallmark/references/layout-and-space.md +111 -111
  118. package/template/.claude/skills/hallmark/references/macrostructures/01-bento-grid.md +35 -35
  119. package/template/.claude/skills/hallmark/references/macrostructures/02-long-document.md +34 -34
  120. package/template/.claude/skills/hallmark/references/macrostructures/03-marquee-hero.md +31 -31
  121. package/template/.claude/skills/hallmark/references/macrostructures/04-stat-led.md +32 -32
  122. package/template/.claude/skills/hallmark/references/macrostructures/05-workbench.md +32 -32
  123. package/template/.claude/skills/hallmark/references/macrostructures/06-conversational-faq.md +33 -33
  124. package/template/.claude/skills/hallmark/references/macrostructures/07-manifesto.md +32 -32
  125. package/template/.claude/skills/hallmark/references/macrostructures/08-photographic.md +34 -34
  126. package/template/.claude/skills/hallmark/references/macrostructures/09-quote-led.md +32 -32
  127. package/template/.claude/skills/hallmark/references/macrostructures/10-specimen.md +32 -32
  128. package/template/.claude/skills/hallmark/references/macrostructures/11-catalogue.md +23 -23
  129. package/template/.claude/skills/hallmark/references/macrostructures/12-letter.md +23 -23
  130. package/template/.claude/skills/hallmark/references/macrostructures/13-index-first.md +23 -23
  131. package/template/.claude/skills/hallmark/references/macrostructures/14-narrative-workflow.md +23 -23
  132. package/template/.claude/skills/hallmark/references/macrostructures/15-split-studio.md +23 -23
  133. package/template/.claude/skills/hallmark/references/macrostructures/16-feature-stack.md +23 -23
  134. package/template/.claude/skills/hallmark/references/macrostructures/17-type-specimen.md +23 -23
  135. package/template/.claude/skills/hallmark/references/macrostructures/18-portfolio-grid.md +23 -23
  136. package/template/.claude/skills/hallmark/references/macrostructures/19-map-diagram.md +23 -23
  137. package/template/.claude/skills/hallmark/references/macrostructures/20-ecosystem-index.md +23 -23
  138. package/template/.claude/skills/hallmark/references/macrostructures/21-component-playground.md +23 -23
  139. package/template/.claude/skills/hallmark/references/macrostructures.md +89 -89
  140. package/template/.claude/skills/hallmark/references/microinteractions.md +260 -260
  141. package/template/.claude/skills/hallmark/references/motion.md +109 -109
  142. package/template/.claude/skills/hallmark/references/preview-examples.md +49 -49
  143. package/template/.claude/skills/hallmark/references/responsive.md +138 -138
  144. package/template/.claude/skills/hallmark/references/slop-test.md +205 -205
  145. package/template/.claude/skills/hallmark/references/structure.md +164 -164
  146. package/template/.claude/skills/hallmark/references/study.md +511 -511
  147. package/template/.claude/skills/hallmark/references/typography.md +243 -243
  148. package/template/.claude/skills/hallmark/references/verbs/audit.md +25 -25
  149. package/template/.claude/skills/hallmark/references/verbs/redesign.md +269 -269
  150. package/template/.claude/skills/hallmark-loop/SKILL.md +105 -105
  151. package/template/.claude/skills/hallmark-loop/references/auditor-call.md +60 -60
  152. package/template/.claude/skills/hallmark-loop/references/capture.md +78 -78
  153. package/template/.claude/skills/hallmark-loop/references/loop-control.md +79 -79
  154. package/template/.claude/skills/handoff/SKILL.md +15 -15
  155. package/template/.claude/skills/knowledge-crunching/SKILL.md +94 -94
  156. package/template/.claude/skills/research/SKILL.md +69 -69
  157. package/template/.claude/skills/tdd/SKILL.md +142 -142
  158. package/template/.claude/skills/tdd/deep-modules.md +15 -15
  159. package/template/.claude/skills/tdd/interface-design.md +31 -31
  160. package/template/.claude/skills/tdd/mocking.md +59 -59
  161. package/template/.claude/skills/tdd/refactoring.md +10 -10
  162. package/template/.claude/skills/tdd/tests.md +61 -61
  163. package/template/.claude/statusline.cjs +100 -37
@@ -1,22 +1,22 @@
1
- ### N7 · Brutal slab
2
- A heavy, full-width nav with a 2 px solid border-bottom, all-caps wordmark and tracked uppercase link row, dense rhythm, no shadow, no rounded corners. Reads as Pentagram project pages, Liquid Death, brutalist-leaning agencies.
3
- *Use when:* the genre is playful (Brutal, Manifesto, Sport) or the brand voice is heavy / declarative.
4
- *Don't confuse with:* N1 Wordmark + 2 links (which is small and quiet).
5
-
6
- ```html
7
- <header class="nav-slab">
8
- <a class="slab-mark">STUDIO</a>
9
- <nav class="slab-nav" aria-label="Primary">
10
- <ul><li><a>CATALOG</a></li><li><a>VOICE</a></li><li><a>WORK</a></li></ul>
11
- </nav>
12
- <a class="cta-fill cta-fill--slab">GET</a>
13
- </header>
14
- ```
15
- ```css
16
- .nav-slab { display: flex; align-items: center; gap: var(--space-md); padding: var(--space-sm) var(--page-gutter); border-bottom: 2px solid var(--color-ink); background: var(--color-paper); }
17
- .slab-mark { font-family: var(--font-display); font-weight: 800; letter-spacing: 0.04em; }
18
- .slab-nav ul { display: flex; gap: var(--space-md); list-style: none; padding: 0; margin: 0 0 0 auto; }
19
- .slab-nav a { text-transform: uppercase; letter-spacing: 0.08em; font-size: var(--text-sm); font-weight: 600; }
20
- ```
21
-
22
- *Anti-pattern:* combining N7 with rounded corners, soft shadows, or backdrop-blur — those vocabularies fight. If you reach for blur, drop to N5; if you reach for round, drop to N1.
1
+ ### N7 · Brutal slab
2
+ A heavy, full-width nav with a 2 px solid border-bottom, all-caps wordmark and tracked uppercase link row, dense rhythm, no shadow, no rounded corners. Reads as Pentagram project pages, Liquid Death, brutalist-leaning agencies.
3
+ *Use when:* the genre is playful (Brutal, Manifesto, Sport) or the brand voice is heavy / declarative.
4
+ *Don't confuse with:* N1 Wordmark + 2 links (which is small and quiet).
5
+
6
+ ```html
7
+ <header class="nav-slab">
8
+ <a class="slab-mark">STUDIO</a>
9
+ <nav class="slab-nav" aria-label="Primary">
10
+ <ul><li><a>CATALOG</a></li><li><a>VOICE</a></li><li><a>WORK</a></li></ul>
11
+ </nav>
12
+ <a class="cta-fill cta-fill--slab">GET</a>
13
+ </header>
14
+ ```
15
+ ```css
16
+ .nav-slab { display: flex; align-items: center; gap: var(--space-md); padding: var(--space-sm) var(--page-gutter); border-bottom: 2px solid var(--color-ink); background: var(--color-paper); }
17
+ .slab-mark { font-family: var(--font-display); font-weight: 800; letter-spacing: 0.04em; }
18
+ .slab-nav ul { display: flex; gap: var(--space-md); list-style: none; padding: 0; margin: 0 0 0 auto; }
19
+ .slab-nav a { text-transform: uppercase; letter-spacing: 0.08em; font-size: var(--text-sm); font-weight: 600; }
20
+ ```
21
+
22
+ *Anti-pattern:* combining N7 with rounded corners, soft shadows, or backdrop-blur — those vocabularies fight. If you reach for blur, drop to N5; if you reach for round, drop to N1.
@@ -1,21 +1,21 @@
1
- ### N8 · Terminal command
2
- A nav formatted as a CLI prompt: `> studio --catalog --voice --get▮`. The "links" are command flags. The blinking cursor (`▮`) is allowed *only here* (it has purpose — signals "you'd type next"); never standalone elsewhere on the page. Reads as Vercel CLI docs landing, Charm, Mitchell Hashimoto's site.
3
- *Use when:* the page is a CLI tool, dev-tool docs, or carries the Terminal theme.
4
- *Don't confuse with:* N4 ⌘K-only (which is a palette, not a visible bar).
5
-
6
- ```html
7
- <header class="nav-term">
8
- <pre class="nav-term__line"><span class="prompt">&gt;</span> studio <a href="#catalog">--catalog</a> <a href="#voice">--voice</a> <a href="#get">--get</a><span class="caret" aria-hidden="true">▮</span></pre>
9
- </header>
10
- ```
11
- ```css
12
- .nav-term { padding: var(--space-sm) var(--page-gutter); border-bottom: var(--rule-hair) solid var(--color-rule); }
13
- .nav-term__line { font-family: var(--font-outlier, ui-monospace, "JetBrains Mono", monospace); font-size: var(--text-sm); margin: 0; }
14
- .nav-term__line .prompt { color: var(--color-accent); padding-right: 0.4ch; }
15
- .nav-term__line a { color: var(--color-ink); text-decoration: underline; text-underline-offset: 2px; }
16
- .caret { display: inline-block; width: 1ch; animation: blink 1.05s steps(2) infinite; color: var(--color-accent); }
17
- @keyframes blink { 50% { opacity: 0; } }
18
- @media (prefers-reduced-motion: reduce) { .caret { animation: none; opacity: 1; } }
19
- ```
20
-
21
- *Anti-pattern:* using `>` prompt vocabulary on a non-developer site (a wedding photographer's portfolio with a `> view --gallery` nav reads as set decoration). N8 belongs to genuine terminal / CLI brands only.
1
+ ### N8 · Terminal command
2
+ A nav formatted as a CLI prompt: `> studio --catalog --voice --get▮`. The "links" are command flags. The blinking cursor (`▮`) is allowed *only here* (it has purpose — signals "you'd type next"); never standalone elsewhere on the page. Reads as Vercel CLI docs landing, Charm, Mitchell Hashimoto's site.
3
+ *Use when:* the page is a CLI tool, dev-tool docs, or carries the Terminal theme.
4
+ *Don't confuse with:* N4 ⌘K-only (which is a palette, not a visible bar).
5
+
6
+ ```html
7
+ <header class="nav-term">
8
+ <pre class="nav-term__line"><span class="prompt">&gt;</span> studio <a href="#catalog">--catalog</a> <a href="#voice">--voice</a> <a href="#get">--get</a><span class="caret" aria-hidden="true">▮</span></pre>
9
+ </header>
10
+ ```
11
+ ```css
12
+ .nav-term { padding: var(--space-sm) var(--page-gutter); border-bottom: var(--rule-hair) solid var(--color-rule); }
13
+ .nav-term__line { font-family: var(--font-outlier, ui-monospace, "JetBrains Mono", monospace); font-size: var(--text-sm); margin: 0; }
14
+ .nav-term__line .prompt { color: var(--color-accent); padding-right: 0.4ch; }
15
+ .nav-term__line a { color: var(--color-ink); text-decoration: underline; text-underline-offset: 2px; }
16
+ .caret { display: inline-block; width: 1ch; animation: blink 1.05s steps(2) infinite; color: var(--color-accent); }
17
+ @keyframes blink { 50% { opacity: 0; } }
18
+ @media (prefers-reduced-motion: reduce) { .caret { animation: none; opacity: 1; } }
19
+ ```
20
+
21
+ *Anti-pattern:* using `>` prompt vocabulary on a non-developer site (a wedding photographer's portfolio with a `> view --gallery` nav reads as set decoration). N8 belongs to genuine terminal / CLI brands only.
@@ -1,17 +1,17 @@
1
- ### N9 · Edge-aligned minimal
2
- Wordmark hard-left, single CTA hard-right, vast empty space between, no link row at all. The *absence* is the design — Apple product pages, Carl Hauser, luxury sites.
3
- *Use when:* the page is luxury / quiet / Atelier / Salon and the brand earns the silence.
4
- *Don't confuse with:* N1 Wordmark + 2 links (which fills the middle).
5
-
6
- ```html
7
- <header class="nav-edge">
8
- <a class="wordmark">Studio</a>
9
- <a class="cta-outline">Get →</a>
10
- </header>
11
- ```
12
- ```css
13
- .nav-edge { display: flex; justify-content: space-between; align-items: center; padding: var(--space-md) var(--page-gutter); }
14
- .nav-edge .wordmark { font-family: var(--font-display); font-size: var(--text-md); }
15
- ```
16
-
17
- *Anti-pattern:* adding 4 inline links between the wordmark and CTA "to fill the space". The space *is* the design; if you fill it, you've made N1 with extra steps.
1
+ ### N9 · Edge-aligned minimal
2
+ Wordmark hard-left, single CTA hard-right, vast empty space between, no link row at all. The *absence* is the design — Apple product pages, Carl Hauser, luxury sites.
3
+ *Use when:* the page is luxury / quiet / Atelier / Salon and the brand earns the silence.
4
+ *Don't confuse with:* N1 Wordmark + 2 links (which fills the middle).
5
+
6
+ ```html
7
+ <header class="nav-edge">
8
+ <a class="wordmark">Studio</a>
9
+ <a class="cta-outline">Get →</a>
10
+ </header>
11
+ ```
12
+ ```css
13
+ .nav-edge { display: flex; justify-content: space-between; align-items: center; padding: var(--space-md) var(--page-gutter); }
14
+ .nav-edge .wordmark { font-family: var(--font-display); font-size: var(--text-md); }
15
+ ```
16
+
17
+ *Anti-pattern:* adding 4 inline links between the wordmark and CTA "to fill the space". The space *is* the design; if you fill it, you've made N1 with extra steps.
@@ -1,15 +1,15 @@
1
-
2
- ### S1 · Left-margin numbered
3
- A narrow left column holds `01 — LABEL.`; the wide right column holds the heading and content.
4
- *Use when:* the page is editorial / specimen.
5
- *Don't confuse with:* S5 Bottom-anchored (which puts the label *under* the section).
6
-
7
- ```html
8
- <header class="head-margin">
9
- <p class="num-label">01 — Foundations</p>
10
- <h2>…</h2>
11
- </header>
12
- ```
13
- ```css
14
- .head-margin { display: grid; grid-template-columns: 10rem 1fr; gap: var(--space-xl); align-items: baseline; }
15
- ```
1
+
2
+ ### S1 · Left-margin numbered
3
+ A narrow left column holds `01 — LABEL.`; the wide right column holds the heading and content.
4
+ *Use when:* the page is editorial / specimen.
5
+ *Don't confuse with:* S5 Bottom-anchored (which puts the label *under* the section).
6
+
7
+ ```html
8
+ <header class="head-margin">
9
+ <p class="num-label">01 — Foundations</p>
10
+ <h2>…</h2>
11
+ </header>
12
+ ```
13
+ ```css
14
+ .head-margin { display: grid; grid-template-columns: 10rem 1fr; gap: var(--space-xl); align-items: baseline; }
15
+ ```
@@ -1,13 +1,13 @@
1
- ### S2 · Hanging
2
- Heading floats above the section in negative space; no border, no rule.
3
- *Use when:* the content has a quiet, room-to-breathe energy.
4
- *Don't confuse with:* S3 Sticky-pinned (which moves with scroll).
5
-
6
- ```html
7
- <header class="head-hang">
8
- <h2>…</h2>
9
- </header>
10
- ```
11
- ```css
12
- .head-hang { padding-block: var(--space-3xl) var(--space-xl); }
13
- ```
1
+ ### S2 · Hanging
2
+ Heading floats above the section in negative space; no border, no rule.
3
+ *Use when:* the content has a quiet, room-to-breathe energy.
4
+ *Don't confuse with:* S3 Sticky-pinned (which moves with scroll).
5
+
6
+ ```html
7
+ <header class="head-hang">
8
+ <h2>…</h2>
9
+ </header>
10
+ ```
11
+ ```css
12
+ .head-hang { padding-block: var(--space-3xl) var(--space-xl); }
13
+ ```
@@ -1,19 +1,19 @@
1
- ### S3 · Sticky pinned
2
- Heading remains in viewport while content scrolls beneath. Orientation aid.
3
- *Use when:* the section is dense and the user benefits from always seeing where they are.
4
- *Don't confuse with:* S1 Left-margin (which doesn't move).
5
-
6
- ```html
7
- <header class="head-sticky">
8
- <p class="num-label">02</p>
9
- <h2>…</h2>
10
- </header>
11
- ```
12
- ```css
13
- /* If the page has a sticky top nav, offset by its height so the sticky
14
- head docks BENEATH it instead of bleeding over (slop-test gate 68).
15
- Use --z-sticky (in-page) so the nav's --z-sticky-nav out-paints it. */
16
- .head-sticky { position: sticky; top: var(--banner-height, 0px); background: var(--color-paper); padding-block: var(--space-sm); border-bottom: 1px solid var(--color-ink); z-index: var(--z-sticky); }
17
- ```
18
-
19
- **Sticky pairing rule:** if the page emits a sticky `<header>` / `<nav>` / `.banner` (anything with `position: sticky; top: 0`), you MUST also declare `--banner-height` (a px value matching the nav's height) and `--z-sticky-nav` (≥ 1 above `--z-sticky`) in `tokens.css`. The S3 recipe above pulls both. Without those tokens the section head paints over the nav during scroll — see slop-test gate 68.
1
+ ### S3 · Sticky pinned
2
+ Heading remains in viewport while content scrolls beneath. Orientation aid.
3
+ *Use when:* the section is dense and the user benefits from always seeing where they are.
4
+ *Don't confuse with:* S1 Left-margin (which doesn't move).
5
+
6
+ ```html
7
+ <header class="head-sticky">
8
+ <p class="num-label">02</p>
9
+ <h2>…</h2>
10
+ </header>
11
+ ```
12
+ ```css
13
+ /* If the page has a sticky top nav, offset by its height so the sticky
14
+ head docks BENEATH it instead of bleeding over (slop-test gate 68).
15
+ Use --z-sticky (in-page) so the nav's --z-sticky-nav out-paints it. */
16
+ .head-sticky { position: sticky; top: var(--banner-height, 0px); background: var(--color-paper); padding-block: var(--space-sm); border-bottom: 1px solid var(--color-ink); z-index: var(--z-sticky); }
17
+ ```
18
+
19
+ **Sticky pairing rule:** if the page emits a sticky `<header>` / `<nav>` / `.banner` (anything with `position: sticky; top: 0`), you MUST also declare `--banner-height` (a px value matching the nav's height) and `--z-sticky-nav` (≥ 1 above `--z-sticky`) in `tokens.css`. The S3 recipe above pulls both. Without those tokens the section head paints over the nav during scroll — see slop-test gate 68.
@@ -1,11 +1,11 @@
1
- ### S4 · Inline (no break)
2
- The heading is a small caps phrase that emerges *inside* the body flow; no spatial break.
3
- *Use when:* the page is prose-led; reading should be continuous.
4
- *Don't confuse with:* S2 Hanging (which separates with negative space).
5
-
6
- ```html
7
- <p>… <span class="head-inline">A small heading.</span> …</p>
8
- ```
9
- ```css
10
- .head-inline { font-variant-caps: all-small-caps; letter-spacing: 0.06em; font-weight: 500; }
11
- ```
1
+ ### S4 · Inline (no break)
2
+ The heading is a small caps phrase that emerges *inside* the body flow; no spatial break.
3
+ *Use when:* the page is prose-led; reading should be continuous.
4
+ *Don't confuse with:* S2 Hanging (which separates with negative space).
5
+
6
+ ```html
7
+ <p>… <span class="head-inline">A small heading.</span> …</p>
8
+ ```
9
+ ```css
10
+ .head-inline { font-variant-caps: all-small-caps; letter-spacing: 0.06em; font-weight: 500; }
11
+ ```
@@ -1,13 +1,13 @@
1
- ### S5 · Bottom-anchored
2
- The label or heading sits *below* the section's content. Inverts hierarchy.
3
- *Use when:* the content is the primary act and the label is a footer to it.
4
- *Don't confuse with:* S1 Left-margin (which leads with the label).
5
-
6
- ```html
7
- <section>
8
- <div class="content">…</div>
9
- <p class="num-label">— end of 02</p>
10
- </section>
11
- ```
12
-
13
- ---
1
+ ### S5 · Bottom-anchored
2
+ The label or heading sits *below* the section's content. Inverts hierarchy.
3
+ *Use when:* the content is the primary act and the label is a footer to it.
4
+ *Don't confuse with:* S1 Left-margin (which leads with the label).
5
+
6
+ ```html
7
+ <section>
8
+ <div class="content">…</div>
9
+ <p class="num-label">— end of 02</p>
10
+ </section>
11
+ ```
12
+
13
+ ---
@@ -1,12 +1,12 @@
1
-
2
- ### T1 · Pull-quote with marginalia
3
- A quote sits in the wide column; the attribution and source link float in the narrow margin column.
4
- *Use when:* the page already has a marginalia rhythm (Tufte-leaning, editorial).
5
- *Don't confuse with:* T3 Single huge quote (which is centered and dominates).
6
-
7
- ```html
8
- <aside class="proof-margin">
9
- <blockquote class="serif-italic">"…"</blockquote>
10
- <p class="attribution muted">— Name<br />Role, Company</p>
11
- </aside>
12
- ```
1
+
2
+ ### T1 · Pull-quote with marginalia
3
+ A quote sits in the wide column; the attribution and source link float in the narrow margin column.
4
+ *Use when:* the page already has a marginalia rhythm (Tufte-leaning, editorial).
5
+ *Don't confuse with:* T3 Single huge quote (which is centered and dominates).
6
+
7
+ ```html
8
+ <aside class="proof-margin">
9
+ <blockquote class="serif-italic">"…"</blockquote>
10
+ <p class="attribution muted">— Name<br />Role, Company</p>
11
+ </aside>
12
+ ```
@@ -1,19 +1,19 @@
1
- ### T2 · Logo wall (hairline)
2
- A row of customer logos, monochromatic, separated by hairline rules. No card boxes, no shadows.
3
- *Use when:* you have recognisable customers and want to surface them quietly.
4
- *Don't confuse with:* the AI-default 6-logo box grid; this version refuses card boxes.
5
-
6
- ```html
7
- <section class="logo-wall">
8
- <ul>
9
- <li><img src="" /></li>
10
- <li><img src="" /></li>
11
- <li><img src="" /></li>
12
- </ul>
13
- </section>
14
- ```
15
- ```css
16
- .logo-wall ul { display: grid; grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr)); gap: 0; }
17
- .logo-wall li { padding: var(--space-md); border-right: 1px solid var(--color-rule); display: grid; place-items: center; }
18
- .logo-wall img { filter: grayscale(1); opacity: 0.7; }
19
- ```
1
+ ### T2 · Logo wall (hairline)
2
+ A row of customer logos, monochromatic, separated by hairline rules. No card boxes, no shadows.
3
+ *Use when:* you have recognisable customers and want to surface them quietly.
4
+ *Don't confuse with:* the AI-default 6-logo box grid; this version refuses card boxes.
5
+
6
+ ```html
7
+ <section class="logo-wall">
8
+ <ul>
9
+ <li><img src="" /></li>
10
+ <li><img src="" /></li>
11
+ <li><img src="" /></li>
12
+ </ul>
13
+ </section>
14
+ ```
15
+ ```css
16
+ .logo-wall ul { display: grid; grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr)); gap: 0; }
17
+ .logo-wall li { padding: var(--space-md); border-right: 1px solid var(--color-rule); display: grid; place-items: center; }
18
+ .logo-wall img { filter: grayscale(1); opacity: 0.7; }
19
+ ```
@@ -1,11 +1,11 @@
1
- ### T3 · Single huge quote
2
- One quote, set big, centered, taking a whole section. No supporting text, no attribution boxes — attribution is a small caps line beneath.
3
- *Use when:* one quote is so good it earns the room.
4
- *Don't confuse with:* T1 Margin pull-quote (which is the *side* mate, not the *room*).
5
-
6
- ```html
7
- <section class="proof-room">
8
- <blockquote class="display-italic">"…"</blockquote>
9
- <p class="attribution"><span class="caps">— Name, Company</span></p>
10
- </section>
11
- ```
1
+ ### T3 · Single huge quote
2
+ One quote, set big, centered, taking a whole section. No supporting text, no attribution boxes — attribution is a small caps line beneath.
3
+ *Use when:* one quote is so good it earns the room.
4
+ *Don't confuse with:* T1 Margin pull-quote (which is the *side* mate, not the *room*).
5
+
6
+ ```html
7
+ <section class="proof-room">
8
+ <blockquote class="display-italic">"…"</blockquote>
9
+ <p class="attribution"><span class="caps">— Name, Company</span></p>
10
+ </section>
11
+ ```
@@ -1,14 +1,14 @@
1
- ### T4 · Numbered stat strip
2
- A horizontal strip of 3–5 stats (count + qualifier) running across one row. Tabular nums.
3
- *Use when:* you have multiple complementary metrics that work together.
4
- *Don't confuse with:* H4 Stat-led hero (which is one focal number, not several).
5
-
6
- ```html
7
- <section class="stat-strip tnum">
8
- <div><b>2.4M</b><span>users</span></div>
9
- <div><b>99.97%</b><span>uptime</span></div>
10
- <div><b>14</b><span>regions</span></div>
11
- </section>
12
- ```
13
-
14
- ---
1
+ ### T4 · Numbered stat strip
2
+ A horizontal strip of 3–5 stats (count + qualifier) running across one row. Tabular nums.
3
+ *Use when:* you have multiple complementary metrics that work together.
4
+ *Don't confuse with:* H4 Stat-led hero (which is one focal number, not several).
5
+
6
+ ```html
7
+ <section class="stat-strip tnum">
8
+ <div><b>2.4M</b><span>users</span></div>
9
+ <div><b>99.97%</b><span>uptime</span></div>
10
+ <div><b>14</b><span>regions</span></div>
11
+ </section>
12
+ ```
13
+
14
+ ---
@@ -1,24 +1,24 @@
1
- # Output contract & scope
2
-
3
- Loaded once per build, at handoff time.
4
-
5
- ## Output contract
6
-
7
- When producing new work:
8
-
9
- - Put design tokens in one place at the top of the stylesheet (`:root` custom properties) or in a `tokens.css` / `tokens.ts` file if the project uses one.
10
- - Name tokens by semantic role, not value. `--color-ink`, not `--color-black`.
11
- - If the project uses Tailwind, extend the theme; do not inline arbitrary values across components.
12
- - If the project uses a framework, match the framework's file conventions — don't reinvent them.
13
- - Include a short comment block at the top of the stylesheet naming the genre, the tone the user picked, the palette's anchor hue, and the structural fingerprint. This is the only comment you need.
14
-
15
- ## Scope and limits
16
-
17
- Hallmark is a *taste* skill. It will not:
18
-
19
- - Invent product copy. If the user hasn't given you the words, ask.
20
- - Pick a brand identity. It will follow one you give it.
21
- - Enforce a specific style (dark mode, glassmorphism, brutalism). It will execute whichever genre + tone the user committed to.
22
- - Build logic — state management, data fetching, business rules. It is a visual / interaction layer only.
23
-
24
- If a request falls outside taste — "build the auth flow", "wire up Stripe" — do the work, but apply Hallmark to the rendered surface.
1
+ # Output contract & scope
2
+
3
+ Loaded once per build, at handoff time.
4
+
5
+ ## Output contract
6
+
7
+ When producing new work:
8
+
9
+ - Put design tokens in one place at the top of the stylesheet (`:root` custom properties) or in a `tokens.css` / `tokens.ts` file if the project uses one.
10
+ - Name tokens by semantic role, not value. `--color-ink`, not `--color-black`.
11
+ - If the project uses Tailwind, extend the theme; do not inline arbitrary values across components.
12
+ - If the project uses a framework, match the framework's file conventions — don't reinvent them.
13
+ - Include a short comment block at the top of the stylesheet naming the genre, the tone the user picked, the palette's anchor hue, and the structural fingerprint. This is the only comment you need.
14
+
15
+ ## Scope and limits
16
+
17
+ Hallmark is a *taste* skill. It will not:
18
+
19
+ - Invent product copy. If the user hasn't given you the words, ask.
20
+ - Pick a brand identity. It will follow one you give it.
21
+ - Enforce a specific style (dark mode, glassmorphism, brutalism). It will execute whichever genre + tone the user committed to.
22
+ - Build logic — state management, data fetching, business rules. It is a visual / interaction layer only.
23
+
24
+ If a request falls outside taste — "build the auth flow", "wire up Stripe" — do the work, but apply Hallmark to the rendered surface.