@smartsoft001-mobilems/claude-plugins 2.85.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 (132) hide show
  1. package/.claude-plugin/marketplace.json +2 -6
  2. package/package.json +2 -2
  3. package/plugins/mobilems/.claude-plugin/README.md +30 -0
  4. package/plugins/mobilems/.claude-plugin/plugin.json +5 -0
  5. package/plugins/mobilems/scripts/refresh-mobilems-api-spec.sh +372 -0
  6. package/plugins/mobilems/skills/mobilems-docs-reader/SKILL.md +116 -0
  7. package/plugins/flow/.claude-plugin/README.md +0 -91
  8. package/plugins/flow/.claude-plugin/merge-permissions.js +0 -97
  9. package/plugins/flow/.claude-plugin/plugin.json +0 -5
  10. package/plugins/flow/.claude-plugin/settings.template.json +0 -86
  11. package/plugins/flow/agents/angular-component-scaffolder.md +0 -175
  12. package/plugins/flow/agents/angular-directive-builder.md +0 -153
  13. package/plugins/flow/agents/angular-guard-builder.md +0 -243
  14. package/plugins/flow/agents/angular-jest-test-writer.md +0 -474
  15. package/plugins/flow/agents/angular-pipe-builder.md +0 -169
  16. package/plugins/flow/agents/angular-resolver-builder.md +0 -286
  17. package/plugins/flow/agents/angular-service-builder.md +0 -161
  18. package/plugins/flow/agents/angular-signal-state-builder.md +0 -339
  19. package/plugins/flow/agents/angular-test-diagnostician.md +0 -279
  20. package/plugins/flow/agents/angular-testbed-configurator.md +0 -315
  21. package/plugins/flow/agents/arch-scaffolder.md +0 -278
  22. package/plugins/flow/agents/e2e-data-testid-injector.md +0 -197
  23. package/plugins/flow/agents/e2e-project-scaffolder.md +0 -194
  24. package/plugins/flow/agents/e2e-test-writer.md +0 -350
  25. package/plugins/flow/agents/shared-agent-evolver.md +0 -294
  26. package/plugins/flow/agents/shared-build-verifier.md +0 -160
  27. package/plugins/flow/agents/shared-config-updater.md +0 -310
  28. package/plugins/flow/agents/shared-coverage-enforcer.md +0 -184
  29. package/plugins/flow/agents/shared-error-handler.md +0 -217
  30. package/plugins/flow/agents/shared-file-creator.md +0 -344
  31. package/plugins/flow/agents/shared-impl-orchestrator.md +0 -312
  32. package/plugins/flow/agents/shared-impl-reporter.md +0 -368
  33. package/plugins/flow/agents/shared-impl-teammate.md +0 -201
  34. package/plugins/flow/agents/shared-linear-subtask-iterator.md +0 -337
  35. package/plugins/flow/agents/shared-logic-implementer.md +0 -243
  36. package/plugins/flow/agents/shared-maia-api.md +0 -26
  37. package/plugins/flow/agents/shared-parallelization-analyzer.md +0 -343
  38. package/plugins/flow/agents/shared-performance-validator.md +0 -168
  39. package/plugins/flow/agents/shared-plan-perspective.md +0 -269
  40. package/plugins/flow/agents/shared-project-standardizer.md +0 -205
  41. package/plugins/flow/agents/shared-report-synthesizer.md +0 -188
  42. package/plugins/flow/agents/shared-review-teammate.md +0 -189
  43. package/plugins/flow/agents/shared-security-scanner.md +0 -186
  44. package/plugins/flow/agents/shared-style-enforcer.md +0 -230
  45. package/plugins/flow/agents/shared-subtask-dependency-analyzer.md +0 -188
  46. package/plugins/flow/agents/shared-tdd-developer.md +0 -350
  47. package/plugins/flow/agents/shared-team-coordinator.md +0 -189
  48. package/plugins/flow/agents/shared-test-fixer.md +0 -186
  49. package/plugins/flow/agents/shared-test-runner.md +0 -191
  50. package/plugins/flow/agents/shared-ui-classifier.md +0 -263
  51. package/plugins/flow/agents/shared-verification-orchestrator.md +0 -194
  52. package/plugins/flow/agents/shared-verification-runner.md +0 -140
  53. package/plugins/flow/agents/ui-a11y-validator.md +0 -305
  54. package/plugins/flow/agents/ui-screenshot-reporter.md +0 -329
  55. package/plugins/flow/agents/ui-web-designer.md +0 -214
  56. package/plugins/flow/scripts/compute-session-tokens.sh +0 -39
  57. package/plugins/flow/skills/a11y-audit/SKILL.md +0 -214
  58. package/plugins/flow/skills/angular-patterns/SKILL.md +0 -191
  59. package/plugins/flow/skills/browser-capture/SKILL.md +0 -238
  60. package/plugins/flow/skills/commit/SKILL.md +0 -259
  61. package/plugins/flow/skills/debug-helper/SKILL.md +0 -375
  62. package/plugins/flow/skills/impl/SKILL.md +0 -992
  63. package/plugins/flow/skills/linear-suggestion/SKILL.md +0 -132
  64. package/plugins/flow/skills/maia-files-delete/SKILL.md +0 -59
  65. package/plugins/flow/skills/maia-files-upload/SKILL.md +0 -57
  66. package/plugins/flow/skills/nx-conventions/SKILL.md +0 -326
  67. package/plugins/flow/skills/plan/SKILL.md +0 -1033
  68. package/plugins/flow/skills/push/SKILL.md +0 -759
  69. package/plugins/flow/skills/review/SKILL.md +0 -443
  70. package/plugins/flow/skills/test-e2e/SKILL.md +0 -161
  71. package/plugins/flow/skills/test-unit/SKILL.md +0 -456
  72. package/plugins/flow-external/.claude-plugin/README.md +0 -152
  73. package/plugins/flow-external/.claude-plugin/merge-permissions.js +0 -80
  74. package/plugins/flow-external/.claude-plugin/plugin.json +0 -5
  75. package/plugins/flow-external/.claude-plugin/settings.template.json +0 -78
  76. package/plugins/flow-external/agents/angular-component-scaffolder.md +0 -269
  77. package/plugins/flow-external/agents/angular-directive-builder.md +0 -130
  78. package/plugins/flow-external/agents/angular-guard-builder.md +0 -70
  79. package/plugins/flow-external/agents/angular-pipe-builder.md +0 -82
  80. package/plugins/flow-external/agents/angular-resolver-builder.md +0 -74
  81. package/plugins/flow-external/agents/angular-service-builder.md +0 -160
  82. package/plugins/flow-external/agents/angular-state-builder.md +0 -254
  83. package/plugins/flow-external/agents/shared-build-verifier.md +0 -67
  84. package/plugins/flow-external/agents/shared-impl-orchestrator.md +0 -88
  85. package/plugins/flow-external/agents/shared-impl-reporter.md +0 -135
  86. package/plugins/flow-external/agents/shared-linear-subtask-iterator.md +0 -70
  87. package/plugins/flow-external/agents/shared-ui-classifier.md +0 -38
  88. package/plugins/flow-external/agents/ui-web-designer.md +0 -179
  89. package/plugins/flow-external/scripts/compute-session-tokens.sh +0 -39
  90. package/plugins/flow-external/skills/a11y-audit/SKILL.md +0 -96
  91. package/plugins/flow-external/skills/angular-cli-conventions/SKILL.md +0 -267
  92. package/plugins/flow-external/skills/angular-patterns/SKILL.md +0 -170
  93. package/plugins/flow-external/skills/browser-capture/SKILL.md +0 -68
  94. package/plugins/flow-external/skills/commit/SKILL.md +0 -114
  95. package/plugins/flow-external/skills/debug-helper/SKILL.md +0 -131
  96. package/plugins/flow-external/skills/impl/SKILL.md +0 -217
  97. package/plugins/flow-external/skills/linear-suggestion/SKILL.md +0 -62
  98. package/plugins/flow-external/skills/maia-files-delete/SKILL.md +0 -34
  99. package/plugins/flow-external/skills/maia-files-upload/SKILL.md +0 -41
  100. package/plugins/flow-external/skills/plan/SKILL.md +0 -334
  101. package/plugins/flow-external/skills/push/SKILL.md +0 -232
  102. package/plugins/flow-legacy/.claude-plugin/README.md +0 -143
  103. package/plugins/flow-legacy/.claude-plugin/merge-permissions.js +0 -94
  104. package/plugins/flow-legacy/.claude-plugin/plugin.json +0 -5
  105. package/plugins/flow-legacy/.claude-plugin/settings.template.json +0 -79
  106. package/plugins/flow-legacy/agents/angular-component-scaffolder.md +0 -323
  107. package/plugins/flow-legacy/agents/angular-directive-builder.md +0 -258
  108. package/plugins/flow-legacy/agents/angular-guard-builder.md +0 -322
  109. package/plugins/flow-legacy/agents/angular-pipe-builder.md +0 -227
  110. package/plugins/flow-legacy/agents/angular-resolver-builder.md +0 -332
  111. package/plugins/flow-legacy/agents/angular-service-builder.md +0 -271
  112. package/plugins/flow-legacy/agents/angular-state-builder.md +0 -479
  113. package/plugins/flow-legacy/agents/shared-impl-orchestrator.md +0 -174
  114. package/plugins/flow-legacy/agents/shared-impl-reporter.md +0 -232
  115. package/plugins/flow-legacy/agents/shared-linear-subtask-iterator.md +0 -187
  116. package/plugins/flow-legacy/agents/shared-tdd-developer.md +0 -306
  117. package/plugins/flow-legacy/agents/shared-test-runner.md +0 -131
  118. package/plugins/flow-legacy/agents/shared-ui-classifier.md +0 -145
  119. package/plugins/flow-legacy/scripts/compute-session-tokens.sh +0 -39
  120. package/plugins/flow-legacy/skills/a11y-audit/SKILL.md +0 -214
  121. package/plugins/flow-legacy/skills/angular-patterns/SKILL.md +0 -346
  122. package/plugins/flow-legacy/skills/browser-capture/SKILL.md +0 -238
  123. package/plugins/flow-legacy/skills/commit/SKILL.md +0 -215
  124. package/plugins/flow-legacy/skills/debug-helper/SKILL.md +0 -395
  125. package/plugins/flow-legacy/skills/impl/SKILL.md +0 -710
  126. package/plugins/flow-legacy/skills/linear-suggestion/SKILL.md +0 -132
  127. package/plugins/flow-legacy/skills/maia-files-delete/SKILL.md +0 -59
  128. package/plugins/flow-legacy/skills/maia-files-upload/SKILL.md +0 -57
  129. package/plugins/flow-legacy/skills/nx-conventions/SKILL.md +0 -368
  130. package/plugins/flow-legacy/skills/plan/SKILL.md +0 -742
  131. package/plugins/flow-legacy/skills/push/SKILL.md +0 -645
  132. 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
- ```