@smartsoft001-mobilems/claude-plugins 2.85.0 → 2.87.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 (176) 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-articles/SKILL.md +84 -0
  7. package/plugins/mobilems/skills/mobilems-articles/references/lib-contents.md +164 -0
  8. package/plugins/mobilems/skills/mobilems-articles/references/module-and-routes.md +146 -0
  9. package/plugins/mobilems/skills/mobilems-articles/references/shared-components.md +56 -0
  10. package/plugins/mobilems/skills/mobilems-articles/scripts/detect-init.sh +29 -0
  11. package/plugins/mobilems/skills/mobilems-articles/scripts/verify-module.sh +61 -0
  12. package/plugins/mobilems/skills/mobilems-docs-reader/SKILL.md +116 -0
  13. package/plugins/mobilems/skills/mobilems-events/SKILL.md +65 -0
  14. package/plugins/mobilems/skills/mobilems-events/references/lib-contents.md +212 -0
  15. package/plugins/mobilems/skills/mobilems-events/references/module-and-routes.md +113 -0
  16. package/plugins/mobilems/skills/mobilems-events/scripts/detect-init.sh +29 -0
  17. package/plugins/mobilems/skills/mobilems-events/scripts/verify-module.sh +59 -0
  18. package/plugins/mobilems/skills/mobilems-object-collections/SKILL.md +52 -0
  19. package/plugins/mobilems/skills/mobilems-object-collections/references/lib-contents.md +76 -0
  20. package/plugins/mobilems/skills/mobilems-object-collections/references/module-and-routes.md +116 -0
  21. package/plugins/mobilems/skills/mobilems-object-collections/references/shared-components.md +61 -0
  22. package/plugins/mobilems/skills/mobilems-object-collections/scripts/detect-init.sh +29 -0
  23. package/plugins/mobilems/skills/mobilems-object-collections/scripts/verify-module.sh +44 -0
  24. package/plugins/mobilems/skills/mobilems-objects/SKILL.md +52 -0
  25. package/plugins/mobilems/skills/mobilems-objects/references/lib-contents.md +68 -0
  26. package/plugins/mobilems/skills/mobilems-objects/references/module-and-routes.md +108 -0
  27. package/plugins/mobilems/skills/mobilems-objects/references/shared-components.md +69 -0
  28. package/plugins/mobilems/skills/mobilems-objects/scripts/detect-init.sh +29 -0
  29. package/plugins/mobilems/skills/mobilems-objects/scripts/verify-module.sh +51 -0
  30. package/plugins/mobilems/skills/mobilems-partners/SKILL.md +65 -0
  31. package/plugins/mobilems/skills/mobilems-partners/references/lib-contents.md +160 -0
  32. package/plugins/mobilems/skills/mobilems-partners/references/module-and-routes.md +125 -0
  33. package/plugins/mobilems/skills/mobilems-partners/scripts/detect-init.sh +29 -0
  34. package/plugins/mobilems/skills/mobilems-partners/scripts/verify-module.sh +59 -0
  35. package/plugins/mobilems/skills/mobilems-project-init/SKILL.md +134 -0
  36. package/plugins/mobilems/skills/mobilems-project-init/references/app-shell.md +107 -0
  37. package/plugins/mobilems/skills/mobilems-project-init/references/claude-config.md +44 -0
  38. package/plugins/mobilems/skills/mobilems-project-init/references/config-providers.md +203 -0
  39. package/plugins/mobilems/skills/mobilems-project-init/references/npm-deps.md +66 -0
  40. package/plugins/mobilems/skills/mobilems-project-init/references/server-env.md +89 -0
  41. package/plugins/mobilems/skills/mobilems-project-init/references/shared-lib.md +125 -0
  42. package/plugins/mobilems/skills/mobilems-project-init/references/tailwind-styles.md +106 -0
  43. package/plugins/mobilems/skills/mobilems-project-init/scripts/classify-shared-components.py +114 -0
  44. package/plugins/mobilems/skills/mobilems-project-init/scripts/detect-base.sh +49 -0
  45. package/plugins/mobilems/skills/mobilems-project-init/scripts/verify-init.sh +73 -0
  46. package/plugins/mobilems/skills/mobilems-thematic-publications/SKILL.md +60 -0
  47. package/plugins/mobilems/skills/mobilems-thematic-publications/references/lib-contents.md +134 -0
  48. package/plugins/mobilems/skills/mobilems-thematic-publications/references/module-and-routes.md +107 -0
  49. package/plugins/mobilems/skills/mobilems-thematic-publications/scripts/detect-init.sh +29 -0
  50. package/plugins/mobilems/skills/mobilems-thematic-publications/scripts/verify-module.sh +56 -0
  51. package/plugins/flow/.claude-plugin/README.md +0 -91
  52. package/plugins/flow/.claude-plugin/merge-permissions.js +0 -97
  53. package/plugins/flow/.claude-plugin/plugin.json +0 -5
  54. package/plugins/flow/.claude-plugin/settings.template.json +0 -86
  55. package/plugins/flow/agents/angular-component-scaffolder.md +0 -175
  56. package/plugins/flow/agents/angular-directive-builder.md +0 -153
  57. package/plugins/flow/agents/angular-guard-builder.md +0 -243
  58. package/plugins/flow/agents/angular-jest-test-writer.md +0 -474
  59. package/plugins/flow/agents/angular-pipe-builder.md +0 -169
  60. package/plugins/flow/agents/angular-resolver-builder.md +0 -286
  61. package/plugins/flow/agents/angular-service-builder.md +0 -161
  62. package/plugins/flow/agents/angular-signal-state-builder.md +0 -339
  63. package/plugins/flow/agents/angular-test-diagnostician.md +0 -279
  64. package/plugins/flow/agents/angular-testbed-configurator.md +0 -315
  65. package/plugins/flow/agents/arch-scaffolder.md +0 -278
  66. package/plugins/flow/agents/e2e-data-testid-injector.md +0 -197
  67. package/plugins/flow/agents/e2e-project-scaffolder.md +0 -194
  68. package/plugins/flow/agents/e2e-test-writer.md +0 -350
  69. package/plugins/flow/agents/shared-agent-evolver.md +0 -294
  70. package/plugins/flow/agents/shared-build-verifier.md +0 -160
  71. package/plugins/flow/agents/shared-config-updater.md +0 -310
  72. package/plugins/flow/agents/shared-coverage-enforcer.md +0 -184
  73. package/plugins/flow/agents/shared-error-handler.md +0 -217
  74. package/plugins/flow/agents/shared-file-creator.md +0 -344
  75. package/plugins/flow/agents/shared-impl-orchestrator.md +0 -312
  76. package/plugins/flow/agents/shared-impl-reporter.md +0 -368
  77. package/plugins/flow/agents/shared-impl-teammate.md +0 -201
  78. package/plugins/flow/agents/shared-linear-subtask-iterator.md +0 -337
  79. package/plugins/flow/agents/shared-logic-implementer.md +0 -243
  80. package/plugins/flow/agents/shared-maia-api.md +0 -26
  81. package/plugins/flow/agents/shared-parallelization-analyzer.md +0 -343
  82. package/plugins/flow/agents/shared-performance-validator.md +0 -168
  83. package/plugins/flow/agents/shared-plan-perspective.md +0 -269
  84. package/plugins/flow/agents/shared-project-standardizer.md +0 -205
  85. package/plugins/flow/agents/shared-report-synthesizer.md +0 -188
  86. package/plugins/flow/agents/shared-review-teammate.md +0 -189
  87. package/plugins/flow/agents/shared-security-scanner.md +0 -186
  88. package/plugins/flow/agents/shared-style-enforcer.md +0 -230
  89. package/plugins/flow/agents/shared-subtask-dependency-analyzer.md +0 -188
  90. package/plugins/flow/agents/shared-tdd-developer.md +0 -350
  91. package/plugins/flow/agents/shared-team-coordinator.md +0 -189
  92. package/plugins/flow/agents/shared-test-fixer.md +0 -186
  93. package/plugins/flow/agents/shared-test-runner.md +0 -191
  94. package/plugins/flow/agents/shared-ui-classifier.md +0 -263
  95. package/plugins/flow/agents/shared-verification-orchestrator.md +0 -194
  96. package/plugins/flow/agents/shared-verification-runner.md +0 -140
  97. package/plugins/flow/agents/ui-a11y-validator.md +0 -305
  98. package/plugins/flow/agents/ui-screenshot-reporter.md +0 -329
  99. package/plugins/flow/agents/ui-web-designer.md +0 -214
  100. package/plugins/flow/scripts/compute-session-tokens.sh +0 -39
  101. package/plugins/flow/skills/a11y-audit/SKILL.md +0 -214
  102. package/plugins/flow/skills/angular-patterns/SKILL.md +0 -191
  103. package/plugins/flow/skills/browser-capture/SKILL.md +0 -238
  104. package/plugins/flow/skills/commit/SKILL.md +0 -259
  105. package/plugins/flow/skills/debug-helper/SKILL.md +0 -375
  106. package/plugins/flow/skills/impl/SKILL.md +0 -992
  107. package/plugins/flow/skills/linear-suggestion/SKILL.md +0 -132
  108. package/plugins/flow/skills/maia-files-delete/SKILL.md +0 -59
  109. package/plugins/flow/skills/maia-files-upload/SKILL.md +0 -57
  110. package/plugins/flow/skills/nx-conventions/SKILL.md +0 -326
  111. package/plugins/flow/skills/plan/SKILL.md +0 -1033
  112. package/plugins/flow/skills/push/SKILL.md +0 -759
  113. package/plugins/flow/skills/review/SKILL.md +0 -443
  114. package/plugins/flow/skills/test-e2e/SKILL.md +0 -161
  115. package/plugins/flow/skills/test-unit/SKILL.md +0 -456
  116. package/plugins/flow-external/.claude-plugin/README.md +0 -152
  117. package/plugins/flow-external/.claude-plugin/merge-permissions.js +0 -80
  118. package/plugins/flow-external/.claude-plugin/plugin.json +0 -5
  119. package/plugins/flow-external/.claude-plugin/settings.template.json +0 -78
  120. package/plugins/flow-external/agents/angular-component-scaffolder.md +0 -269
  121. package/plugins/flow-external/agents/angular-directive-builder.md +0 -130
  122. package/plugins/flow-external/agents/angular-guard-builder.md +0 -70
  123. package/plugins/flow-external/agents/angular-pipe-builder.md +0 -82
  124. package/plugins/flow-external/agents/angular-resolver-builder.md +0 -74
  125. package/plugins/flow-external/agents/angular-service-builder.md +0 -160
  126. package/plugins/flow-external/agents/angular-state-builder.md +0 -254
  127. package/plugins/flow-external/agents/shared-build-verifier.md +0 -67
  128. package/plugins/flow-external/agents/shared-impl-orchestrator.md +0 -88
  129. package/plugins/flow-external/agents/shared-impl-reporter.md +0 -135
  130. package/plugins/flow-external/agents/shared-linear-subtask-iterator.md +0 -70
  131. package/plugins/flow-external/agents/shared-ui-classifier.md +0 -38
  132. package/plugins/flow-external/agents/ui-web-designer.md +0 -179
  133. package/plugins/flow-external/scripts/compute-session-tokens.sh +0 -39
  134. package/plugins/flow-external/skills/a11y-audit/SKILL.md +0 -96
  135. package/plugins/flow-external/skills/angular-cli-conventions/SKILL.md +0 -267
  136. package/plugins/flow-external/skills/angular-patterns/SKILL.md +0 -170
  137. package/plugins/flow-external/skills/browser-capture/SKILL.md +0 -68
  138. package/plugins/flow-external/skills/commit/SKILL.md +0 -114
  139. package/plugins/flow-external/skills/debug-helper/SKILL.md +0 -131
  140. package/plugins/flow-external/skills/impl/SKILL.md +0 -217
  141. package/plugins/flow-external/skills/linear-suggestion/SKILL.md +0 -62
  142. package/plugins/flow-external/skills/maia-files-delete/SKILL.md +0 -34
  143. package/plugins/flow-external/skills/maia-files-upload/SKILL.md +0 -41
  144. package/plugins/flow-external/skills/plan/SKILL.md +0 -334
  145. package/plugins/flow-external/skills/push/SKILL.md +0 -232
  146. package/plugins/flow-legacy/.claude-plugin/README.md +0 -143
  147. package/plugins/flow-legacy/.claude-plugin/merge-permissions.js +0 -94
  148. package/plugins/flow-legacy/.claude-plugin/plugin.json +0 -5
  149. package/plugins/flow-legacy/.claude-plugin/settings.template.json +0 -79
  150. package/plugins/flow-legacy/agents/angular-component-scaffolder.md +0 -323
  151. package/plugins/flow-legacy/agents/angular-directive-builder.md +0 -258
  152. package/plugins/flow-legacy/agents/angular-guard-builder.md +0 -322
  153. package/plugins/flow-legacy/agents/angular-pipe-builder.md +0 -227
  154. package/plugins/flow-legacy/agents/angular-resolver-builder.md +0 -332
  155. package/plugins/flow-legacy/agents/angular-service-builder.md +0 -271
  156. package/plugins/flow-legacy/agents/angular-state-builder.md +0 -479
  157. package/plugins/flow-legacy/agents/shared-impl-orchestrator.md +0 -174
  158. package/plugins/flow-legacy/agents/shared-impl-reporter.md +0 -232
  159. package/plugins/flow-legacy/agents/shared-linear-subtask-iterator.md +0 -187
  160. package/plugins/flow-legacy/agents/shared-tdd-developer.md +0 -306
  161. package/plugins/flow-legacy/agents/shared-test-runner.md +0 -131
  162. package/plugins/flow-legacy/agents/shared-ui-classifier.md +0 -145
  163. package/plugins/flow-legacy/scripts/compute-session-tokens.sh +0 -39
  164. package/plugins/flow-legacy/skills/a11y-audit/SKILL.md +0 -214
  165. package/plugins/flow-legacy/skills/angular-patterns/SKILL.md +0 -346
  166. package/plugins/flow-legacy/skills/browser-capture/SKILL.md +0 -238
  167. package/plugins/flow-legacy/skills/commit/SKILL.md +0 -215
  168. package/plugins/flow-legacy/skills/debug-helper/SKILL.md +0 -395
  169. package/plugins/flow-legacy/skills/impl/SKILL.md +0 -710
  170. package/plugins/flow-legacy/skills/linear-suggestion/SKILL.md +0 -132
  171. package/plugins/flow-legacy/skills/maia-files-delete/SKILL.md +0 -59
  172. package/plugins/flow-legacy/skills/maia-files-upload/SKILL.md +0 -57
  173. package/plugins/flow-legacy/skills/nx-conventions/SKILL.md +0 -368
  174. package/plugins/flow-legacy/skills/plan/SKILL.md +0 -742
  175. package/plugins/flow-legacy/skills/push/SKILL.md +0 -645
  176. package/plugins/flow-legacy/skills/test-unit/SKILL.md +0 -500
@@ -1,170 +0,0 @@
1
- ---
2
- name: angular-patterns
3
- description: Angular 6-11 legacy patterns including *ngIf/*ngFor directives, constructor DI, @Input/@Output decorators, and NgRx state management
4
- ---
5
-
6
- # Angular 6-11 Patterns
7
-
8
- This skill provides guidance on Angular 6-11 patterns for standalone projects.
9
-
10
- ## CRITICAL: Use Legacy Patterns ONLY
11
-
12
- **DO NOT use modern Angular features (Angular 14+):**
13
-
14
- | Feature | CORRECT (Angular 6-11) | WRONG (Modern) |
15
- |---------|------------------------|----------------|
16
- | Control flow | `*ngIf`, `*ngFor`, `[ngSwitch]` | `@if`, `@for`, `@switch` |
17
- | DI | Constructor injection | `inject()` |
18
- | Inputs | `@Input()` decorator | `input()` function |
19
- | Outputs | `@Output()` decorator | `output()` function |
20
- | Two-way | `@Input()` + `@Output()` | `model()` |
21
- | State | BehaviorSubject, NgRx | signals, `signal()` |
22
- | Derived | `pipe(map())`, getters | `computed()` |
23
- | Side effects | `subscribe()`, NgRx effects | `effect()` |
24
- | Components | NgModule-based | standalone |
25
-
26
- ## 1. Control Flow
27
-
28
- ```html
29
- <!-- *ngIf with else -->
30
- <div *ngIf="isLoading; else content">
31
- <app-spinner></app-spinner>
32
- </div>
33
- <ng-template #content>
34
- <ul>
35
- <li *ngFor="let item of items; trackBy: trackById">{{ item.name }}</li>
36
- </ul>
37
- </ng-template>
38
- ```
39
-
40
- ```typescript
41
- trackById(index: number, item: Item): string {
42
- return item.id;
43
- }
44
- ```
45
-
46
- ## 2. BehaviorSubject State Management
47
-
48
- ```typescript
49
- @Injectable({ providedIn: 'root' })
50
- export class StateService {
51
- private readonly _items = new BehaviorSubject<Item[]>([]);
52
- readonly items$ = this._items.asObservable();
53
-
54
- readonly count$ = this._items.pipe(
55
- map(items => items.length)
56
- );
57
-
58
- setItems(items: Item[]): void {
59
- this._items.next(items);
60
- }
61
- }
62
- ```
63
-
64
- ## 3. Constructor Injection
65
-
66
- ```typescript
67
- @Component({
68
- selector: 'app-feature',
69
- templateUrl: './feature.component.html',
70
- })
71
- export class FeatureComponent implements OnInit, OnDestroy {
72
- private readonly destroy$ = new Subject<void>();
73
-
74
- constructor(
75
- private readonly service: FeatureService,
76
- private readonly router: Router
77
- ) {}
78
-
79
- ngOnInit(): void {
80
- this.service.items$
81
- .pipe(takeUntil(this.destroy$))
82
- .subscribe(items => this.items = items);
83
- }
84
-
85
- ngOnDestroy(): void {
86
- this.destroy$.next();
87
- this.destroy$.complete();
88
- }
89
- }
90
- ```
91
-
92
- ## 4. Input/Output Decorators
93
-
94
- ```typescript
95
- @Component({
96
- selector: 'app-card',
97
- templateUrl: './card.component.html',
98
- })
99
- export class CardComponent {
100
- @Input() item!: Item;
101
- @Input() showActions = true;
102
- @Output() selected = new EventEmitter<Item>();
103
-
104
- // Two-way binding
105
- @Input() value = '';
106
- @Output() valueChange = new EventEmitter<string>();
107
- }
108
- ```
109
-
110
- ## 5. NgModule
111
-
112
- ```typescript
113
- @NgModule({
114
- declarations: [FeatureComponent, CardComponent],
115
- imports: [CommonModule, TranslateModule, NgbModule],
116
- exports: [FeatureComponent],
117
- })
118
- export class FeatureModule {}
119
- ```
120
-
121
- ## 6. NgRx Patterns
122
-
123
- ```typescript
124
- // Actions
125
- export const loadItems = createAction('[Items] Load');
126
- export const loadItemsSuccess = createAction('[Items] Load Success', props<{ items: Item[] }>());
127
-
128
- // Reducer
129
- export const reducer = createReducer(
130
- initialState,
131
- on(loadItems, state => ({ ...state, loading: true })),
132
- on(loadItemsSuccess, (state, { items }) => ({ ...state, items, loading: false }))
133
- );
134
-
135
- // Effects
136
- @Injectable()
137
- export class ItemEffects {
138
- constructor(private actions$: Actions, private service: ItemService) {}
139
-
140
- load$ = createEffect(() => this.actions$.pipe(
141
- ofType(loadItems),
142
- mergeMap(() => this.service.getAll().pipe(
143
- map(items => loadItemsSuccess({ items })),
144
- catchError(error => of(loadItemsFailure({ error: error.message })))
145
- ))
146
- ));
147
- }
148
- ```
149
-
150
- ## 7. Async Pipe
151
-
152
- ```html
153
- <div *ngIf="isLoading$ | async; else content">Loading...</div>
154
- <ng-template #content>
155
- <li *ngFor="let item of items$ | async; trackBy: trackById">
156
- {{ item.name }}
157
- </li>
158
- </ng-template>
159
- ```
160
-
161
- ## 8. PR Checklist
162
-
163
- - [ ] Using `*ngIf`/`*ngFor` (NOT `@if`/`@for`)
164
- - [ ] Every `*ngFor` has `trackBy`
165
- - [ ] Using constructor DI (NOT `inject()`)
166
- - [ ] Using `@Input()`/`@Output()` (NOT `input()`/`output()`)
167
- - [ ] Using BehaviorSubject/NgRx for state (NOT signals)
168
- - [ ] Component declared in NgModule
169
- - [ ] Using `async` pipe in templates
170
- - [ ] `OnDestroy` with `takeUntil` pattern
@@ -1,68 +0,0 @@
1
- ---
2
- name: browser-capture
3
- description: Manage browser sessions and capture screenshots. Ensures dev server is running, navigates to pages, and captures responsive screenshots.
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
- Capture screenshots of web pages at multiple viewport sizes.
18
-
19
- ## Server Management
20
-
21
- ### Detect Port
22
-
23
- ```bash
24
- # Check angular.json location and read port
25
- if [ -f "angular.json" ]; then
26
- grep -o '"port":[^,}]*' angular.json | head -1
27
- elif [ -f "app/angular.json" ]; then
28
- grep -o '"port":[^,}]*' app/angular.json | head -1
29
- fi
30
- # Default: 4200
31
- ```
32
-
33
- ### Start Server if Needed
34
-
35
- ```bash
36
- lsof -i :4200 -t || (npm start & for i in {1..15}; do curl -s http://localhost:4200 > /dev/null && break; sleep 2; done)
37
- ```
38
-
39
- ## Capture Process
40
-
41
- 1. Ensure server is running
42
- 2. Navigate to URL with `mcp__playwright__browser_navigate`
43
- 3. For each viewport:
44
- - `mcp__playwright__browser_resize` → set dimensions
45
- - `mcp__playwright__browser_take_screenshot` → capture
46
-
47
- ### Viewport Sizes
48
-
49
- | Name | Width | Height |
50
- |------|-------|--------|
51
- | Desktop | 1920 | 1080 |
52
- | Tablet | 768 | 1024 |
53
- | Mobile | 375 | 667 |
54
-
55
- ## Upload
56
-
57
- Delegate to `maia-api` agent for upload to temporary storage.
58
-
59
- ## Output
60
-
61
- ```json
62
- {
63
- "screenshots": [
64
- { "viewport": "desktop", "url": "https://maia-ai-api.smartsoft.biz.pl/files/abc123" },
65
- { "viewport": "mobile", "url": "https://maia-ai-api.smartsoft.biz.pl/files/def456" }
66
- ]
67
- }
68
- ```
@@ -1,114 +0,0 @@
1
- ---
2
- name: commit
3
- description: Create a conventional commit message based on Linear task and staged changes. Fetches task details, analyzes changes, and generates commit message.
4
- allowed-tools:
5
- - Bash
6
- - Read
7
- - Glob
8
- - Grep
9
- - AskUserQuestion
10
- - mcp__linear__get_issue
11
- - mcp__linear__list_comments
12
- ---
13
-
14
- # Commit Skill
15
-
16
- Create a conventional commit message based on Linear task and staged changes.
17
-
18
- ## Usage
19
-
20
- ```
21
- /commit [linearTaskId]
22
- ```
23
-
24
- ## Parameters
25
-
26
- - `linearTaskId` - Linear task ID (e.g., MOB-123)
27
-
28
- ## Execution Checklist
29
-
30
- - [ ] **1. Fetch Linear task** — get title, description, labels/type from MCP Linear server
31
- - [ ] **2. Analyze staged changes** — run `git diff --cached` to understand scope
32
- - [ ] **3. Verify completeness** — compare task requirements with staged changes; if incomplete, ask user whether to continue or stop
33
- - [ ] **4. Determine commit type and scope** — based on changes and task type
34
- - [ ] **5. Generate commit message** — draft `<type>(<scope>): <subject>` with body and `Refs: <linearTaskId>`
35
- - [ ] **6. Show message to user** — present commit message for approval before proceeding
36
- - [ ] **7. Create commit** — execute `git commit` with the approved message
37
-
38
- ## Commit Message Format
39
-
40
- ```
41
- <type>(<scope>): <subject>
42
-
43
- <body>
44
-
45
- Refs: <linearTaskId>
46
- ```
47
-
48
- ### Type
49
-
50
- | Type | Use when |
51
- | ---------- | ------------------------------------------ |
52
- | `feat` | New feature or functionality |
53
- | `fix` | Bug fix |
54
- | `refactor` | Code restructuring without behavior change |
55
- | `style` | Styling/CSS changes only |
56
- | `docs` | Documentation changes |
57
- | `chore` | Maintenance, config, dependencies |
58
- | `perf` | Performance improvements |
59
-
60
- ### Scope
61
-
62
- Determine scope from the changed files and project structure. Common scopes for external projects:
63
-
64
- - Component name (e.g., `gallery`, `articles`, `navigation`)
65
- - Feature area (e.g., `wcag`, `i18n`, `auth`)
66
- - Infrastructure (e.g., `config`, `docker`)
67
-
68
- ### Subject
69
-
70
- - Imperative mood ("add feature" not "added feature")
71
- - Lowercase first letter
72
- - No period at end
73
- - Max 72 characters
74
-
75
- ### Body
76
-
77
- - Explain WHAT changed and WHY
78
- - Reference Linear task
79
- - List affected files if helpful
80
-
81
- ## Example
82
-
83
- ```
84
- feat(gallery): add lightbox for exhibition photos
85
-
86
- Add lightbox modal for viewing gallery photos in full screen.
87
- Uses ng-bootstrap modal with keyboard navigation support.
88
-
89
- Refs: MOB-548
90
- ```
91
-
92
- ## Error Handling
93
-
94
- ### No Staged Changes
95
-
96
- ```markdown
97
- ## No staged changes
98
-
99
- Run `git add` to stage your changes before committing.
100
- ```
101
-
102
- ### Linear Task Not Found
103
-
104
- If linearTaskId is not provided or task not found:
105
-
106
- - Try to detect from branch name
107
- - If still not found, proceed without Linear context
108
-
109
- ## Guidelines
110
-
111
- 1. **Always show commit message for approval** before creating the commit
112
- 2. **Use Polish branch naming** if branch follows MOB-XXX pattern
113
- 3. **Include Refs:** with Linear task ID when available
114
- 4. **Keep subject line under 72 characters**
@@ -1,131 +0,0 @@
1
- ---
2
- name: debug-helper
3
- description: Debugging workflows for Angular 6-11 standalone projects
4
- ---
5
-
6
- # Debug Helper (Angular 6-11)
7
-
8
- Debugging workflows for standalone Angular CLI projects.
9
-
10
- ## 1. Angular Debugging
11
-
12
- ### Component Not Rendering
13
-
14
- 1. Check selector matches template usage
15
- 2. Check NgModule declarations - is component declared?
16
- 3. Check NgModule exports - is it exported for external use?
17
- 4. Check NgModule imports - is the feature module imported?
18
-
19
- ### BehaviorSubject Issues
20
-
21
- ```typescript
22
- // Wrong: mutating array (won't trigger update)
23
- const items = this._items.getValue();
24
- items.push(newItem);
25
- this._items.next(items);
26
-
27
- // Correct: create new reference
28
- this._items.next([...this._items.getValue(), newItem]);
29
- ```
30
-
31
- ### Memory Leaks
32
-
33
- ```typescript
34
- // Always use takeUntil pattern
35
- private readonly destroy$ = new Subject<void>();
36
-
37
- ngOnInit(): void {
38
- this.service.data$
39
- .pipe(takeUntil(this.destroy$))
40
- .subscribe(data => this.data = data);
41
- }
42
-
43
- ngOnDestroy(): void {
44
- this.destroy$.next();
45
- this.destroy$.complete();
46
- }
47
- ```
48
-
49
- ### Change Detection
50
-
51
- ```typescript
52
- constructor(private cdr: ChangeDetectorRef) {}
53
-
54
- // Force detection
55
- this.cdr.detectChanges();
56
-
57
- // Mark for check (OnPush)
58
- this.cdr.markForCheck();
59
- ```
60
-
61
- ### Template Debugging
62
-
63
- ```html
64
- <pre>{{ data | json }}</pre>
65
- <p>isLoading: {{ isLoading }}</p>
66
- ```
67
-
68
- ## 2. NgRx Debugging
69
-
70
- ### State Not Updating
71
-
72
- 1. Verify action is dispatched: add `tap(action => console.log(action))` to effects
73
- 2. Verify reducer handles the action
74
- 3. Verify selector reads correct state slice
75
- 4. Check Redux DevTools (install Chrome extension)
76
-
77
- ### Effects Not Running
78
-
79
- 1. Check effect is registered in `EffectsModule.forFeature([Effects])`
80
- 2. Check `ofType` matches dispatched action
81
- 3. Check effect observable completes (use `mergeMap` not `switchMap` for parallel)
82
-
83
- ## 3. Common Errors
84
-
85
- ### "Cannot read property of undefined"
86
-
87
- ```typescript
88
- // Use optional chaining
89
- const name = user?.profile?.name ?? 'Unknown';
90
-
91
- // In templates
92
- {{ user?.profile?.name }}
93
- ```
94
-
95
- ### "Expression has changed after it was checked"
96
-
97
- ```typescript
98
- ngAfterViewInit(): void {
99
- setTimeout(() => this.value = newValue);
100
- }
101
- ```
102
-
103
- ### "NullInjectorError: No provider for X"
104
-
105
- ```typescript
106
- // Add to module providers or use providedIn: 'root'
107
- @Injectable({ providedIn: 'root' })
108
- export class MyService {}
109
- ```
110
-
111
- ### "Circular dependency detected"
112
-
113
- ```typescript
114
- // Use forwardRef
115
- @Inject(forwardRef(() => ServiceB))
116
- private serviceB: ServiceB
117
- ```
118
-
119
- ## 4. Build Errors
120
-
121
- ```bash
122
- # Check TypeScript errors
123
- npx tsc --noEmit
124
-
125
- # Check Angular build
126
- ng build --prod 2>&1 | head -50
127
-
128
- # Common: AOT compilation errors
129
- # - Private members used in templates (make them public or use getters)
130
- # - Function calls in templates (extract to component methods)
131
- ```
@@ -1,217 +0,0 @@
1
- ---
2
- name: impl
3
- description: Implement plans from `plan.md` attachments on Linear issues. Reads approved plan attachment, orchestrates agents (saving `orchestration.md` attachment), and executes changes step by step.
4
- allowed-tools:
5
- - Bash
6
- - Read
7
- - Write
8
- - Edit
9
- - Glob
10
- - Grep
11
- - AskUserQuestion
12
- - mcp__linear__get_issue
13
- - mcp__linear__list_issues
14
- - mcp__linear__list_comments
15
- - mcp__linear__save_comment
16
- - mcp__linear__save_issue
17
- - mcp__linear__list_issue_statuses
18
- - mcp__linear__create_attachment
19
- - mcp__linear__get_attachment
20
- - mcp__linear__delete_attachment
21
- - mcp__playwright__browser_navigate
22
- - mcp__playwright__browser_snapshot
23
- - mcp__playwright__browser_take_screenshot
24
- - mcp__playwright__browser_resize
25
- - mcp__playwright__browser_close
26
- ---
27
-
28
- # Implementation Skill
29
-
30
- Implement changes based on approved plans from Linear `plan.md` attachments.
31
-
32
- ## Usage
33
-
34
- ```
35
- /impl <linearTaskId>
36
- /impl <linearTaskId> --auto # Non-interactive mode for CI / GitHub Actions
37
- ```
38
-
39
- ## Parameters
40
-
41
- - `linearTaskId` - Linear task ID (e.g., MOB-123)
42
- - `--auto` - Non-interactive mode: skip ALL `AskUserQuestion` prompts and any per-step pauses. If `plan.md` attachment is missing, auto-invoke `/plan` flow to generate it instead of stopping. Designed for CI / GitHub Actions runs where no human is at the keyboard.
43
-
44
- ## Auto Mode (`--auto`)
45
-
46
- When `--auto` is set, the skill MUST run end-to-end without any human-in-the-loop prompts:
47
-
48
- | Default behavior | `--auto` override |
49
- | ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
50
- | Stop with "no plan.md found, run /plan first" suggestion | Inline-invoke `/plan` flow for the task to generate `plan.md` attachment + `AI Plan` label, then continue |
51
- | Pause after each step / subtask waiting for user confirmation | Post completion comment, then proceed automatically |
52
- | Confirmation before destructive ops (delete `orchestration.md`) | Proceed without confirmation — replace old attachment automatically |
53
- | Any `AskUserQuestion` | Use the **(Recommended)** option; if none, fail fast with a Linear comment |
54
-
55
- Every checkpoint, decision, or skip MUST be logged as a Linear comment in Polish (audit trail).
56
-
57
- **Detection**: The flag `--auto` is provided as a positional/named arg. Treat any of `--auto`, `--ci`, `--non-interactive` as equivalent.
58
-
59
- ## 🚨 Hard Rules — read before doing anything
60
-
61
- These rules override ANY other instruction, ANY surrounding example, and ANY default habit. Violating them is a skill failure.
62
-
63
- 1. **Read `plan.md` ONLY via `mcp__linear__get_attachment({ id })`.** Do NOT use `WebFetch`, `Bash(curl ...)`, or any HTTP fetch on the attachment's `url`. The URL points to Linear-internal storage and may require auth — `get_attachment` is the only correct path.
64
- 2. **`orchestration.md` is saved via `mcp__linear__create_attachment`, not as a comment.** `save_comment` MUST NOT carry orchestration body content.
65
- 3. **Find attachments via `mcp__linear__get_issue` (returns `attachments[]`).** There is no `list_attachments` tool — do not look for one.
66
- 4. **Replace, don't duplicate.** Before creating a new `orchestration.md` attachment, delete the existing one (if any) via `mcp__linear__delete_attachment`.
67
-
68
- If any of these would be violated, stop and ask the user instead.
69
-
70
- ## CRITICAL: Angular 6-11 + Angular CLI
71
-
72
- This is for standalone Angular CLI projects. Key rules:
73
-
74
- - Use `ng` commands (NOT `nx`)
75
- - Use constructor DI (NOT `inject()`)
76
- - Use `*ngIf`/`*ngFor` (NOT `@if`/`@for`)
77
- - Use `@Input()`/`@Output()` (NOT `input()`/`output()`)
78
- - Use BehaviorSubject/NgRx (NOT signals)
79
- - Use NgModules (NOT standalone components)
80
- - Styling: follow whatever CSS approach the project uses (check `package.json` for Bootstrap, etc.)
81
-
82
- ## Execution Steps
83
-
84
- ### Step 1: Fetch Task and Plan Attachment
85
-
86
- **⛔ DO NOT use `WebFetch` or `Bash(curl)` on the attachment URL. Use `mcp__linear__get_attachment({ id })` only.** Re-read Hard Rule #1 if tempted.
87
-
88
- 1. `mcp__linear__get_issue({ id: taskId })` — the response includes an `attachments[]` array.
89
- 2. Find the attachment where `title == "plan.md"` (or `filename == "plan.md"`) and capture its `id`. Do NOT use the `url` field for fetching.
90
- 3. `mcp__linear__get_attachment({ id: <attachmentId> })` — returns the markdown content directly (Linear hosts the file natively).
91
- 4. Parse the plan content.
92
- 5. If no `plan.md` attachment exists:
93
- - **Default mode**: inform the user and suggest running `/plan <taskId>` first. Stop the skill.
94
- - **`--auto` mode**: inline-invoke the `/plan` skill flow for this task to generate `plan.md` attachment + `AI Plan` label, then proceed with implementation. Post a Linear comment in Polish noting the plan was auto-generated.
95
-
96
- Do NOT fall back to parsing plan content from comments, and do NOT attempt `curl`/`WebFetch` on a URL.
97
-
98
- ### Step 2: Detect Project Structure
99
-
100
- Before implementing, detect the project layout:
101
-
102
- ```bash
103
- # Check if angular.json is at root or in app/ subdirectory
104
- ls angular.json 2>/dev/null && echo "ROOT" || (ls app/angular.json 2>/dev/null && echo "APP_DIR")
105
-
106
- # Check package.json for dependencies
107
- cat package.json 2>/dev/null || cat app/package.json 2>/dev/null
108
- ```
109
-
110
- Key things to detect:
111
-
112
- - Angular version (6-11)
113
- - CSS framework (Bootstrap 4 / custom SCSS / none)
114
- - NgRx version and patterns
115
- - i18n setup (ngx-translate)
116
- - Project structure (app/src/ vs src/)
117
-
118
- ### Step 3: List Subtasks
119
-
120
- If task has subtasks:
121
-
122
- 1. Fetch subtasks using `mcp__linear__list_issues` with parent filter
123
- 2. Sort by priority/creation order
124
- 3. Process each subtask in order
125
-
126
- ### Step 3a: Save Orchestration Plan as Native Linear Attachment
127
-
128
- **⛔ Calling `mcp__linear__save_comment` with the orchestration body is FORBIDDEN. Use `mcp__linear__create_attachment` only.** Re-read Hard Rule #2 if tempted.
129
-
130
- Use `shared-impl-orchestrator` agent to generate a `🎭 Agent Orchestration Plan` that lists which agents run in what order (Angular 6-11 + CLI context).
131
-
132
- Then save it as an `orchestration.md` attachment on the task (not as a comment):
133
-
134
- 1. **Replace existing orchestration**: use `mcp__linear__get_issue` to list attachments; if one titled `orchestration.md` exists, delete it via `mcp__linear__delete_attachment({ id: oldAttachmentId })`. Linear hosts the file natively, so nothing else needs cleanup.
135
- 2. **Write locally**: `Write` the orchestration markdown to `/tmp/claude-plans/<taskId>-orchestration.md`.
136
- 3. **Base64-encode**: `b64=$(base64 -i /tmp/claude-plans/<taskId>-orchestration.md)`.
137
- 4. **Create Linear attachment** via `mcp__linear__create_attachment`:
138
- - `issue`: the task ID
139
- - `filename`: `orchestration.md`
140
- - `contentType`: `text/markdown`
141
- - `title`: `orchestration.md` (exact)
142
- - `subtitle`: `Plan orkiestracji wygenerowany przez Claude Code (external)`
143
- - `base64Content`: the base64 string from step 3
144
- 5. **Clean up** local `/tmp/claude-plans/<taskId>-orchestration.md` file after the attachment is created.
145
-
146
- ### Step 4: Implement Each Step
147
-
148
- For each step in the plan:
149
-
150
- 1. **Read relevant files** - Understand existing code before modifying
151
- 2. **Follow existing patterns** - Match the codebase style exactly
152
- 3. **Create/modify files** - Implement the planned changes
153
- 4. **Register in modules** - Add declarations/imports to NgModules
154
- 5. **Update subtask status** - Mark as Done when complete
155
-
156
- ### Step 5: Build Verification
157
-
158
- After all steps are complete:
159
-
160
- ```bash
161
- # Verify build passes (adapt path based on project structure)
162
- ng build --prod
163
- # OR
164
- cd app && ng build --prod
165
- ```
166
-
167
- ### Step 6: Report Results
168
-
169
- Create a summary comment on the Linear task:
170
-
171
- ```markdown
172
- ## Raport Implementacji
173
-
174
- ### Zrealizowane
175
-
176
- | Podzadanie | Tytul | Status |
177
- | ---------- | ------- | ------------ |
178
- | MOB-549 | [title] | Zrealizowane |
179
-
180
- ### Zmiany
181
-
182
- | Plik | Typ | Opis |
183
- | ----------------------------------------- | ------------- | ----------------- |
184
- | `src/app/components/feature.component.ts` | Nowy | Komponent |
185
- | `src/app/components/feature.module.ts` | Zmodyfikowany | Dodano deklaracje |
186
-
187
- ### Build
188
-
189
- - `ng build --prod` - Sukces
190
-
191
- ---
192
-
193
- _Raport wygenerowany przez Claude Code_
194
- ```
195
-
196
- ## Agent Selection
197
-
198
- | Task Type | Agent |
199
- | -------------- | ---------------------------------------------------- |
200
- | New component | `angular-component-scaffolder` |
201
- | New service | `angular-service-builder` |
202
- | NgRx state | `angular-state-builder` |
203
- | New directive | `angular-directive-builder` |
204
- | New pipe | `angular-pipe-builder` |
205
- | Guard/resolver | `angular-guard-builder` / `angular-resolver-builder` |
206
- | Styling | `ui-web-designer` |
207
-
208
- ## Guidelines
209
-
210
- 1. **Always read existing code first** before making changes
211
- 2. **Follow the project's existing patterns** exactly
212
- 3. **Register everything in NgModules** - declarations, imports, exports
213
- 4. **Use the project's CSS approach** - detect from package.json
214
- 5. **Write all Linear comments in Polish**
215
- 6. **Verify build after implementation**
216
- 7. **Do NOT add tests** unless explicitly requested
217
- 8. **Do NOT modify deployment configuration**