@smartsoft001-mobilems/claude-plugins 2.58.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 (52) hide show
  1. package/.claude-plugin/marketplace.json +14 -0
  2. package/package.json +13 -0
  3. package/plugins/flow/.claude-plugin/plugin.json +5 -0
  4. package/plugins/flow/agents/angular-component-scaffolder.md +174 -0
  5. package/plugins/flow/agents/angular-directive-builder.md +152 -0
  6. package/plugins/flow/agents/angular-guard-builder.md +242 -0
  7. package/plugins/flow/agents/angular-jest-test-writer.md +473 -0
  8. package/plugins/flow/agents/angular-pipe-builder.md +168 -0
  9. package/plugins/flow/agents/angular-resolver-builder.md +285 -0
  10. package/plugins/flow/agents/angular-service-builder.md +160 -0
  11. package/plugins/flow/agents/angular-signal-state-builder.md +338 -0
  12. package/plugins/flow/agents/angular-test-diagnostician.md +278 -0
  13. package/plugins/flow/agents/angular-testbed-configurator.md +314 -0
  14. package/plugins/flow/agents/arch-scaffolder.md +277 -0
  15. package/plugins/flow/agents/shared-build-verifier.md +159 -0
  16. package/plugins/flow/agents/shared-config-updater.md +309 -0
  17. package/plugins/flow/agents/shared-coverage-enforcer.md +183 -0
  18. package/plugins/flow/agents/shared-error-handler.md +216 -0
  19. package/plugins/flow/agents/shared-file-creator.md +343 -0
  20. package/plugins/flow/agents/shared-impl-orchestrator.md +309 -0
  21. package/plugins/flow/agents/shared-impl-reporter.md +338 -0
  22. package/plugins/flow/agents/shared-linear-subtask-iterator.md +336 -0
  23. package/plugins/flow/agents/shared-logic-implementer.md +242 -0
  24. package/plugins/flow/agents/shared-maia-api.md +25 -0
  25. package/plugins/flow/agents/shared-performance-validator.md +167 -0
  26. package/plugins/flow/agents/shared-project-standardizer.md +204 -0
  27. package/plugins/flow/agents/shared-security-scanner.md +185 -0
  28. package/plugins/flow/agents/shared-style-enforcer.md +229 -0
  29. package/plugins/flow/agents/shared-tdd-developer.md +349 -0
  30. package/plugins/flow/agents/shared-test-fixer.md +185 -0
  31. package/plugins/flow/agents/shared-test-runner.md +190 -0
  32. package/plugins/flow/agents/shared-ui-classifier.md +229 -0
  33. package/plugins/flow/agents/shared-verification-orchestrator.md +193 -0
  34. package/plugins/flow/agents/shared-verification-runner.md +139 -0
  35. package/plugins/flow/agents/ui-a11y-validator.md +304 -0
  36. package/plugins/flow/agents/ui-screenshot-reporter.md +328 -0
  37. package/plugins/flow/agents/ui-web-designer.md +213 -0
  38. package/plugins/flow/commands/commit.md +131 -0
  39. package/plugins/flow/commands/impl.md +625 -0
  40. package/plugins/flow/commands/plan.md +598 -0
  41. package/plugins/flow/commands/push.md +584 -0
  42. package/plugins/flow/skills/a11y-audit/SKILL.md +214 -0
  43. package/plugins/flow/skills/angular-patterns/SKILL.md +191 -0
  44. package/plugins/flow/skills/browser-capture/SKILL.md +238 -0
  45. package/plugins/flow/skills/debug-helper/SKILL.md +375 -0
  46. package/plugins/flow/skills/maia-files-delete/SKILL.md +60 -0
  47. package/plugins/flow/skills/maia-files-upload/SKILL.md +58 -0
  48. package/plugins/flow/skills/nx-conventions/SKILL.md +327 -0
  49. package/plugins/flow/skills/test-unit/SKILL.md +456 -0
  50. package/src/index.d.ts +6 -0
  51. package/src/index.js +10 -0
  52. package/src/index.js.map +1 -0
@@ -0,0 +1,375 @@
1
+ ---
2
+ name: debug-helper
3
+ description: Cross-stack debugging workflows for Angular, NestJS, and MongoDB applications
4
+ ---
5
+
6
+ # Debug Helper
7
+
8
+ This skill provides debugging workflows and techniques for this project's tech stack.
9
+
10
+ ## 1. Angular Debugging
11
+
12
+ ### Component Not Rendering
13
+
14
+ 1. **Check selector usage**
15
+
16
+ ```typescript
17
+ // Verify selector matches
18
+ @Component({ selector: 'app-my-component' })
19
+ // Template: <app-my-component />
20
+ ```
21
+
22
+ 2. **Check imports (standalone)**
23
+
24
+ ```typescript
25
+ @Component({
26
+ standalone: true,
27
+ imports: [MyComponent], // Is it imported?
28
+ })
29
+ ```
30
+
31
+ 3. **Check module exports (non-standalone)**
32
+ ```typescript
33
+ @NgModule({
34
+ exports: [MyComponent], // Is it exported?
35
+ })
36
+ ```
37
+
38
+ ### Signal/Reactive Issues
39
+
40
+ 1. **Signal not updating**
41
+
42
+ ```typescript
43
+ // Wrong: mutating object
44
+ items()[0].name = 'new'; // Won't trigger update
45
+
46
+ // Correct: create new reference
47
+ items.update((arr) =>
48
+ arr.map((item) => (item.id === id ? { ...item, name: 'new' } : item)),
49
+ );
50
+ ```
51
+
52
+ 2. **Effect not running**
53
+
54
+ ```typescript
55
+ // Ensure signal is read inside effect
56
+ effect(() => {
57
+ const value = this.mySignal(); // Must call signal
58
+ console.log('Value changed:', value);
59
+ });
60
+ ```
61
+
62
+ 3. **Computed not recalculating**
63
+ ```typescript
64
+ // Ensure all dependencies are read
65
+ readonly filtered = computed(() => {
66
+ const items = this.items(); // Dependency
67
+ const filter = this.filter(); // Dependency
68
+ return items.filter(i => i.name.includes(filter));
69
+ });
70
+ ```
71
+
72
+ ### Change Detection Issues
73
+
74
+ ```typescript
75
+ // Force change detection
76
+ constructor(private cdr: ChangeDetectorRef) {}
77
+
78
+ // After async operation
79
+ this.cdr.detectChanges();
80
+
81
+ // Or mark for check (OnPush)
82
+ this.cdr.markForCheck();
83
+ ```
84
+
85
+ ### HTTP Debugging
86
+
87
+ ```typescript
88
+ // Add HTTP interceptor for logging
89
+ export const loggingInterceptor: HttpInterceptorFn = (req, next) => {
90
+ console.log('Request:', req.method, req.url);
91
+ return next(req).pipe(
92
+ tap({
93
+ next: (event) => {
94
+ if (event instanceof HttpResponse) {
95
+ console.log('Response:', event.status, event.body);
96
+ }
97
+ },
98
+ error: (error) => console.error('HTTP Error:', error),
99
+ }),
100
+ );
101
+ };
102
+ ```
103
+
104
+ ### Browser DevTools
105
+
106
+ 1. **Angular DevTools** - Install Chrome extension
107
+ 2. **Component inspector** - Click "Components" tab
108
+ 3. **Profiler** - Record change detection cycles
109
+ 4. **Network tab** - Check API calls
110
+
111
+ ## 2. NestJS Debugging
112
+
113
+ ### Request Not Reaching Controller
114
+
115
+ 1. **Check route path**
116
+
117
+ ```typescript
118
+ @Controller('features') // /features
119
+ @Get(':id') // /features/:id
120
+ ```
121
+
122
+ 2. **Check module imports**
123
+
124
+ ```typescript
125
+ @Module({
126
+ imports: [FeatureModule], // Is module imported?
127
+ })
128
+ export class AppModule {}
129
+ ```
130
+
131
+ 3. **Check guards/interceptors**
132
+ ```typescript
133
+ @UseGuards(AuthGuard) // Is guard blocking?
134
+ ```
135
+
136
+ ### Dependency Injection Errors
137
+
138
+ ```
139
+ Error: Nest can't resolve dependencies of FeatureService
140
+ ```
141
+
142
+ **Solutions:**
143
+
144
+ 1. Check provider is in module
145
+
146
+ ```typescript
147
+ @Module({
148
+ providers: [FeatureService, FeatureRepository],
149
+ })
150
+ ```
151
+
152
+ 2. Check circular dependencies
153
+
154
+ ```typescript
155
+ // Use forwardRef
156
+ @Inject(forwardRef(() => OtherService))
157
+ private readonly other: OtherService,
158
+ ```
159
+
160
+ 3. Check module exports
161
+ ```typescript
162
+ @Module({
163
+ providers: [SharedService],
164
+ exports: [SharedService], // Must export if used elsewhere
165
+ })
166
+ ```
167
+
168
+ ### Logging
169
+
170
+ ```typescript
171
+ import { Logger } from '@nestjs/common';
172
+
173
+ @Injectable()
174
+ export class FeatureService {
175
+ private readonly logger = new Logger(FeatureService.name);
176
+
177
+ async findAll() {
178
+ this.logger.log('Finding all features');
179
+ this.logger.debug('Debug info');
180
+ this.logger.warn('Warning');
181
+ this.logger.error('Error occurred', error.stack);
182
+ }
183
+ }
184
+ ```
185
+
186
+ ### Exception Debugging
187
+
188
+ ```typescript
189
+ // Global exception filter
190
+ @Catch()
191
+ export class AllExceptionsFilter implements ExceptionFilter {
192
+ private readonly logger = new Logger('ExceptionFilter');
193
+
194
+ catch(exception: unknown, host: ArgumentsHost) {
195
+ const ctx = host.switchToHttp();
196
+ const response = ctx.getResponse();
197
+ const request = ctx.getRequest();
198
+
199
+ this.logger.error(
200
+ `${request.method} ${request.url}`,
201
+ exception instanceof Error ? exception.stack : exception,
202
+ );
203
+
204
+ // Return error response
205
+ }
206
+ }
207
+ ```
208
+
209
+ ## 3. MongoDB/Mongoose Debugging
210
+
211
+ ### Connection Issues
212
+
213
+ ```typescript
214
+ // Log connection events
215
+ mongoose.connection.on('connected', () => console.log('MongoDB connected'));
216
+ mongoose.connection.on('error', (err) => console.error('MongoDB error:', err));
217
+ mongoose.connection.on('disconnected', () =>
218
+ console.log('MongoDB disconnected'),
219
+ );
220
+ ```
221
+
222
+ ### Query Debugging
223
+
224
+ ```typescript
225
+ // Enable Mongoose debug mode
226
+ mongoose.set('debug', true);
227
+
228
+ // Or for specific query
229
+ const result = await this.model.find({ status: 'active' });
230
+ console.log('Query:', this.model.find({ status: 'active' }).getQuery());
231
+ ```
232
+
233
+ ### Aggregation Debugging
234
+
235
+ ```typescript
236
+ // Log pipeline
237
+ const pipeline = [
238
+ { $match: { status: 'active' } },
239
+ { $group: { _id: '$category', count: { $sum: 1 } } },
240
+ ];
241
+ console.log('Pipeline:', JSON.stringify(pipeline, null, 2));
242
+
243
+ // Explain query
244
+ const explanation = await this.model.aggregate(pipeline).explain();
245
+ console.log('Explain:', explanation);
246
+ ```
247
+
248
+ ### Index Issues
249
+
250
+ ```bash
251
+ # Check indexes in MongoDB shell
252
+ db.features.getIndexes()
253
+
254
+ # Check query uses index
255
+ db.features.find({ status: 'active' }).explain('executionStats')
256
+ ```
257
+
258
+ ## 4. Common Debugging Patterns
259
+
260
+ ### Console Debugging
261
+
262
+ ```typescript
263
+ // Temporary debug logs (remove before commit)
264
+ console.log('DEBUG:', variable);
265
+ console.table(arrayOfObjects);
266
+ console.group('Group');
267
+ console.log('Item 1');
268
+ console.log('Item 2');
269
+ console.groupEnd();
270
+ console.time('Operation');
271
+ // ... operation
272
+ console.timeEnd('Operation');
273
+ ```
274
+
275
+ ### Breakpoint Debugging
276
+
277
+ ```typescript
278
+ // Add debugger statement
279
+ function processData(data: Data) {
280
+ debugger; // Execution pauses here in DevTools
281
+ return transform(data);
282
+ }
283
+ ```
284
+
285
+ ### VS Code Launch Configuration
286
+
287
+ ```json
288
+ // .vscode/launch.json
289
+ {
290
+ "version": "0.2.0",
291
+ "configurations": [
292
+ {
293
+ "type": "node",
294
+ "request": "launch",
295
+ "name": "Debug NestJS",
296
+ "runtimeArgs": ["-r", "ts-node/register"],
297
+ "args": ["${workspaceFolder}/apps/api/src/main.ts"],
298
+ "cwd": "${workspaceFolder}"
299
+ },
300
+ {
301
+ "type": "chrome",
302
+ "request": "launch",
303
+ "name": "Debug Angular",
304
+ "url": "http://localhost:4210",
305
+ "webRoot": "${workspaceFolder}/apps/web/src"
306
+ }
307
+ ]
308
+ }
309
+ ```
310
+
311
+ ## 5. Error Investigation Workflow
312
+
313
+ ### Step 1: Reproduce
314
+
315
+ - Get exact steps to reproduce
316
+ - Note environment (browser, Node version)
317
+
318
+ ### Step 2: Isolate
319
+
320
+ - Identify component/service causing issue
321
+ - Check if issue is frontend, backend, or database
322
+
323
+ ### Step 3: Trace
324
+
325
+ - Add logging at key points
326
+ - Use debugger to step through code
327
+ - Check network requests/responses
328
+
329
+ ### Step 4: Root Cause
330
+
331
+ - Identify the actual cause (not symptoms)
332
+ - Document findings
333
+
334
+ ### Step 5: Fix & Verify
335
+
336
+ - Apply fix
337
+ - Write test that catches the bug
338
+ - Verify fix doesn't introduce regressions
339
+
340
+ ## 6. Quick Fixes
341
+
342
+ ### "Cannot read property of undefined"
343
+
344
+ ```typescript
345
+ // Use optional chaining
346
+ const name = user?.profile?.name;
347
+
348
+ // With nullish coalescing
349
+ const name = user?.profile?.name ?? 'Unknown';
350
+ ```
351
+
352
+ ### "Expression has changed after it was checked"
353
+
354
+ ```typescript
355
+ // Option 1: setTimeout
356
+ ngAfterViewInit() {
357
+ setTimeout(() => this.value = newValue);
358
+ }
359
+
360
+ // Option 2: ChangeDetectorRef
361
+ ngAfterViewInit() {
362
+ this.value = newValue;
363
+ this.cdr.detectChanges();
364
+ }
365
+ ```
366
+
367
+ ### "Circular dependency detected"
368
+
369
+ ```typescript
370
+ // Use forwardRef
371
+ @Inject(forwardRef(() => ServiceB))
372
+ private serviceB: ServiceB
373
+
374
+ // Or refactor to remove circular dependency
375
+ ```
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: maia-files-delete
3
+ description: Delete a file from Maia API temporary storage.
4
+ allowed-tools:
5
+ - Bash
6
+ ---
7
+
8
+ # Maia Files Delete
9
+
10
+ Delete a file from Maia AI API temporary storage to free up space.
11
+
12
+ ## API Endpoint
13
+
14
+ ```
15
+ DELETE https://maia-ai-api.smartsoft.biz.pl/files/{id}
16
+ ```
17
+
18
+ ## Usage
19
+
20
+ When given a file ID or URL, delete it:
21
+
22
+ ```bash
23
+ curl -s -X DELETE https://maia-ai-api.smartsoft.biz.pl/files/{id}
24
+ ```
25
+
26
+ ## Process
27
+
28
+ 1. Extract ID from input (can be full URL or just ID)
29
+ 2. Send DELETE request
30
+ 3. Confirm deletion
31
+
32
+ ## Input Formats
33
+
34
+ Accept either:
35
+
36
+ - Full URL: `https://maia-ai-api.smartsoft.biz.pl/files/abc123`
37
+ - Just ID: `abc123`
38
+
39
+ ## Output Format
40
+
41
+ After successful deletion:
42
+
43
+ ```
44
+ Deleted: {id}
45
+ ```
46
+
47
+ ## Batch Deletion
48
+
49
+ When given multiple IDs, delete them all:
50
+
51
+ ```bash
52
+ for id in id1 id2 id3; do
53
+ curl -s -X DELETE "https://maia-ai-api.smartsoft.biz.pl/files/$id"
54
+ echo "Deleted: $id"
55
+ done
56
+ ```
57
+
58
+ ## Error Handling
59
+
60
+ If deletion fails, report the error but continue with remaining files.
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: maia-files-upload
3
+ description: Upload a file to Maia API temporary storage.
4
+ allowed-tools:
5
+ - Bash
6
+ ---
7
+
8
+ # Maia Files Upload
9
+
10
+ Upload a file to the Maia AI API temporary storage and get a URL for use in Linear comments or markdown.
11
+
12
+ ## API Endpoint
13
+
14
+ ```
15
+ POST https://maia-ai-api.smartsoft.biz.pl/files
16
+ ```
17
+
18
+ ## Usage
19
+
20
+ When given a file path, upload it:
21
+
22
+ ```bash
23
+ curl -s -X POST https://maia-ai-api.smartsoft.biz.pl/files \
24
+ -F "file=@/path/to/file.png"
25
+ ```
26
+
27
+ ## Response
28
+
29
+ ```json
30
+ { "id": "abc123def456" }
31
+ ```
32
+
33
+ ## Result URL
34
+
35
+ ```
36
+ https://maia-ai-api.smartsoft.biz.pl/files/{id}
37
+ ```
38
+
39
+ ## Process
40
+
41
+ 1. Validate file exists: `test -f "/path/to/file" && echo "OK"`
42
+ 2. Upload file using curl
43
+ 3. Extract ID from JSON response
44
+ 4. Return ID and full URL
45
+
46
+ ## Output Format
47
+
48
+ After successful upload, return:
49
+
50
+ ```
51
+ Uploaded: {filename}
52
+ ID: {id}
53
+ URL: https://maia-ai-api.smartsoft.biz.pl/files/{id}
54
+ ```
55
+
56
+ ## Error Handling
57
+
58
+ If file doesn't exist or upload fails, report the error clearly.