@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,443 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review
|
|
3
|
+
description: Run parallel multi-dimensional code review using Agent Teams. Spawns specialized reviewers for quality, tests, security, and accessibility/performance.
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Bash
|
|
6
|
+
- Read
|
|
7
|
+
- Glob
|
|
8
|
+
- Grep
|
|
9
|
+
- Task
|
|
10
|
+
- TaskCreate
|
|
11
|
+
- TaskUpdate
|
|
12
|
+
- TaskList
|
|
13
|
+
- TaskGet
|
|
14
|
+
- AskUserQuestion
|
|
15
|
+
- mcp__linear__get_issue
|
|
16
|
+
- mcp__linear__list_comments
|
|
17
|
+
- mcp__linear__save_comment
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Review Skill
|
|
21
|
+
|
|
22
|
+
Run parallel multi-dimensional code review using Agent Teams. Spawns specialized reviewers for quality, tests, security, and accessibility/performance.
|
|
23
|
+
|
|
24
|
+
## Execution Checklist
|
|
25
|
+
|
|
26
|
+
Execute each step in order. Do not skip any step marked as MANDATORY.
|
|
27
|
+
|
|
28
|
+
- [ ] **1. Determine review scope** — analyze git diff for changed files + affected projects
|
|
29
|
+
- [ ] **2. Check team prerequisites** — verify `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`
|
|
30
|
+
- [ ] **3. Create Review Board team** — spawn 4 specialized reviewer teammates
|
|
31
|
+
- [ ] **4. Monitor reviews** — track task completions, handle questions between reviewers
|
|
32
|
+
- [ ] **5. Synthesize findings** — delegate to `shared-report-synthesizer`
|
|
33
|
+
- [ ] **6. Post to Linear** — create single review comment in Polish
|
|
34
|
+
- [ ] **7. Present to user** — show findings with severity ratings
|
|
35
|
+
- [ ] **8. Cleanup team**
|
|
36
|
+
|
|
37
|
+
### Task Progress Tracking
|
|
38
|
+
|
|
39
|
+
**MANDATORY**: Use Claude Code's built-in task tracking to provide real-time progress visibility.
|
|
40
|
+
|
|
41
|
+
**Task naming convention**: Every task subject MUST be prefixed with the Linear task ID (or scope):
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
[REVIEW] <linearTaskId> <step description>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**At skill start**: Create tasks for each review dimension:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
TaskCreate({
|
|
51
|
+
subject: "[REVIEW] MM-123 Quality review",
|
|
52
|
+
description: "Lint, type-check, code style, import ordering",
|
|
53
|
+
activeForm: "[REVIEW] MM-123 Running quality review"
|
|
54
|
+
})
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Role
|
|
58
|
+
|
|
59
|
+
**You are an experienced code review lead** with:
|
|
60
|
+
|
|
61
|
+
- Over 10 years of reviewing production code
|
|
62
|
+
- Deep knowledge of TypeScript, Angular, NestJS security patterns
|
|
63
|
+
- WCAG 2.1 accessibility expertise
|
|
64
|
+
- Performance optimization and bundle analysis skills
|
|
65
|
+
- Ability to coordinate multiple review perspectives
|
|
66
|
+
|
|
67
|
+
You produce reviews that are:
|
|
68
|
+
|
|
69
|
+
- **Thorough**: covering quality, tests, security, and accessibility
|
|
70
|
+
- **Actionable**: each finding has a clear severity and fix recommendation
|
|
71
|
+
- **Balanced**: acknowledging good patterns alongside issues
|
|
72
|
+
- **Prioritized**: critical issues first, minor suggestions last
|
|
73
|
+
|
|
74
|
+
## Usage
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
/review [linearTaskId] # Review changes for a Linear task
|
|
78
|
+
/review --staged # Review all staged changes
|
|
79
|
+
/review --diff=main # Review diff against main branch
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Parameters
|
|
83
|
+
|
|
84
|
+
- `linearTaskId` - Linear task ID (e.g., ENG-123)
|
|
85
|
+
- `--staged` - Review all staged changes (no Linear task required)
|
|
86
|
+
- `--diff=<branch>` - Review diff against specified branch
|
|
87
|
+
|
|
88
|
+
## Instructions
|
|
89
|
+
|
|
90
|
+
### Step 1: Determine Review Scope
|
|
91
|
+
|
|
92
|
+
Analyze the changes to review:
|
|
93
|
+
|
|
94
|
+
**If `linearTaskId` provided:**
|
|
95
|
+
|
|
96
|
+
1. Fetch task from Linear via MCP
|
|
97
|
+
2. Find related branch/commits via `git log --all --grep="<taskId>"`
|
|
98
|
+
3. Determine changed files via `git diff main...<branch>`
|
|
99
|
+
|
|
100
|
+
**If `--staged` provided:**
|
|
101
|
+
|
|
102
|
+
1. Use `git diff --cached --name-only` to find staged files
|
|
103
|
+
2. Use `git diff --cached` for full diff
|
|
104
|
+
|
|
105
|
+
**If `--diff=<branch>` provided:**
|
|
106
|
+
|
|
107
|
+
1. Use `git diff <branch>...HEAD --name-only` for changed files
|
|
108
|
+
2. Use `git diff <branch>...HEAD` for full diff
|
|
109
|
+
|
|
110
|
+
**Extract:**
|
|
111
|
+
|
|
112
|
+
- List of changed files with change type (added/modified/deleted)
|
|
113
|
+
- Affected Nx projects (from file paths)
|
|
114
|
+
- Change statistics (lines added/removed per file)
|
|
115
|
+
|
|
116
|
+
### Step 2: Check Team Prerequisites
|
|
117
|
+
|
|
118
|
+
**Check `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`**:
|
|
119
|
+
|
|
120
|
+
If env var is NOT set:
|
|
121
|
+
|
|
122
|
+
→ Fall back to sequential review using `shared-verification-orchestrator` agent.
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
Tryb zespołowy niedostępny — brak CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1.
|
|
126
|
+
Uruchamiam sekwencyjną weryfikację...
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Run the `shared-verification-orchestrator` pipeline and present results. Stop here.
|
|
130
|
+
|
|
131
|
+
**If env var IS set** → Continue to Step 3.
|
|
132
|
+
|
|
133
|
+
### Step 3: Create Review Board Team
|
|
134
|
+
|
|
135
|
+
Create 4 specialized reviewer tasks and spawn teammates:
|
|
136
|
+
|
|
137
|
+
#### Reviewer 1: Quality Reviewer
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
TaskCreate({
|
|
141
|
+
subject: "[REVIEW] <taskId> Quality review: lint and type-check",
|
|
142
|
+
description: "Check lint errors, TypeScript type safety, code style, import ordering",
|
|
143
|
+
activeForm: "[REVIEW] <taskId> Running quality review"
|
|
144
|
+
})
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Spawn prompt:**
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
You are the Quality Reviewer in a Review Board for [scope description].
|
|
151
|
+
|
|
152
|
+
Changed files:
|
|
153
|
+
[list of changed files with diffs]
|
|
154
|
+
|
|
155
|
+
YOUR FOCUS:
|
|
156
|
+
- Run linting: `nx lint [project]` for each affected project
|
|
157
|
+
- Run type-check: `npx tsc --noEmit` for affected projects
|
|
158
|
+
- Check code style: naming conventions, function length, complexity
|
|
159
|
+
- Verify import ordering matches ESLint rules
|
|
160
|
+
- Check for unused imports, dead code, TODO comments
|
|
161
|
+
- Verify Angular modern APIs (signals, @if/@for, inject())
|
|
162
|
+
|
|
163
|
+
DELEGATE TO existing agents as needed:
|
|
164
|
+
- `shared-style-enforcer` for detailed style analysis
|
|
165
|
+
- `shared-verification-runner` for running lint/type-check commands
|
|
166
|
+
|
|
167
|
+
OUTPUT FORMAT:
|
|
168
|
+
## Quality Review Report
|
|
169
|
+
|
|
170
|
+
### Critical Issues
|
|
171
|
+
- [issue] — severity: CRITICAL — file: path/to/file.ts:line
|
|
172
|
+
|
|
173
|
+
### Warnings
|
|
174
|
+
- [warning] — severity: MEDIUM — file: path/to/file.ts:line
|
|
175
|
+
|
|
176
|
+
### Passed Checks
|
|
177
|
+
- [x] Check passed
|
|
178
|
+
|
|
179
|
+
### Summary
|
|
180
|
+
Issues found: X critical, Y medium, Z low
|
|
181
|
+
Recommendation: PASS / PASS_WITH_WARNINGS / BLOCK
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
#### Reviewer 2: Test Reviewer
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
TaskCreate({
|
|
188
|
+
subject: "[REVIEW] <taskId> Test review: coverage and quality",
|
|
189
|
+
description: "Unit test coverage, test quality, AAA pattern compliance",
|
|
190
|
+
activeForm: "[REVIEW] <taskId> Running test review"
|
|
191
|
+
})
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**Spawn prompt:**
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
You are the Test Reviewer in a Review Board for [scope description].
|
|
198
|
+
|
|
199
|
+
Changed files:
|
|
200
|
+
[list of changed files with diffs]
|
|
201
|
+
|
|
202
|
+
YOUR FOCUS:
|
|
203
|
+
- Run unit tests: `nx test [project] --coverage` for affected projects
|
|
204
|
+
- Check coverage meets 90% minimum for new code
|
|
205
|
+
- Verify AAA pattern (Arrange-Act-Assert) in all test files
|
|
206
|
+
- Check test naming: describe('@smartsoft001/pro-...'), it('should...')
|
|
207
|
+
- Verify mock patterns match project conventions
|
|
208
|
+
- Check for missing edge case tests
|
|
209
|
+
- Verify no skipped tests (xit, xdescribe)
|
|
210
|
+
|
|
211
|
+
DELEGATE TO existing agents as needed:
|
|
212
|
+
- `shared-coverage-enforcer` for coverage analysis
|
|
213
|
+
- `shared-test-runner` for test execution
|
|
214
|
+
|
|
215
|
+
OUTPUT FORMAT:
|
|
216
|
+
## Test Review Report
|
|
217
|
+
|
|
218
|
+
### Critical Issues
|
|
219
|
+
- [issue] — severity: CRITICAL — file: path/to/file.spec.ts:line
|
|
220
|
+
|
|
221
|
+
### Warnings
|
|
222
|
+
- [warning] — severity: MEDIUM — file: path/to/file.spec.ts:line
|
|
223
|
+
|
|
224
|
+
### Coverage Report
|
|
225
|
+
| Project | Coverage | Required | Status |
|
|
226
|
+
| --- | --- | --- | --- |
|
|
227
|
+
| [project] | 85% | 90% | ❌ BELOW |
|
|
228
|
+
|
|
229
|
+
### Passed Checks
|
|
230
|
+
- [x] Check passed
|
|
231
|
+
|
|
232
|
+
### Summary
|
|
233
|
+
Issues found: X critical, Y medium, Z low
|
|
234
|
+
Recommendation: PASS / PASS_WITH_WARNINGS / BLOCK
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
#### Reviewer 3: Security Reviewer
|
|
238
|
+
|
|
239
|
+
```
|
|
240
|
+
TaskCreate({
|
|
241
|
+
subject: "[REVIEW] <taskId> Security review: OWASP and deps",
|
|
242
|
+
description: "OWASP top 10, dependency audit, secrets detection",
|
|
243
|
+
activeForm: "[REVIEW] <taskId> Running security review"
|
|
244
|
+
})
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
**Spawn prompt:**
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
You are the Security Reviewer in a Review Board for [scope description].
|
|
251
|
+
|
|
252
|
+
Changed files:
|
|
253
|
+
[list of changed files with diffs]
|
|
254
|
+
|
|
255
|
+
YOUR FOCUS:
|
|
256
|
+
- Check for OWASP Top 10 vulnerabilities in changed code:
|
|
257
|
+
- XSS (innerHTML, bypassSecurityTrust*, template injection)
|
|
258
|
+
- SQL/NoSQL injection (unsanitized query parameters)
|
|
259
|
+
- Broken authentication (token handling, session management)
|
|
260
|
+
- Sensitive data exposure (logging secrets, hardcoded credentials)
|
|
261
|
+
- CSRF protection
|
|
262
|
+
- Run dependency audit: `npm audit --audit-level=moderate`
|
|
263
|
+
- Check for hardcoded secrets, API keys, tokens
|
|
264
|
+
- Verify input validation at system boundaries
|
|
265
|
+
- Check for insecure HTTP calls (http:// vs https://)
|
|
266
|
+
- Review authorization checks in backend code
|
|
267
|
+
|
|
268
|
+
DELEGATE TO existing agents as needed:
|
|
269
|
+
- `shared-security-scanner` for automated security scanning
|
|
270
|
+
|
|
271
|
+
OUTPUT FORMAT:
|
|
272
|
+
## Security Review Report
|
|
273
|
+
|
|
274
|
+
### Critical Issues
|
|
275
|
+
- [issue] — severity: CRITICAL — file: path/to/file.ts:line — OWASP: [category]
|
|
276
|
+
|
|
277
|
+
### Warnings
|
|
278
|
+
- [warning] — severity: MEDIUM — file: path/to/file.ts:line
|
|
279
|
+
|
|
280
|
+
### Dependency Audit
|
|
281
|
+
- Vulnerabilities found: [count by severity]
|
|
282
|
+
|
|
283
|
+
### Passed Checks
|
|
284
|
+
- [x] Check passed
|
|
285
|
+
|
|
286
|
+
### Summary
|
|
287
|
+
Issues found: X critical, Y medium, Z low
|
|
288
|
+
Recommendation: PASS / PASS_WITH_WARNINGS / BLOCK
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
#### Reviewer 4: A11y + Performance Reviewer
|
|
292
|
+
|
|
293
|
+
```
|
|
294
|
+
TaskCreate({
|
|
295
|
+
subject: "[REVIEW] <taskId> A11y + Performance review",
|
|
296
|
+
description: "WCAG 2.1 accessibility, bundle sizes, performance patterns",
|
|
297
|
+
activeForm: "[REVIEW] <taskId> Running a11y + performance review"
|
|
298
|
+
})
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
**Spawn prompt:**
|
|
302
|
+
|
|
303
|
+
```
|
|
304
|
+
You are the Accessibility & Performance Reviewer in a Review Board for [scope description].
|
|
305
|
+
|
|
306
|
+
Changed files:
|
|
307
|
+
[list of changed files with diffs]
|
|
308
|
+
|
|
309
|
+
YOUR FOCUS (Accessibility):
|
|
310
|
+
- WCAG 2.1 compliance in templates:
|
|
311
|
+
- Alt text for images
|
|
312
|
+
- ARIA labels for interactive elements
|
|
313
|
+
- Keyboard navigation support
|
|
314
|
+
- Color contrast (check Tailwind classes)
|
|
315
|
+
- Focus management
|
|
316
|
+
- Semantic HTML usage
|
|
317
|
+
- Screen reader compatibility
|
|
318
|
+
|
|
319
|
+
YOUR FOCUS (Performance):
|
|
320
|
+
- Bundle size impact (new imports, lazy loading)
|
|
321
|
+
- Change detection optimization (OnPush, signals)
|
|
322
|
+
- Template performance (trackBy/@for track, computed signals)
|
|
323
|
+
- Memory leaks (unsubscribed observables, event listeners)
|
|
324
|
+
- Unnecessary re-renders
|
|
325
|
+
|
|
326
|
+
DELEGATE TO existing agents as needed:
|
|
327
|
+
- `ui-a11y-validator` for accessibility scanning
|
|
328
|
+
- `shared-performance-validator` for performance analysis
|
|
329
|
+
|
|
330
|
+
OUTPUT FORMAT:
|
|
331
|
+
## A11y + Performance Review Report
|
|
332
|
+
|
|
333
|
+
### Critical Issues
|
|
334
|
+
- [issue] — severity: CRITICAL — file: path/to/file.ts:line — type: A11Y/PERF
|
|
335
|
+
|
|
336
|
+
### Warnings
|
|
337
|
+
- [warning] — severity: MEDIUM — file: path/to/file.ts:line
|
|
338
|
+
|
|
339
|
+
### Accessibility Audit
|
|
340
|
+
- WCAG violations: [count]
|
|
341
|
+
- Missing ARIA labels: [count]
|
|
342
|
+
|
|
343
|
+
### Performance Impact
|
|
344
|
+
- New dependencies added: [list]
|
|
345
|
+
- Bundle size estimate: [impact]
|
|
346
|
+
|
|
347
|
+
### Passed Checks
|
|
348
|
+
- [x] Check passed
|
|
349
|
+
|
|
350
|
+
### Summary
|
|
351
|
+
Issues found: X critical, Y medium, Z low
|
|
352
|
+
Recommendation: PASS / PASS_WITH_WARNINGS / BLOCK
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
### Step 4: Monitor Reviews
|
|
356
|
+
|
|
357
|
+
While teammates are working:
|
|
358
|
+
|
|
359
|
+
1. **Track progress** via `TaskList` — check which reviewers have completed
|
|
360
|
+
2. **Handle cross-reviewer communication**:
|
|
361
|
+
- When a reviewer finishes with CRITICAL or HIGH findings, broadcast to other reviewers
|
|
362
|
+
- Example: Security reviewer finds XSS → notify Quality reviewer to check sanitization
|
|
363
|
+
3. **Wait for all reviewers** to complete (or timeout after reasonable period)
|
|
364
|
+
|
|
365
|
+
**Cross-reviewer broadcast logic:**
|
|
366
|
+
|
|
367
|
+
```
|
|
368
|
+
When reviewer finishes:
|
|
369
|
+
IF findings contain CRITICAL or HIGH severity:
|
|
370
|
+
FOR each other active reviewer:
|
|
371
|
+
Send broadcast: "[Reviewer] found [severity] issue: [summary]"
|
|
372
|
+
Ask them to check related areas
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### Step 5: Synthesize Findings
|
|
376
|
+
|
|
377
|
+
After all 4 reviewers complete:
|
|
378
|
+
|
|
379
|
+
1. **Collect all reports** from reviewer tasks
|
|
380
|
+
2. **Delegate to `shared-report-synthesizer`** with:
|
|
381
|
+
- Team type: REVIEW
|
|
382
|
+
- All 4 reviewer reports
|
|
383
|
+
- Linear task ID (if available)
|
|
384
|
+
|
|
385
|
+
The synthesizer will:
|
|
386
|
+
|
|
387
|
+
- Merge findings by category
|
|
388
|
+
- Deduplicate identical issues
|
|
389
|
+
- Flag conflicts between reviewers
|
|
390
|
+
- Produce single Polish-language report
|
|
391
|
+
|
|
392
|
+
### Step 6: Post to Linear
|
|
393
|
+
|
|
394
|
+
**If `linearTaskId` was provided:**
|
|
395
|
+
|
|
396
|
+
Post the synthesized review report as a comment on the Linear task via MCP.
|
|
397
|
+
|
|
398
|
+
**If `--staged` or `--diff`:**
|
|
399
|
+
|
|
400
|
+
Skip Linear posting (no task to attach to).
|
|
401
|
+
|
|
402
|
+
### Step 7: Present to User
|
|
403
|
+
|
|
404
|
+
Show the synthesized review results to the user:
|
|
405
|
+
|
|
406
|
+
1. **Overall verdict**: PASS / PASS_WITH_WARNINGS / BLOCK
|
|
407
|
+
2. **Summary table** with per-dimension results
|
|
408
|
+
3. **Critical issues** requiring immediate attention
|
|
409
|
+
4. **Warnings** for consideration
|
|
410
|
+
5. **Passed checks** for confidence
|
|
411
|
+
|
|
412
|
+
### Step 8: Cleanup Team
|
|
413
|
+
|
|
414
|
+
Mark all review tasks as completed and clean up team resources.
|
|
415
|
+
|
|
416
|
+
## Fallback: Sequential Review
|
|
417
|
+
|
|
418
|
+
When `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` is NOT set, run a sequential review:
|
|
419
|
+
|
|
420
|
+
1. Delegate to `shared-verification-orchestrator` for the full 5-stage pipeline
|
|
421
|
+
2. Present results to user
|
|
422
|
+
3. Post to Linear if task ID provided
|
|
423
|
+
|
|
424
|
+
This provides the same verification coverage, just without the parallelism and specialization.
|
|
425
|
+
|
|
426
|
+
## Guidelines
|
|
427
|
+
|
|
428
|
+
1. **All Linear comments in Polish** — review reports posted to Linear must be in Polish
|
|
429
|
+
2. **User-facing output can be in user's language** — terminal output matches user's language
|
|
430
|
+
3. **Severity ratings are mandatory** — every finding must have CRITICAL/HIGH/MEDIUM/LOW
|
|
431
|
+
4. **Recommendations must be actionable** — don't just flag issues, suggest fixes
|
|
432
|
+
5. **Respect existing patterns** — don't flag patterns that are established conventions
|
|
433
|
+
6. **Consider context** — new code vs modified code may have different standards
|
|
434
|
+
7. **Be constructive** — balance criticism with positive observations
|
|
435
|
+
8. **Track everything** — use TaskCreate/TaskUpdate for visibility into review progress
|
|
436
|
+
|
|
437
|
+
## Agent Team Mode (Experimental)
|
|
438
|
+
|
|
439
|
+
**Prerequisite**: `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` in settings.
|
|
440
|
+
|
|
441
|
+
**Activation**: Automatic when env var is set.
|
|
442
|
+
|
|
443
|
+
**Fallback**: If env var not set, skill runs in standard sequential mode via `shared-verification-orchestrator`.
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: test-e2e
|
|
3
|
+
description: Orchestrate E2E Playwright test creation — scaffold project, inject data-testid attributes, write Page Objects and test specs, and run tests.
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Bash
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Edit
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
11
|
+
- Task
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# E2E Test Skill
|
|
15
|
+
|
|
16
|
+
Orchestrate the full E2E Playwright testing workflow: ensure project infrastructure exists, inject `data-testid` attributes into changed component templates, write Page Objects and test specs, and run tests.
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
/test-e2e [component-paths or 'changed']
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Parameters
|
|
25
|
+
|
|
26
|
+
- **component-paths**: Explicit paths to component files (e.g., `libs/shared/angular/src/lib/components/contact-form/contact-form.component.ts`)
|
|
27
|
+
- **`changed`**: Automatically detect changed component templates from `git diff`
|
|
28
|
+
|
|
29
|
+
## Workflow
|
|
30
|
+
|
|
31
|
+
Execute each step in order:
|
|
32
|
+
|
|
33
|
+
### Step 1: Identify Target Components
|
|
34
|
+
|
|
35
|
+
**If `changed` is specified:**
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Find changed component templates
|
|
39
|
+
git diff --name-only HEAD | grep -E "\.component\.(html|ts)$"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**If explicit paths are provided:**
|
|
43
|
+
|
|
44
|
+
Use the provided paths directly.
|
|
45
|
+
|
|
46
|
+
**Output:** List of component files to process.
|
|
47
|
+
|
|
48
|
+
### Step 2: Scaffold E2E Project
|
|
49
|
+
|
|
50
|
+
**Delegate to `e2e-project-scaffolder` agent:**
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
Check if E2E Playwright project exists for the target application.
|
|
54
|
+
If not, scaffold one with Nx generator, multi-browser config, and base Page Object.
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
The agent will:
|
|
58
|
+
|
|
59
|
+
1. Check for existing E2E project (idempotent)
|
|
60
|
+
2. Scaffold if missing: Playwright config, directory structure, base page
|
|
61
|
+
3. Report status
|
|
62
|
+
|
|
63
|
+
**If project already exists:** Continue to Step 3.
|
|
64
|
+
**If scaffolded:** Continue to Step 3.
|
|
65
|
+
|
|
66
|
+
### Step 3: Inject `data-testid` Attributes
|
|
67
|
+
|
|
68
|
+
**Delegate to `e2e-data-testid-injector` agent:**
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
Scan the following changed component templates and inject data-testid attributes:
|
|
72
|
+
|
|
73
|
+
Components:
|
|
74
|
+
- [list of component files from Step 1]
|
|
75
|
+
|
|
76
|
+
Rules:
|
|
77
|
+
- Naming convention: {component-name}-{element-type}-{identifier}
|
|
78
|
+
- Target interactive elements only
|
|
79
|
+
- NEVER overwrite existing data-testid attributes
|
|
80
|
+
- Preserve template formatting
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
The agent will:
|
|
84
|
+
|
|
85
|
+
1. Read each component template
|
|
86
|
+
2. Identify interactive elements without `data-testid`
|
|
87
|
+
3. Inject attributes following naming convention
|
|
88
|
+
4. Report injection summary
|
|
89
|
+
|
|
90
|
+
### Step 4: Write E2E Tests
|
|
91
|
+
|
|
92
|
+
**Delegate to `e2e-test-writer` agent:**
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
Write Playwright E2E tests for the following components:
|
|
96
|
+
|
|
97
|
+
Components:
|
|
98
|
+
- [list of component files from Step 1]
|
|
99
|
+
|
|
100
|
+
E2E project location: [path from Step 2]
|
|
101
|
+
|
|
102
|
+
Requirements:
|
|
103
|
+
- Create Page Object per component extending BasePage
|
|
104
|
+
- Create test spec per component
|
|
105
|
+
- Use data-testid selectors exclusively
|
|
106
|
+
- Cover: visibility, interactions, form submissions, navigation, error states
|
|
107
|
+
- Use Playwright auto-waiting (no manual sleeps)
|
|
108
|
+
- Cross-reference all selectors against template data-testid values
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
The agent will:
|
|
112
|
+
|
|
113
|
+
1. Read component `.ts` and `.html` files
|
|
114
|
+
2. Create Page Objects in `e2e/src/pages/`
|
|
115
|
+
3. Create test specs in `e2e/src/specs/`
|
|
116
|
+
4. Cross-reference selectors against templates
|
|
117
|
+
|
|
118
|
+
### Step 5: Run E2E Tests
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
# Run E2E tests
|
|
122
|
+
npx nx e2e {app-name}-e2e
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**If tests pass:** Report success.
|
|
126
|
+
**If tests fail:** Analyze failures and fix — delegate back to `e2e-test-writer` if needed.
|
|
127
|
+
|
|
128
|
+
### Step 6: Report Results
|
|
129
|
+
|
|
130
|
+
Generate a summary report:
|
|
131
|
+
|
|
132
|
+
```markdown
|
|
133
|
+
## E2E Test Report
|
|
134
|
+
|
|
135
|
+
### Components Processed
|
|
136
|
+
|
|
137
|
+
| Component | Testids Injected | Tests Written | Status |
|
|
138
|
+
| -------------------- | ---------------- | ------------- | ------ |
|
|
139
|
+
| ContactFormComponent | 5 | 6 | PASS |
|
|
140
|
+
| ArticleListComponent | 3 | 4 | PASS |
|
|
141
|
+
|
|
142
|
+
### Summary
|
|
143
|
+
|
|
144
|
+
- **E2E Project**: [existed / scaffolded]
|
|
145
|
+
- **Testids injected**: [total count]
|
|
146
|
+
- **Tests created**: [total count]
|
|
147
|
+
- **Test execution**: [PASS / FAIL with details]
|
|
148
|
+
|
|
149
|
+
### Files Modified
|
|
150
|
+
|
|
151
|
+
| File | Change |
|
|
152
|
+
| ------------------------------------ | ------------------------------ |
|
|
153
|
+
| `contact-form.component.html` | Added 5 data-testid attributes |
|
|
154
|
+
| `e2e/src/pages/contact-form.page.ts` | New Page Object |
|
|
155
|
+
| `e2e/src/specs/contact-form.spec.ts` | New test spec (6 tests) |
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Rules
|
|
159
|
+
|
|
160
|
+
1. **Always scaffold first** — ensure E2E project exists before writing tests
|
|
161
|
+
2. **Always inject testids first** — ensure selectors exist before writing Page Objects
|
|
162
|
+
3. **Use agents for specialized work** — delegate to the right agent for each step
|
|
163
|
+
4. **Run tests after writing** — verify tests pass before reporting success
|
|
164
|
+
5. **Report comprehensively** — include injection summary, tests created, and execution status
|