@rashidee/co2 1.2.5

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 (190) hide show
  1. package/dist/index.js +25449 -0
  2. package/drizzle/0000_remarkable_charles_xavier.sql +210 -0
  3. package/drizzle/0001_wise_wolf_cub.sql +13 -0
  4. package/drizzle/0002_secret_spyke.sql +16 -0
  5. package/drizzle/0003_workspace_config_singleton.sql +16 -0
  6. package/drizzle/0004_terminal_claim_v120.sql +11 -0
  7. package/drizzle/0005_brainstorm_v124.sql +10 -0
  8. package/drizzle/0006_project_v140.sql +6 -0
  9. package/drizzle/0007_prd_wizard_v124.sql +14 -0
  10. package/drizzle/0008_workflow_artifact_v126.sql +24 -0
  11. package/drizzle/0009_project_import_v150.sql +7 -0
  12. package/drizzle/0010_quality_v151.sql +3 -0
  13. package/drizzle/meta/0000_snapshot.json +1335 -0
  14. package/drizzle/meta/0001_snapshot.json +1416 -0
  15. package/drizzle/meta/0002_snapshot.json +1510 -0
  16. package/drizzle/meta/_journal.json +83 -0
  17. package/package.json +41 -0
  18. package/plugin/.claude-plugin/marketplace.json +36 -0
  19. package/plugin/.claude-plugin/plugin.json +22 -0
  20. package/plugin/README.md +625 -0
  21. package/plugin/SKILLS.md +350 -0
  22. package/plugin/co2.svg +5 -0
  23. package/plugin/commands/brainstorm-loop.md +129 -0
  24. package/plugin/skills/conductor-defect/SKILL.md +898 -0
  25. package/plugin/skills/conductor-feature-develop/SKILL.md +1383 -0
  26. package/plugin/skills/conductor-feature-develop/references/implementation-domain-template.md +131 -0
  27. package/plugin/skills/conductor-feature-develop/references/implementation-master-template.md +89 -0
  28. package/plugin/skills/conductor-feature-develop/references/playwright-setup.md +224 -0
  29. package/plugin/skills/conductor-feature-prepare/SKILL.md +604 -0
  30. package/plugin/skills/depgen-k8s/SKILL.md +468 -0
  31. package/plugin/skills/depgen-k8s/references/dockerfile-laravel.md +197 -0
  32. package/plugin/skills/depgen-k8s/references/dockerfile-nodejs.md +163 -0
  33. package/plugin/skills/depgen-k8s/references/dockerfile-spring-boot.md +174 -0
  34. package/plugin/skills/depgen-k8s/references/k8s-patterns.md +869 -0
  35. package/plugin/skills/mockgen-shadcn/SKILL.md +1067 -0
  36. package/plugin/skills/mockgen-shadcn/references/admin-layout-template.md +1467 -0
  37. package/plugin/skills/mockgen-shadcn/references/mockup-hub-template.md +498 -0
  38. package/plugin/skills/mockgen-shadcn/references/mockup-index-template.md +216 -0
  39. package/plugin/skills/mockgen-tailwind/SKILL.md +904 -0
  40. package/plugin/skills/mockgen-tailwind/references/admin-layout-template.md +720 -0
  41. package/plugin/skills/mockgen-tailwind/references/mockup-hub-template.md +498 -0
  42. package/plugin/skills/mockgen-tailwind/references/mockup-index-template.md +190 -0
  43. package/plugin/skills/modelgen-nosql/SKILL.md +617 -0
  44. package/plugin/skills/modelgen-nosql/references/model-extraction-methodology.md +497 -0
  45. package/plugin/skills/modelgen-nosql/references/nosql-design-guide.md +258 -0
  46. package/plugin/skills/modelgen-relational/SKILL.md +707 -0
  47. package/plugin/skills/modelgen-relational/references/model-extraction-methodology.md +499 -0
  48. package/plugin/skills/specgen-flutter-riverpod/SKILL.md +898 -0
  49. package/plugin/skills/specgen-flutter-riverpod/references/component-patterns.md +971 -0
  50. package/plugin/skills/specgen-flutter-riverpod/references/notification-patterns.md +457 -0
  51. package/plugin/skills/specgen-flutter-riverpod/references/routing-patterns.md +362 -0
  52. package/plugin/skills/specgen-flutter-riverpod/references/security-patterns.md +709 -0
  53. package/plugin/skills/specgen-flutter-riverpod/references/spec-template.md +1566 -0
  54. package/plugin/skills/specgen-flutter-riverpod/references/state-patterns.md +518 -0
  55. package/plugin/skills/specgen-flutter-riverpod/references/storage-patterns.md +370 -0
  56. package/plugin/skills/specgen-laravel-eloquent-bladehtmx/SKILL.md +984 -0
  57. package/plugin/skills/specgen-laravel-eloquent-bladehtmx/references/batch-patterns.md +359 -0
  58. package/plugin/skills/specgen-laravel-eloquent-bladehtmx/references/messaging-patterns.md +468 -0
  59. package/plugin/skills/specgen-laravel-eloquent-bladehtmx/references/modulith-patterns.md +461 -0
  60. package/plugin/skills/specgen-laravel-eloquent-bladehtmx/references/reporting-patterns.md +803 -0
  61. package/plugin/skills/specgen-laravel-eloquent-bladehtmx/references/security-patterns.md +501 -0
  62. package/plugin/skills/specgen-laravel-eloquent-bladehtmx/references/spec-template.md +1268 -0
  63. package/plugin/skills/specgen-laravel-eloquent-bladehtmx/references/web-patterns.md +301 -0
  64. package/plugin/skills/specgen-node-cli-web/SKILL.md +561 -0
  65. package/plugin/skills/specgen-node-cli-web/references/auth-patterns.md +293 -0
  66. package/plugin/skills/specgen-node-cli-web/references/cli-packaging-patterns.md +250 -0
  67. package/plugin/skills/specgen-node-cli-web/references/server-patterns.md +247 -0
  68. package/plugin/skills/specgen-node-cli-web/references/spec-template.md +401 -0
  69. package/plugin/skills/specgen-node-cli-web/references/testing-patterns.md +174 -0
  70. package/plugin/skills/specgen-react-mui/SKILL.md +789 -0
  71. package/plugin/skills/specgen-react-mui/references/component-patterns.md +1077 -0
  72. package/plugin/skills/specgen-react-mui/references/reporting-patterns.md +1998 -0
  73. package/plugin/skills/specgen-react-mui/references/routing-patterns.md +461 -0
  74. package/plugin/skills/specgen-react-mui/references/security-patterns.md +599 -0
  75. package/plugin/skills/specgen-react-mui/references/spec-template.md +1030 -0
  76. package/plugin/skills/specgen-react-mui/references/state-patterns.md +327 -0
  77. package/plugin/skills/specgen-react-tailwind/SKILL.md +859 -0
  78. package/plugin/skills/specgen-react-tailwind/references/component-patterns.md +1212 -0
  79. package/plugin/skills/specgen-react-tailwind/references/reporting-patterns.md +1529 -0
  80. package/plugin/skills/specgen-react-tailwind/references/routing-patterns.md +669 -0
  81. package/plugin/skills/specgen-react-tailwind/references/security-patterns.md +656 -0
  82. package/plugin/skills/specgen-react-tailwind/references/spec-template.md +1237 -0
  83. package/plugin/skills/specgen-react-tailwind/references/state-patterns.md +327 -0
  84. package/plugin/skills/specgen-sdk-java/SKILL.md +933 -0
  85. package/plugin/skills/specgen-sdk-java/references/api-extraction-patterns.md +247 -0
  86. package/plugin/skills/specgen-sdk-java/references/http-client-patterns.md +495 -0
  87. package/plugin/skills/specgen-sdk-java/references/packaging-patterns.md +366 -0
  88. package/plugin/skills/specgen-sdk-java/references/spec-template.md +956 -0
  89. package/plugin/skills/specgen-spring-jpa-jtehtmx/SKILL.md +1284 -0
  90. package/plugin/skills/specgen-spring-jpa-jtehtmx/references/batch-patterns.md +1224 -0
  91. package/plugin/skills/specgen-spring-jpa-jtehtmx/references/jasper-patterns.md +1638 -0
  92. package/plugin/skills/specgen-spring-jpa-jtehtmx/references/messaging-patterns.md +512 -0
  93. package/plugin/skills/specgen-spring-jpa-jtehtmx/references/modulith-patterns.md +354 -0
  94. package/plugin/skills/specgen-spring-jpa-jtehtmx/references/security-patterns.md +551 -0
  95. package/plugin/skills/specgen-spring-jpa-jtehtmx/references/spec-template.md +2502 -0
  96. package/plugin/skills/specgen-spring-jpa-jtehtmx/references/web-patterns.md +503 -0
  97. package/plugin/skills/specgen-spring-jpa-restapi/SKILL.md +990 -0
  98. package/plugin/skills/specgen-spring-jpa-restapi/references/batch-patterns.md +1224 -0
  99. package/plugin/skills/specgen-spring-jpa-restapi/references/messaging-patterns.md +512 -0
  100. package/plugin/skills/specgen-spring-jpa-restapi/references/modulith-patterns.md +279 -0
  101. package/plugin/skills/specgen-spring-jpa-restapi/references/reporting-patterns.md +1536 -0
  102. package/plugin/skills/specgen-spring-jpa-restapi/references/restapi-patterns.md +722 -0
  103. package/plugin/skills/specgen-spring-jpa-restapi/references/security-patterns.md +351 -0
  104. package/plugin/skills/specgen-spring-jpa-restapi/references/spec-template.md +553 -0
  105. package/plugin/skills/specgen-ts-cli/SKILL.md +861 -0
  106. package/plugin/skills/specgen-ts-cli/references/async-patterns.md +1101 -0
  107. package/plugin/skills/specgen-ts-cli/references/command-patterns.md +383 -0
  108. package/plugin/skills/specgen-ts-cli/references/config-patterns.md +430 -0
  109. package/plugin/skills/specgen-ts-cli/references/database-patterns.md +750 -0
  110. package/plugin/skills/specgen-ts-cli/references/packaging-patterns.md +426 -0
  111. package/plugin/skills/specgen-ts-cli/references/spec-template.md +1391 -0
  112. package/plugin/skills/specgen-ts-cli/references/testing-patterns.md +909 -0
  113. package/plugin/skills/testgen-functional/SKILL.md +1381 -0
  114. package/plugin/skills/tracegen-matrix/SKILL.md +243 -0
  115. package/plugin/skills/util-preparek8senv/SKILL.md +422 -0
  116. package/plugin/skills/util-projectinit/SKILL.md +307 -0
  117. package/plugin/skills/util-projectinit/reference/brainstorm-loop.md +129 -0
  118. package/plugin/skills/util-projectinit/reference/brainstorm-protocol.md +144 -0
  119. package/plugin/skills/util-projectinit/reference/brainstorm-setup-guide.md +153 -0
  120. package/plugin/skills/util-projectinit/reference/brainstorm-template-appdev.md +87 -0
  121. package/plugin/skills/util-projectinit/reference/co2-context-generation-guide.md +761 -0
  122. package/plugin/skills/util-projectsync/SKILL.md +501 -0
  123. package/plugin/skills/util-updprd/SKILL.md +324 -0
  124. package/plugin/skills/util-usanalyzer/SKILL.md +307 -0
  125. package/plugin/skills/util-ustagger/SKILL.md +154 -0
  126. package/static/assets/abnfDiagram-VRR7QNED-DvPuwyCV.js +1 -0
  127. package/static/assets/arc-DRKw7sjs.js +1 -0
  128. package/static/assets/architectureDiagram-ZJ3FMSHR-CaNcxUbC.js +36 -0
  129. package/static/assets/blockDiagram-677ZJIJ3-Demd4AOK.js +132 -0
  130. package/static/assets/c4Diagram-LMCZKHZV-PVKUfc2x.js +10 -0
  131. package/static/assets/channel-C2nVbuwv.js +1 -0
  132. package/static/assets/chunk-2Q5K7J3B-CExf8ww_.js +1 -0
  133. package/static/assets/chunk-32BRIVSS-CFPaoONF.js +1 -0
  134. package/static/assets/chunk-5VM5RSS4-DE2esM67.js +15 -0
  135. package/static/assets/chunk-EX3LRPZG-SON_YdDG.js +231 -0
  136. package/static/assets/chunk-JWPE2WC7-Qxah8LNr.js +1 -0
  137. package/static/assets/chunk-MOJQB5TN-BcWGQV3j.js +88 -0
  138. package/static/assets/chunk-RYQCIY6F-DkDj-OR5.js +1 -0
  139. package/static/assets/chunk-V7JOEXUC-BlI1Mrah.js +206 -0
  140. package/static/assets/chunk-VR4S4FIN-Agf__duj.js +1 -0
  141. package/static/assets/chunk-XXDRQBXY-B5CfAh85.js +1 -0
  142. package/static/assets/classDiagram-OUVF2IWQ-DXJIljsR.js +1 -0
  143. package/static/assets/classDiagram-v2-EOCWNBFH-DXJIljsR.js +1 -0
  144. package/static/assets/cose-bilkent-JH36ORCC-DO0cQkcy.js +1 -0
  145. package/static/assets/cynefin-VYW2F7L2-CfOnsnXc.js +178 -0
  146. package/static/assets/cynefinDiagram-TSTJHNR4-BJ8tULAv.js +62 -0
  147. package/static/assets/cytoscape.esm-DTSO7Bv0.js +331 -0
  148. package/static/assets/dagre-VKFMJZFB-DfjwzHqP.js +4 -0
  149. package/static/assets/defaultLocale-DX6XiGOO.js +1 -0
  150. package/static/assets/diagram-FQU43EPY-CndSOIIM.js +3 -0
  151. package/static/assets/diagram-G47NLZAW-Czf5hN0Z.js +24 -0
  152. package/static/assets/diagram-NH7WQ7WH-COAyojGh.js +24 -0
  153. package/static/assets/diagram-OA4YK3LP-H8PoiN2m.js +30 -0
  154. package/static/assets/diagram-WEI45ONY-DzcaVzjp.js +41 -0
  155. package/static/assets/ebnfDiagram-CCIWWBDH-DPazGYLJ.js +1 -0
  156. package/static/assets/erDiagram-Q63AITRT-Bo-fubgF.js +85 -0
  157. package/static/assets/flowDiagram-23GEKE2U-CSvxUDwh.js +156 -0
  158. package/static/assets/ganttDiagram-NO4QXBWP-DnBveWX6.js +292 -0
  159. package/static/assets/gitGraphDiagram-IHSO6WYX-B3rVL8c-.js +106 -0
  160. package/static/assets/graph-C9eacEi8.js +1 -0
  161. package/static/assets/index-LZSQkLE2.css +41 -0
  162. package/static/assets/index-y7XDSgMG.js +495 -0
  163. package/static/assets/infoDiagram-FWYZ7A6U-CvWV9yy2.js +2 -0
  164. package/static/assets/init-Gi6I4Gst.js +1 -0
  165. package/static/assets/ishikawaDiagram-FXEZZL3T-DF28a1N6.js +70 -0
  166. package/static/assets/journeyDiagram-5HDEW3XC-CB6CugYk.js +139 -0
  167. package/static/assets/kanban-definition-HUTT4EX6-ResSLF6d.js +89 -0
  168. package/static/assets/katex-C5jXJg4s.js +257 -0
  169. package/static/assets/layout-DEXfKzaS.js +1 -0
  170. package/static/assets/linear-CLO--ryk.js +1 -0
  171. package/static/assets/map-Czzmt4hB.js +1 -0
  172. package/static/assets/mindmap-definition-LN4V7U3C-BvW3EbxX.js +96 -0
  173. package/static/assets/ordinal-Cboi1Yqb.js +1 -0
  174. package/static/assets/pegDiagram-2B236MQR-BHCgqrrM.js +1 -0
  175. package/static/assets/pieDiagram-ENE6RG2P-DVmCQ5FA.js +39 -0
  176. package/static/assets/quadrantDiagram-ABIIQ3AL-B3e5KR52.js +7 -0
  177. package/static/assets/railroadDiagram-RFXS5EU6-Csv5ysLc.js +1 -0
  178. package/static/assets/requirementDiagram-TGXJPOKE-DOMVzvnB.js +84 -0
  179. package/static/assets/sankeyDiagram-HTMAVEWB-B1dcTOvy.js +40 -0
  180. package/static/assets/sequenceDiagram-DBY2YBRQ-BY414yeO.js +162 -0
  181. package/static/assets/sizeCapture-X5ZJPWSS-CuJfrfBN.js +1 -0
  182. package/static/assets/stateDiagram-2N3HPSRC-FX4rJkzV.js +1 -0
  183. package/static/assets/stateDiagram-v2-6OUMAXLB-BVufbO_H.js +1 -0
  184. package/static/assets/swimlanes-5IMT3BWC-Sfy58mmv.js +2 -0
  185. package/static/assets/swimlanesDiagram-G3AALYLV-wDCDw08H.js +8 -0
  186. package/static/assets/timeline-definition-FHXFAJF6-CmV7by8p.js +120 -0
  187. package/static/assets/vennDiagram-L72KCM5P-FqIyFZFt.js +34 -0
  188. package/static/assets/wardleyDiagram-EHGQE667-BZ06O45i.js +78 -0
  189. package/static/assets/xychartDiagram-FW5EYKEG-BOkffR06.js +7 -0
  190. package/static/index.html +24 -0
@@ -0,0 +1,216 @@
1
+ # MOCKUP.html Index Page Template
2
+
3
+ Template for the clickable sitemap/index page that links to all role screens.
4
+ It is served by the **Mockup Hub** at `/{app_slug}` (open it via the hub, e.g.
5
+ `http://localhost:3000/{app_slug}`). All screen links are **root-relative**
6
+ (`/{app_slug}/{role}/{page}`) so they work on whatever port the hub is configured to use
7
+ — never hardcode `http://localhost:<port>` in links. Links open role screens in a
8
+ **new browser tab** via the running hub (SPA fallback → `dist/index.html`).
9
+
10
+ ## Placeholders
11
+
12
+ | Placeholder | Description |
13
+ |-------------|-------------|
14
+ | `{{APP_NAME}}` | Application name |
15
+ | `{{APP_SLUG}}` | App slug used as URL prefix (e.g., "hub_middleware") |
16
+ | `{{APP_DESCRIPTION}}` | Brief application description from PRD.md context |
17
+ | `{{ROLE_SECTIONS}}` | Generated HTML for each role and its screens |
18
+ | `{{TOTAL_SCREENS}}` | Total number of screen files |
19
+ | `{{DESIGN_PRIMARY}}` | Primary color hex |
20
+ | `{{HEADING_FONT}}` | Heading font |
21
+ | `{{BODY_FONT}}` | Body font |
22
+ | `{{GOOGLE_FONTS_URL}}` | Google Fonts import URL |
23
+ | `{{VERSION}}` | Target version if specified, or latest version found in PRD.md |
24
+ | `{{VERSION_LABEL}}` | "Generated for v1.0.1" or "Generated for latest (all versions)" |
25
+ | `{{FILTER_SUMMARY}}` | Summary of included/excluded items (e.g., "12 items included, 3 excluded") |
26
+ | `{{HUB_PORT}}` | Hub port for **display text only** (read from `<root>/mockup/mockup.config.json`, default 3000) — never used in link hrefs |
27
+
28
+ ## Template
29
+
30
+ ```html
31
+ <!DOCTYPE html>
32
+ <html lang="en">
33
+ <head>
34
+ <meta charset="UTF-8">
35
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
36
+ <title>{{APP_NAME}} - UI Mockup Sitemap</title>
37
+ <script src="https://cdn.tailwindcss.com"></script>
38
+ <link rel="preconnect" href="https://fonts.googleapis.com">
39
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
40
+ <link href="{{GOOGLE_FONTS_URL}}" rel="stylesheet">
41
+ <script>
42
+ tailwind.config = {
43
+ theme: {
44
+ extend: {
45
+ colors: {
46
+ primary: '{{DESIGN_PRIMARY}}',
47
+ },
48
+ fontFamily: {
49
+ heading: ['{{HEADING_FONT}}', 'sans-serif'],
50
+ body: ['{{BODY_FONT}}', 'sans-serif'],
51
+ }
52
+ }
53
+ }
54
+ }
55
+ </script>
56
+ <style>
57
+ body { font-family: '{{BODY_FONT}}', sans-serif; }
58
+ h1, h2, h3 { font-family: '{{HEADING_FONT}}', sans-serif; }
59
+ </style>
60
+ </head>
61
+ <body class="bg-slate-50 min-h-screen">
62
+
63
+ <div class="max-w-5xl mx-auto px-6 py-12">
64
+
65
+ <!-- Dev Server Notice Banner -->
66
+ <div class="mb-8 bg-amber-50 border border-amber-200 rounded-xl px-5 py-4 flex items-start gap-3">
67
+ <svg class="w-5 h-5 text-amber-500 shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
68
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
69
+ d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
70
+ </svg>
71
+ <div>
72
+ <p class="text-sm font-semibold text-amber-800">Mockup Hub Required</p>
73
+ <p class="text-sm text-amber-700 mt-0.5">
74
+ Screen links open via the shared Mockup Hub (default port
75
+ <code class="bg-amber-100 px-1.5 py-0.5 rounded text-amber-900 font-mono text-xs">{{HUB_PORT}}</code>
76
+ — configurable via the <code class="bg-amber-100 px-1.5 py-0.5 rounded text-amber-900 font-mono text-xs">PORT</code>
77
+ env var or <code class="bg-amber-100 px-1.5 py-0.5 rounded text-amber-900 font-mono text-xs">mockup.config.json</code>).
78
+ Start it with:
79
+ <code class="bg-amber-100 px-1.5 py-0.5 rounded text-amber-900 font-mono text-xs">cd &lt;root&gt;/mockup &amp;&amp; npm start</code>
80
+ (no npm install needed). This app must be built first:
81
+ <code class="bg-amber-100 px-1.5 py-0.5 rounded text-amber-900 font-mono text-xs">npm run build</code>
82
+ in its mockup folder. All applications are listed at
83
+ <a href="/" class="underline font-medium">the hub landing page</a>.
84
+ </p>
85
+ </div>
86
+ </div>
87
+
88
+ <!-- Tech Stack Badge -->
89
+ <div class="mb-6 flex flex-wrap gap-2">
90
+ <span class="inline-flex items-center gap-1 text-xs font-medium bg-blue-50 text-blue-700 border border-blue-200 rounded-full px-3 py-1">
91
+ <svg class="w-3 h-3" viewBox="0 0 24 24" fill="currentColor"><circle cx="12" cy="12" r="10"/></svg>
92
+ React 19
93
+ </span>
94
+ <span class="inline-flex items-center gap-1 text-xs font-medium bg-violet-50 text-violet-700 border border-violet-200 rounded-full px-3 py-1">
95
+ shadcn/ui
96
+ </span>
97
+ <span class="inline-flex items-center gap-1 text-xs font-medium bg-cyan-50 text-cyan-700 border border-cyan-200 rounded-full px-3 py-1">
98
+ TypeScript
99
+ </span>
100
+ <span class="inline-flex items-center gap-1 text-xs font-medium bg-emerald-50 text-emerald-700 border border-emerald-200 rounded-full px-3 py-1">
101
+ Tailwind CSS
102
+ </span>
103
+ <span class="inline-flex items-center gap-1 text-xs font-medium bg-orange-50 text-orange-700 border border-orange-200 rounded-full px-3 py-1">
104
+ Vite 6
105
+ </span>
106
+ </div>
107
+
108
+ <!-- Header -->
109
+ <div class="mb-10">
110
+ <div class="flex items-center gap-3 mb-3">
111
+ <div class="w-10 h-10 rounded-xl flex items-center justify-center" style="background-color: {{DESIGN_PRIMARY}}">
112
+ <svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
113
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
114
+ d="M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm10 0a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zm10 0a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z"/>
115
+ </svg>
116
+ </div>
117
+ <h1 class="text-3xl font-bold text-slate-900">{{APP_NAME}}</h1>
118
+ </div>
119
+ <p class="text-slate-500 text-lg">{{APP_DESCRIPTION}}</p>
120
+ <div class="flex items-center gap-4 mt-4 text-sm text-slate-400">
121
+ <span>{{VERSION}}</span>
122
+ <span class="w-1 h-1 bg-slate-300 rounded-full"></span>
123
+ <span>{{TOTAL_SCREENS}} screens</span>
124
+ <span class="w-1 h-1 bg-slate-300 rounded-full"></span>
125
+ <span>React + shadcn/ui Mockup for Designer Review</span>
126
+ </div>
127
+ <div class="flex items-center gap-4 mt-2 text-xs text-slate-400">
128
+ <span>{{VERSION_LABEL}}</span>
129
+ <span class="w-1 h-1 bg-slate-300 rounded-full"></span>
130
+ <span>{{FILTER_SUMMARY}}</span>
131
+ </div>
132
+ </div>
133
+
134
+ <!-- Role Sections -->
135
+ {{ROLE_SECTIONS}}
136
+
137
+ <!-- Footer -->
138
+ <div class="mt-12 pt-6 border-t border-slate-200 text-center text-sm text-slate-400">
139
+ Generated for UI/UX designer review. Screens open in new tabs via the shared Mockup Hub.
140
+ </div>
141
+ </div>
142
+
143
+ </body>
144
+ </html>
145
+ ```
146
+
147
+ ## Role Section Template
148
+
149
+ For each role, generate this block inside `{{ROLE_SECTIONS}}`:
150
+
151
+ ```html
152
+ <!-- Role: {{ROLE_NAME}} -->
153
+ <div class="mb-10">
154
+ <div class="flex items-center gap-2 mb-4">
155
+ <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" style="color: {{DESIGN_PRIMARY}}">
156
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
157
+ d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"/>
158
+ </svg>
159
+ <h2 class="text-xl font-semibold text-slate-800">{{ROLE_NAME}}</h2>
160
+ <span class="text-sm text-slate-400 ml-2">({{SCREEN_COUNT}} screens)</span>
161
+ <!-- Quick launch link opens the role home in a new tab -->
162
+ <a href="/{{APP_SLUG}}/{{ROLE_FOLDER}}/home"
163
+ target="_blank"
164
+ rel="noopener noreferrer"
165
+ class="ml-auto flex items-center gap-1 text-xs px-3 py-1.5 rounded-lg border transition-colors"
166
+ style="color: {{DESIGN_PRIMARY}}; border-color: {{DESIGN_PRIMARY}}">
167
+ <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
168
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
169
+ d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"/>
170
+ </svg>
171
+ Open Role Dashboard
172
+ </a>
173
+ </div>
174
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
175
+ {{SCREEN_CARDS}}
176
+ </div>
177
+ </div>
178
+ ```
179
+
180
+ ## Screen Card Template
181
+
182
+ Each card opens the corresponding screen in a **new browser tab**:
183
+
184
+ ```html
185
+ <a href="/{{APP_SLUG}}/{{ROLE_FOLDER}}/{{PAGE_ROUTE}}"
186
+ target="_blank"
187
+ rel="noopener noreferrer"
188
+ class="block bg-white rounded-xl border border-slate-200 p-4 hover:shadow-md transition-all duration-200 cursor-pointer group">
189
+ <div class="flex items-center justify-between mb-2">
190
+ <div class="flex items-center gap-2">
191
+ <svg class="w-4 h-4 text-slate-400 group-hover:text-primary transition-colors"><!-- module icon --></svg>
192
+ <h3 class="font-medium text-slate-800 group-hover:text-primary transition-colors">{{SCREEN_TITLE}}</h3>
193
+ </div>
194
+ <!-- External link icon to indicate opens in new tab -->
195
+ <svg class="w-3.5 h-3.5 text-slate-300 group-hover:text-primary transition-colors shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
196
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
197
+ d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"/>
198
+ </svg>
199
+ </div>
200
+ <p class="text-sm text-slate-500">{{SCREEN_DESCRIPTION}}</p>
201
+ <div class="mt-3 flex flex-wrap gap-1">
202
+ <!-- User story tags as badges -->
203
+ <span class="text-xs bg-slate-100 text-slate-500 px-2 py-0.5 rounded-full">{{US_TAG}}</span>
204
+ </div>
205
+ </a>
206
+ ```
207
+
208
+ The `{{SCREEN_DESCRIPTION}}` is a brief summary of what the screen shows,
209
+ derived from the user story action (e.g., "Search and manage geographical information").
210
+
211
+ The `{{PAGE_ROUTE}}` is the React Router route path segment
212
+ (e.g., `location-information` for the Location Information module list page,
213
+ `location-information-detail` for the detail page).
214
+
215
+ The `{{ROLE_FOLDER}}` is the role in kebab-case
216
+ (e.g., `hub-administrator` for "Hub Administrator").