@pugi/cli 1.0.0-alpha.241 → 1.0.0-alpha.242

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 (126) hide show
  1. package/models.json +1 -1
  2. package/package.json +7 -7
  3. package/skills/ha-prototype-web/NOTICE.md +44 -3
  4. package/skills/od-blog-post/LICENSE-APACHE-2.0 +201 -0
  5. package/skills/od-blog-post/NOTICE.md +126 -0
  6. package/skills/od-blog-post/SKILL.md +81 -0
  7. package/skills/od-contact-widget/LICENSE-APACHE-2.0 +201 -0
  8. package/skills/od-contact-widget/NOTICE.md +126 -0
  9. package/skills/od-contact-widget/SKILL.md +132 -0
  10. package/skills/od-craft/NOTICE.md +44 -3
  11. package/skills/od-critique/LICENSE-APACHE-2.0 +201 -0
  12. package/skills/od-critique/NOTICE.md +126 -0
  13. package/skills/od-critique/SKILL.md +259 -0
  14. package/skills/od-dashboard/LICENSE-APACHE-2.0 +201 -0
  15. package/skills/od-dashboard/NOTICE.md +126 -0
  16. package/skills/od-dashboard/SKILL.md +77 -0
  17. package/skills/od-design-brief/LICENSE-APACHE-2.0 +201 -0
  18. package/skills/od-design-brief/NOTICE.md +126 -0
  19. package/skills/od-design-brief/SKILL.md +260 -0
  20. package/skills/od-docs-page/LICENSE-APACHE-2.0 +201 -0
  21. package/skills/od-docs-page/NOTICE.md +126 -0
  22. package/skills/od-docs-page/SKILL.md +81 -0
  23. package/skills/od-email-marketing/LICENSE-APACHE-2.0 +201 -0
  24. package/skills/od-email-marketing/NOTICE.md +126 -0
  25. package/skills/od-email-marketing/SKILL.md +85 -0
  26. package/skills/od-eng-runbook/LICENSE-APACHE-2.0 +201 -0
  27. package/skills/od-eng-runbook/NOTICE.md +126 -0
  28. package/skills/od-eng-runbook/SKILL.md +52 -0
  29. package/skills/od-faq-page/LICENSE-APACHE-2.0 +201 -0
  30. package/skills/od-faq-page/NOTICE.md +126 -0
  31. package/skills/od-faq-page/SKILL.md +113 -0
  32. package/skills/od-finance-report/LICENSE-APACHE-2.0 +201 -0
  33. package/skills/od-finance-report/NOTICE.md +126 -0
  34. package/skills/od-finance-report/SKILL.md +62 -0
  35. package/skills/od-frontend-design/LICENSE-APACHE-2.0 +201 -0
  36. package/skills/od-frontend-design/LICENSE.txt +177 -0
  37. package/skills/od-frontend-design/NOTICE.md +126 -0
  38. package/skills/od-frontend-design/SKILL.md +86 -0
  39. package/skills/od-hr-onboarding/LICENSE-APACHE-2.0 +201 -0
  40. package/skills/od-hr-onboarding/NOTICE.md +126 -0
  41. package/skills/od-hr-onboarding/SKILL.md +53 -0
  42. package/skills/od-invoice/LICENSE-APACHE-2.0 +201 -0
  43. package/skills/od-invoice/NOTICE.md +126 -0
  44. package/skills/od-invoice/SKILL.md +49 -0
  45. package/skills/od-kanban-board/LICENSE-APACHE-2.0 +201 -0
  46. package/skills/od-kanban-board/NOTICE.md +126 -0
  47. package/skills/od-kanban-board/SKILL.md +51 -0
  48. package/skills/od-login-flow/LICENSE-APACHE-2.0 +201 -0
  49. package/skills/od-login-flow/NOTICE.md +126 -0
  50. package/skills/od-login-flow/SKILL.md +49 -0
  51. package/skills/od-login-flow/references/checklist.md +19 -0
  52. package/skills/od-magazine-poster/LICENSE-APACHE-2.0 +201 -0
  53. package/skills/od-magazine-poster/NOTICE.md +126 -0
  54. package/skills/od-magazine-poster/SKILL.md +90 -0
  55. package/skills/od-meeting-notes/LICENSE-APACHE-2.0 +201 -0
  56. package/skills/od-meeting-notes/NOTICE.md +126 -0
  57. package/skills/od-meeting-notes/SKILL.md +48 -0
  58. package/skills/od-mobile-app/LICENSE-APACHE-2.0 +201 -0
  59. package/skills/od-mobile-app/NOTICE.md +126 -0
  60. package/skills/od-mobile-app/SKILL.md +103 -0
  61. package/skills/od-mobile-app/assets/template.html +442 -0
  62. package/skills/od-mobile-app/references/checklist.md +46 -0
  63. package/skills/od-mobile-app/references/layouts.md +312 -0
  64. package/skills/od-mobile-onboarding/LICENSE-APACHE-2.0 +201 -0
  65. package/skills/od-mobile-onboarding/NOTICE.md +126 -0
  66. package/skills/od-mobile-onboarding/SKILL.md +54 -0
  67. package/skills/od-pm-spec/LICENSE-APACHE-2.0 +201 -0
  68. package/skills/od-pm-spec/NOTICE.md +126 -0
  69. package/skills/od-pm-spec/SKILL.md +53 -0
  70. package/skills/od-pricing-page/LICENSE-APACHE-2.0 +201 -0
  71. package/skills/od-pricing-page/NOTICE.md +126 -0
  72. package/skills/od-pricing-page/SKILL.md +80 -0
  73. package/skills/od-redesign-skill/LICENSE +21 -0
  74. package/skills/od-redesign-skill/LICENSE-APACHE-2.0 +201 -0
  75. package/skills/od-redesign-skill/NOTICE.md +126 -0
  76. package/skills/od-redesign-skill/SKILL.md +205 -0
  77. package/skills/od-reference-design-contract/NOTICE.md +44 -3
  78. package/skills/od-reference-design-contract/SKILL.md +1 -1
  79. package/skills/od-saas-landing/LICENSE-APACHE-2.0 +201 -0
  80. package/skills/od-saas-landing/NOTICE.md +126 -0
  81. package/skills/od-saas-landing/SKILL.md +125 -0
  82. package/skills/od-social-carousel/LICENSE-APACHE-2.0 +201 -0
  83. package/skills/od-social-carousel/NOTICE.md +126 -0
  84. package/skills/od-social-carousel/SKILL.md +92 -0
  85. package/skills/od-team-okrs/LICENSE-APACHE-2.0 +201 -0
  86. package/skills/od-team-okrs/NOTICE.md +126 -0
  87. package/skills/od-team-okrs/SKILL.md +48 -0
  88. package/skills/od-waitlist-page/LICENSE-APACHE-2.0 +201 -0
  89. package/skills/od-waitlist-page/NOTICE.md +126 -0
  90. package/skills/od-waitlist-page/SKILL.md +229 -0
  91. package/skills/od-waitlist-page/assets/template.html +457 -0
  92. package/skills/od-waitlist-page/references/checklist.md +42 -0
  93. package/skills/od-web-design-guidelines/LICENSE +21 -0
  94. package/skills/od-web-design-guidelines/LICENSE-APACHE-2.0 +201 -0
  95. package/skills/od-web-design-guidelines/NOTICE.md +126 -0
  96. package/skills/od-web-design-guidelines/SKILL.md +66 -0
  97. package/skills/od-web-design-guidelines/references/guidelines.md +133 -0
  98. package/skills/od-web-prototype/NOTICE.md +44 -3
  99. package/skills/od-web-prototype/SKILL.md +1 -1
  100. package/skills/od-web-prototype-taste-brutalist/LICENSE-APACHE-2.0 +201 -0
  101. package/skills/od-web-prototype-taste-brutalist/LICENSE-MIT-Leonxlnx +21 -0
  102. package/skills/od-web-prototype-taste-brutalist/NOTICE.md +126 -0
  103. package/skills/od-web-prototype-taste-brutalist/SKILL.md +64 -0
  104. package/skills/od-web-prototype-taste-editorial/LICENSE-APACHE-2.0 +201 -0
  105. package/skills/od-web-prototype-taste-editorial/LICENSE-MIT-Leonxlnx +21 -0
  106. package/skills/od-web-prototype-taste-editorial/NOTICE.md +126 -0
  107. package/skills/od-web-prototype-taste-editorial/SKILL.md +61 -0
  108. package/skills/od-web-prototype-taste-soft/LICENSE-APACHE-2.0 +201 -0
  109. package/skills/od-web-prototype-taste-soft/LICENSE-MIT-Leonxlnx +21 -0
  110. package/skills/od-web-prototype-taste-soft/NOTICE.md +126 -0
  111. package/skills/od-web-prototype-taste-soft/SKILL.md +64 -0
  112. package/skills/od-webgl-experience/LICENSE-APACHE-2.0 +201 -0
  113. package/skills/od-webgl-experience/NOTICE.md +126 -0
  114. package/skills/od-webgl-experience/SKILL.md +81 -0
  115. package/skills/od-wireframe-annotated/LICENSE-APACHE-2.0 +201 -0
  116. package/skills/od-wireframe-annotated/NOTICE.md +126 -0
  117. package/skills/od-wireframe-annotated/SKILL.md +90 -0
  118. package/skills/od-wireframe-greybox/LICENSE-APACHE-2.0 +201 -0
  119. package/skills/od-wireframe-greybox/NOTICE.md +126 -0
  120. package/skills/od-wireframe-greybox/SKILL.md +90 -0
  121. package/skills/od-wireframe-mobile-flow/LICENSE-APACHE-2.0 +201 -0
  122. package/skills/od-wireframe-mobile-flow/NOTICE.md +126 -0
  123. package/skills/od-wireframe-mobile-flow/SKILL.md +96 -0
  124. package/skills/od-wireframe-sketch/LICENSE-APACHE-2.0 +201 -0
  125. package/skills/od-wireframe-sketch/NOTICE.md +126 -0
  126. package/skills/od-wireframe-sketch/SKILL.md +98 -0
@@ -0,0 +1,126 @@
1
+ # Third-party skills vendored into the Pugi designer pack
2
+
3
+ These skills are part of Sofia's (designer) skill pack. They help her go from a
4
+ brief to a design system to the clickable HTML prototype that the customer
5
+ approves at the plan gate (`.pugi/artifacts/prototype.html`, BACKLOG AO), and,
6
+ since 2026-10-17, carry the craft rules every build turn is held to.
7
+
8
+ The skill pack generator copies this file and `LICENSE-APACHE-2.0` into every
9
+ vendored skill directory, so each one carries its attribution wherever it is
10
+ baked.
11
+
12
+ Both upstream projects are licensed under the Apache License, Version 2.0. The
13
+ full licence text is in `LICENSE-APACHE-2.0` next to this file. The LICENSE file
14
+ of each repository was checked before anything was copied (2026-10-04 and
15
+ 2026-10-17). Neither repository ships a NOTICE file, so this file is the
16
+ attribution.
17
+
18
+ ## nexu-io/open-design
19
+
20
+ - Source: https://github.com/nexu-io/open-design
21
+ - Licence: Apache-2.0, "Copyright 2026 Open Design contributors"
22
+ - The upstream `skills/README.md` says skills are Apache-2.0 unless their own
23
+ `LICENSE` says otherwise. No directory copied here has its own licence.
24
+ - Commit 53231d40b778d88eba23f35547bf99485d3ae9fc (2026-09-30) for the two
25
+ prototype skills (re-checked unchanged at 3b0df90f and re-stamped);
26
+ commit 78d5637cb49da07e81314d1544b5fc6d37c95084 (v0.25.1, 2026-10-16) for
27
+ the craft rules and the two ports below; commit
28
+ 3b0df90f305c8279e748c292accf336d02b924ef (2026-10-20) for the design
29
+ templates and design skills added 2026-10-21 (CEO: "Open Design inside
30
+ Pugi"). The LICENSE file of the repository was checked again on 2026-10-21.
31
+
32
+ | Pugi skill | Upstream path | Files copied |
33
+ |---|---|---|
34
+ | `od-web-prototype` | `design-templates/web-prototype/` | `SKILL.md`, `assets/template.html`, `references/layouts.md`, `references/checklist.md` |
35
+ | `od-reference-design-contract` | `skills/reference-design-contract/` | `SKILL.md`, `references/checklist.md` |
36
+ | `od-craft` | `craft/` | all twelve documents, as `references/<name>.md`: `README.md`, `accessibility-baseline.md`, `animation-discipline.md`, `anti-ai-slop.md`, `color.md`, `form-validation.md`, `laws-of-ux.md`, `rtl-and-bidi.md`, `state-coverage.md`, `typography-hierarchy-editorial.md`, `typography-hierarchy.md`, `typography.md` |
37
+
38
+ ### Design templates (added 2026-10-21, commit 3b0df90f) — the "Start from" catalogue
39
+
40
+ Each is `design-templates/<name>/` → `od-<name>/`, `SKILL.md` only unless noted.
41
+ Apache-2.0, nexu-io/open-design contributors, except where a row says otherwise.
42
+
43
+ | Pugi skill | Upstream path | Files copied / licence |
44
+ |---|---|---|
45
+ | `od-saas-landing`, `od-dashboard`, `od-mobile-onboarding`, `od-pricing-page`, `od-blog-post`, `od-docs-page`, `od-kanban-board`, `od-invoice`, `od-meeting-notes`, `od-contact-widget`, `od-email-marketing`, `od-social-carousel`, `od-wireframe-annotated`, `od-wireframe-greybox`, `od-wireframe-mobile-flow`, `od-wireframe-sketch`, `od-pm-spec`, `od-team-okrs`, `od-eng-runbook`, `od-finance-report`, `od-hr-onboarding`, `od-magazine-poster`, `od-webgl-experience` | `design-templates/<name>/` | `SKILL.md` |
46
+ | `od-mobile-app` | `design-templates/mobile-app/` | `SKILL.md`, `assets/template.html`, `references/layouts.md`, `references/checklist.md` |
47
+ | `od-waitlist-page` | `design-templates/waitlist-page/` | `SKILL.md`, `assets/template.html`, `references/checklist.md` |
48
+ | `od-web-prototype-taste-soft`, `-editorial`, `-brutalist` | `design-templates/web-prototype-taste-*/` | `SKILL.md`; distilled by open-design from Leonxlnx/taste-skill (MIT, © 2026 Leonxlnx) — that MIT text is carried as `LICENSE-MIT-Leonxlnx` in each directory |
49
+ | `od-login-flow` | `skills/login-flow/` | `SKILL.md`, `references/checklist.md` |
50
+ | `od-faq-page` | `skills/faq-page/` | `SKILL.md` |
51
+
52
+ ### Design skills (added 2026-10-21, commit 3b0df90f)
53
+
54
+ | Pugi skill | Upstream path | Files copied / licence |
55
+ |---|---|---|
56
+ | `od-design-brief` | `skills/design-brief/` | `SKILL.md` (Apache-2.0, nexu-io) |
57
+ | `od-critique` | `design-templates/critique/` | `SKILL.md` (Apache-2.0, nexu-io) |
58
+ | `od-frontend-design` | `skills/frontend-design/` | `SKILL.md`, `LICENSE.txt` (Apache-2.0; the skill is Anthropic's `frontend-design` as open-design redistributes it) |
59
+ | `od-redesign-skill` | `skills/redesign-skill/` | `SKILL.md`, `LICENSE` (MIT, © 2026 Leonxlnx; upstream frontmatter name `redesign-existing-projects`) |
60
+ | `od-web-design-guidelines` | `skills/web-design-guidelines/` | `SKILL.md`, `LICENSE`, `references/guidelines.md` (MIT, vercel-labs/web-interface-guidelines, as open-design redistributes it) |
61
+
62
+ Looked at and left out on 2026-10-21 (no licence file in the open-design
63
+ directory although the upstream is MIT/Apache; take later with the upstream
64
+ text): `design-md`, `enhance-prompt` (google-labs-code/skills),
65
+ `design-consultation`, `plan-design-review` (garrytan/gstack, MIT),
66
+ `copywriting` (coreyhaines31/marketingskills, MIT), `impeccable-design-polish`
67
+ (pbakaus/impeccable, Apache-2.0), `ui-skills` (ibelick/ui-skills, MIT),
68
+ `emil-design-eng`, `animate`, `review-animations`, `stitch-skill`. Decks,
69
+ video, live-artifact and `tweaks` templates are not Pugi surfaces.
70
+
71
+ Upstream attributions kept inside those files: `craft/` is adapted from
72
+ referodesign/refero_skill (MIT, © Refero Design); the "Adapted from" lines
73
+ stay where upstream put them.
74
+
75
+ ### Ports (derivative works, Apache-2.0 §4), not copies
76
+
77
+ | Pugi file | Upstream source | What changed |
78
+ |---|---|---|
79
+ | `packages/opencode/src/session/design-lint.ts` | `apps/daemon/src/lint-artifact.ts` | The seven P0 checks and the external-image advisory are kept; the finding shape is local; it runs over a workspace (source and `dist/`) rather than one artifact body; Tailwind utility-class forms of each sin are added; the deck, `data-od-id`, all-caps tracking and raw-hex checks are dropped; the sans-display check fires only when a serif display token is bound. The daemon's analytics were never in this file. |
80
+ | `packages/opencode/src/scaffold/design-direction.ts` | `apps/daemon/src/prompts/directions.ts` | The five schools are kept as postures; labels no longer name other brands; palettes are hex; faces are the Google fonts the starters link; two directions added; no question form (the direction is decided by the model, never asked of the customer). |
81
+ | `packages/plugin-pugi-personas/src/craft-digest.ts` | `craft/*.md` | A condensed summary written by Pugi from the twelve documents. |
82
+
83
+ Nothing ported touches the network: open-design's PostHog / Langfuse telemetry
84
+ lives in its apps, none of which were taken.
85
+
86
+ ## nexu-io/html-anything
87
+
88
+ - Source: https://github.com/nexu-io/html-anything
89
+ - Commit: 553ed98c283f9c0f489902d035416a972d6a9699 (2026-09-15)
90
+ - Licence: Apache-2.0. The upstream copyright line is the unfilled template
91
+ ("Copyright [yyyy] [name of copyright owner]"), so the copyright belongs to
92
+ the html-anything contributors.
93
+
94
+ | Pugi skill | Upstream path | Files copied |
95
+ |---|---|---|
96
+ | `ha-prototype-web` | `next/src/lib/templates/skills/prototype-web/` | `SKILL.md` |
97
+
98
+ ## Changes made by Pugi (Apache-2.0 §4(b))
99
+
100
+ - The frontmatter `name` of every `SKILL.md` was prefixed (`od-`, `ha-`). Skill
101
+ names are permission patterns in Pugi, and upstream names such as
102
+ `web-prototype` would collide across the two sources.
103
+ - One HTML comment was added under each frontmatter block. It names the source,
104
+ the commit and these changes.
105
+ - `od-craft/SKILL.md` is written by Pugi (upstream has no skill wrapper for
106
+ `craft/`; its daemon injects the files per `od.craft.requires`). Each
107
+ `references/*.md` begins with one added HTML comment naming the source
108
+ commit and stating that the rest is verbatim; the text below it is
109
+ unchanged, including upstream's references to its own paths
110
+ (`apps/daemon/src/lint-artifact.ts`, `pnpm lint:craft`).
111
+ - Example files (`example.html`, `example.md`) were not copied (the sanitised
112
+ example pages live under `scaffold/seeds/` with their own NOTICE).
113
+ - The three `od-web-prototype-taste-*` directories and `od-redesign-skill`
114
+ carry the MIT licence of Leonxlnx next to the Apache-2.0 text, because the
115
+ upstream `skills/README.md` says a skill's own LICENSE prevails.
116
+ - Every other byte of the copied files is unchanged.
117
+
118
+ Where an upstream rule conflicts with the Pugi plan-gate prototype contract in
119
+ Sofia's persona prompt, the Pugi contract wins.
120
+ Two upstream rules conflict on purpose. The output file is
121
+ `.pugi/artifacts/prototype.html`, not `index.html`. Photos are Pexels CDN URLs
122
+ taken from Anvil `/v1/images`, not copies in the project, because the console
123
+ renders the prototype from a single document.
124
+ Where a craft rule names open-design's tokens (`var(--accent)`), the starter's
125
+ own token scheme (`src/globals.css` bare HSL components, `src/theme.css`
126
+ typefaces) wins.
@@ -0,0 +1,98 @@
1
+ ---
2
+ name: od-wireframe-sketch
3
+ description: |
4
+ A hand-drawn wireframe exploration — graph-paper background, marker /
5
+ pencil tone, multiple tab labels for variants, sticky-note annotations,
6
+ scribbled chart placeholders, hatched fills. Reads like a designer's
7
+ whiteboard before any pixels are committed. Use when the brief asks for
8
+ "wireframe", "sketch wireframe", "hand-drawn", "lo-fi", "whiteboard",
9
+ "草稿", or "手绘原型".
10
+ triggers:
11
+ - "wireframe"
12
+ - "sketch wireframe"
13
+ - "lo-fi mockup"
14
+ - "hand drawn"
15
+ - "whiteboard sketch"
16
+ - "low fidelity"
17
+ - "手绘原型"
18
+ - "草图"
19
+ - "线框图"
20
+ od:
21
+ mode: prototype
22
+ platform: desktop
23
+ scenario: design
24
+ fidelity: wireframe
25
+ preview:
26
+ type: html
27
+ entry: index.html
28
+ design_system:
29
+ requires: false
30
+ sections: [color, typography, layout, components]
31
+ example_prompt: "Sketch a hand-drawn wireframe v0.1 for a portal — four tabbed variants on graph paper, marker headlines, sticky-note annotations, hatched chart placeholders."
32
+ ---
33
+ <!-- Vendored from nexu-io/open-design@3b0df90f305c (design-templates/wireframe-sketch), Apache-2.0. Modified by Pugi: frontmatter `name` changed from `wireframe-sketch` to `od-wireframe-sketch`; example files omitted. See NOTICE.md in this directory. Where this skill conflicts with the Pugi plan-gate prototype contract in the designer persona prompt, the Pugi contract wins. -->
34
+
35
+ # Wireframe Sketch Skill
36
+
37
+ Produce a single hand-drawn wireframe page. The whole point is "this is a
38
+ sketch" — looseness is the brand. Lean into pencil/marker tones, hatched
39
+ fills, dashed borders, slight rotations.
40
+
41
+ ## Workflow
42
+
43
+ 1. **Skip the DESIGN.md** if it pushes for finished UI. This skill explicitly
44
+ wants a low-fidelity look. Only honor type tokens loosely (system serif
45
+ for headlines, mono for annotations, marker font fallback).
46
+ 2. **Pick the screen variants** from the brief — typically 3–4 tab labels
47
+ like "01 · A · ORGANIZED", "02 · B · DASHBOARD", etc. One is "active",
48
+ the rest are inactive sketch tabs.
49
+ 3. **Layout**, in order:
50
+ - **Page header** — bold serif title with a fake "WIREFRAME v0.1" tag
51
+ pinned next to it (dashed border, slight rotation). Below: one-line
52
+ subtitle in marker italic + a date / device / fidelity dateline on
53
+ the right in mono.
54
+ - **Tab strip** — 4–5 labels with marker check-square glyphs. The active
55
+ one has a highlighter swipe behind it (yellow / orange tint + slight
56
+ skew).
57
+ - **Sketch canvas** — a graph-paper card (background: 24px × 24px grid
58
+ drawn with `linear-gradient` lines), with a thick rounded border drawn
59
+ to look like a sharpie line.
60
+ - **Browser chrome row** — three sketched circles + a fake URL bar with
61
+ a hand-written-style URL.
62
+ - **Sidebar nav** — sketched checkbox + label for each nav item, marker
63
+ italic. One has a highlighter line through it (active).
64
+ - **KPI tiles** — 3–4 boxes, each with a chunky scribbled number in a
65
+ marker-style stroke, a tiny accent stamp, and a one-line label.
66
+ - **Chart placeholder** — a card with a hand-drawn axis and a wobbly
67
+ polyline. Add 3–4 dot markers.
68
+ - **Bar chart placeholder** — a card with hatched-fill rectangles of
69
+ varying heights.
70
+ - **Sticky notes** — 1–2 yellow / pink notes with marker text, taped
71
+ with a slightly rotated band, pinned over key regions to call out
72
+ "next step", "page-1", or "needs review".
73
+ 4. **Write** a single HTML document:
74
+ - `<!doctype html>` through `</html>`, CSS inline.
75
+ - Use the system's available "Caveat", "Patrick Hand", or "Architects
76
+ Daughter" fonts via Google Fonts; otherwise fall back to italic serif.
77
+ - Slight rotations everywhere (`transform: rotate(-0.6deg)`) to break
78
+ the grid and feel hand-drawn.
79
+ - `data-od-id` on header, tabs, sidebar, KPIs, chart, bar-chart,
80
+ sticky notes.
81
+ 5. **Self-check**:
82
+ - The page should *not* look pixel-perfect. If it does, you over-rendered.
83
+ - Marker / pencil + graph paper + hatched fills + sticky notes are all
84
+ present; if any is missing, add it.
85
+ - The active tab has the highlighter swipe; the others don't.
86
+
87
+ ## Output contract
88
+
89
+ Emit between `<artifact>` tags:
90
+
91
+ ```
92
+ <artifact identifier="wireframe-slug" type="text/html" title="Wireframe — Title">
93
+ <!doctype html>
94
+ <html>...</html>
95
+ </artifact>
96
+ ```
97
+
98
+ One sentence before the artifact, nothing after.