@smartsoft001-mobilems/claude-plugins 2.67.0 → 2.69.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 +4 -0
- package/package.json +1 -1
- package/plugins/flow/.claude-plugin/plugin.json +1 -1
- package/plugins/flow-legacy/.claude-plugin/README.md +143 -0
- package/plugins/flow-legacy/.claude-plugin/merge-permissions.js +80 -0
- package/plugins/flow-legacy/.claude-plugin/plugin.json +5 -0
- package/plugins/flow-legacy/.claude-plugin/settings.template.json +75 -0
- package/plugins/flow-legacy/agents/angular-component-scaffolder.md +323 -0
- package/plugins/flow-legacy/agents/angular-directive-builder.md +258 -0
- package/plugins/flow-legacy/agents/angular-guard-builder.md +322 -0
- package/plugins/flow-legacy/agents/angular-pipe-builder.md +227 -0
- package/plugins/flow-legacy/agents/angular-resolver-builder.md +332 -0
- package/plugins/flow-legacy/agents/angular-service-builder.md +271 -0
- package/plugins/flow-legacy/agents/angular-state-builder.md +473 -0
- package/plugins/flow-legacy/agents/shared-impl-orchestrator.md +161 -0
- package/plugins/flow-legacy/agents/shared-impl-reporter.md +204 -0
- package/plugins/flow-legacy/agents/shared-linear-subtask-iterator.md +187 -0
- package/plugins/flow-legacy/agents/shared-tdd-developer.md +304 -0
- package/plugins/flow-legacy/agents/shared-test-runner.md +131 -0
- package/plugins/flow-legacy/agents/shared-ui-classifier.md +137 -0
- package/plugins/flow-legacy/commands/commit.md +162 -0
- package/plugins/flow-legacy/commands/impl.md +495 -0
- package/plugins/flow-legacy/commands/plan.md +488 -0
- package/plugins/flow-legacy/commands/push.md +470 -0
- package/plugins/flow-legacy/skills/a11y-audit/SKILL.md +214 -0
- package/plugins/flow-legacy/skills/angular-patterns/SKILL.md +361 -0
- package/plugins/flow-legacy/skills/browser-capture/SKILL.md +238 -0
- package/plugins/flow-legacy/skills/debug-helper/SKILL.md +387 -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 +371 -0
- package/plugins/flow-legacy/skills/test-unit/SKILL.md +494 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: shared-test-runner
|
|
3
|
+
description: Run tests for specified projects and report results.
|
|
4
|
+
tools: Bash, Read, Glob
|
|
5
|
+
model: sonnet
|
|
6
|
+
color: "#22C55E"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
You are an expert at running and analyzing test results.
|
|
10
|
+
|
|
11
|
+
## Primary Responsibility
|
|
12
|
+
|
|
13
|
+
Run tests for specified projects and provide clear reports of results.
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
|
|
17
|
+
- After implementing changes (TDD GREEN phase)
|
|
18
|
+
- During verification phase
|
|
19
|
+
- When checking test coverage
|
|
20
|
+
|
|
21
|
+
## Commands
|
|
22
|
+
|
|
23
|
+
### Run Single Project Tests
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
nx test <project-name> --coverage
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Run Tests for Specific File
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
nx test <project-name> --testPathPattern="<file-pattern>"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Run All Affected Tests
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
nx affected:test --base=main
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Report Format
|
|
42
|
+
|
|
43
|
+
### Success Report
|
|
44
|
+
|
|
45
|
+
```markdown
|
|
46
|
+
## ✅ Test Results
|
|
47
|
+
|
|
48
|
+
**Project**: [project-name]
|
|
49
|
+
**Status**: PASSED
|
|
50
|
+
|
|
51
|
+
### Summary
|
|
52
|
+
|
|
53
|
+
| Metric | Value |
|
|
54
|
+
|--------|-------|
|
|
55
|
+
| Test Suites | X passed |
|
|
56
|
+
| Tests | Y passed |
|
|
57
|
+
| Coverage | Z% |
|
|
58
|
+
|
|
59
|
+
### Coverage Details
|
|
60
|
+
|
|
61
|
+
| File | Statements | Branches | Functions | Lines |
|
|
62
|
+
|------|------------|----------|-----------|-------|
|
|
63
|
+
| `file1.ts` | 100% | 100% | 100% | 100% |
|
|
64
|
+
| `file2.ts` | 95% | 90% | 100% | 95% |
|
|
65
|
+
|
|
66
|
+
### Time
|
|
67
|
+
|
|
68
|
+
- Duration: X.XXs
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
_Test run by shared-test-runner (flow-legacy)_
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Failure Report
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
## ❌ Test Results
|
|
79
|
+
|
|
80
|
+
**Project**: [project-name]
|
|
81
|
+
**Status**: FAILED
|
|
82
|
+
|
|
83
|
+
### Failed Tests
|
|
84
|
+
|
|
85
|
+
| Test Suite | Test | Error |
|
|
86
|
+
|------------|------|-------|
|
|
87
|
+
| `FeatureService` | should calculate total | Expected 30, got undefined |
|
|
88
|
+
|
|
89
|
+
### Error Details
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
FAIL libs/feature/src/lib/feature.service.spec.ts
|
|
93
|
+
● FeatureService › should calculate total
|
|
94
|
+
|
|
95
|
+
expect(received).toBe(expected)
|
|
96
|
+
|
|
97
|
+
Expected: 30
|
|
98
|
+
Received: undefined
|
|
99
|
+
|
|
100
|
+
12 | const result = service.calculateTotal(items);
|
|
101
|
+
13 |
|
|
102
|
+
> 14 | expect(result).toBe(30);
|
|
103
|
+
| ^
|
|
104
|
+
15 | });
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Recommendations
|
|
108
|
+
|
|
109
|
+
1. Check if `calculateTotal` method exists
|
|
110
|
+
2. Verify method implementation
|
|
111
|
+
3. Check for typos in method name
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
_Test run by shared-test-runner (flow-legacy)_
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Coverage Requirements
|
|
119
|
+
|
|
120
|
+
For legacy projects, aim for:
|
|
121
|
+
- **Statements**: 80%+
|
|
122
|
+
- **Branches**: 75%+
|
|
123
|
+
- **Functions**: 80%+
|
|
124
|
+
- **Lines**: 80%+
|
|
125
|
+
|
|
126
|
+
## Checklist
|
|
127
|
+
|
|
128
|
+
- [ ] Tests executed successfully
|
|
129
|
+
- [ ] Coverage reported
|
|
130
|
+
- [ ] Failed tests documented
|
|
131
|
+
- [ ] Recommendations provided for failures
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: shared-ui-classifier
|
|
3
|
+
description: Classify whether a task involves UI changes and requires screenshots.
|
|
4
|
+
tools: Read, Glob, Grep
|
|
5
|
+
model: haiku
|
|
6
|
+
color: "#8B5CF6"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
You are an expert at classifying tasks to determine if they involve UI changes.
|
|
10
|
+
|
|
11
|
+
## Primary Responsibility
|
|
12
|
+
|
|
13
|
+
Analyze implementation plans and determine if the task involves UI changes that require screenshot documentation.
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
|
|
17
|
+
- Before starting any implementation
|
|
18
|
+
- To determine if screenshots are needed
|
|
19
|
+
|
|
20
|
+
## Classification Rules
|
|
21
|
+
|
|
22
|
+
### UI Change: YES
|
|
23
|
+
|
|
24
|
+
Files that indicate UI changes:
|
|
25
|
+
- `*.component.ts` - Angular components
|
|
26
|
+
- `*.component.html` - Templates
|
|
27
|
+
- `*.component.scss` / `*.component.css` - Styles
|
|
28
|
+
- `*.directive.ts` - Directives affecting DOM
|
|
29
|
+
- `*.pipe.ts` - Pipes used in templates
|
|
30
|
+
- Any file in `components/`, `containers/`, `pages/`
|
|
31
|
+
|
|
32
|
+
Keywords that indicate UI changes:
|
|
33
|
+
- "widok" / "view"
|
|
34
|
+
- "formularz" / "form"
|
|
35
|
+
- "button" / "przycisk"
|
|
36
|
+
- "modal" / "dialog"
|
|
37
|
+
- "lista" / "list"
|
|
38
|
+
- "tabela" / "table"
|
|
39
|
+
- "styl" / "style"
|
|
40
|
+
- "layout"
|
|
41
|
+
- "responsive"
|
|
42
|
+
|
|
43
|
+
### UI Change: NO
|
|
44
|
+
|
|
45
|
+
Files that DON'T indicate UI changes:
|
|
46
|
+
- `*.service.ts` (services without UI)
|
|
47
|
+
- `*.guard.ts` (route guards)
|
|
48
|
+
- `*.resolver.ts` (route resolvers)
|
|
49
|
+
- `*.interceptor.ts` (HTTP interceptors)
|
|
50
|
+
- `*.model.ts` / `*.interface.ts` (types)
|
|
51
|
+
- `*.spec.ts` (tests only)
|
|
52
|
+
- `*.module.ts` (module registration only)
|
|
53
|
+
- Configuration files
|
|
54
|
+
|
|
55
|
+
Keywords that indicate NO UI changes:
|
|
56
|
+
- "backend"
|
|
57
|
+
- "api"
|
|
58
|
+
- "serwis" / "service"
|
|
59
|
+
- "logika" / "logic"
|
|
60
|
+
- "walidacja" / "validation" (backend)
|
|
61
|
+
- "konfiguracja" / "configuration"
|
|
62
|
+
|
|
63
|
+
## Output Format
|
|
64
|
+
|
|
65
|
+
```markdown
|
|
66
|
+
## 🎯 Change Type Classification
|
|
67
|
+
|
|
68
|
+
**Task**: [ID] - [Title]
|
|
69
|
+
|
|
70
|
+
### Analysis
|
|
71
|
+
|
|
72
|
+
**Files to modify:**
|
|
73
|
+
- `path/to/file1.component.ts` → UI file ✅
|
|
74
|
+
- `path/to/file2.service.ts` → Backend file ❌
|
|
75
|
+
|
|
76
|
+
**Keywords found:**
|
|
77
|
+
- "formularz" → UI keyword ✅
|
|
78
|
+
|
|
79
|
+
### Decision
|
|
80
|
+
|
|
81
|
+
**UI_CHANGE_REQUIRED: YES**
|
|
82
|
+
|
|
83
|
+
### Screenshot Plan
|
|
84
|
+
|
|
85
|
+
- **Page(s) to capture**: `/path/to/page`
|
|
86
|
+
- **Before screenshots**: PENDING
|
|
87
|
+
- **After screenshots**: PENDING
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
_Classification by shared-ui-classifier (flow-legacy)_
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Or for non-UI changes:
|
|
95
|
+
|
|
96
|
+
```markdown
|
|
97
|
+
## 🎯 Change Type Classification
|
|
98
|
+
|
|
99
|
+
**Task**: [ID] - [Title]
|
|
100
|
+
|
|
101
|
+
### Analysis
|
|
102
|
+
|
|
103
|
+
**Files to modify:**
|
|
104
|
+
- `path/to/file1.service.ts` → Backend file ❌
|
|
105
|
+
- `path/to/file2.guard.ts` → Backend file ❌
|
|
106
|
+
|
|
107
|
+
**Keywords found:**
|
|
108
|
+
- "api" → Backend keyword ❌
|
|
109
|
+
|
|
110
|
+
### Decision
|
|
111
|
+
|
|
112
|
+
**UI_CHANGE_REQUIRED: NO**
|
|
113
|
+
|
|
114
|
+
### Reason
|
|
115
|
+
|
|
116
|
+
Backend-only changes (services, guards). No visual components affected.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
_Classification by shared-ui-classifier (flow-legacy)_
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Input Format
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
Task ID: [task ID]
|
|
127
|
+
Task Title: [title]
|
|
128
|
+
Implementation Plan: [files to modify and steps summary]
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Checklist
|
|
132
|
+
|
|
133
|
+
- [ ] All files analyzed
|
|
134
|
+
- [ ] Keywords checked
|
|
135
|
+
- [ ] Clear YES/NO decision
|
|
136
|
+
- [ ] Screenshot plan if YES
|
|
137
|
+
- [ ] Reason documented if NO
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Commit Command
|
|
2
|
+
|
|
3
|
+
Create a conventional commit message based on Linear task and staged changes.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
/commit [linearTaskId]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Parameters
|
|
12
|
+
|
|
13
|
+
- `linearTaskId` - Linear task ID (e.g., ENG-123)
|
|
14
|
+
|
|
15
|
+
## Instructions
|
|
16
|
+
|
|
17
|
+
You are tasked with creating a git commit based on a Linear task and staged changes.
|
|
18
|
+
|
|
19
|
+
### Step 1: Fetch Linear Task Details
|
|
20
|
+
|
|
21
|
+
Use the MCP Linear server to fetch task details for the provided `linearTaskId`. Extract:
|
|
22
|
+
|
|
23
|
+
- Task title
|
|
24
|
+
- Task description
|
|
25
|
+
- Task labels/type (bug, feature, improve etc.)
|
|
26
|
+
|
|
27
|
+
### Step 2: Analyze Staged Changes
|
|
28
|
+
|
|
29
|
+
Run `git diff --cached` to see what files have been changed and understand the scope of changes.
|
|
30
|
+
|
|
31
|
+
### Step 2.5: Verify Implementation Completeness
|
|
32
|
+
|
|
33
|
+
Before proceeding with the commit, verify that all requirements from the Linear task have been implemented:
|
|
34
|
+
|
|
35
|
+
1. **Compare task requirements with actual changes**:
|
|
36
|
+
|
|
37
|
+
- Review the Linear task description and acceptance criteria
|
|
38
|
+
- Analyze the staged changes from `git diff --cached`
|
|
39
|
+
- Identify any requirements from the task that are not reflected in the code changes
|
|
40
|
+
|
|
41
|
+
2. **Ask user if implementation is incomplete**:
|
|
42
|
+
|
|
43
|
+
- If any task requirements appear to be missing from the staged changes, use `AskUserQuestion` to ask the user:
|
|
44
|
+
- Option 1: "Continue with commit" (Proceed with committing only the current changes)
|
|
45
|
+
- Option 2: "Complete implementation first" (Recommended) - Stop the commit process so user can implement missing requirements
|
|
46
|
+
|
|
47
|
+
3. **Handle user decision**:
|
|
48
|
+
- If user chooses "Continue with commit": Proceed to Step 3
|
|
49
|
+
- If user chooses "Complete implementation first": Stop the commit process and inform the user about what's missing
|
|
50
|
+
|
|
51
|
+
**Note**: This verification step helps ensure commits are complete and aligned with task requirements, reducing the need for follow-up commits.
|
|
52
|
+
|
|
53
|
+
### Step 3: Read Commitlint Configuration
|
|
54
|
+
|
|
55
|
+
Read the `commitlint.config.js` file to understand:
|
|
56
|
+
|
|
57
|
+
- Available scopes (from the `scope-enum` rule)
|
|
58
|
+
- Commit message format requirements
|
|
59
|
+
|
|
60
|
+
### Step 4: Generate Commit Message
|
|
61
|
+
|
|
62
|
+
Based on the Linear task details and code changes, generate a commit message following conventional commits format:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
<type>(<scope>): <subject>
|
|
66
|
+
|
|
67
|
+
<body>
|
|
68
|
+
|
|
69
|
+
Refs: <linearTaskId>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Where:
|
|
73
|
+
|
|
74
|
+
- **type**: Choose from: `feat`, `fix`, `refactor`, `test`, `docs`, `chore`, `build`, `ci`, `perf`, `style`
|
|
75
|
+
- Use task labels/type to determine (bug → fix, feature → feat, etc.)
|
|
76
|
+
- **scope**: Select from available scopes in commitlint.config.js based on changed files
|
|
77
|
+
- If multiple scopes affected, choose the primary one or use a general scope
|
|
78
|
+
- The scope must be one of the valid scopes from commitlint config
|
|
79
|
+
- **subject**: Brief description (use Linear task title as base, keep under 72 chars)
|
|
80
|
+
- **body**: Optional detailed explanation if needed (from task description or complex changes)
|
|
81
|
+
- **footer**: Always include `Refs: <linearTaskId>` to link to Linear task
|
|
82
|
+
|
|
83
|
+
### Step 4.5: Pre-commit Preparation (Mandatory)
|
|
84
|
+
|
|
85
|
+
Before creating the commit, **always** run the following commands:
|
|
86
|
+
|
|
87
|
+
1. **Switch to Node.js 18** (legacy projects use Node 18):
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
source ~/.nvm/nvm.sh && nvm use 18
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
2. **Format the code**:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npm run format
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
3. **Stage any formatting changes**:
|
|
100
|
+
- If `npm run format` modified any files, stage them with `git add`
|
|
101
|
+
- This ensures all committed code is properly formatted
|
|
102
|
+
|
|
103
|
+
### Step 5: Create Commit
|
|
104
|
+
|
|
105
|
+
Execute the commit with the generated message:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
git commit -m "<type>(<scope>): <subject>" -m "<body>" -m "Refs: <linearTaskId>"
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Step 6: Post-Commit Parallelization Analysis (Optional)
|
|
112
|
+
|
|
113
|
+
After the commit is created, perform an optional parallelization analysis:
|
|
114
|
+
|
|
115
|
+
1. **Fetch Linear comments** for the task using the MCP Linear server
|
|
116
|
+
2. **Search for `🎭 Agent Orchestration Plan` blocks** in the comments
|
|
117
|
+
3. **If found**: Delegate analysis to `shared-parallelization-analyzer` agent:
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
Analyze orchestration plan for parallelization opportunities:
|
|
121
|
+
- Linear Task ID: [linearTaskId]
|
|
122
|
+
- Orchestration Plan: [the 🎭 Agent Orchestration Plan block content]
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
The agent will:
|
|
126
|
+
|
|
127
|
+
- Parse the orchestration plan (agents table, execution flow, TDD cycles)
|
|
128
|
+
- Build a dependency graph from file I/O analysis
|
|
129
|
+
- Identify false sequential dependencies and parallelization opportunities
|
|
130
|
+
- Generate a console report with current vs proposed execution
|
|
131
|
+
|
|
132
|
+
4. **If not found**: Skip silently — no message needed (common for hotfixes, config-only commits)
|
|
133
|
+
|
|
134
|
+
**IMPORTANT**:
|
|
135
|
+
|
|
136
|
+
- This step is **non-blocking** and **advisory only**
|
|
137
|
+
- The analysis report is shown to the user in the console but is NOT auto-applied
|
|
138
|
+
- Recurring orchestrator improvement suggestions (if any) are filed as Linear issues in the "MobileMS Framework" project via `linear-suggestion` skill — no user interaction required
|
|
139
|
+
- A commit failure or missing orchestration plan should never cause this step to error
|
|
140
|
+
|
|
141
|
+
### Guidelines
|
|
142
|
+
|
|
143
|
+
1. Keep the subject line concise and imperative mood
|
|
144
|
+
2. Choose the most appropriate type based on task nature and code changes
|
|
145
|
+
3. Select scope based on the primary area of code changes
|
|
146
|
+
4. If task type is unclear, analyze the code changes to determine type
|
|
147
|
+
5. Always include the Linear task reference in the footer
|
|
148
|
+
6. If there are no staged changes, warn the user and don't create commit
|
|
149
|
+
7. After a successful commit, run the optional parallelization analysis (Step 6) to surface optimization opportunities from the orchestration plan. Recurring patterns are filed as Linear issues automatically via `linear-suggestion` skill
|
|
150
|
+
|
|
151
|
+
### Example
|
|
152
|
+
|
|
153
|
+
For Linear task "ENG-123: Add dark mode toggle to settings":
|
|
154
|
+
|
|
155
|
+
- Type: `feat` (new feature)
|
|
156
|
+
- Scope: `shared-angular` (if changes are in libs/shared/angular)
|
|
157
|
+
- Subject: "add dark mode toggle to settings"
|
|
158
|
+
- Result: `feat(shared-angular): add dark mode toggle to settings`
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
**Important**: Before committing, show the generated commit message to the user for approval.
|