@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.
- package/.claude-plugin/marketplace.json +26 -0
- package/README.md +56 -0
- package/package.json +14 -0
- package/plugins/flow/.claude-plugin/README.md +91 -0
- package/plugins/flow/.claude-plugin/merge-permissions.js +115 -0
- package/plugins/flow/.claude-plugin/plugin.json +5 -0
- package/plugins/flow/.claude-plugin/settings.template.json +86 -0
- package/plugins/flow/agents/angular-component-scaffolder.md +176 -0
- package/plugins/flow/agents/angular-directive-builder.md +154 -0
- package/plugins/flow/agents/angular-guard-builder.md +244 -0
- package/plugins/flow/agents/angular-jest-test-writer.md +475 -0
- package/plugins/flow/agents/angular-pipe-builder.md +170 -0
- package/plugins/flow/agents/angular-resolver-builder.md +287 -0
- package/plugins/flow/agents/angular-service-builder.md +162 -0
- package/plugins/flow/agents/angular-signal-state-builder.md +340 -0
- package/plugins/flow/agents/angular-test-diagnostician.md +279 -0
- package/plugins/flow/agents/angular-testbed-configurator.md +315 -0
- package/plugins/flow/agents/arch-scaffolder.md +278 -0
- package/plugins/flow/agents/e2e-data-testid-injector.md +195 -0
- package/plugins/flow/agents/e2e-project-scaffolder.md +194 -0
- package/plugins/flow/agents/e2e-test-writer.md +357 -0
- package/plugins/flow/agents/shared-agent-evolver.md +294 -0
- package/plugins/flow/agents/shared-build-verifier.md +160 -0
- package/plugins/flow/agents/shared-config-updater.md +310 -0
- package/plugins/flow/agents/shared-coverage-enforcer.md +184 -0
- package/plugins/flow/agents/shared-error-handler.md +217 -0
- package/plugins/flow/agents/shared-file-creator.md +344 -0
- package/plugins/flow/agents/shared-impl-orchestrator.md +312 -0
- package/plugins/flow/agents/shared-impl-reporter.md +368 -0
- package/plugins/flow/agents/shared-impl-teammate.md +201 -0
- package/plugins/flow/agents/shared-linear-subtask-iterator.md +337 -0
- package/plugins/flow/agents/shared-logic-implementer.md +244 -0
- package/plugins/flow/agents/shared-maia-api.md +26 -0
- package/plugins/flow/agents/shared-parallelization-analyzer.md +343 -0
- package/plugins/flow/agents/shared-performance-validator.md +168 -0
- package/plugins/flow/agents/shared-plan-perspective.md +271 -0
- package/plugins/flow/agents/shared-project-standardizer.md +205 -0
- package/plugins/flow/agents/shared-report-synthesizer.md +188 -0
- package/plugins/flow/agents/shared-review-teammate.md +189 -0
- package/plugins/flow/agents/shared-security-scanner.md +186 -0
- package/plugins/flow/agents/shared-style-enforcer.md +230 -0
- package/plugins/flow/agents/shared-subtask-dependency-analyzer.md +189 -0
- package/plugins/flow/agents/shared-tdd-developer.md +350 -0
- package/plugins/flow/agents/shared-team-coordinator.md +192 -0
- package/plugins/flow/agents/shared-test-fixer.md +186 -0
- package/plugins/flow/agents/shared-test-runner.md +191 -0
- package/plugins/flow/agents/shared-ui-classifier.md +263 -0
- package/plugins/flow/agents/shared-verification-orchestrator.md +194 -0
- package/plugins/flow/agents/shared-verification-runner.md +140 -0
- package/plugins/flow/agents/ui-a11y-validator.md +305 -0
- package/plugins/flow/agents/ui-screenshot-reporter.md +329 -0
- package/plugins/flow/agents/ui-web-designer.md +214 -0
- package/plugins/flow/scripts/compute-session-tokens.sh +39 -0
- package/plugins/flow/skills/a11y-audit/SKILL.md +214 -0
- package/plugins/flow/skills/angular-patterns/SKILL.md +191 -0
- package/plugins/flow/skills/browser-capture/SKILL.md +238 -0
- package/plugins/flow/skills/commit/SKILL.md +259 -0
- package/plugins/flow/skills/debug-helper/SKILL.md +375 -0
- package/plugins/flow/skills/impl/SKILL.md +992 -0
- package/plugins/flow/skills/karpathy-guidelines/SKILL.md +72 -0
- package/plugins/flow/skills/linear-suggestion/SKILL.md +132 -0
- package/plugins/flow/skills/maia-files-delete/SKILL.md +59 -0
- package/plugins/flow/skills/maia-files-upload/SKILL.md +57 -0
- package/plugins/flow/skills/nx-conventions/SKILL.md +326 -0
- package/plugins/flow/skills/plan/SKILL.md +1033 -0
- package/plugins/flow/skills/push/SKILL.md +759 -0
- package/plugins/flow/skills/review/SKILL.md +443 -0
- package/plugins/flow/skills/test-e2e/SKILL.md +164 -0
- package/plugins/flow/skills/test-unit/SKILL.md +456 -0
- package/plugins/flow-external/.claude-plugin/README.md +146 -0
- package/plugins/flow-external/.claude-plugin/merge-permissions.js +94 -0
- package/plugins/flow-external/.claude-plugin/plugin.json +5 -0
- package/plugins/flow-external/.claude-plugin/settings.template.json +78 -0
- package/plugins/flow-external/agents/angular-component-scaffolder.md +271 -0
- package/plugins/flow-external/agents/angular-directive-builder.md +134 -0
- package/plugins/flow-external/agents/angular-guard-builder.md +73 -0
- package/plugins/flow-external/agents/angular-pipe-builder.md +90 -0
- package/plugins/flow-external/agents/angular-resolver-builder.md +79 -0
- package/plugins/flow-external/agents/angular-service-builder.md +168 -0
- package/plugins/flow-external/agents/angular-state-builder.md +263 -0
- package/plugins/flow-external/agents/shared-build-verifier.md +67 -0
- package/plugins/flow-external/agents/shared-impl-orchestrator.md +90 -0
- package/plugins/flow-external/agents/shared-impl-reporter.md +135 -0
- package/plugins/flow-external/agents/shared-linear-subtask-iterator.md +70 -0
- package/plugins/flow-external/agents/shared-ui-classifier.md +38 -0
- package/plugins/flow-external/agents/ui-web-designer.md +203 -0
- package/plugins/flow-external/scripts/compute-session-tokens.sh +39 -0
- package/plugins/flow-external/skills/a11y-audit/SKILL.md +97 -0
- package/plugins/flow-external/skills/angular-cli-conventions/SKILL.md +268 -0
- package/plugins/flow-external/skills/angular-patterns/SKILL.md +182 -0
- package/plugins/flow-external/skills/browser-capture/SKILL.md +74 -0
- package/plugins/flow-external/skills/commit/SKILL.md +114 -0
- package/plugins/flow-external/skills/debug-helper/SKILL.md +135 -0
- package/plugins/flow-external/skills/impl/SKILL.md +218 -0
- package/plugins/flow-external/skills/karpathy-guidelines/SKILL.md +72 -0
- package/plugins/flow-external/skills/linear-suggestion/SKILL.md +62 -0
- package/plugins/flow-external/skills/maia-files-delete/SKILL.md +34 -0
- package/plugins/flow-external/skills/maia-files-upload/SKILL.md +41 -0
- package/plugins/flow-external/skills/plan/SKILL.md +334 -0
- package/plugins/flow-external/skills/push/SKILL.md +232 -0
- package/plugins/flow-legacy/.claude-plugin/README.md +143 -0
- package/plugins/flow-legacy/.claude-plugin/merge-permissions.js +94 -0
- package/plugins/flow-legacy/.claude-plugin/plugin.json +5 -0
- package/plugins/flow-legacy/.claude-plugin/settings.template.json +79 -0
- package/plugins/flow-legacy/agents/angular-component-scaffolder.md +327 -0
- package/plugins/flow-legacy/agents/angular-directive-builder.md +253 -0
- package/plugins/flow-legacy/agents/angular-guard-builder.md +326 -0
- package/plugins/flow-legacy/agents/angular-pipe-builder.md +238 -0
- package/plugins/flow-legacy/agents/angular-resolver-builder.md +339 -0
- package/plugins/flow-legacy/agents/angular-service-builder.md +271 -0
- package/plugins/flow-legacy/agents/angular-state-builder.md +480 -0
- package/plugins/flow-legacy/agents/shared-impl-orchestrator.md +174 -0
- package/plugins/flow-legacy/agents/shared-impl-reporter.md +232 -0
- package/plugins/flow-legacy/agents/shared-linear-subtask-iterator.md +198 -0
- package/plugins/flow-legacy/agents/shared-tdd-developer.md +307 -0
- package/plugins/flow-legacy/agents/shared-test-runner.md +133 -0
- package/plugins/flow-legacy/agents/shared-ui-classifier.md +145 -0
- package/plugins/flow-legacy/scripts/compute-session-tokens.sh +39 -0
- package/plugins/flow-legacy/skills/a11y-audit/SKILL.md +214 -0
- package/plugins/flow-legacy/skills/angular-patterns/SKILL.md +346 -0
- package/plugins/flow-legacy/skills/browser-capture/SKILL.md +238 -0
- package/plugins/flow-legacy/skills/commit/SKILL.md +215 -0
- package/plugins/flow-legacy/skills/debug-helper/SKILL.md +395 -0
- package/plugins/flow-legacy/skills/impl/SKILL.md +710 -0
- package/plugins/flow-legacy/skills/karpathy-guidelines/SKILL.md +72 -0
- package/plugins/flow-legacy/skills/linear-suggestion/SKILL.md +132 -0
- package/plugins/flow-legacy/skills/maia-files-delete/SKILL.md +59 -0
- package/plugins/flow-legacy/skills/maia-files-upload/SKILL.md +57 -0
- package/plugins/flow-legacy/skills/nx-conventions/SKILL.md +368 -0
- package/plugins/flow-legacy/skills/plan/SKILL.md +742 -0
- package/plugins/flow-legacy/skills/push/SKILL.md +645 -0
- package/plugins/flow-legacy/skills/test-unit/SKILL.md +500 -0
- package/plugins/smart-pro/.claude-plugin/README.md +115 -0
- package/plugins/smart-pro/.claude-plugin/merge-permissions.js +129 -0
- package/plugins/smart-pro/.claude-plugin/plugin.json +5 -0
- package/plugins/smart-pro/.claude-plugin/settings.template.json +94 -0
- package/plugins/smart-pro/agents/angular-components/AGENT.md +214 -0
- package/plugins/smart-pro/hooks/CONFIG.md +198 -0
- package/plugins/smart-pro/hooks/README.md +139 -0
- package/plugins/smart-pro/hooks/audit_logger.py +107 -0
- package/plugins/smart-pro/hooks/auto_format.sh +11 -0
- package/plugins/smart-pro/hooks/hooks.json +79 -0
- package/plugins/smart-pro/hooks/safety_validator.py +129 -0
- package/plugins/smart-pro/hooks/sensitive_file_blocker.py +58 -0
- package/plugins/smart-pro/hooks/skill_validator.py +220 -0
- package/plugins/smart-pro/skills/angular-components-action-panel/SKILL.md +159 -0
- package/plugins/smart-pro/skills/angular-components-avatar/SKILL.md +142 -0
- package/plugins/smart-pro/skills/angular-components-badge/SKILL.md +110 -0
- package/plugins/smart-pro/skills/angular-components-breadcrumbs/SKILL.md +91 -0
- package/plugins/smart-pro/skills/angular-components-button/SKILL.md +146 -0
- package/plugins/smart-pro/skills/angular-components-button-group/SKILL.md +121 -0
- package/plugins/smart-pro/skills/angular-components-calendar/SKILL.md +78 -0
- package/plugins/smart-pro/skills/angular-components-card/SKILL.md +110 -0
- package/plugins/smart-pro/skills/angular-components-card-heading/SKILL.md +105 -0
- package/plugins/smart-pro/skills/angular-components-command-palette/SKILL.md +168 -0
- package/plugins/smart-pro/skills/angular-components-container/SKILL.md +93 -0
- package/plugins/smart-pro/skills/angular-components-description-list/SKILL.md +102 -0
- package/plugins/smart-pro/skills/angular-components-details/SKILL.md +70 -0
- package/plugins/smart-pro/skills/angular-components-divider/SKILL.md +110 -0
- package/plugins/smart-pro/skills/angular-components-drawer/SKILL.md +136 -0
- package/plugins/smart-pro/skills/angular-components-dropdown/SKILL.md +131 -0
- package/plugins/smart-pro/skills/angular-components-empty-state/SKILL.md +103 -0
- package/plugins/smart-pro/skills/angular-components-feed/SKILL.md +110 -0
- package/plugins/smart-pro/skills/angular-components-form/SKILL.md +77 -0
- package/plugins/smart-pro/skills/angular-components-grid-list/SKILL.md +91 -0
- package/plugins/smart-pro/skills/angular-components-input/SKILL.md +118 -0
- package/plugins/smart-pro/skills/angular-components-list/SKILL.md +75 -0
- package/plugins/smart-pro/skills/angular-components-list-container/SKILL.md +106 -0
- package/plugins/smart-pro/skills/angular-components-media-object/SKILL.md +133 -0
- package/plugins/smart-pro/skills/angular-components-modal/SKILL.md +159 -0
- package/plugins/smart-pro/skills/angular-components-multi-column-layout/SKILL.md +84 -0
- package/plugins/smart-pro/skills/angular-components-navbar/SKILL.md +93 -0
- package/plugins/smart-pro/skills/angular-components-notification/SKILL.md +147 -0
- package/plugins/smart-pro/skills/angular-components-page/SKILL.md +162 -0
- package/plugins/smart-pro/skills/angular-components-page-heading/SKILL.md +96 -0
- package/plugins/smart-pro/skills/angular-components-paging/SKILL.md +86 -0
- package/plugins/smart-pro/skills/angular-components-progress-bars/SKILL.md +94 -0
- package/plugins/smart-pro/skills/angular-components-searchbar/SKILL.md +113 -0
- package/plugins/smart-pro/skills/angular-components-section-heading/SKILL.md +156 -0
- package/plugins/smart-pro/skills/angular-components-select-menu/SKILL.md +101 -0
- package/plugins/smart-pro/skills/angular-components-sidebar-layout/SKILL.md +121 -0
- package/plugins/smart-pro/skills/angular-components-sidebar-navigation/SKILL.md +80 -0
- package/plugins/smart-pro/skills/angular-components-sign-in-form/SKILL.md +91 -0
- package/plugins/smart-pro/skills/angular-components-stacked-layout/SKILL.md +114 -0
- package/plugins/smart-pro/skills/angular-components-stacked-list/SKILL.md +93 -0
- package/plugins/smart-pro/skills/angular-components-stats/SKILL.md +87 -0
- package/plugins/smart-pro/skills/angular-components-table/SKILL.md +98 -0
- package/plugins/smart-pro/skills/angular-components-tabs/SKILL.md +99 -0
- package/plugins/smart-pro/skills/angular-components-textarea/SKILL.md +111 -0
- package/plugins/smart-pro/skills/angular-components-toggle/SKILL.md +109 -0
- package/plugins/smart-pro/skills/angular-components-vertical-navigation/SKILL.md +139 -0
- package/plugins/smart-pro/skills/audit-log/SKILL.md +82 -0
- package/plugins/smart-pro/skills/format-code/SKILL.md +46 -0
- package/plugins/smart-pro/skills/project-conventions/SKILL.md +90 -0
- package/plugins/smart-pro/skills/safety-check/SKILL.md +0 -0
- package/src/index.d.ts +6 -0
- package/src/index.js +7 -0
- 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.
|