@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,238 @@
1
+ ---
2
+ name: browser-capture
3
+ description: Manage browser sessions and capture screenshots. Ensures dev server is running, navigates to pages, captures responsive screenshots, and uploads them to temporary storage.
4
+ allowed-tools:
5
+ - Bash
6
+ - Read
7
+ - Glob
8
+ - mcp__playwright__browser_navigate
9
+ - mcp__playwright__browser_snapshot
10
+ - mcp__playwright__browser_take_screenshot
11
+ - mcp__playwright__browser_resize
12
+ - mcp__playwright__browser_close
13
+ ---
14
+
15
+ # Browser Capture Skill
16
+
17
+ Manage browser sessions for capturing screenshots of web pages. Automatically ensures the development server is running before capturing.
18
+
19
+ ## Capabilities
20
+
21
+ 1. **Server Management**: Check if dev server is running, start if needed
22
+ 2. **Page Navigation**: Navigate to specified URLs using Playwright
23
+ 3. **Screenshot Capture**: Take screenshots at multiple viewport sizes
24
+ 4. **Upload Screenshots**: Upload captured images to maia-api for use in reports
25
+
26
+ ## Server Management
27
+
28
+ ### Read Port Configuration
29
+
30
+ ```bash
31
+ # Default port location (Nx 14 / Angular 14)
32
+ grep -o '"port":[^,}]*' apps/web/project.json | head -1
33
+ # Default: 4200
34
+ ```
35
+
36
+ ### Check if Server is Running
37
+
38
+ ```bash
39
+ lsof -i :4200 -t
40
+ ```
41
+
42
+ - If returns PID -> server is running
43
+ - If returns nothing -> server needs to be started
44
+
45
+ ### Start Server if Needed
46
+
47
+ ```bash
48
+ # Start in background (Nx 14 / @nrwl)
49
+ npm start &
50
+
51
+ # Wait for server to be ready (check every 2 seconds, max 30 seconds)
52
+ for i in {1..15}; do
53
+ curl -s http://localhost:4200 > /dev/null && break
54
+ sleep 2
55
+ done
56
+ ```
57
+
58
+ ## Screenshot Capture Process
59
+
60
+ ### 1. Ensure Server is Running
61
+
62
+ Before any screenshot capture:
63
+
64
+ 1. Read port from `apps/web/project.json` (default: 4200)
65
+ 2. Check if port is occupied: `lsof -i :PORT -t`
66
+ 3. If not running: `npm start &` and wait ~15 seconds
67
+
68
+ ### 2. Navigate to Page
69
+
70
+ Use `mcp__playwright__browser_navigate` to open the target URL.
71
+
72
+ ```
73
+ URL format: http://localhost:{port}/{path}
74
+ ```
75
+
76
+ ### 3. Capture at Multiple Viewports
77
+
78
+ Standard viewport sizes:
79
+
80
+ | Name | Width | Height |
81
+ | ------- | ----- | ------ |
82
+ | Desktop | 1920 | 1080 |
83
+ | Tablet | 768 | 1024 |
84
+ | Mobile | 375 | 667 |
85
+
86
+ Process for each viewport:
87
+
88
+ 1. `mcp__playwright__browser_resize` -> set dimensions
89
+ 2. `mcp__playwright__browser_take_screenshot` -> save to temp file
90
+
91
+ ### 4. Upload Screenshots
92
+
93
+ After capturing, delegate upload to `maia-api` agent:
94
+
95
+ ```
96
+ Input: /tmp/screenshot-desktop.png
97
+ Output: { id: "abc123", url: "https://maia-ai-api.smartsoft.biz.pl/files/abc123" }
98
+ ```
99
+
100
+ ## Usage Examples
101
+
102
+ ### Capture Single Page
103
+
104
+ ```
105
+ Input: { path: "/articles", viewports: ["desktop", "mobile"] }
106
+
107
+ Process:
108
+ 1. Check server running on port 4200
109
+ 2. Start if needed, wait for ready
110
+ 3. Navigate to http://localhost:4200/articles
111
+ 4. Resize to 1920x1080, screenshot -> /tmp/articles-desktop.png
112
+ 5. Resize to 375x667, screenshot -> /tmp/articles-mobile.png
113
+ 6. Upload both via maia-api agent
114
+ 7. Return URLs
115
+
116
+ Output:
117
+ {
118
+ "desktop": "https://maia-ai-api.smartsoft.biz.pl/files/abc123",
119
+ "mobile": "https://maia-ai-api.smartsoft.biz.pl/files/def456"
120
+ }
121
+ ```
122
+
123
+ ### Capture Before/After
124
+
125
+ ```
126
+ Input: {
127
+ path: "/profile",
128
+ phase: "before" | "after",
129
+ viewports: ["desktop", "mobile"]
130
+ }
131
+
132
+ Output:
133
+ {
134
+ "phase": "before",
135
+ "desktop": { "id": "abc123", "url": "https://..." },
136
+ "mobile": { "id": "def456", "url": "https://..." }
137
+ }
138
+ ```
139
+
140
+ ## Viewport Presets
141
+
142
+ | Preset | Dimensions | Use Case |
143
+ | ---------- | ---------- | ------------------------ |
144
+ | `desktop` | 1920x1080 | Full desktop view |
145
+ | `laptop` | 1366x768 | Common laptop resolution |
146
+ | `tablet` | 768x1024 | iPad portrait |
147
+ | `mobile` | 375x667 | iPhone SE/8 |
148
+ | `mobile-l` | 414x896 | iPhone XR/11 |
149
+
150
+ ## Server Ready Check
151
+
152
+ ```bash
153
+ # Check if server responds
154
+ check_server() {
155
+ local port=$1
156
+ local max_attempts=$2
157
+ local attempt=1
158
+
159
+ while [ $attempt -le $max_attempts ]; do
160
+ if curl -s "http://localhost:$port" > /dev/null 2>&1; then
161
+ echo "Server ready"
162
+ return 0
163
+ fi
164
+ echo "Waiting for server... ($attempt/$max_attempts)"
165
+ sleep 2
166
+ ((attempt++))
167
+ done
168
+
169
+ echo "Server not ready after $max_attempts attempts"
170
+ return 1
171
+ }
172
+
173
+ check_server 4200 15
174
+ ```
175
+
176
+ ## Output Format
177
+
178
+ When capturing screenshots, return structured data:
179
+
180
+ ```json
181
+ {
182
+ "serverStarted": true,
183
+ "port": 4200,
184
+ "screenshots": [
185
+ {
186
+ "viewport": "desktop",
187
+ "dimensions": "1920x1080",
188
+ "localPath": "/tmp/screenshot-desktop.png",
189
+ "uploadedId": "abc123",
190
+ "uploadedUrl": "https://maia-ai-api.smartsoft.biz.pl/files/abc123"
191
+ },
192
+ {
193
+ "viewport": "mobile",
194
+ "dimensions": "375x667",
195
+ "localPath": "/tmp/screenshot-mobile.png",
196
+ "uploadedId": "def456",
197
+ "uploadedUrl": "https://maia-ai-api.smartsoft.biz.pl/files/def456"
198
+ }
199
+ ]
200
+ }
201
+ ```
202
+
203
+ ## Cleanup
204
+
205
+ After screenshots are used (embedded in Linear comments), cleanup local temp files:
206
+
207
+ ```bash
208
+ rm /tmp/screenshot-*.png
209
+ ```
210
+
211
+ For API cleanup, delegate to `maia-api` agent with collected IDs.
212
+
213
+ ## Error Handling
214
+
215
+ ### Server Won't Start
216
+
217
+ If server fails to start after 30 seconds:
218
+
219
+ 1. Check for port conflicts: `lsof -i :4200`
220
+ 2. Check npm logs for errors
221
+ 3. Report error and skip screenshot capture
222
+
223
+ ### Screenshot Fails
224
+
225
+ If Playwright screenshot fails:
226
+
227
+ 1. Verify navigation succeeded
228
+ 2. Check for JavaScript errors: `mcp__playwright__browser_console_messages`
229
+ 3. Try alternative viewport
230
+ 4. Report partial success
231
+
232
+ ### Upload Fails
233
+
234
+ If maia-api upload fails:
235
+
236
+ 1. Verify file exists and has content
237
+ 2. Retry upload once
238
+ 3. Report error with local file path as fallback
@@ -0,0 +1,215 @@
1
+ ---
2
+ name: commit
3
+ description: Create a conventional commit message based on Linear task and staged changes. Fetches task details, analyzes changes, generates commit message, and optionally runs parallelization analysis.
4
+ allowed-tools:
5
+ - Bash
6
+ - Read
7
+ - Glob
8
+ - Grep
9
+ - AskUserQuestion
10
+ - TaskCreate
11
+ - TaskUpdate
12
+ - TaskList
13
+ - TaskGet
14
+ - mcp__linear__get_issue
15
+ - mcp__linear__list_comments
16
+ ---
17
+
18
+ # Commit Skill
19
+
20
+ Create a conventional commit message based on Linear task and staged changes.
21
+
22
+ ## Usage
23
+
24
+ ```
25
+ /commit [linearTaskId]
26
+ ```
27
+
28
+ ## Parameters
29
+
30
+ - `linearTaskId` - Linear task ID (e.g., ENG-123)
31
+
32
+ ## Execution Checklist
33
+
34
+ Execute each step in order. Do not skip any step marked as MANDATORY.
35
+
36
+ - [ ] **1. Fetch Linear task** — get title, description, labels/type from MCP Linear server
37
+ - [ ] **2. Analyze staged changes** — run `git diff --cached` to understand scope
38
+ - [ ] **3. Verify completeness** — compare task requirements with staged changes; if incomplete, ask user whether to continue or stop
39
+ - [ ] **4. Read commitlint config** — read `commitlint.config.js` for valid scopes and format
40
+ - [ ] **5. Generate commit message** — draft `<type>(<scope>): <subject>` with body and `Refs: <linearTaskId>`
41
+ - [ ] **6. Show message to user** — present commit message for approval before proceeding
42
+ - [ ] **7. MANDATORY: Pre-commit preparation** — run `nvm use 18` (legacy Node.js version)
43
+ - [ ] **8. Create commit** — execute `git commit` with the approved message
44
+ - [ ] **9. Parallelization analysis (optional)** — fetch Linear comments, search for orchestration plan, delegate to `shared-parallelization-analyzer` if found
45
+
46
+ ### Task Progress Tracking
47
+
48
+ **MANDATORY**: Use Claude Code's built-in task tracking to provide real-time progress visibility.
49
+
50
+ **Task naming convention**: Every task subject MUST be prefixed with the Linear task ID:
51
+
52
+ ```
53
+ <linearTaskId> <step description>
54
+ ```
55
+
56
+ **At skill start**: Create tasks for each checklist step using `TaskCreate`:
57
+
58
+ ```
59
+ TaskCreate({
60
+ subject: "MM-123 Fetch Linear task",
61
+ description: "Get title, description, labels/type from MCP Linear server",
62
+ activeForm: "MM-123 Fetching Linear task"
63
+ })
64
+ TaskCreate({
65
+ subject: "MM-123 Analyze staged changes",
66
+ description: "Run git diff --cached to understand scope",
67
+ activeForm: "MM-123 Analyzing staged changes"
68
+ })
69
+ ```
70
+
71
+ **During execution**:
72
+
73
+ - Before starting a step → `TaskUpdate({ taskId, status: "in_progress" })`
74
+ - After completing a step → `TaskUpdate({ taskId, status: "completed" })`
75
+
76
+ **At checkpoints**: Use `TaskList` to review overall progress before presenting status to user.
77
+
78
+ ## Instructions
79
+
80
+ You are tasked with creating a git commit based on a Linear task and staged changes.
81
+
82
+ ### Step 1: Fetch Linear Task Details
83
+
84
+ Use the MCP Linear server to fetch task details for the provided `linearTaskId`. Extract:
85
+
86
+ - Task title
87
+ - Task description
88
+ - Task labels/type (bug, feature, improve etc.)
89
+
90
+ ### Step 2: Analyze Staged Changes
91
+
92
+ Run `git diff --cached` to see what files have been changed and understand the scope of changes.
93
+
94
+ ### Step 2.5: Verify Implementation Completeness
95
+
96
+ Before proceeding with the commit, verify that all requirements from the Linear task have been implemented:
97
+
98
+ 1. **Compare task requirements with actual changes**:
99
+
100
+ - Review the Linear task description and acceptance criteria
101
+ - Analyze the staged changes from `git diff --cached`
102
+ - Identify any requirements from the task that are not reflected in the code changes
103
+
104
+ 2. **Ask user if implementation is incomplete**:
105
+
106
+ - If any task requirements appear to be missing from the staged changes, use `AskUserQuestion` to ask the user:
107
+ - Option 1: "Continue with commit" (Proceed with committing only the current changes)
108
+ - Option 2: "Complete implementation first" (Recommended) - Stop the commit process so user can implement missing requirements
109
+
110
+ 3. **Handle user decision**:
111
+ - If user chooses "Continue with commit": Proceed to Step 3
112
+ - If user chooses "Complete implementation first": Stop the commit process and inform the user about what's missing
113
+
114
+ **Note**: This verification step helps ensure commits are complete and aligned with task requirements, reducing the need for follow-up commits.
115
+
116
+ ### Step 3: Read Commitlint Configuration
117
+
118
+ Read the `commitlint.config.js` file to understand:
119
+
120
+ - Available scopes (from the `scope-enum` rule)
121
+ - Commit message format requirements
122
+
123
+ ### Step 4: Generate Commit Message
124
+
125
+ Based on the Linear task details and code changes, generate a commit message following conventional commits format:
126
+
127
+ ```
128
+ <type>(<scope>): <subject>
129
+
130
+ <body>
131
+
132
+ Refs: <linearTaskId>
133
+ ```
134
+
135
+ Where:
136
+
137
+ - **type**: Choose from: `feat`, `fix`, `refactor`, `test`, `docs`, `chore`, `build`, `ci`, `perf`, `style`
138
+ - Use task labels/type to determine (bug → fix, feature → feat, etc.)
139
+ - **scope**: Select from available scopes in commitlint.config.js based on changed files
140
+ - If multiple scopes affected, choose the primary one or use a general scope
141
+ - The scope must be one of the valid scopes from commitlint config
142
+ - **subject**: Brief description (use Linear task title as base, keep under 72 chars)
143
+ - **body**: Optional detailed explanation if needed (from task description or complex changes)
144
+ - **footer**: Always include `Refs: <linearTaskId>` to link to Linear task
145
+
146
+ ### Step 4.5: Pre-commit Preparation (Mandatory)
147
+
148
+ Before creating the commit, **always** run the following commands:
149
+
150
+ 1. **Switch to Node.js 18** (legacy projects use Node 18):
151
+
152
+ ```bash
153
+ source ~/.nvm/nvm.sh && nvm use 18
154
+ ```
155
+
156
+ ### Step 5: Create Commit
157
+
158
+ Execute the commit with the generated message:
159
+
160
+ ```bash
161
+ git commit -m "<type>(<scope>): <subject>" -m "<body>" -m "Refs: <linearTaskId>"
162
+ ```
163
+
164
+ ### Step 6: Post-Commit Parallelization Analysis (Optional)
165
+
166
+ After the commit is created, perform an optional parallelization analysis:
167
+
168
+ 1. **Fetch Linear comments** for the task using the MCP Linear server
169
+ 2. **Search for `🎭 Agent Orchestration Plan` blocks** in the comments
170
+ 3. **If found**: Delegate analysis to `shared-parallelization-analyzer` agent:
171
+
172
+ ```
173
+ Analyze orchestration plan for parallelization opportunities:
174
+ - Linear Task ID: [linearTaskId]
175
+ - Orchestration Plan: [the 🎭 Agent Orchestration Plan block content]
176
+ ```
177
+
178
+ The agent will:
179
+
180
+ - Parse the orchestration plan (agents table, execution flow, TDD cycles)
181
+ - Build a dependency graph from file I/O analysis
182
+ - Identify false sequential dependencies and parallelization opportunities
183
+ - Generate a console report with current vs proposed execution
184
+
185
+ 4. **If not found**: Skip silently — no message needed (common for hotfixes, config-only commits)
186
+
187
+ **IMPORTANT**:
188
+
189
+ - This step is **non-blocking** and **advisory only**
190
+ - The analysis report is shown to the user in the console but is NOT auto-applied
191
+ - Recurring orchestrator improvement suggestions (if any) are filed as Linear issues in the "Framework 2.0" project via `linear-suggestion` skill — no user interaction required
192
+ - A commit failure or missing orchestration plan should never cause this step to error
193
+
194
+ ### Guidelines
195
+
196
+ 1. Keep the subject line concise and imperative mood
197
+ 2. Choose the most appropriate type based on task nature and code changes
198
+ 3. Select scope based on the primary area of code changes
199
+ 4. If task type is unclear, analyze the code changes to determine type
200
+ 5. Always include the Linear task reference in the footer
201
+ 6. If there are no staged changes, warn the user and don't create commit
202
+ 7. After a successful commit, run the optional parallelization analysis (Step 6) to surface optimization opportunities from the orchestration plan. Recurring patterns are filed as Linear issues automatically via `linear-suggestion` skill
203
+
204
+ ### Example
205
+
206
+ For Linear task "ENG-123: Add dark mode toggle to settings":
207
+
208
+ - Type: `feat` (new feature)
209
+ - Scope: `shared-angular` (if changes are in libs/shared/angular)
210
+ - Subject: "add dark mode toggle to settings"
211
+ - Result: `feat(shared-angular): add dark mode toggle to settings`
212
+
213
+ ---
214
+
215
+ **Important**: Before committing, show the generated commit message to the user for approval.