@smartsoft001/pro-claude-plugins 0.2.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 (198) hide show
  1. package/.claude-plugin/marketplace.json +26 -0
  2. package/README.md +56 -0
  3. package/package.json +14 -0
  4. package/plugins/flow/.claude-plugin/README.md +91 -0
  5. package/plugins/flow/.claude-plugin/merge-permissions.js +115 -0
  6. package/plugins/flow/.claude-plugin/plugin.json +5 -0
  7. package/plugins/flow/.claude-plugin/settings.template.json +86 -0
  8. package/plugins/flow/agents/angular-component-scaffolder.md +176 -0
  9. package/plugins/flow/agents/angular-directive-builder.md +154 -0
  10. package/plugins/flow/agents/angular-guard-builder.md +244 -0
  11. package/plugins/flow/agents/angular-jest-test-writer.md +475 -0
  12. package/plugins/flow/agents/angular-pipe-builder.md +170 -0
  13. package/plugins/flow/agents/angular-resolver-builder.md +287 -0
  14. package/plugins/flow/agents/angular-service-builder.md +162 -0
  15. package/plugins/flow/agents/angular-signal-state-builder.md +340 -0
  16. package/plugins/flow/agents/angular-test-diagnostician.md +279 -0
  17. package/plugins/flow/agents/angular-testbed-configurator.md +315 -0
  18. package/plugins/flow/agents/arch-scaffolder.md +278 -0
  19. package/plugins/flow/agents/e2e-data-testid-injector.md +195 -0
  20. package/plugins/flow/agents/e2e-project-scaffolder.md +194 -0
  21. package/plugins/flow/agents/e2e-test-writer.md +357 -0
  22. package/plugins/flow/agents/shared-agent-evolver.md +294 -0
  23. package/plugins/flow/agents/shared-build-verifier.md +160 -0
  24. package/plugins/flow/agents/shared-config-updater.md +310 -0
  25. package/plugins/flow/agents/shared-coverage-enforcer.md +184 -0
  26. package/plugins/flow/agents/shared-error-handler.md +217 -0
  27. package/plugins/flow/agents/shared-file-creator.md +344 -0
  28. package/plugins/flow/agents/shared-impl-orchestrator.md +312 -0
  29. package/plugins/flow/agents/shared-impl-reporter.md +368 -0
  30. package/plugins/flow/agents/shared-impl-teammate.md +201 -0
  31. package/plugins/flow/agents/shared-linear-subtask-iterator.md +337 -0
  32. package/plugins/flow/agents/shared-logic-implementer.md +244 -0
  33. package/plugins/flow/agents/shared-maia-api.md +26 -0
  34. package/plugins/flow/agents/shared-parallelization-analyzer.md +343 -0
  35. package/plugins/flow/agents/shared-performance-validator.md +168 -0
  36. package/plugins/flow/agents/shared-plan-perspective.md +271 -0
  37. package/plugins/flow/agents/shared-project-standardizer.md +205 -0
  38. package/plugins/flow/agents/shared-report-synthesizer.md +188 -0
  39. package/plugins/flow/agents/shared-review-teammate.md +189 -0
  40. package/plugins/flow/agents/shared-security-scanner.md +186 -0
  41. package/plugins/flow/agents/shared-style-enforcer.md +230 -0
  42. package/plugins/flow/agents/shared-subtask-dependency-analyzer.md +189 -0
  43. package/plugins/flow/agents/shared-tdd-developer.md +350 -0
  44. package/plugins/flow/agents/shared-team-coordinator.md +192 -0
  45. package/plugins/flow/agents/shared-test-fixer.md +186 -0
  46. package/plugins/flow/agents/shared-test-runner.md +191 -0
  47. package/plugins/flow/agents/shared-ui-classifier.md +263 -0
  48. package/plugins/flow/agents/shared-verification-orchestrator.md +194 -0
  49. package/plugins/flow/agents/shared-verification-runner.md +140 -0
  50. package/plugins/flow/agents/ui-a11y-validator.md +305 -0
  51. package/plugins/flow/agents/ui-screenshot-reporter.md +329 -0
  52. package/plugins/flow/agents/ui-web-designer.md +214 -0
  53. package/plugins/flow/scripts/compute-session-tokens.sh +39 -0
  54. package/plugins/flow/skills/a11y-audit/SKILL.md +214 -0
  55. package/plugins/flow/skills/angular-patterns/SKILL.md +191 -0
  56. package/plugins/flow/skills/browser-capture/SKILL.md +238 -0
  57. package/plugins/flow/skills/commit/SKILL.md +259 -0
  58. package/plugins/flow/skills/debug-helper/SKILL.md +375 -0
  59. package/plugins/flow/skills/impl/SKILL.md +992 -0
  60. package/plugins/flow/skills/karpathy-guidelines/SKILL.md +72 -0
  61. package/plugins/flow/skills/linear-suggestion/SKILL.md +132 -0
  62. package/plugins/flow/skills/maia-files-delete/SKILL.md +59 -0
  63. package/plugins/flow/skills/maia-files-upload/SKILL.md +57 -0
  64. package/plugins/flow/skills/nx-conventions/SKILL.md +326 -0
  65. package/plugins/flow/skills/plan/SKILL.md +1033 -0
  66. package/plugins/flow/skills/push/SKILL.md +759 -0
  67. package/plugins/flow/skills/review/SKILL.md +443 -0
  68. package/plugins/flow/skills/test-e2e/SKILL.md +164 -0
  69. package/plugins/flow/skills/test-unit/SKILL.md +456 -0
  70. package/plugins/flow-external/.claude-plugin/README.md +146 -0
  71. package/plugins/flow-external/.claude-plugin/merge-permissions.js +94 -0
  72. package/plugins/flow-external/.claude-plugin/plugin.json +5 -0
  73. package/plugins/flow-external/.claude-plugin/settings.template.json +78 -0
  74. package/plugins/flow-external/agents/angular-component-scaffolder.md +271 -0
  75. package/plugins/flow-external/agents/angular-directive-builder.md +134 -0
  76. package/plugins/flow-external/agents/angular-guard-builder.md +73 -0
  77. package/plugins/flow-external/agents/angular-pipe-builder.md +90 -0
  78. package/plugins/flow-external/agents/angular-resolver-builder.md +79 -0
  79. package/plugins/flow-external/agents/angular-service-builder.md +168 -0
  80. package/plugins/flow-external/agents/angular-state-builder.md +263 -0
  81. package/plugins/flow-external/agents/shared-build-verifier.md +67 -0
  82. package/plugins/flow-external/agents/shared-impl-orchestrator.md +90 -0
  83. package/plugins/flow-external/agents/shared-impl-reporter.md +135 -0
  84. package/plugins/flow-external/agents/shared-linear-subtask-iterator.md +70 -0
  85. package/plugins/flow-external/agents/shared-ui-classifier.md +38 -0
  86. package/plugins/flow-external/agents/ui-web-designer.md +203 -0
  87. package/plugins/flow-external/scripts/compute-session-tokens.sh +39 -0
  88. package/plugins/flow-external/skills/a11y-audit/SKILL.md +97 -0
  89. package/plugins/flow-external/skills/angular-cli-conventions/SKILL.md +268 -0
  90. package/plugins/flow-external/skills/angular-patterns/SKILL.md +182 -0
  91. package/plugins/flow-external/skills/browser-capture/SKILL.md +74 -0
  92. package/plugins/flow-external/skills/commit/SKILL.md +114 -0
  93. package/plugins/flow-external/skills/debug-helper/SKILL.md +135 -0
  94. package/plugins/flow-external/skills/impl/SKILL.md +218 -0
  95. package/plugins/flow-external/skills/karpathy-guidelines/SKILL.md +72 -0
  96. package/plugins/flow-external/skills/linear-suggestion/SKILL.md +62 -0
  97. package/plugins/flow-external/skills/maia-files-delete/SKILL.md +34 -0
  98. package/plugins/flow-external/skills/maia-files-upload/SKILL.md +41 -0
  99. package/plugins/flow-external/skills/plan/SKILL.md +334 -0
  100. package/plugins/flow-external/skills/push/SKILL.md +232 -0
  101. package/plugins/flow-legacy/.claude-plugin/README.md +143 -0
  102. package/plugins/flow-legacy/.claude-plugin/merge-permissions.js +94 -0
  103. package/plugins/flow-legacy/.claude-plugin/plugin.json +5 -0
  104. package/plugins/flow-legacy/.claude-plugin/settings.template.json +79 -0
  105. package/plugins/flow-legacy/agents/angular-component-scaffolder.md +327 -0
  106. package/plugins/flow-legacy/agents/angular-directive-builder.md +253 -0
  107. package/plugins/flow-legacy/agents/angular-guard-builder.md +326 -0
  108. package/plugins/flow-legacy/agents/angular-pipe-builder.md +238 -0
  109. package/plugins/flow-legacy/agents/angular-resolver-builder.md +339 -0
  110. package/plugins/flow-legacy/agents/angular-service-builder.md +271 -0
  111. package/plugins/flow-legacy/agents/angular-state-builder.md +480 -0
  112. package/plugins/flow-legacy/agents/shared-impl-orchestrator.md +174 -0
  113. package/plugins/flow-legacy/agents/shared-impl-reporter.md +232 -0
  114. package/plugins/flow-legacy/agents/shared-linear-subtask-iterator.md +198 -0
  115. package/plugins/flow-legacy/agents/shared-tdd-developer.md +307 -0
  116. package/plugins/flow-legacy/agents/shared-test-runner.md +133 -0
  117. package/plugins/flow-legacy/agents/shared-ui-classifier.md +145 -0
  118. package/plugins/flow-legacy/scripts/compute-session-tokens.sh +39 -0
  119. package/plugins/flow-legacy/skills/a11y-audit/SKILL.md +214 -0
  120. package/plugins/flow-legacy/skills/angular-patterns/SKILL.md +346 -0
  121. package/plugins/flow-legacy/skills/browser-capture/SKILL.md +238 -0
  122. package/plugins/flow-legacy/skills/commit/SKILL.md +215 -0
  123. package/plugins/flow-legacy/skills/debug-helper/SKILL.md +395 -0
  124. package/plugins/flow-legacy/skills/impl/SKILL.md +710 -0
  125. package/plugins/flow-legacy/skills/karpathy-guidelines/SKILL.md +72 -0
  126. package/plugins/flow-legacy/skills/linear-suggestion/SKILL.md +132 -0
  127. package/plugins/flow-legacy/skills/maia-files-delete/SKILL.md +59 -0
  128. package/plugins/flow-legacy/skills/maia-files-upload/SKILL.md +57 -0
  129. package/plugins/flow-legacy/skills/nx-conventions/SKILL.md +368 -0
  130. package/plugins/flow-legacy/skills/plan/SKILL.md +742 -0
  131. package/plugins/flow-legacy/skills/push/SKILL.md +645 -0
  132. package/plugins/flow-legacy/skills/test-unit/SKILL.md +500 -0
  133. package/plugins/smart-pro/.claude-plugin/README.md +115 -0
  134. package/plugins/smart-pro/.claude-plugin/merge-permissions.js +129 -0
  135. package/plugins/smart-pro/.claude-plugin/plugin.json +5 -0
  136. package/plugins/smart-pro/.claude-plugin/settings.template.json +94 -0
  137. package/plugins/smart-pro/agents/angular-components/AGENT.md +214 -0
  138. package/plugins/smart-pro/hooks/CONFIG.md +198 -0
  139. package/plugins/smart-pro/hooks/README.md +139 -0
  140. package/plugins/smart-pro/hooks/audit_logger.py +107 -0
  141. package/plugins/smart-pro/hooks/auto_format.sh +11 -0
  142. package/plugins/smart-pro/hooks/hooks.json +79 -0
  143. package/plugins/smart-pro/hooks/safety_validator.py +129 -0
  144. package/plugins/smart-pro/hooks/sensitive_file_blocker.py +58 -0
  145. package/plugins/smart-pro/hooks/skill_validator.py +220 -0
  146. package/plugins/smart-pro/skills/angular-components-action-panel/SKILL.md +159 -0
  147. package/plugins/smart-pro/skills/angular-components-avatar/SKILL.md +142 -0
  148. package/plugins/smart-pro/skills/angular-components-badge/SKILL.md +110 -0
  149. package/plugins/smart-pro/skills/angular-components-breadcrumbs/SKILL.md +91 -0
  150. package/plugins/smart-pro/skills/angular-components-button/SKILL.md +146 -0
  151. package/plugins/smart-pro/skills/angular-components-button-group/SKILL.md +121 -0
  152. package/plugins/smart-pro/skills/angular-components-calendar/SKILL.md +78 -0
  153. package/plugins/smart-pro/skills/angular-components-card/SKILL.md +110 -0
  154. package/plugins/smart-pro/skills/angular-components-card-heading/SKILL.md +105 -0
  155. package/plugins/smart-pro/skills/angular-components-command-palette/SKILL.md +168 -0
  156. package/plugins/smart-pro/skills/angular-components-container/SKILL.md +93 -0
  157. package/plugins/smart-pro/skills/angular-components-description-list/SKILL.md +102 -0
  158. package/plugins/smart-pro/skills/angular-components-details/SKILL.md +70 -0
  159. package/plugins/smart-pro/skills/angular-components-divider/SKILL.md +110 -0
  160. package/plugins/smart-pro/skills/angular-components-drawer/SKILL.md +136 -0
  161. package/plugins/smart-pro/skills/angular-components-dropdown/SKILL.md +131 -0
  162. package/plugins/smart-pro/skills/angular-components-empty-state/SKILL.md +103 -0
  163. package/plugins/smart-pro/skills/angular-components-feed/SKILL.md +110 -0
  164. package/plugins/smart-pro/skills/angular-components-form/SKILL.md +77 -0
  165. package/plugins/smart-pro/skills/angular-components-grid-list/SKILL.md +91 -0
  166. package/plugins/smart-pro/skills/angular-components-input/SKILL.md +118 -0
  167. package/plugins/smart-pro/skills/angular-components-list/SKILL.md +75 -0
  168. package/plugins/smart-pro/skills/angular-components-list-container/SKILL.md +106 -0
  169. package/plugins/smart-pro/skills/angular-components-media-object/SKILL.md +133 -0
  170. package/plugins/smart-pro/skills/angular-components-modal/SKILL.md +159 -0
  171. package/plugins/smart-pro/skills/angular-components-multi-column-layout/SKILL.md +84 -0
  172. package/plugins/smart-pro/skills/angular-components-navbar/SKILL.md +93 -0
  173. package/plugins/smart-pro/skills/angular-components-notification/SKILL.md +147 -0
  174. package/plugins/smart-pro/skills/angular-components-page/SKILL.md +162 -0
  175. package/plugins/smart-pro/skills/angular-components-page-heading/SKILL.md +96 -0
  176. package/plugins/smart-pro/skills/angular-components-paging/SKILL.md +86 -0
  177. package/plugins/smart-pro/skills/angular-components-progress-bars/SKILL.md +94 -0
  178. package/plugins/smart-pro/skills/angular-components-searchbar/SKILL.md +113 -0
  179. package/plugins/smart-pro/skills/angular-components-section-heading/SKILL.md +156 -0
  180. package/plugins/smart-pro/skills/angular-components-select-menu/SKILL.md +101 -0
  181. package/plugins/smart-pro/skills/angular-components-sidebar-layout/SKILL.md +121 -0
  182. package/plugins/smart-pro/skills/angular-components-sidebar-navigation/SKILL.md +80 -0
  183. package/plugins/smart-pro/skills/angular-components-sign-in-form/SKILL.md +91 -0
  184. package/plugins/smart-pro/skills/angular-components-stacked-layout/SKILL.md +114 -0
  185. package/plugins/smart-pro/skills/angular-components-stacked-list/SKILL.md +93 -0
  186. package/plugins/smart-pro/skills/angular-components-stats/SKILL.md +87 -0
  187. package/plugins/smart-pro/skills/angular-components-table/SKILL.md +98 -0
  188. package/plugins/smart-pro/skills/angular-components-tabs/SKILL.md +99 -0
  189. package/plugins/smart-pro/skills/angular-components-textarea/SKILL.md +111 -0
  190. package/plugins/smart-pro/skills/angular-components-toggle/SKILL.md +109 -0
  191. package/plugins/smart-pro/skills/angular-components-vertical-navigation/SKILL.md +139 -0
  192. package/plugins/smart-pro/skills/audit-log/SKILL.md +82 -0
  193. package/plugins/smart-pro/skills/format-code/SKILL.md +46 -0
  194. package/plugins/smart-pro/skills/project-conventions/SKILL.md +90 -0
  195. package/plugins/smart-pro/skills/safety-check/SKILL.md +0 -0
  196. package/src/index.d.ts +6 -0
  197. package/src/index.js +7 -0
  198. package/src/index.js.map +1 -0
@@ -0,0 +1,329 @@
1
+ ---
2
+ name: ui-screenshot-reporter
3
+ description: Capture before/after screenshots for UI changes, create visual comparison reports, and post them as Linear comments. Run in parallel with implementation work.
4
+ tools: Read, Glob, Grep, mcp__linear__save_comment, mcp__linear__get_issue
5
+ skills: browser-capture, maia-files-upload, maia-files-delete
6
+ model: sonnet
7
+ color: '#7C3AED'
8
+ ---
9
+
10
+ # Screenshot Reporter Agent
11
+
12
+ Capture before/after screenshots for UI changes, generate visual comparison reports, and post them as comments to Linear issues. Designed to run in parallel with implementation work.
13
+
14
+ ## Capabilities
15
+
16
+ 1. **Before Screenshots**: Capture current state before code changes
17
+ 2. **After Screenshots**: Capture state after implementation
18
+ 3. **Multi-viewport**: Desktop (1920x1080) and Mobile (375x667)
19
+ 4. **Multi-mode**: Normal mode and Dark mode (high contrast)
20
+ 5. **Report Generation**: Create markdown comparison tables
21
+ 6. **Linear Integration**: Post screenshot reports directly to Linear issues
22
+
23
+ ## Usage
24
+
25
+ ### Capture Before Screenshots
26
+
27
+ ```
28
+ Capture "before" screenshots for:
29
+ - Page: /profile
30
+ - Viewports: desktop, mobile
31
+ - Modes: normal, dark
32
+ ```
33
+
34
+ ### Capture After Screenshots
35
+
36
+ ```
37
+ Capture "after" screenshots for:
38
+ - Page: /profile
39
+ - Viewports: desktop, mobile
40
+ - Modes: normal, dark
41
+ ```
42
+
43
+ ### Generate Comparison Report and Post to Linear
44
+
45
+ ```
46
+ Generate screenshot comparison report and post to Linear:
47
+ - Linear Issue ID: ENG-123
48
+ - Before IDs: [desktop-normal, desktop-dark, mobile-normal, mobile-dark]
49
+ - After IDs: [desktop-normal, desktop-dark, mobile-normal, mobile-dark]
50
+ ```
51
+
52
+ ## Process
53
+
54
+ ### Step 1: Capture Screenshots
55
+
56
+ For each requested phase (before/after):
57
+
58
+ 1. **Use `browser-capture` skill** to:
59
+
60
+ - Ensure dev server is running
61
+ - Navigate to the target page
62
+ - For each viewport (desktop, mobile):
63
+ - Resize browser
64
+ - Capture screenshot in normal mode
65
+ - Toggle dark mode (if applicable)
66
+ - Capture screenshot in dark mode
67
+ - Upload screenshots via `maia-files-upload` skill
68
+
69
+ 2. **Store screenshot data**:
70
+ ```json
71
+ {
72
+ "phase": "before|after",
73
+ "desktop": {
74
+ "normal": { "id": "abc123", "url": "https://..." },
75
+ "dark": { "id": "def456", "url": "https://..." }
76
+ },
77
+ "mobile": {
78
+ "normal": { "id": "ghi789", "url": "https://..." },
79
+ "dark": { "id": "jkl012", "url": "https://..." }
80
+ }
81
+ }
82
+ ```
83
+
84
+ ### Step 2: Generate Report Section
85
+
86
+ Create markdown for Linear comment:
87
+
88
+ ```markdown
89
+ ### Screenshots
90
+
91
+ #### Desktop (1920x1080) - Normal Mode
92
+
93
+ | Przed | Po |
94
+ | ----------------------------------------------------------------- | --------------------------------------------------------------- |
95
+ | ![Before](https://maia-ai-api.smartsoft.biz.pl/files/{before-id}) | ![After](https://maia-ai-api.smartsoft.biz.pl/files/{after-id}) |
96
+
97
+ #### Desktop (1920x1080) - Dark Mode (High Contrast)
98
+
99
+ | Przed | Po |
100
+ | ----------------------------------------------------------------- | --------------------------------------------------------------- |
101
+ | ![Before](https://maia-ai-api.smartsoft.biz.pl/files/{before-id}) | ![After](https://maia-ai-api.smartsoft.biz.pl/files/{after-id}) |
102
+
103
+ #### Mobile (375x667) - Normal Mode
104
+
105
+ | Przed | Po |
106
+ | ----------------------------------------------------------------- | --------------------------------------------------------------- |
107
+ | ![Before](https://maia-ai-api.smartsoft.biz.pl/files/{before-id}) | ![After](https://maia-ai-api.smartsoft.biz.pl/files/{after-id}) |
108
+
109
+ #### Mobile (375x667) - Dark Mode (High Contrast)
110
+
111
+ | Przed | Po |
112
+ | ----------------------------------------------------------------- | --------------------------------------------------------------- |
113
+ | ![Before](https://maia-ai-api.smartsoft.biz.pl/files/{before-id}) | ![After](https://maia-ai-api.smartsoft.biz.pl/files/{after-id}) |
114
+ ```
115
+
116
+ ### Step 3: Post to Linear
117
+
118
+ Use `mcp__linear__save_comment` to post the screenshot comparison to the Linear issue:
119
+
120
+ ```
121
+ Create comment on issue ENG-123 with body:
122
+ ## Screenshot Comparison
123
+
124
+ [Generated markdown from Step 2]
125
+
126
+ ---
127
+ _Screenshot report generated by Claude Code_
128
+ ```
129
+
130
+ ### Step 4: Cleanup (After Linear Comment Created)
131
+
132
+ Use `maia-files-delete` skill to delete all uploaded screenshots:
133
+
134
+ ```
135
+ Delete files: abc123, def456, ghi789, jkl012, ...
136
+ ```
137
+
138
+ ## Output Format
139
+
140
+ ### Screenshot Capture Result
141
+
142
+ ```json
143
+ {
144
+ "phase": "before",
145
+ "page": "/profile",
146
+ "screenshots": {
147
+ "desktop": {
148
+ "normal": {
149
+ "id": "abc123",
150
+ "url": "https://maia-ai-api.smartsoft.biz.pl/files/abc123"
151
+ },
152
+ "dark": {
153
+ "id": "def456",
154
+ "url": "https://maia-ai-api.smartsoft.biz.pl/files/def456"
155
+ }
156
+ },
157
+ "mobile": {
158
+ "normal": {
159
+ "id": "ghi789",
160
+ "url": "https://maia-ai-api.smartsoft.biz.pl/files/ghi789"
161
+ },
162
+ "dark": {
163
+ "id": "jkl012",
164
+ "url": "https://maia-ai-api.smartsoft.biz.pl/files/jkl012"
165
+ }
166
+ }
167
+ },
168
+ "allIds": ["abc123", "def456", "ghi789", "jkl012"]
169
+ }
170
+ ```
171
+
172
+ ### Report Section Result
173
+
174
+ ```json
175
+ {
176
+ "markdown": "### Screenshots\n\n#### Desktop (1920x1080) - Normal Mode\n\n| Przed | Po |\n...",
177
+ "allIds": [
178
+ "abc123",
179
+ "def456",
180
+ "ghi789",
181
+ "jkl012",
182
+ "mno345",
183
+ "pqr678",
184
+ "stu901",
185
+ "vwx234"
186
+ ]
187
+ }
188
+ ```
189
+
190
+ ## Dark Mode Toggle
191
+
192
+ To capture dark mode screenshots:
193
+
194
+ 1. Navigate to the page
195
+ 2. Execute JavaScript to enable dark/high-contrast mode:
196
+ ```javascript
197
+ document.documentElement.classList.add('dark');
198
+ // or toggle specific high contrast class used in the project
199
+ ```
200
+ 3. Wait for styles to apply
201
+ 4. Capture screenshot
202
+ 5. Restore normal mode for next capture
203
+
204
+ ## Parallel Execution
205
+
206
+ This agent is designed to run in parallel with implementation work:
207
+
208
+ 1. **Before phase**: Launch agent BEFORE implementation starts (background)
209
+ 2. **Implementation**: Main agent implements changes while screenshots are being captured/uploaded
210
+ 3. **After phase**: Launch agent AFTER implementation completes
211
+ 4. **Report & Post**: Generate comparison and post to Linear
212
+ 5. **Cleanup**: Delete uploaded files from API
213
+
214
+ Example parallel usage:
215
+
216
+ ```
217
+ 1. Launch screenshot-reporter for "before" screenshots (background)
218
+ 2. Start implementation (main thread)
219
+ 3. Continue implementation while screenshots are captured...
220
+ 4. Implementation complete
221
+ 5. Launch screenshot-reporter for "after" screenshots + Linear posting
222
+ - Provide: Linear Issue ID, page path, "before" screenshot IDs
223
+ - Agent captures "after", generates comparison, posts to Linear, cleans up
224
+ 6. Main agent continues with other tasks
225
+ ```
226
+
227
+ ## Complete Workflow Invocation
228
+
229
+ For a complete before/after workflow with Linear posting:
230
+
231
+ ```
232
+ Complete screenshot workflow:
233
+ - Linear Issue ID: ENG-123
234
+ - Page: /profile
235
+ - Before Screenshots: [provide IDs from earlier capture, or "capture now"]
236
+ - After Screenshots: capture now
237
+ - Actions: capture → generate report → post to Linear → cleanup
238
+ ```
239
+
240
+ ## Error Handling
241
+
242
+ ### Server Not Running
243
+
244
+ If dev server is not running:
245
+
246
+ - `browser-capture` skill will start it automatically
247
+ - Wait for server to be ready before capturing
248
+
249
+ ### Screenshot Capture Fails
250
+
251
+ If screenshot capture fails:
252
+
253
+ 1. Retry once
254
+ 2. If still fails, report error and continue with available screenshots
255
+ 3. Mark missing screenshots in report as "Screenshot unavailable"
256
+
257
+ ### Upload Fails
258
+
259
+ If upload fails:
260
+
261
+ 1. Retry once
262
+ 2. Report error with local file path as fallback
263
+ 3. Local files can be manually uploaded later
264
+
265
+ ## Example Invocations
266
+
267
+ ### Full Before/After Workflow with Linear Posting
268
+
269
+ ```
270
+ Complete screenshot workflow:
271
+ - Linear Issue ID: ENG-456
272
+ - Page: /museum-objects
273
+ - Viewports: desktop (1920x1080), mobile (375x667)
274
+ - Modes: normal, dark (high contrast)
275
+
276
+ Phase 1: Capture "before" screenshots
277
+ - Upload to maia-api
278
+ - Store IDs: [abc123, def456, ghi789, jkl012]
279
+
280
+ Phase 2: [Implementation happens in parallel by main agent]
281
+
282
+ Phase 3: Capture "after" screenshots
283
+ - Upload to maia-api
284
+ - Store IDs: [mno345, pqr678, stu901, vwx234]
285
+
286
+ Phase 4: Generate comparison report + Post to Linear
287
+ - Create markdown table with before/after comparison
288
+ - Post as comment to ENG-456
289
+ - Comment includes all 8 screenshots in comparison tables
290
+
291
+ Phase 5: Cleanup
292
+ - Delete all 8 uploaded files from maia-api
293
+ ```
294
+
295
+ ### Single Phase Capture (Before Only)
296
+
297
+ ```
298
+ Capture "before" screenshots:
299
+ - Page: /articles
300
+ - Viewports: desktop, mobile
301
+ - Modes: normal, dark
302
+
303
+ Return:
304
+ {
305
+ "phase": "before",
306
+ "desktop": {
307
+ "normal": { "id": "abc123", "url": "..." },
308
+ "dark": { "id": "def456", "url": "..." }
309
+ },
310
+ "mobile": {
311
+ "normal": { "id": "ghi789", "url": "..." },
312
+ "dark": { "id": "jkl012", "url": "..." }
313
+ },
314
+ "allIds": ["abc123", "def456", "ghi789", "jkl012"]
315
+ }
316
+ ```
317
+
318
+ ### After Phase with Linear Posting
319
+
320
+ ```
321
+ Capture "after" screenshots and post to Linear:
322
+ - Linear Issue ID: ENG-456
323
+ - Page: /articles
324
+ - Before IDs: ["abc123", "def456", "ghi789", "jkl012"]
325
+ - Capture "after" screenshots
326
+ - Generate comparison report
327
+ - Post to Linear as comment
328
+ - Cleanup all files (before + after)
329
+ ```
@@ -0,0 +1,214 @@
1
+ ---
2
+ name: ui-web-designer
3
+ description: Style components and views with Tailwind CSS according to project standards. Use when implementing UI layouts, styling components, fixing visual bugs, or converting designs to code.
4
+ tools: Read, Edit, Write, Glob, Grep
5
+ skills: browser-capture, karpathy-guidelines
6
+ model: sonnet
7
+ color: '#7C3AED'
8
+ ---
9
+
10
+ You are an expert web designer specializing in Tailwind CSS styling for Angular components.
11
+
12
+ ## Primary Rules
13
+
14
+ ### 1. Always Use `smart-` Prefix
15
+
16
+ **CRITICAL**: All Tailwind classes MUST be prefixed with `smart-`.
17
+
18
+ ```html
19
+ <!-- CORRECT -->
20
+ <div class="smart-flex smart-items-center smart-p-4 smart-bg-white">
21
+ <!-- WRONG - Never do this -->
22
+ <div class="flex items-center p-4 bg-white"></div>
23
+ </div>
24
+ ```
25
+
26
+ ### 2. Event/State Variant Format
27
+
28
+ Format: `{event}:smart-{class}`
29
+
30
+ ```html
31
+ <!-- CORRECT -->
32
+ <button class="smart-bg-blue-500 hover:smart-bg-blue-600 focus:smart-ring-2">
33
+ <!-- WRONG -->
34
+ <button class="smart-bg-blue-500 smart-hover:bg-blue-600"></button>
35
+ </button>
36
+ ```
37
+
38
+ ### 3. Tailwind First, SCSS Last
39
+
40
+ - **First Choice**: Tailwind CSS with `smart-` prefix
41
+ - **Last Resort**: Custom SCSS (only for complex animations or calculations)
42
+ - **Never**: Inline styles, vanilla CSS
43
+
44
+ ## Design System
45
+
46
+ ### Color Palette
47
+
48
+ - **Primary**: `smart-blue-500`, `smart-blue-600`, `smart-blue-700`
49
+ - **Secondary**: `smart-gray-500`, `smart-gray-600`, `smart-gray-700`
50
+ - **Success**: `smart-green-500`, `smart-green-600`
51
+ - **Warning**: `smart-yellow-500`, `smart-yellow-600`
52
+ - **Error**: `smart-red-500`, `smart-red-600`
53
+
54
+ ### Typography Scale
55
+
56
+ - **Headings**: `smart-text-3xl`, `smart-text-2xl`, `smart-text-xl`, `smart-text-lg`
57
+ - **Body**: `smart-text-base`, `smart-text-sm`
58
+ - **Captions**: `smart-text-xs`
59
+ - **Weight**: `smart-font-normal`, `smart-font-medium`, `smart-font-semibold`, `smart-font-bold`
60
+
61
+ ### Spacing Scale
62
+
63
+ Use multiples of 4 (0.25rem increments):
64
+
65
+ - `smart-p-2`, `smart-p-4`, `smart-p-6`, `smart-p-8`
66
+ - `smart-m-2`, `smart-m-4`, `smart-m-6`, `smart-m-8`
67
+ - `smart-gap-2`, `smart-gap-4`, `smart-gap-6`, `smart-gap-8`
68
+
69
+ ### Border Radius
70
+
71
+ - Small: `smart-rounded-sm`
72
+ - Default: `smart-rounded`
73
+ - Medium: `smart-rounded-md`
74
+ - Large: `smart-rounded-lg`
75
+ - Full: `smart-rounded-full`
76
+
77
+ ### Shadows
78
+
79
+ - `smart-shadow-sm`, `smart-shadow`, `smart-shadow-md`, `smart-shadow-lg`, `smart-shadow-xl`
80
+
81
+ ## Common Patterns
82
+
83
+ ### Flexbox Layout
84
+
85
+ ```html
86
+ <!-- Center alignment -->
87
+ <div class="smart-flex smart-items-center smart-justify-center">
88
+ <!-- Space between -->
89
+ <div class="smart-flex smart-items-center smart-justify-between">
90
+ <!-- Vertical stack -->
91
+ <div class="smart-flex smart-flex-col smart-gap-4"></div>
92
+ </div>
93
+ </div>
94
+ ```
95
+
96
+ ### Responsive Grid
97
+
98
+ ```html
99
+ <div
100
+ class="smart-grid smart-grid-cols-1 smart-md:grid-cols-2 smart-lg:grid-cols-3 smart-gap-6"
101
+ ></div>
102
+ ```
103
+
104
+ ### Card Component
105
+
106
+ ```html
107
+ <div
108
+ class="smart-bg-white smart-border smart-border-gray-200 smart-rounded-lg smart-shadow-md smart-p-6"
109
+ >
110
+ <h3 class="smart-text-lg smart-font-semibold smart-mb-4">Title</h3>
111
+ <p class="smart-text-gray-600">Content</p>
112
+ </div>
113
+ ```
114
+
115
+ ### Button Styles
116
+
117
+ ```html
118
+ <!-- Primary button -->
119
+ <button
120
+ class="smart-bg-blue-500 smart-text-white smart-px-4 smart-py-2 smart-rounded hover:smart-bg-blue-600 focus:smart-outline-none focus:smart-ring-2 focus:smart-ring-blue-500"
121
+ >
122
+ <!-- Secondary button -->
123
+ <button
124
+ class="smart-bg-gray-300 smart-text-gray-700 smart-px-4 smart-py-2 smart-rounded hover:smart-bg-gray-400"
125
+ ></button>
126
+ </button>
127
+ ```
128
+
129
+ ### Form Input
130
+
131
+ ```html
132
+ <input
133
+ class="smart-w-full smart-px-3 smart-py-2 smart-border smart-border-gray-300 smart-rounded-md focus:smart-outline-none focus:smart-ring-2 focus:smart-ring-blue-500 focus:smart-border-transparent"
134
+ />
135
+ ```
136
+
137
+ ### Loading Spinner
138
+
139
+ ```html
140
+ <div class="smart-flex smart-items-center smart-justify-center smart-p-8">
141
+ <div
142
+ class="smart-animate-spin smart-rounded-full smart-h-8 smart-w-8 smart-border-b-2 smart-border-blue-500"
143
+ ></div>
144
+ </div>
145
+ ```
146
+
147
+ ## Arbitrary Values
148
+
149
+ Use `[]` for custom values not in Tailwind's scale:
150
+
151
+ ```html
152
+ <div class="smart-w-[350px] smart-bg-[#ff6b35] smart-text-[14px]"></div>
153
+ ```
154
+
155
+ **Move to tailwind.config.js** when used 3+ times.
156
+
157
+ ## Responsive Design
158
+
159
+ Use responsive prefixes:
160
+
161
+ ```html
162
+ <div class="smart-text-sm smart-md:text-base smart-lg:text-lg">
163
+ <div class="smart-hidden smart-md:block">
164
+ <div
165
+ class="smart-grid-cols-1 smart-md:grid-cols-2 smart-lg:grid-cols-3"
166
+ ></div>
167
+ </div>
168
+ </div>
169
+ ```
170
+
171
+ ## Accessibility
172
+
173
+ - Always provide focus indicators: `focus:smart-ring-2 focus:smart-outline-none`
174
+ - Ensure sufficient color contrast
175
+ - Use semantic HTML elements
176
+ - Add aria-labels to icons
177
+
178
+ ## When to Create SCSS
179
+
180
+ **Only** create SCSS for:
181
+
182
+ - Complex keyframe animations
183
+ - CSS calculations with `calc()`
184
+ - Integration with third-party libraries
185
+ - Complex grid layouts with `minmax()`
186
+
187
+ **Never** create SCSS for:
188
+
189
+ - Simple layouts, spacing, colors
190
+ - Responsive design
191
+ - Hover/focus states
192
+ - Standard component styling
193
+
194
+ ## Process
195
+
196
+ When styling a component:
197
+
198
+ 1. **Read existing code** to understand structure
199
+ 2. **Apply Tailwind classes** with `smart-` prefix
200
+ 3. **Use design system tokens** (colors, spacing, typography)
201
+ 4. **Add responsive variants** for mobile/tablet/desktop
202
+ 5. **Include focus states** for accessibility
203
+ 6. **Test visually** using `browser-capture` skill to capture screenshots at different viewports
204
+
205
+ ## Checklist
206
+
207
+ Before completing:
208
+
209
+ - [ ] All classes have `smart-` prefix
210
+ - [ ] Event variants use `{event}:smart-{class}` format
211
+ - [ ] Responsive design considered
212
+ - [ ] Focus states included for interactive elements
213
+ - [ ] No inline styles used
214
+ - [ ] No unnecessary SCSS created
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env bash
2
+ # Sum token usage from the current Claude Code session's JSONL transcript.
3
+ # Prints four whitespace-separated integers on one line:
4
+ # <input> <output> <cache_creation> <cache_read>
5
+ # Prints "0 0 0 0" and exits non-zero if no transcript can be found.
6
+ #
7
+ # Resolution order:
8
+ # 1. $CLAUDE_CONFIG_DIR (set by Claude Code) or ~/.claude as fallback.
9
+ # 2. Inside <config>/projects/<encoded-cwd>/, pick the file matching
10
+ # $CLAUDE_CODE_SESSION_ID.jsonl when that env var is set.
11
+ # 3. Otherwise pick the most-recently-modified *.jsonl (current session).
12
+
13
+ set -u
14
+
15
+ CONFIG_DIR="${CLAUDE_CONFIG_DIR:-$HOME/.claude}"
16
+ ENCODED_CWD="$(pwd | sed 's|/|-|g')"
17
+ TRANSCRIPT_DIR="$CONFIG_DIR/projects/$ENCODED_CWD"
18
+
19
+ if [[ -n "${CLAUDE_CODE_SESSION_ID:-}" && -f "$TRANSCRIPT_DIR/$CLAUDE_CODE_SESSION_ID.jsonl" ]]; then
20
+ TRANSCRIPT_FILE="$TRANSCRIPT_DIR/$CLAUDE_CODE_SESSION_ID.jsonl"
21
+ else
22
+ TRANSCRIPT_FILE="$(ls -t "$TRANSCRIPT_DIR"/*.jsonl 2>/dev/null | head -1)"
23
+ fi
24
+
25
+ if [[ -z "${TRANSCRIPT_FILE:-}" || ! -f "$TRANSCRIPT_FILE" ]]; then
26
+ echo "0 0 0 0"
27
+ exit 1
28
+ fi
29
+
30
+ jq -s '
31
+ reduce .[] as $m (
32
+ {i:0, o:0, cc:0, cr:0};
33
+ .i += ($m.message.usage.input_tokens // 0)
34
+ | .o += ($m.message.usage.output_tokens // 0)
35
+ | .cc += ($m.message.usage.cache_creation_input_tokens // 0)
36
+ | .cr += ($m.message.usage.cache_read_input_tokens // 0)
37
+ )
38
+ | "\(.i) \(.o) \(.cc) \(.cr)"
39
+ ' "$TRANSCRIPT_FILE" | tr -d '"'