@atlashub/smartstack-cli 1.1.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/.documentation/agents.html +912 -0
- package/.documentation/apex.html +1014 -0
- package/.documentation/business-analyse.html +1074 -0
- package/.documentation/commands.html +676 -0
- package/.documentation/css/styles.css +2030 -0
- package/.documentation/efcore.html +2501 -0
- package/.documentation/gitflow.html +2053 -0
- package/.documentation/hooks.html +409 -0
- package/.documentation/index.html +319 -0
- package/.documentation/installation.html +458 -0
- package/.documentation/js/app.js +794 -0
- package/.documentation/test-web.html +509 -0
- package/README.md +90 -0
- package/config/default-config.json +86 -0
- package/config/settings.json +53 -0
- package/config/settings.local.example.json +16 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +38198 -0
- package/dist/index.js.map +1 -0
- package/package.json +86 -0
- package/templates/agents/action.md +36 -0
- package/templates/agents/efcore/conflicts.md +57 -0
- package/templates/agents/efcore/db-deploy.md +51 -0
- package/templates/agents/efcore/db-reset.md +59 -0
- package/templates/agents/efcore/db-seed.md +56 -0
- package/templates/agents/efcore/db-status.md +43 -0
- package/templates/agents/efcore/migration.md +85 -0
- package/templates/agents/efcore/rebase-snapshot.md +62 -0
- package/templates/agents/efcore/scan.md +60 -0
- package/templates/agents/efcore/squash.md +67 -0
- package/templates/agents/explore-codebase.md +65 -0
- package/templates/agents/explore-docs.md +97 -0
- package/templates/agents/fix-grammar.md +49 -0
- package/templates/agents/gitflow/abort.md +45 -0
- package/templates/agents/gitflow/cleanup.md +85 -0
- package/templates/agents/gitflow/commit.md +40 -0
- package/templates/agents/gitflow/exec.md +48 -0
- package/templates/agents/gitflow/finish.md +92 -0
- package/templates/agents/gitflow/init.md +139 -0
- package/templates/agents/gitflow/merge.md +62 -0
- package/templates/agents/gitflow/plan.md +42 -0
- package/templates/agents/gitflow/pr.md +78 -0
- package/templates/agents/gitflow/review.md +49 -0
- package/templates/agents/gitflow/start.md +61 -0
- package/templates/agents/gitflow/status.md +32 -0
- package/templates/agents/snipper.md +36 -0
- package/templates/agents/websearch.md +46 -0
- package/templates/commands/_resources/formatting-guide.md +124 -0
- package/templates/commands/ai-prompt.md +315 -0
- package/templates/commands/apex/1-analyze.md +100 -0
- package/templates/commands/apex/2-plan.md +145 -0
- package/templates/commands/apex/3-execute.md +171 -0
- package/templates/commands/apex/4-examine.md +116 -0
- package/templates/commands/apex/5-tasks.md +209 -0
- package/templates/commands/apex.md +76 -0
- package/templates/commands/application/create.md +362 -0
- package/templates/commands/application/templates-backend.md +463 -0
- package/templates/commands/application/templates-frontend.md +517 -0
- package/templates/commands/application/templates-i18n.md +478 -0
- package/templates/commands/application/templates-seed.md +362 -0
- package/templates/commands/application.md +303 -0
- package/templates/commands/business-analyse/1-init.md +269 -0
- package/templates/commands/business-analyse/2-discover.md +520 -0
- package/templates/commands/business-analyse/3-analyse.md +408 -0
- package/templates/commands/business-analyse/4-specify.md +598 -0
- package/templates/commands/business-analyse/5-validate.md +326 -0
- package/templates/commands/business-analyse/6-handoff.md +746 -0
- package/templates/commands/business-analyse/7-doc-html.md +602 -0
- package/templates/commands/business-analyse/bug.md +325 -0
- package/templates/commands/business-analyse/change-request.md +368 -0
- package/templates/commands/business-analyse/hotfix.md +200 -0
- package/templates/commands/business-analyse.md +559 -0
- package/templates/commands/controller/create.md +216 -0
- package/templates/commands/controller/postman-templates.md +528 -0
- package/templates/commands/controller/templates.md +600 -0
- package/templates/commands/controller.md +278 -0
- package/templates/commands/debug.md +95 -0
- package/templates/commands/documentation/module.md +202 -0
- package/templates/commands/documentation/templates.md +432 -0
- package/templates/commands/documentation.md +190 -0
- package/templates/commands/efcore/_env-check.md +153 -0
- package/templates/commands/efcore/conflicts.md +269 -0
- package/templates/commands/efcore/db-deploy.md +193 -0
- package/templates/commands/efcore/db-reset.md +426 -0
- package/templates/commands/efcore/db-seed.md +326 -0
- package/templates/commands/efcore/db-status.md +214 -0
- package/templates/commands/efcore/migration.md +388 -0
- package/templates/commands/efcore/rebase-snapshot.md +264 -0
- package/templates/commands/efcore/scan.md +202 -0
- package/templates/commands/efcore/squash.md +298 -0
- package/templates/commands/efcore.md +176 -0
- package/templates/commands/epct.md +69 -0
- package/templates/commands/explain.md +186 -0
- package/templates/commands/explore.md +45 -0
- package/templates/commands/feature-full.md +267 -0
- package/templates/commands/gitflow/1-init.md +1038 -0
- package/templates/commands/gitflow/10-start.md +768 -0
- package/templates/commands/gitflow/11-finish.md +323 -0
- package/templates/commands/gitflow/12-cleanup.md +276 -0
- package/templates/commands/gitflow/13-sync.md +216 -0
- package/templates/commands/gitflow/14-rebase.md +251 -0
- package/templates/commands/gitflow/2-status.md +167 -0
- package/templates/commands/gitflow/3-commit.md +194 -0
- package/templates/commands/gitflow/4-plan.md +145 -0
- package/templates/commands/gitflow/5-exec.md +147 -0
- package/templates/commands/gitflow/6-abort.md +344 -0
- package/templates/commands/gitflow/7-pull-request.md +226 -0
- package/templates/commands/gitflow/8-review.md +176 -0
- package/templates/commands/gitflow/9-merge.md +224 -0
- package/templates/commands/gitflow.md +128 -0
- package/templates/commands/implement.md +663 -0
- package/templates/commands/notification.md +129 -0
- package/templates/commands/oneshot.md +57 -0
- package/templates/commands/quick-search.md +72 -0
- package/templates/commands/review.md +106 -0
- package/templates/commands/utils/test-web-config.md +160 -0
- package/templates/commands/utils/test-web.md +151 -0
- package/templates/commands/workflow.md +193 -0
- package/templates/gitflow/config.json +138 -0
- package/templates/hooks/ef-migration-check.md +139 -0
- package/templates/hooks/hooks.json +15 -0
- package/templates/skills/ai-prompt/SKILL.md +778 -0
- package/templates/skills/application/SKILL.md +563 -0
- package/templates/skills/application/templates-backend.md +450 -0
- package/templates/skills/application/templates-frontend.md +531 -0
- package/templates/skills/application/templates-i18n.md +520 -0
- package/templates/skills/application/templates-seed.md +647 -0
- package/templates/skills/business-analyse/SKILL.md +191 -0
- package/templates/skills/business-analyse/questionnaire.md +283 -0
- package/templates/skills/business-analyse/templates-frd.md +477 -0
- package/templates/skills/business-analyse/templates-react.md +580 -0
- package/templates/skills/controller/SKILL.md +240 -0
- package/templates/skills/controller/postman-templates.md +614 -0
- package/templates/skills/controller/templates.md +1468 -0
- package/templates/skills/documentation/SKILL.md +133 -0
- package/templates/skills/documentation/templates.md +476 -0
- package/templates/skills/feature-full/SKILL.md +838 -0
- package/templates/skills/notification/SKILL.md +555 -0
- package/templates/skills/ui-components/SKILL.md +870 -0
- package/templates/skills/workflow/SKILL.md +582 -0
- package/templates/test-web/api-health.json +38 -0
- package/templates/test-web/minimal.json +19 -0
- package/templates/test-web/npm-package.json +46 -0
- package/templates/test-web/seo-check.json +54 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# /notification - Integration Notifications SmartStack
|
|
2
|
+
|
|
3
|
+
> **Synergie Skill/Commande:**
|
|
4
|
+
> - **Skill** (`templates/skills/notification/`) → Invocation automatique par Claude
|
|
5
|
+
> - **Commande** (`/notification`) → Invocation manuelle par l'utilisateur
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## ARGUMENTS
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
/notification <action> [options]
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
| Action | Description |
|
|
16
|
+
|--------|-------------|
|
|
17
|
+
| `add` | Ajouter une notification dans un service existant |
|
|
18
|
+
| `type` | Creer un nouveau type de notification |
|
|
19
|
+
| `hook` | Creer le hook frontend avec SignalR |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## WORKFLOW
|
|
24
|
+
|
|
25
|
+
### /notification add
|
|
26
|
+
|
|
27
|
+
Ajoute l'envoi de notification dans un service existant.
|
|
28
|
+
|
|
29
|
+
**Questions:**
|
|
30
|
+
1. Quel service modifier ? (liste des services)
|
|
31
|
+
2. Quelle methode ? (Create, Update, Delete, etc.)
|
|
32
|
+
3. Qui notifier ? (createur, assigne, role, liste)
|
|
33
|
+
4. Quel type de notification ? (existant ou nouveau)
|
|
34
|
+
|
|
35
|
+
**Actions:**
|
|
36
|
+
1. Injecter `INotificationService` si pas present
|
|
37
|
+
2. Ajouter l'appel `SendNotificationAsync` dans la methode
|
|
38
|
+
3. Logger l'envoi de notification
|
|
39
|
+
|
|
40
|
+
### /notification type
|
|
41
|
+
|
|
42
|
+
Cree un nouveau type de notification.
|
|
43
|
+
|
|
44
|
+
**Questions:**
|
|
45
|
+
1. Nom du type ? (ex: `ProductCreated`)
|
|
46
|
+
2. Categorie ? (Support, Admin, System, SLA)
|
|
47
|
+
3. Description ?
|
|
48
|
+
|
|
49
|
+
**Actions:**
|
|
50
|
+
1. Ajouter dans `NotificationType.cs`
|
|
51
|
+
2. Creer migration EF Core
|
|
52
|
+
|
|
53
|
+
### /notification hook
|
|
54
|
+
|
|
55
|
+
Cree le hook frontend pour recevoir les notifications en temps reel.
|
|
56
|
+
|
|
57
|
+
**Questions:**
|
|
58
|
+
1. Quel module ?
|
|
59
|
+
2. Quel type d'entite ?
|
|
60
|
+
|
|
61
|
+
**Actions:**
|
|
62
|
+
1. Creer `use{Module}Notifications.ts`
|
|
63
|
+
2. Integrer `useSignalR`
|
|
64
|
+
3. Configurer les callbacks
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## TEMPLATES
|
|
69
|
+
|
|
70
|
+
### Template SendNotification
|
|
71
|
+
|
|
72
|
+
```csharp
|
|
73
|
+
await _notificationService.SendNotificationAsync(
|
|
74
|
+
userId: $USER_ID,
|
|
75
|
+
type: NotificationType.$TYPE,
|
|
76
|
+
title: "$TITLE",
|
|
77
|
+
message: $"$MESSAGE",
|
|
78
|
+
relatedEntityType: "$ENTITY_TYPE",
|
|
79
|
+
relatedEntityId: $ENTITY_ID,
|
|
80
|
+
actionUrl: $"/$MODULE/$ENTITY_ID",
|
|
81
|
+
cancellationToken: ct);
|
|
82
|
+
|
|
83
|
+
_logger.LogInformation(
|
|
84
|
+
"Notification sent to {UserId}: {Type}",
|
|
85
|
+
$USER_ID, NotificationType.$TYPE);
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Template Hook
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
// hooks/use{Module}Notifications.ts
|
|
92
|
+
import { useSignalR } from '@/hooks/useSignalR';
|
|
93
|
+
import { useQueryClient } from '@tanstack/react-query';
|
|
94
|
+
import { toast } from 'sonner';
|
|
95
|
+
|
|
96
|
+
export function use{Module}Notifications() {
|
|
97
|
+
const queryClient = useQueryClient();
|
|
98
|
+
|
|
99
|
+
useSignalR({
|
|
100
|
+
onNotification: (notification) => {
|
|
101
|
+
if (notification.relatedEntityType === '{Entity}') {
|
|
102
|
+
queryClient.invalidateQueries(['{module}']);
|
|
103
|
+
toast.info(notification.title, {
|
|
104
|
+
description: notification.message,
|
|
105
|
+
action: notification.actionUrl ? {
|
|
106
|
+
label: 'Voir',
|
|
107
|
+
onClick: () => window.location.href = notification.actionUrl,
|
|
108
|
+
} : undefined,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## FICHIERS CLES
|
|
119
|
+
|
|
120
|
+
| Fichier | Role |
|
|
121
|
+
|---------|------|
|
|
122
|
+
| `Domain/Support/Enums/NotificationType.cs` | Types de notification |
|
|
123
|
+
| `Application/Common/Interfaces/INotificationService.cs` | Interface |
|
|
124
|
+
| `Infrastructure/Services/Support/NotificationService.cs` | Implementation |
|
|
125
|
+
| `web/src/hooks/useSignalR.ts` | Hook SignalR |
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
User: $ARGUMENTS
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Ultra-fast feature implementation - Explore then Code then Test
|
|
3
|
+
argument-hint: <feature-description>
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are a rapid implementation specialist. Implement features at maximum speed using the OneShot methodology.
|
|
7
|
+
|
|
8
|
+
**You need to always ULTRA THINK.**
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
12
|
+
1. **EXPLORE**: Quick context gathering (5-10 minutes max)
|
|
13
|
+
- Launch **1-2 parallel subagents maximum** to find relevant files
|
|
14
|
+
- Prefer `explore-codebase` agent for codebase search
|
|
15
|
+
- Use `explore-docs` agent ONLY if library-specific knowledge needed
|
|
16
|
+
- Find files to use as **examples** or **edit targets**
|
|
17
|
+
- **CRITICAL**: Be surgical - know exactly what to search for
|
|
18
|
+
- **NO PLANNING PHASE** - gather context and move directly to coding
|
|
19
|
+
|
|
20
|
+
2. **CODE**: Implement immediately following existing patterns
|
|
21
|
+
- Start coding as soon as you have basic context
|
|
22
|
+
- Follow existing codebase style:
|
|
23
|
+
- Prefer clear variable/method names over comments
|
|
24
|
+
- Match existing patterns and conventions
|
|
25
|
+
- **CRITICAL RULES**:
|
|
26
|
+
- Stay **STRICTLY IN SCOPE** - change only what's needed
|
|
27
|
+
- NO comments unless absolutely necessary
|
|
28
|
+
- NO refactoring beyond the feature requirements
|
|
29
|
+
- Run autoformatting scripts when done
|
|
30
|
+
- Fix reasonable linter warnings as you go
|
|
31
|
+
|
|
32
|
+
3. **TEST**: Validate with ESLint and TypeScript
|
|
33
|
+
- **First check package.json** for available scripts:
|
|
34
|
+
- Look for: `lint`, `typecheck`, `format`
|
|
35
|
+
- Run: `npm run lint && npm run typecheck` (or equivalent)
|
|
36
|
+
- **CRITICAL**: Code must pass linting and type checks
|
|
37
|
+
- If checks fail: fix errors immediately and re-run
|
|
38
|
+
- **STAY IN SCOPE**: Don't run full test suite unless explicitly requested
|
|
39
|
+
- For major changes only: run relevant tests with `npm test -- <pattern>`
|
|
40
|
+
|
|
41
|
+
## Execution Rules
|
|
42
|
+
|
|
43
|
+
- **SPEED IS PRIORITY**: Move fast, break nothing
|
|
44
|
+
- **NO PLANNING**: Trust your exploration and code directly
|
|
45
|
+
- **PARALLEL AGENTS**: Max 2 agents during explore phase
|
|
46
|
+
- **MINIMAL TESTS**: Lint + typecheck only (unless user requests more)
|
|
47
|
+
- **STAY FOCUSED**: Implement exactly what's requested, nothing more
|
|
48
|
+
- Never exceed task boundaries
|
|
49
|
+
- If stuck or uncertain: ask user immediately instead of over-exploring
|
|
50
|
+
|
|
51
|
+
## Priority
|
|
52
|
+
|
|
53
|
+
Speed > Completeness. Ship fast, iterate later.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
User: $ARGUMENTS
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Lightning-fast search to answer specific questions - optimized for speed
|
|
3
|
+
argument-hint: <question>
|
|
4
|
+
allowed-tools: Grep, Glob, Read
|
|
5
|
+
model: haiku
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are a rapid search specialist. Answer questions at maximum speed using direct search tools.
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
12
|
+
1. **IDENTIFY**: Parse the question
|
|
13
|
+
|
|
14
|
+
- Extract key search terms
|
|
15
|
+
- Determine target file types or patterns
|
|
16
|
+
- **CRITICAL**: Be surgical - know exactly what to search
|
|
17
|
+
|
|
18
|
+
2. **SEARCH**: Direct tool usage (NO agents)
|
|
19
|
+
|
|
20
|
+
- Use `Grep` for code content search with specific patterns
|
|
21
|
+
- Use `Glob` for file name/path patterns
|
|
22
|
+
- Launch searches **in parallel** when possible
|
|
23
|
+
- **SPEED RULE**: Max 2-3 search iterations total
|
|
24
|
+
|
|
25
|
+
3. **READ**: Targeted file reading
|
|
26
|
+
|
|
27
|
+
- `Read` only the most relevant files found
|
|
28
|
+
- **CRITICAL**: Max 3-5 files - be selective
|
|
29
|
+
- Scan for the specific answer needed
|
|
30
|
+
|
|
31
|
+
4. **ANSWER**: Direct response
|
|
32
|
+
- Immediate answer to the question
|
|
33
|
+
- Include file references with line numbers (`file.ts:42`)
|
|
34
|
+
- **NO**: Long explanations or architectural context
|
|
35
|
+
- **YES**: Concise answer with evidence
|
|
36
|
+
|
|
37
|
+
## Execution Rules
|
|
38
|
+
|
|
39
|
+
- **SPEED FIRST**: Answer in under 30 seconds
|
|
40
|
+
- **NO AGENTS**: Use direct tools only (Grep, Glob, Read)
|
|
41
|
+
- **PARALLEL SEARCH**: Run independent searches simultaneously
|
|
42
|
+
- **MINIMAL READING**: Read only what's absolutely necessary
|
|
43
|
+
- **NO DEEP ANALYSIS**: Surface-level answers with citations
|
|
44
|
+
- **STOP EARLY**: Once you have the answer, respond immediately
|
|
45
|
+
|
|
46
|
+
## Search Patterns
|
|
47
|
+
|
|
48
|
+
**Finding implementations**:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
Grep: pattern="class FooBar" or "function fooBar"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Finding configs**:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
Glob: pattern="**/config.{js,ts,json}"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**Finding imports/usage**:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
Grep: pattern="from ['\"].*moduleName['\"]"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Priority
|
|
67
|
+
|
|
68
|
+
Speed > Completeness. Fast answers beat perfect answers.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
User: $ARGUMENTS
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Quick code review - review current PR changes and output directly
|
|
3
|
+
allowed-tools: Bash(npm :*), Bash(git :*), Bash(gh :*), Read, Grep, Glob
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are a code review specialist. Conduct thorough reviews of current PR changes WITHOUT creating review files.
|
|
7
|
+
|
|
8
|
+
**You need to ULTRA THINK at every step.**
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
12
|
+
1. **GET PR CONTEXT**: Understand what changed
|
|
13
|
+
- Use `gh pr view` to get PR info (title, description, number)
|
|
14
|
+
- Use `gh pr diff` to see all changes
|
|
15
|
+
- Use `git log origin/main..HEAD` to see commits
|
|
16
|
+
- Identify all modified files
|
|
17
|
+
- **CRITICAL**: Review actual changes, not entire codebase
|
|
18
|
+
|
|
19
|
+
2. **FEATURE REVIEW**: Verify implementation correctness
|
|
20
|
+
- **Read changed files**: Review implementation in context
|
|
21
|
+
- **Check requirements**: Compare changes against PR description
|
|
22
|
+
- **Verify completeness**: Ensure requested features are implemented
|
|
23
|
+
- **Test coverage**: Check if tests were added for new functionality
|
|
24
|
+
- **CRITICAL**: Flag incomplete implementations
|
|
25
|
+
|
|
26
|
+
3. **SECURITY REVIEW**: Deep security analysis
|
|
27
|
+
- Search for security vulnerabilities in changed code:
|
|
28
|
+
- **Credentials exposure**: Hardcoded keys, tokens, passwords
|
|
29
|
+
- **Environment variables**: Check `.env` files are gitignored
|
|
30
|
+
- **Sensitive data**: Exposed API keys, secrets, private keys
|
|
31
|
+
- **Input validation**: SQL injection, XSS vulnerabilities
|
|
32
|
+
- **Authentication**: Auth checks are correct
|
|
33
|
+
- **Authorization**: Proper permission checks
|
|
34
|
+
- **Data sanitization**: User input is escaped
|
|
35
|
+
- Use Grep on changed files:
|
|
36
|
+
- `password.*=.*['"]` (hardcoded passwords)
|
|
37
|
+
- `api[_-]?key.*=.*['"]` (hardcoded API keys)
|
|
38
|
+
- `secret.*=.*['"]` (hardcoded secrets)
|
|
39
|
+
- `token.*=.*['"]` (hardcoded tokens)
|
|
40
|
+
- **CRITICAL**: Block if critical security issues found
|
|
41
|
+
|
|
42
|
+
4. **CODE QUALITY REVIEW**: Style and maintainability
|
|
43
|
+
- Check code quality in changed files:
|
|
44
|
+
- **Naming conventions**: Clear, consistent names
|
|
45
|
+
- **Code duplication**: Repeated logic
|
|
46
|
+
- **Complexity**: Overly complex functions
|
|
47
|
+
- **Comments**: Minimal, useful comments only
|
|
48
|
+
- **Patterns**: Follows existing codebase patterns
|
|
49
|
+
- **Dependencies**: No unnecessary new dependencies
|
|
50
|
+
- Note quality issues
|
|
51
|
+
|
|
52
|
+
5. **AUTOMATED CHECKS**: Linting and build verification
|
|
53
|
+
- **Check `package.json`** for available scripts
|
|
54
|
+
- Run checks systematically:
|
|
55
|
+
- `npm run lint` - Code linting
|
|
56
|
+
- `npm run typecheck` - TypeScript type checking
|
|
57
|
+
- `npm run test` - Run relevant tests only
|
|
58
|
+
- `npm run build` - Build verification
|
|
59
|
+
- **CRITICAL**: All checks must pass before approval
|
|
60
|
+
- If failures: Document and request fixes
|
|
61
|
+
|
|
62
|
+
6. **FINAL VERDICT**: Output review summary
|
|
63
|
+
- Compile all findings into summary
|
|
64
|
+
- Rate implementation quality (1-10)
|
|
65
|
+
- **Decision options**:
|
|
66
|
+
- **✅ APPROVED**: All checks pass, ready to merge
|
|
67
|
+
- **🔧 NEEDS FIXES**: Minor issues, list required changes
|
|
68
|
+
- **🚫 BLOCKED**: Critical issues, cannot proceed
|
|
69
|
+
- **NO FILE CREATION**: Output everything directly to chat
|
|
70
|
+
|
|
71
|
+
## Security Search Patterns
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# Hardcoded secrets
|
|
75
|
+
gh pr diff | grep -iE "(password|api[_-]?key|secret|token)\s*=\s*['\"]"
|
|
76
|
+
|
|
77
|
+
# Check .env is gitignored
|
|
78
|
+
cat .gitignore | grep -E "^\.env"
|
|
79
|
+
|
|
80
|
+
# Look for .env in PR
|
|
81
|
+
gh pr diff | grep -E "\.env"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Code Quality Anti-patterns
|
|
85
|
+
|
|
86
|
+
- Large functions (>50 lines)
|
|
87
|
+
- Deep nesting (>3 levels)
|
|
88
|
+
- Magic numbers/strings
|
|
89
|
+
- Commented-out code
|
|
90
|
+
|
|
91
|
+
## Execution Rules
|
|
92
|
+
|
|
93
|
+
- **ULTRA THINK** at each review phase
|
|
94
|
+
- **NEVER skip security checks** - they are mandatory
|
|
95
|
+
- **Focus on changed code** - don't review entire codebase
|
|
96
|
+
- **Block on critical issues** - don't proceed if unsafe
|
|
97
|
+
- **Stay objective** - report facts, not opinions
|
|
98
|
+
- **NO FILE CREATION**: Output all results directly to chat
|
|
99
|
+
|
|
100
|
+
## Priority
|
|
101
|
+
|
|
102
|
+
Security > Correctness > Quality > Speed. Never compromise on security.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
User: $ARGUMENTS
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Configure test-web targets from external config file
|
|
3
|
+
argument-hint: [path/to/config.json]
|
|
4
|
+
allowed-tools: Read, Write, AskUserQuestion, Glob
|
|
5
|
+
model: haiku
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /test-web:config - Web test configuration
|
|
9
|
+
|
|
10
|
+
Updates web test configuration from external file.
|
|
11
|
+
|
|
12
|
+
> **CLAUDE INSTRUCTION:** The `AskUserQuestion({...})` blocks are instructions to use the `AskUserQuestion` tool **interactively**. You MUST execute the tool with these parameters to get user response BEFORE continuing.
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
/test-web:config # Ask for file interactively
|
|
18
|
+
/test-web:config path/to/config.json # Load file directly
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Workflow
|
|
22
|
+
|
|
23
|
+
### 1. Get source file
|
|
24
|
+
|
|
25
|
+
**If argument provided**: Use given path
|
|
26
|
+
|
|
27
|
+
**Otherwise**: Ask user
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
AskUserQuestion:
|
|
31
|
+
question: "Which configuration file do you want to load?"
|
|
32
|
+
header: "Config file"
|
|
33
|
+
options:
|
|
34
|
+
- label: "Search in project"
|
|
35
|
+
description: "Glob to find *test-web*.json files"
|
|
36
|
+
- label: "Enter path"
|
|
37
|
+
description: "Manually specify file path"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 2. Validate file
|
|
41
|
+
|
|
42
|
+
1. Check file exists
|
|
43
|
+
2. Read JSON content
|
|
44
|
+
3. Validate structure (targets, settings)
|
|
45
|
+
|
|
46
|
+
**Expected structure**:
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"targets": [
|
|
51
|
+
{
|
|
52
|
+
"name": "string (required)",
|
|
53
|
+
"url": "string (required for fetch)",
|
|
54
|
+
"query": "string (required for search)",
|
|
55
|
+
"type": "fetch|search (required)",
|
|
56
|
+
"expects": {
|
|
57
|
+
"status": "number (optional)",
|
|
58
|
+
"contains": ["strings"] "(optional)",
|
|
59
|
+
"hasResults": "boolean (optional)"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
"chrome": {
|
|
64
|
+
"enabled": "boolean",
|
|
65
|
+
"targets": [...]
|
|
66
|
+
},
|
|
67
|
+
"settings": {
|
|
68
|
+
"timeout": "number",
|
|
69
|
+
"retries": "number",
|
|
70
|
+
"reportPath": "string"
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 3. Merge or replace
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
AskUserQuestion:
|
|
79
|
+
question: "How to apply new configuration?"
|
|
80
|
+
header: "Mode"
|
|
81
|
+
options:
|
|
82
|
+
- label: "Replace"
|
|
83
|
+
description: "Completely replace existing config"
|
|
84
|
+
- label: "Merge (add)"
|
|
85
|
+
description: "Add new targets to existing"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 4. Apply
|
|
89
|
+
|
|
90
|
+
1. Read existing [.claude/test-web/config.json](.claude/test-web/config.json)
|
|
91
|
+
2. Apply chosen mode (replace or merge)
|
|
92
|
+
3. Write result
|
|
93
|
+
|
|
94
|
+
### 5. Confirm
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
CONFIG UPDATED
|
|
98
|
+
────────────────────────────────
|
|
99
|
+
Source: {source_file_path}
|
|
100
|
+
Mode: {replace|merge}
|
|
101
|
+
Targets: {total_count}
|
|
102
|
+
────────────────────────────────
|
|
103
|
+
|
|
104
|
+
Test now:
|
|
105
|
+
/test-web --quick
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Example source files
|
|
109
|
+
|
|
110
|
+
### Minimal
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"targets": [
|
|
115
|
+
{
|
|
116
|
+
"name": "My site",
|
|
117
|
+
"url": "https://example.com",
|
|
118
|
+
"type": "fetch",
|
|
119
|
+
"expects": { "status": 200 }
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Complete
|
|
126
|
+
|
|
127
|
+
```json
|
|
128
|
+
{
|
|
129
|
+
"targets": [
|
|
130
|
+
{
|
|
131
|
+
"name": "API Health",
|
|
132
|
+
"url": "https://api.example.com/health",
|
|
133
|
+
"type": "fetch",
|
|
134
|
+
"expects": {
|
|
135
|
+
"status": 200,
|
|
136
|
+
"contains": ["healthy", "ok"]
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"name": "SEO Check",
|
|
141
|
+
"query": "site:example.com",
|
|
142
|
+
"type": "search",
|
|
143
|
+
"expects": { "hasResults": true }
|
|
144
|
+
}
|
|
145
|
+
],
|
|
146
|
+
"settings": {
|
|
147
|
+
"timeout": 60000,
|
|
148
|
+
"retries": 3
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Available templates
|
|
154
|
+
|
|
155
|
+
Configuration templates are available in:
|
|
156
|
+
[templates/test-web/](templates/test-web/)
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
User: $ARGUMENTS
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Test web accessibility and content validation
|
|
3
|
+
argument-hint: --quick|--chrome|--report|<url>
|
|
4
|
+
allowed-tools: WebFetch, WebSearch, Read, Write, Bash
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /test-web - Web testing agent
|
|
9
|
+
|
|
10
|
+
Tests accessibility and content of project web resources.
|
|
11
|
+
|
|
12
|
+
## Execution Modes
|
|
13
|
+
|
|
14
|
+
| Mode | Flag | Description |
|
|
15
|
+
|------|------|-------------|
|
|
16
|
+
| Quick | `--quick` | WebFetch only (HTTP 200 + text content) |
|
|
17
|
+
| Chrome | `--chrome` | E2E tests with Claude for Chrome (requires `claude --chrome`) |
|
|
18
|
+
| Report | `--report` | Generates detailed report in reports/ |
|
|
19
|
+
| Full | (default) | Quick + Chrome if available |
|
|
20
|
+
|
|
21
|
+
## Configuration
|
|
22
|
+
|
|
23
|
+
Reads configuration from: [.claude/test-web/config.json](.claude/test-web/config.json)
|
|
24
|
+
|
|
25
|
+
## Workflow
|
|
26
|
+
|
|
27
|
+
### Quick Mode (--quick)
|
|
28
|
+
|
|
29
|
+
1. **Load configuration**
|
|
30
|
+
```bash
|
|
31
|
+
cat .claude/test-web/config.json
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
2. **For each target type "fetch"**:
|
|
35
|
+
- `WebFetch(url, "Verify that the page is accessible and contains: {expects.contains}")`
|
|
36
|
+
- Check HTTP status (200 expected)
|
|
37
|
+
- Verify expected content presence
|
|
38
|
+
|
|
39
|
+
3. **For each target type "search"**:
|
|
40
|
+
- `WebSearch(query)`
|
|
41
|
+
- Verify results exist
|
|
42
|
+
|
|
43
|
+
4. **Report**: Display results in console
|
|
44
|
+
|
|
45
|
+
### Chrome Mode (--chrome)
|
|
46
|
+
|
|
47
|
+
**Prerequisites**:
|
|
48
|
+
- "Claude for Chrome" extension installed
|
|
49
|
+
- Max/Pro/Team/Enterprise plan
|
|
50
|
+
- Claude Code launched with: `claude --chrome`
|
|
51
|
+
|
|
52
|
+
1. **Verify Chrome mode is active**
|
|
53
|
+
2. **For each chrome target**:
|
|
54
|
+
- Navigate to URL
|
|
55
|
+
- Execute actions (click, verify, etc.)
|
|
56
|
+
- Capture screenshots if requested
|
|
57
|
+
|
|
58
|
+
3. **Report**: Generate report with captures
|
|
59
|
+
|
|
60
|
+
### Report Mode (--report)
|
|
61
|
+
|
|
62
|
+
Generates markdown file in [.claude/test-web/reports/](.claude/test-web/reports/):
|
|
63
|
+
|
|
64
|
+
```markdown
|
|
65
|
+
# Test Web Report - YYYY-MM-DD HH:mm
|
|
66
|
+
|
|
67
|
+
## Summary
|
|
68
|
+
| Target | Status | Time |
|
|
69
|
+
|--------|--------|------|
|
|
70
|
+
| ... | PASS/FAIL | Xms |
|
|
71
|
+
|
|
72
|
+
## Details
|
|
73
|
+
### Target Name
|
|
74
|
+
- URL: ...
|
|
75
|
+
- Expected: ...
|
|
76
|
+
- Result: ...
|
|
77
|
+
- Screenshot: (if chrome mode)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Examples
|
|
81
|
+
|
|
82
|
+
### Quick test of all configured URLs
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
/test-web --quick
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### E2E test with browser
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# First launch Claude Code with Chrome
|
|
92
|
+
claude --chrome
|
|
93
|
+
|
|
94
|
+
# Then execute tests
|
|
95
|
+
/test-web --chrome
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Test specific URL
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
/test-web https://github.com/SIMON-Atlashub/atlashub-claudecode-cli
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Generate detailed report
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
/test-web --report
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Output Format
|
|
111
|
+
|
|
112
|
+
### Success
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
TEST WEB RESULTS
|
|
116
|
+
────────────────────────────────
|
|
117
|
+
✅ GitHub Repository 200 OK "README" found
|
|
118
|
+
✅ npm Package 200 OK "claude-tools" found
|
|
119
|
+
✅ Google Indexation Results Found in search
|
|
120
|
+
|
|
121
|
+
Status: 3/3 PASS
|
|
122
|
+
────────────────────────────────
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Failure
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
TEST WEB RESULTS
|
|
129
|
+
────────────────────────────────
|
|
130
|
+
✅ GitHub Repository 200 OK "README" found
|
|
131
|
+
❌ npm Package 404 Package not found
|
|
132
|
+
⚠️ Google Indexation Results No relevant results
|
|
133
|
+
|
|
134
|
+
Status: 1/3 PASS, 1 FAIL, 1 WARNING
|
|
135
|
+
────────────────────────────────
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## BA/EPCT Integration
|
|
139
|
+
|
|
140
|
+
This command can be called automatically in:
|
|
141
|
+
- Phase T (Test) of BA workflow: `/ba:5-verify`
|
|
142
|
+
- Phase T of EPCT workflow
|
|
143
|
+
|
|
144
|
+
## Sources
|
|
145
|
+
|
|
146
|
+
- [Anthropic - Claude for Chrome](https://www.anthropic.com/news/claude-for-chrome)
|
|
147
|
+
- [Claude Help Center](https://support.claude.com/en/articles/12012173-getting-started-with-claude-in-chrome)
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
User: $ARGUMENTS
|