@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,268 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: angular-cli-conventions
|
|
3
|
+
description: Angular CLI project conventions for standalone Angular 6-11 projects. Build commands, project structure, and configuration patterns.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Angular CLI Conventions
|
|
7
|
+
|
|
8
|
+
This skill provides guidance on Angular CLI project patterns for standalone Angular 6-11 projects.
|
|
9
|
+
|
|
10
|
+
## CRITICAL: Angular CLI (NOT Nx)
|
|
11
|
+
|
|
12
|
+
These projects use Angular CLI directly. Do NOT use Nx commands.
|
|
13
|
+
|
|
14
|
+
| Feature | CORRECT (Angular CLI) | WRONG (Nx) |
|
|
15
|
+
| -------- | --------------------- | -------------- |
|
|
16
|
+
| Serve | `ng serve` | `nx serve` |
|
|
17
|
+
| Build | `ng build --prod` | `nx build` |
|
|
18
|
+
| Lint | `ng lint` | `nx lint` |
|
|
19
|
+
| Generate | `ng generate` | `nx generate` |
|
|
20
|
+
| Config | `angular.json` | `project.json` |
|
|
21
|
+
|
|
22
|
+
## 1. Project Structure
|
|
23
|
+
|
|
24
|
+
### Standard Layout (most projects)
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
project-root/
|
|
28
|
+
app/ # Frontend application directory
|
|
29
|
+
src/
|
|
30
|
+
app/
|
|
31
|
+
components/ # Shared/feature components
|
|
32
|
+
services/ # Services
|
|
33
|
+
pipes/ # Custom pipes
|
|
34
|
+
directives/ # Custom directives
|
|
35
|
+
interceptors/ # HTTP interceptors
|
|
36
|
+
guards/ # Route guards
|
|
37
|
+
state/ # NgRx store (if used)
|
|
38
|
+
models/ # TypeScript interfaces
|
|
39
|
+
app.module.ts # Root module
|
|
40
|
+
app.component.ts # Root component
|
|
41
|
+
app-routing.module.ts # Root routing
|
|
42
|
+
assets/ # Static assets
|
|
43
|
+
environments/ # Environment configs
|
|
44
|
+
environment.ts
|
|
45
|
+
environment.prod.ts
|
|
46
|
+
index.html
|
|
47
|
+
main.ts
|
|
48
|
+
polyfills.ts
|
|
49
|
+
styles.scss # Global styles
|
|
50
|
+
angular.json # Angular CLI config
|
|
51
|
+
package.json
|
|
52
|
+
tsconfig.json
|
|
53
|
+
tsconfig.app.json
|
|
54
|
+
karma.conf.js # Karma test config
|
|
55
|
+
.env # Environment variables
|
|
56
|
+
cli/ # CLI scripts
|
|
57
|
+
frontend-cli
|
|
58
|
+
complete
|
|
59
|
+
help
|
|
60
|
+
utils
|
|
61
|
+
docker/ # Docker configuration
|
|
62
|
+
Dockerfile
|
|
63
|
+
supervisord/
|
|
64
|
+
.env # Root env (Docker registry, tokens)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Root-Level Layout (older projects)
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
project-root/
|
|
71
|
+
src/
|
|
72
|
+
app/
|
|
73
|
+
...
|
|
74
|
+
angular.json
|
|
75
|
+
package.json
|
|
76
|
+
...
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## 2. Common Commands
|
|
80
|
+
|
|
81
|
+
### Development
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# Start dev server
|
|
85
|
+
npm start
|
|
86
|
+
# OR
|
|
87
|
+
ng serve
|
|
88
|
+
|
|
89
|
+
# Start with specific port
|
|
90
|
+
ng serve --port 4201
|
|
91
|
+
|
|
92
|
+
# Start with proxy
|
|
93
|
+
ng serve --proxy-config proxy.conf.json
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Building
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# Development build
|
|
100
|
+
ng build
|
|
101
|
+
|
|
102
|
+
# Production build
|
|
103
|
+
ng build --prod
|
|
104
|
+
|
|
105
|
+
# Production with specific config
|
|
106
|
+
ng build --configuration=production
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Linting
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
ng lint
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Code Generation
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# Generate component
|
|
119
|
+
ng generate component components/feature-name
|
|
120
|
+
|
|
121
|
+
# Generate service
|
|
122
|
+
ng generate service services/feature-name
|
|
123
|
+
|
|
124
|
+
# Generate module
|
|
125
|
+
ng generate module feature-name
|
|
126
|
+
|
|
127
|
+
# Generate pipe
|
|
128
|
+
ng generate pipe pipes/feature-name
|
|
129
|
+
|
|
130
|
+
# Generate directive
|
|
131
|
+
ng generate directive directives/feature-name
|
|
132
|
+
|
|
133
|
+
# Generate guard
|
|
134
|
+
ng generate guard guards/auth
|
|
135
|
+
|
|
136
|
+
# Dry run (preview)
|
|
137
|
+
ng generate component feature-name --dry-run
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## 3. Configuration Files
|
|
141
|
+
|
|
142
|
+
### angular.json
|
|
143
|
+
|
|
144
|
+
Key sections:
|
|
145
|
+
|
|
146
|
+
- `projects.<name>.architect.build` - Build configuration
|
|
147
|
+
- `projects.<name>.architect.serve` - Dev server configuration
|
|
148
|
+
- `projects.<name>.architect.lint` - Lint configuration
|
|
149
|
+
|
|
150
|
+
### Environment Files
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
// environments/environment.ts (development)
|
|
154
|
+
export const environment = {
|
|
155
|
+
production: false,
|
|
156
|
+
apiUrl: 'http://localhost:3000/api',
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
// environments/environment.prod.ts (production)
|
|
160
|
+
export const environment = {
|
|
161
|
+
production: true,
|
|
162
|
+
apiUrl: '/api',
|
|
163
|
+
};
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Dynamic Environment (setEnv.ts pattern)
|
|
167
|
+
|
|
168
|
+
Many projects use a `setEnv.ts` script to generate environment from `.env`:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
# Build process often includes:
|
|
172
|
+
npm run config # Generates environment.ts from .env
|
|
173
|
+
ng build --prod
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## 4. Proxy Configuration
|
|
177
|
+
|
|
178
|
+
```json
|
|
179
|
+
// proxy.conf.json
|
|
180
|
+
{
|
|
181
|
+
"/api/*": {
|
|
182
|
+
"target": "http://localhost:3000",
|
|
183
|
+
"secure": false,
|
|
184
|
+
"changeOrigin": true
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## 5. Dependencies
|
|
190
|
+
|
|
191
|
+
### Common dependencies across projects
|
|
192
|
+
|
|
193
|
+
| Package | Purpose |
|
|
194
|
+
| ---------------------------- | ------------------------------------------- |
|
|
195
|
+
| `@angular/*` | Angular framework (6-11) |
|
|
196
|
+
| `@ngrx/*` | State management |
|
|
197
|
+
| `@ngx-translate/*` | Internationalization |
|
|
198
|
+
| `bootstrap` | CSS framework (when present) |
|
|
199
|
+
| `@ng-bootstrap/ng-bootstrap` | Angular Bootstrap components (when present) |
|
|
200
|
+
| `ngrx-store-localstorage` | NgRx localStorage sync |
|
|
201
|
+
| `@localize-router/*` | Localized routing |
|
|
202
|
+
| `ngx-swiper-wrapper` | Image swipers |
|
|
203
|
+
|
|
204
|
+
### Common dev dependencies
|
|
205
|
+
|
|
206
|
+
| Package | Purpose |
|
|
207
|
+
| -------------------- | ---------------------- |
|
|
208
|
+
| `@angular/cli` | Angular CLI |
|
|
209
|
+
| `karma` | Test runner |
|
|
210
|
+
| `jasmine` | Test framework |
|
|
211
|
+
| `protractor` | E2E tests (deprecated) |
|
|
212
|
+
| `tslint` or `eslint` | Linting |
|
|
213
|
+
|
|
214
|
+
## 6. Module Organization
|
|
215
|
+
|
|
216
|
+
```typescript
|
|
217
|
+
// app.module.ts - Root module
|
|
218
|
+
@NgModule({
|
|
219
|
+
declarations: [AppComponent],
|
|
220
|
+
imports: [
|
|
221
|
+
BrowserModule,
|
|
222
|
+
AppRoutingModule,
|
|
223
|
+
HttpClientModule,
|
|
224
|
+
TranslateModule.forRoot({...}),
|
|
225
|
+
StoreModule.forRoot(reducers, { metaReducers }),
|
|
226
|
+
EffectsModule.forRoot([]),
|
|
227
|
+
FeatureModule,
|
|
228
|
+
],
|
|
229
|
+
providers: [
|
|
230
|
+
{ provide: HTTP_INTERCEPTORS, useClass: LanguageInterceptor, multi: true },
|
|
231
|
+
{ provide: HTTP_INTERCEPTORS, useClass: CacheInterceptor, multi: true },
|
|
232
|
+
],
|
|
233
|
+
bootstrap: [AppComponent],
|
|
234
|
+
})
|
|
235
|
+
export class AppModule {}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
## 7. i18n Pattern (ngx-translate)
|
|
239
|
+
|
|
240
|
+
```typescript
|
|
241
|
+
// app.module.ts
|
|
242
|
+
TranslateModule.forRoot({
|
|
243
|
+
loader: {
|
|
244
|
+
provide: TranslateLoader,
|
|
245
|
+
useFactory: HttpLoaderFactory,
|
|
246
|
+
deps: [HttpClient],
|
|
247
|
+
},
|
|
248
|
+
defaultLanguage: 'pl',
|
|
249
|
+
})
|
|
250
|
+
|
|
251
|
+
// Usage in templates
|
|
252
|
+
{{ 'HEADER.title' | translate }}
|
|
253
|
+
|
|
254
|
+
// Usage in code
|
|
255
|
+
constructor(private translate: TranslateService) {
|
|
256
|
+
this.translate.use('pl');
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## 8. Best Practices
|
|
261
|
+
|
|
262
|
+
1. **Use `ng generate`** for scaffolding new code
|
|
263
|
+
2. **Always register in NgModule** - declarations, imports, exports
|
|
264
|
+
3. **Use environment files** for config - never hardcode URLs
|
|
265
|
+
4. **Use proxy.conf.json** for development API proxy
|
|
266
|
+
5. **Check angular.json location** - may be in `app/` subdirectory
|
|
267
|
+
6. **Use `--prod` flag** for production builds
|
|
268
|
+
7. **Follow existing file organization** - don't introduce new folder structures
|
|
@@ -0,0 +1,182 @@
|
|
|
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(map((items) => items.length));
|
|
55
|
+
|
|
56
|
+
setItems(items: Item[]): void {
|
|
57
|
+
this._items.next(items);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## 3. Constructor Injection
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
@Component({
|
|
66
|
+
selector: 'app-feature',
|
|
67
|
+
templateUrl: './feature.component.html',
|
|
68
|
+
})
|
|
69
|
+
export class FeatureComponent implements OnInit, OnDestroy {
|
|
70
|
+
private readonly destroy$ = new Subject<void>();
|
|
71
|
+
|
|
72
|
+
constructor(
|
|
73
|
+
private readonly service: FeatureService,
|
|
74
|
+
private readonly router: Router,
|
|
75
|
+
) {}
|
|
76
|
+
|
|
77
|
+
ngOnInit(): void {
|
|
78
|
+
this.service.items$
|
|
79
|
+
.pipe(takeUntil(this.destroy$))
|
|
80
|
+
.subscribe((items) => (this.items = items));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
ngOnDestroy(): void {
|
|
84
|
+
this.destroy$.next();
|
|
85
|
+
this.destroy$.complete();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## 4. Input/Output Decorators
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
@Component({
|
|
94
|
+
selector: 'app-card',
|
|
95
|
+
templateUrl: './card.component.html',
|
|
96
|
+
})
|
|
97
|
+
export class CardComponent {
|
|
98
|
+
@Input() item!: Item;
|
|
99
|
+
@Input() showActions = true;
|
|
100
|
+
@Output() selected = new EventEmitter<Item>();
|
|
101
|
+
|
|
102
|
+
// Two-way binding
|
|
103
|
+
@Input() value = '';
|
|
104
|
+
@Output() valueChange = new EventEmitter<string>();
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## 5. NgModule
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
@NgModule({
|
|
112
|
+
declarations: [FeatureComponent, CardComponent],
|
|
113
|
+
imports: [CommonModule, TranslateModule, NgbModule],
|
|
114
|
+
exports: [FeatureComponent],
|
|
115
|
+
})
|
|
116
|
+
export class FeatureModule {}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## 6. NgRx Patterns
|
|
120
|
+
|
|
121
|
+
```typescript
|
|
122
|
+
// Actions
|
|
123
|
+
export const loadItems = createAction('[Items] Load');
|
|
124
|
+
export const loadItemsSuccess = createAction(
|
|
125
|
+
'[Items] Load Success',
|
|
126
|
+
props<{ items: Item[] }>(),
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
// Reducer
|
|
130
|
+
export const reducer = createReducer(
|
|
131
|
+
initialState,
|
|
132
|
+
on(loadItems, (state) => ({ ...state, loading: true })),
|
|
133
|
+
on(loadItemsSuccess, (state, { items }) => ({
|
|
134
|
+
...state,
|
|
135
|
+
items,
|
|
136
|
+
loading: false,
|
|
137
|
+
})),
|
|
138
|
+
);
|
|
139
|
+
|
|
140
|
+
// Effects
|
|
141
|
+
@Injectable()
|
|
142
|
+
export class ItemEffects {
|
|
143
|
+
constructor(
|
|
144
|
+
private actions$: Actions,
|
|
145
|
+
private service: ItemService,
|
|
146
|
+
) {}
|
|
147
|
+
|
|
148
|
+
load$ = createEffect(() =>
|
|
149
|
+
this.actions$.pipe(
|
|
150
|
+
ofType(loadItems),
|
|
151
|
+
mergeMap(() =>
|
|
152
|
+
this.service.getAll().pipe(
|
|
153
|
+
map((items) => loadItemsSuccess({ items })),
|
|
154
|
+
catchError((error) => of(loadItemsFailure({ error: error.message }))),
|
|
155
|
+
),
|
|
156
|
+
),
|
|
157
|
+
),
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## 7. Async Pipe
|
|
163
|
+
|
|
164
|
+
```html
|
|
165
|
+
<div *ngIf="isLoading$ | async; else content">Loading...</div>
|
|
166
|
+
<ng-template #content>
|
|
167
|
+
<li *ngFor="let item of items$ | async; trackBy: trackById">
|
|
168
|
+
{{ item.name }}
|
|
169
|
+
</li>
|
|
170
|
+
</ng-template>
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## 8. PR Checklist
|
|
174
|
+
|
|
175
|
+
- [ ] Using `*ngIf`/`*ngFor` (NOT `@if`/`@for`)
|
|
176
|
+
- [ ] Every `*ngFor` has `trackBy`
|
|
177
|
+
- [ ] Using constructor DI (NOT `inject()`)
|
|
178
|
+
- [ ] Using `@Input()`/`@Output()` (NOT `input()`/`output()`)
|
|
179
|
+
- [ ] Using BehaviorSubject/NgRx for state (NOT signals)
|
|
180
|
+
- [ ] Component declared in NgModule
|
|
181
|
+
- [ ] Using `async` pipe in templates
|
|
182
|
+
- [ ] `OnDestroy` with `takeUntil` pattern
|
|
@@ -0,0 +1,74 @@
|
|
|
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
|
+
{
|
|
65
|
+
"viewport": "desktop",
|
|
66
|
+
"url": "https://maia-ai-api.smartsoft.biz.pl/files/abc123"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"viewport": "mobile",
|
|
70
|
+
"url": "https://maia-ai-api.smartsoft.biz.pl/files/def456"
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
```
|
|
@@ -0,0 +1,114 @@
|
|
|
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., FRA-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: FRA-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 FRA-XXX pattern
|
|
113
|
+
3. **Include Refs:** with Linear task ID when available
|
|
114
|
+
4. **Keep subject line under 72 characters**
|