@smartsoft001-mobilems/claude-plugins 2.84.0 → 2.86.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 (136) hide show
  1. package/.claude-plugin/marketplace.json +2 -6
  2. package/README.md +97 -0
  3. package/package.json +2 -2
  4. package/plugins/flow/scripts/refresh-mobilems-api-spec.sh +372 -0
  5. package/plugins/flow/skills/mobilems-docs-reader/SKILL.md +116 -0
  6. package/plugins/flow-external/scripts/refresh-mobilems-api-spec.sh +372 -0
  7. package/plugins/flow-external/skills/mobilems-docs-reader/SKILL.md +116 -0
  8. package/plugins/flow-legacy/scripts/refresh-mobilems-api-spec.sh +372 -0
  9. package/plugins/flow-legacy/skills/mobilems-docs-reader/SKILL.md +116 -0
  10. package/plugins/mobilems/.claude-plugin/README.md +30 -0
  11. package/plugins/mobilems/.claude-plugin/plugin.json +5 -0
  12. package/plugins/mobilems/scripts/refresh-mobilems-api-spec.sh +372 -0
  13. package/plugins/mobilems/skills/mobilems-docs-reader/SKILL.md +116 -0
  14. package/plugins/flow/.claude-plugin/README.md +0 -91
  15. package/plugins/flow/.claude-plugin/merge-permissions.js +0 -97
  16. package/plugins/flow/.claude-plugin/plugin.json +0 -5
  17. package/plugins/flow/.claude-plugin/settings.template.json +0 -86
  18. package/plugins/flow/agents/angular-component-scaffolder.md +0 -175
  19. package/plugins/flow/agents/angular-directive-builder.md +0 -153
  20. package/plugins/flow/agents/angular-guard-builder.md +0 -243
  21. package/plugins/flow/agents/angular-jest-test-writer.md +0 -474
  22. package/plugins/flow/agents/angular-pipe-builder.md +0 -169
  23. package/plugins/flow/agents/angular-resolver-builder.md +0 -286
  24. package/plugins/flow/agents/angular-service-builder.md +0 -161
  25. package/plugins/flow/agents/angular-signal-state-builder.md +0 -339
  26. package/plugins/flow/agents/angular-test-diagnostician.md +0 -279
  27. package/plugins/flow/agents/angular-testbed-configurator.md +0 -315
  28. package/plugins/flow/agents/arch-scaffolder.md +0 -278
  29. package/plugins/flow/agents/e2e-data-testid-injector.md +0 -197
  30. package/plugins/flow/agents/e2e-project-scaffolder.md +0 -194
  31. package/plugins/flow/agents/e2e-test-writer.md +0 -350
  32. package/plugins/flow/agents/shared-agent-evolver.md +0 -294
  33. package/plugins/flow/agents/shared-build-verifier.md +0 -160
  34. package/plugins/flow/agents/shared-config-updater.md +0 -310
  35. package/plugins/flow/agents/shared-coverage-enforcer.md +0 -184
  36. package/plugins/flow/agents/shared-error-handler.md +0 -217
  37. package/plugins/flow/agents/shared-file-creator.md +0 -344
  38. package/plugins/flow/agents/shared-impl-orchestrator.md +0 -312
  39. package/plugins/flow/agents/shared-impl-reporter.md +0 -339
  40. package/plugins/flow/agents/shared-impl-teammate.md +0 -201
  41. package/plugins/flow/agents/shared-linear-subtask-iterator.md +0 -337
  42. package/plugins/flow/agents/shared-logic-implementer.md +0 -243
  43. package/plugins/flow/agents/shared-maia-api.md +0 -26
  44. package/plugins/flow/agents/shared-parallelization-analyzer.md +0 -343
  45. package/plugins/flow/agents/shared-performance-validator.md +0 -168
  46. package/plugins/flow/agents/shared-plan-perspective.md +0 -269
  47. package/plugins/flow/agents/shared-project-standardizer.md +0 -205
  48. package/plugins/flow/agents/shared-report-synthesizer.md +0 -188
  49. package/plugins/flow/agents/shared-review-teammate.md +0 -189
  50. package/plugins/flow/agents/shared-security-scanner.md +0 -186
  51. package/plugins/flow/agents/shared-style-enforcer.md +0 -230
  52. package/plugins/flow/agents/shared-subtask-dependency-analyzer.md +0 -188
  53. package/plugins/flow/agents/shared-tdd-developer.md +0 -350
  54. package/plugins/flow/agents/shared-team-coordinator.md +0 -189
  55. package/plugins/flow/agents/shared-test-fixer.md +0 -186
  56. package/plugins/flow/agents/shared-test-runner.md +0 -191
  57. package/plugins/flow/agents/shared-ui-classifier.md +0 -263
  58. package/plugins/flow/agents/shared-verification-orchestrator.md +0 -194
  59. package/plugins/flow/agents/shared-verification-runner.md +0 -140
  60. package/plugins/flow/agents/ui-a11y-validator.md +0 -305
  61. package/plugins/flow/agents/ui-screenshot-reporter.md +0 -329
  62. package/plugins/flow/agents/ui-web-designer.md +0 -214
  63. package/plugins/flow/skills/a11y-audit/SKILL.md +0 -214
  64. package/plugins/flow/skills/angular-patterns/SKILL.md +0 -191
  65. package/plugins/flow/skills/browser-capture/SKILL.md +0 -238
  66. package/plugins/flow/skills/commit/SKILL.md +0 -259
  67. package/plugins/flow/skills/debug-helper/SKILL.md +0 -375
  68. package/plugins/flow/skills/impl/SKILL.md +0 -992
  69. package/plugins/flow/skills/linear-suggestion/SKILL.md +0 -132
  70. package/plugins/flow/skills/maia-files-delete/SKILL.md +0 -59
  71. package/plugins/flow/skills/maia-files-upload/SKILL.md +0 -57
  72. package/plugins/flow/skills/nx-conventions/SKILL.md +0 -326
  73. package/plugins/flow/skills/plan/SKILL.md +0 -1003
  74. package/plugins/flow/skills/push/SKILL.md +0 -737
  75. package/plugins/flow/skills/review/SKILL.md +0 -443
  76. package/plugins/flow/skills/test-e2e/SKILL.md +0 -161
  77. package/plugins/flow/skills/test-unit/SKILL.md +0 -456
  78. package/plugins/flow-external/.claude-plugin/README.md +0 -152
  79. package/plugins/flow-external/.claude-plugin/merge-permissions.js +0 -80
  80. package/plugins/flow-external/.claude-plugin/plugin.json +0 -5
  81. package/plugins/flow-external/.claude-plugin/settings.template.json +0 -78
  82. package/plugins/flow-external/agents/angular-component-scaffolder.md +0 -269
  83. package/plugins/flow-external/agents/angular-directive-builder.md +0 -130
  84. package/plugins/flow-external/agents/angular-guard-builder.md +0 -70
  85. package/plugins/flow-external/agents/angular-pipe-builder.md +0 -82
  86. package/plugins/flow-external/agents/angular-resolver-builder.md +0 -74
  87. package/plugins/flow-external/agents/angular-service-builder.md +0 -160
  88. package/plugins/flow-external/agents/angular-state-builder.md +0 -254
  89. package/plugins/flow-external/agents/shared-build-verifier.md +0 -67
  90. package/plugins/flow-external/agents/shared-impl-orchestrator.md +0 -88
  91. package/plugins/flow-external/agents/shared-impl-reporter.md +0 -107
  92. package/plugins/flow-external/agents/shared-linear-subtask-iterator.md +0 -70
  93. package/plugins/flow-external/agents/shared-ui-classifier.md +0 -38
  94. package/plugins/flow-external/agents/ui-web-designer.md +0 -179
  95. package/plugins/flow-external/skills/a11y-audit/SKILL.md +0 -96
  96. package/plugins/flow-external/skills/angular-cli-conventions/SKILL.md +0 -267
  97. package/plugins/flow-external/skills/angular-patterns/SKILL.md +0 -170
  98. package/plugins/flow-external/skills/browser-capture/SKILL.md +0 -68
  99. package/plugins/flow-external/skills/commit/SKILL.md +0 -114
  100. package/plugins/flow-external/skills/debug-helper/SKILL.md +0 -131
  101. package/plugins/flow-external/skills/impl/SKILL.md +0 -217
  102. package/plugins/flow-external/skills/linear-suggestion/SKILL.md +0 -62
  103. package/plugins/flow-external/skills/maia-files-delete/SKILL.md +0 -34
  104. package/plugins/flow-external/skills/maia-files-upload/SKILL.md +0 -41
  105. package/plugins/flow-external/skills/plan/SKILL.md +0 -302
  106. package/plugins/flow-external/skills/push/SKILL.md +0 -210
  107. package/plugins/flow-legacy/.claude-plugin/README.md +0 -143
  108. package/plugins/flow-legacy/.claude-plugin/merge-permissions.js +0 -94
  109. package/plugins/flow-legacy/.claude-plugin/plugin.json +0 -5
  110. package/plugins/flow-legacy/.claude-plugin/settings.template.json +0 -79
  111. package/plugins/flow-legacy/agents/angular-component-scaffolder.md +0 -323
  112. package/plugins/flow-legacy/agents/angular-directive-builder.md +0 -258
  113. package/plugins/flow-legacy/agents/angular-guard-builder.md +0 -322
  114. package/plugins/flow-legacy/agents/angular-pipe-builder.md +0 -227
  115. package/plugins/flow-legacy/agents/angular-resolver-builder.md +0 -332
  116. package/plugins/flow-legacy/agents/angular-service-builder.md +0 -271
  117. package/plugins/flow-legacy/agents/angular-state-builder.md +0 -479
  118. package/plugins/flow-legacy/agents/shared-impl-orchestrator.md +0 -174
  119. package/plugins/flow-legacy/agents/shared-impl-reporter.md +0 -204
  120. package/plugins/flow-legacy/agents/shared-linear-subtask-iterator.md +0 -187
  121. package/plugins/flow-legacy/agents/shared-tdd-developer.md +0 -306
  122. package/plugins/flow-legacy/agents/shared-test-runner.md +0 -131
  123. package/plugins/flow-legacy/agents/shared-ui-classifier.md +0 -145
  124. package/plugins/flow-legacy/skills/a11y-audit/SKILL.md +0 -214
  125. package/plugins/flow-legacy/skills/angular-patterns/SKILL.md +0 -346
  126. package/plugins/flow-legacy/skills/browser-capture/SKILL.md +0 -238
  127. package/plugins/flow-legacy/skills/commit/SKILL.md +0 -215
  128. package/plugins/flow-legacy/skills/debug-helper/SKILL.md +0 -395
  129. package/plugins/flow-legacy/skills/impl/SKILL.md +0 -710
  130. package/plugins/flow-legacy/skills/linear-suggestion/SKILL.md +0 -132
  131. package/plugins/flow-legacy/skills/maia-files-delete/SKILL.md +0 -59
  132. package/plugins/flow-legacy/skills/maia-files-upload/SKILL.md +0 -57
  133. package/plugins/flow-legacy/skills/nx-conventions/SKILL.md +0 -368
  134. package/plugins/flow-legacy/skills/plan/SKILL.md +0 -708
  135. package/plugins/flow-legacy/skills/push/SKILL.md +0 -623
  136. package/plugins/flow-legacy/skills/test-unit/SKILL.md +0 -500
@@ -1,271 +0,0 @@
1
- ---
2
- name: angular-service-builder
3
- description: Create Angular 14 injectable services with BehaviorSubject and constructor DI. Use when building services for data management and business logic in legacy projects.
4
- tools: Read, Write, Glob, Grep
5
- model: sonnet
6
- color: "#DD0031"
7
- ---
8
-
9
- You are an expert at creating Angular 14 services following legacy best practices.
10
-
11
- ## Primary Responsibility
12
-
13
- Create Angular services using Angular 14 patterns including `BehaviorSubject` for reactive state and constructor injection for dependency injection.
14
-
15
- ## When to Use
16
-
17
- - Creating new Angular services in legacy projects (Angular 14)
18
- - Building data access services
19
- - Implementing state management with BehaviorSubject/Observable
20
-
21
- ## CRITICAL: Angular 14 Patterns (MANDATORY)
22
-
23
- **NEVER use modern Angular 20+ patterns. ALWAYS use these legacy patterns:**
24
-
25
- | Feature | ✅ CORRECT (Angular 14) | ❌ WRONG (Angular 20+) |
26
- |---------|------------------------|----------------------|
27
- | DI | Constructor injection | `inject()` |
28
- | Reactive state | `BehaviorSubject` | `signal()` |
29
- | Public state | `.asObservable()` | `.asReadonly()` |
30
- | Derived state | `pipe(map())` or getter | `computed()` |
31
- | Side effects | `subscribe()` | `effect()` |
32
-
33
- ## Project-Specific Patterns
34
-
35
- This project uses:
36
-
37
- - **`@Injectable({ providedIn: 'root' })`** for root-level services
38
- - **`@Injectable()`** (without providedIn) for module-scoped services
39
- - **`BehaviorSubject`** for reactive state
40
- - **`.asObservable()`** to expose state publicly
41
- - **Constructor injection** for DI (NOT `inject()`)
42
-
43
- ## Service Templates
44
-
45
- ### Root-Level Service with BehaviorSubject
46
-
47
- ```typescript
48
- import { Injectable } from '@angular/core';
49
- import { BehaviorSubject, Observable } from 'rxjs';
50
-
51
- export interface ModalConfig {
52
- title?: string;
53
- message: string;
54
- confirmText?: string;
55
- cancelText?: string;
56
- }
57
-
58
- @Injectable({
59
- providedIn: 'root',
60
- })
61
- export class ModalService {
62
- // Private BehaviorSubjects (NOT signals)
63
- private readonly _isOpen$ = new BehaviorSubject<boolean>(false);
64
- private readonly _config$ = new BehaviorSubject<ModalConfig | null>(null);
65
-
66
- // Public Observables (NOT readonly signals)
67
- readonly isOpen$: Observable<boolean> = this._isOpen$.asObservable();
68
- readonly config$: Observable<ModalConfig | null> = this._config$.asObservable();
69
-
70
- // Synchronous getters for current value (when needed)
71
- get isOpen(): boolean {
72
- return this._isOpen$.getValue();
73
- }
74
-
75
- get config(): ModalConfig | null {
76
- return this._config$.getValue();
77
- }
78
-
79
- open(config: ModalConfig): void {
80
- this._config$.next(config);
81
- this._isOpen$.next(true);
82
- }
83
-
84
- close(): void {
85
- this._isOpen$.next(false);
86
- this._config$.next(null);
87
- }
88
- }
89
- ```
90
-
91
- ### Service with Constructor Injection
92
-
93
- ```typescript
94
- import { Injectable, Inject, PLATFORM_ID } from '@angular/core';
95
- import { isPlatformBrowser } from '@angular/common';
96
- import { TranslateService } from '@ngx-translate/core';
97
-
98
- @Injectable({ providedIn: 'root' })
99
- export class LocalStorageService {
100
- // Constructor injection (NOT inject())
101
- constructor(
102
- private readonly translateService: TranslateService,
103
- @Inject(PLATFORM_ID) private readonly platformId: Object
104
- ) {}
105
-
106
- initLang(forceLang?: string): void {
107
- if (isPlatformBrowser(this.platformId)) {
108
- const savedLang = localStorage.getItem('LANGUAGE');
109
- const lang = forceLang ?? savedLang ?? 'pl';
110
- this.translateService.use(lang);
111
- }
112
- }
113
-
114
- saveLanguagePreference(lang: string): void {
115
- if (typeof localStorage !== 'undefined') {
116
- localStorage.setItem('LANGUAGE', lang);
117
- }
118
- }
119
- }
120
- ```
121
-
122
- ### Data Service with HTTP
123
-
124
- ```typescript
125
- import { Injectable } from '@angular/core';
126
- import { HttpClient } from '@angular/common/http';
127
- import { BehaviorSubject, Observable } from 'rxjs';
128
- import { map, tap, catchError } from 'rxjs/operators';
129
-
130
- import { environment } from '@env/environment';
131
-
132
- export interface Item {
133
- id: string;
134
- name: string;
135
- }
136
-
137
- @Injectable({
138
- providedIn: 'root',
139
- })
140
- export class ItemService {
141
- private readonly _items$ = new BehaviorSubject<Item[]>([]);
142
- private readonly _isLoading$ = new BehaviorSubject<boolean>(false);
143
- private readonly _error$ = new BehaviorSubject<string | null>(null);
144
-
145
- readonly items$: Observable<Item[]> = this._items$.asObservable();
146
- readonly isLoading$: Observable<boolean> = this._isLoading$.asObservable();
147
- readonly error$: Observable<string | null> = this._error$.asObservable();
148
-
149
- // Derived Observable (NOT computed())
150
- readonly itemCount$: Observable<number> = this._items$.pipe(
151
- map(items => items.length)
152
- );
153
-
154
- readonly hasItems$: Observable<boolean> = this._items$.pipe(
155
- map(items => items.length > 0)
156
- );
157
-
158
- constructor(private readonly http: HttpClient) {}
159
-
160
- loadItems(): Observable<Item[]> {
161
- this._isLoading$.next(true);
162
- this._error$.next(null);
163
-
164
- return this.http.get<Item[]>(`${environment.apiUrl}/items`).pipe(
165
- tap(items => {
166
- this._items$.next(items);
167
- this._isLoading$.next(false);
168
- }),
169
- catchError(error => {
170
- this._error$.next(error.message);
171
- this._isLoading$.next(false);
172
- throw error;
173
- })
174
- );
175
- }
176
-
177
- addItem(item: Item): void {
178
- const current = this._items$.getValue();
179
- this._items$.next([...current, item]);
180
- }
181
-
182
- removeItem(id: string): void {
183
- const current = this._items$.getValue();
184
- this._items$.next(current.filter(item => item.id !== id));
185
- }
186
-
187
- updateItem(id: string, updates: Partial<Item>): void {
188
- const current = this._items$.getValue();
189
- this._items$.next(
190
- current.map(item =>
191
- item.id === id ? { ...item, ...updates } : item
192
- )
193
- );
194
- }
195
- }
196
- ```
197
-
198
- ### Data Service Extending Base
199
-
200
- ```typescript
201
- import { Injectable } from '@angular/core';
202
- import { CrudBaseService } from '@smartsoft001-mobilems/angular';
203
- import { firstValueFrom } from 'rxjs';
204
-
205
- import { environment } from '@env/environment';
206
- import { FeatureModel } from '../models/feature.model';
207
-
208
- @Injectable()
209
- export class FeatureService extends CrudBaseService<FeatureModel> {
210
- getUrlNameForDetails(): string {
211
- return 'feature';
212
- }
213
-
214
- protected override getBaseListUrl(
215
- page: number,
216
- filter: { limit: number; searchText?: string }
217
- ): string {
218
- let url = `${this.config.apiUrl}feature/search/page/${page}?maxPerPage=${filter.limit}`;
219
- if (filter.searchText) {
220
- url += `&q=${encodeURIComponent(filter.searchText)}`;
221
- }
222
- return url;
223
- }
224
-
225
- getUrlNameForList(): string {
226
- return '';
227
- }
228
- }
229
- ```
230
-
231
- ## Checklist
232
-
233
- - [ ] Uses `@Injectable({ providedIn: 'root' })` for root services
234
- - [ ] Uses constructor injection (NOT `inject()`)
235
- - [ ] Uses `BehaviorSubject` for reactive state (NOT signals)
236
- - [ ] Uses `.asObservable()` for public state (NOT `.asReadonly()`)
237
- - [ ] Private subjects prefixed with `_` and suffixed with `$`
238
- - [ ] Public observables suffixed with `$`
239
- - [ ] SSR-safe (checks `isPlatformBrowser` for browser APIs)
240
- - [ ] Uses `@Inject()` decorator for injection tokens
241
-
242
- ## Output Format
243
-
244
- ```markdown
245
- ## Service Created
246
-
247
- ### File
248
-
249
- `feature.service.ts`
250
-
251
- ### API
252
-
253
- | Method | Parameters | Returns | Description |
254
- | ------- | --------------------- | ------------------- | ------------ |
255
- | `open` | `config: ModalConfig` | `void` | Opens modal |
256
- | `close` | - | `void` | Closes modal |
257
-
258
- ### Observables
259
-
260
- | Observable | Type | Description |
261
- | ---------- | ----------------------------------- | ---------------- |
262
- | `isOpen$` | `Observable<boolean>` | Modal open state |
263
- | `config$` | `Observable<ModalConfig \| null>` | Current config |
264
-
265
- ### Angular 14 Patterns Used
266
-
267
- - ✅ Constructor injection
268
- - ✅ BehaviorSubject for state
269
- - ✅ .asObservable() for public state
270
- - ✅ pipe(map()) for derived values
271
- ```