@nguyenphp/antigravity-marketing 1.0.19 → 1.0.20
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/README.md +5 -61
- package/package.json +1 -1
- package/templates/.agent/agents/backend-specialist.md +0 -263
- package/templates/.agent/agents/database-architect.md +0 -226
- package/templates/.agent/agents/debugger.md +0 -225
- package/templates/.agent/agents/devops-engineer.md +0 -242
- package/templates/.agent/agents/frontend-specialist.md +0 -527
- package/templates/.agent/agents/game-developer.md +0 -162
- package/templates/.agent/agents/mobile-developer.md +0 -377
- package/templates/.agent/agents/penetration-tester.md +0 -188
- package/templates/.agent/agents/security-auditor.md +0 -170
- package/templates/.agent/agents/test-engineer.md +0 -158
- package/templates/.agent/skills/api-patterns/SKILL.md +0 -81
- package/templates/.agent/skills/api-patterns/api-style.md +0 -42
- package/templates/.agent/skills/api-patterns/auth.md +0 -24
- package/templates/.agent/skills/api-patterns/documentation.md +0 -26
- package/templates/.agent/skills/api-patterns/graphql.md +0 -41
- package/templates/.agent/skills/api-patterns/rate-limiting.md +0 -31
- package/templates/.agent/skills/api-patterns/response.md +0 -37
- package/templates/.agent/skills/api-patterns/rest.md +0 -40
- package/templates/.agent/skills/api-patterns/scripts/api_validator.py +0 -211
- package/templates/.agent/skills/api-patterns/security-testing.md +0 -122
- package/templates/.agent/skills/api-patterns/trpc.md +0 -41
- package/templates/.agent/skills/api-patterns/versioning.md +0 -22
- package/templates/.agent/skills/app-builder/SKILL.md +0 -75
- package/templates/.agent/skills/app-builder/agent-coordination.md +0 -71
- package/templates/.agent/skills/app-builder/feature-building.md +0 -53
- package/templates/.agent/skills/app-builder/project-detection.md +0 -34
- package/templates/.agent/skills/app-builder/scaffolding.md +0 -118
- package/templates/.agent/skills/app-builder/tech-stack.md +0 -40
- package/templates/.agent/skills/app-builder/templates/SKILL.md +0 -39
- package/templates/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +0 -76
- package/templates/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +0 -92
- package/templates/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +0 -88
- package/templates/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +0 -88
- package/templates/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +0 -83
- package/templates/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +0 -90
- package/templates/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +0 -90
- package/templates/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +0 -82
- package/templates/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +0 -100
- package/templates/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +0 -106
- package/templates/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +0 -101
- package/templates/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +0 -83
- package/templates/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +0 -93
- package/templates/.agent/skills/architecture/SKILL.md +0 -55
- package/templates/.agent/skills/architecture/context-discovery.md +0 -43
- package/templates/.agent/skills/architecture/examples.md +0 -94
- package/templates/.agent/skills/architecture/pattern-selection.md +0 -68
- package/templates/.agent/skills/architecture/patterns-reference.md +0 -50
- package/templates/.agent/skills/architecture/trade-off-analysis.md +0 -77
- package/templates/.agent/skills/bash-linux/SKILL.md +0 -199
- package/templates/.agent/skills/behavioral-modes/SKILL.md +0 -242
- package/templates/.agent/skills/clean-code/SKILL.md +0 -201
- package/templates/.agent/skills/code-review-checklist/SKILL.md +0 -109
- package/templates/.agent/skills/database-design/SKILL.md +0 -52
- package/templates/.agent/skills/database-design/database-selection.md +0 -43
- package/templates/.agent/skills/database-design/indexing.md +0 -39
- package/templates/.agent/skills/database-design/migrations.md +0 -48
- package/templates/.agent/skills/database-design/optimization.md +0 -36
- package/templates/.agent/skills/database-design/orm-selection.md +0 -30
- package/templates/.agent/skills/database-design/schema-design.md +0 -56
- package/templates/.agent/skills/database-design/scripts/schema_validator.py +0 -172
- package/templates/.agent/skills/deployment-procedures/SKILL.md +0 -241
- package/templates/.agent/skills/docker-expert/SKILL.md +0 -409
- package/templates/.agent/skills/game-development/2d-games/SKILL.md +0 -119
- package/templates/.agent/skills/game-development/3d-games/SKILL.md +0 -135
- package/templates/.agent/skills/game-development/SKILL.md +0 -167
- package/templates/.agent/skills/game-development/game-art/SKILL.md +0 -185
- package/templates/.agent/skills/game-development/game-audio/SKILL.md +0 -190
- package/templates/.agent/skills/game-development/game-design/SKILL.md +0 -129
- package/templates/.agent/skills/game-development/mobile-games/SKILL.md +0 -108
- package/templates/.agent/skills/game-development/multiplayer/SKILL.md +0 -132
- package/templates/.agent/skills/game-development/pc-games/SKILL.md +0 -144
- package/templates/.agent/skills/game-development/vr-ar/SKILL.md +0 -123
- package/templates/.agent/skills/game-development/web-games/SKILL.md +0 -150
- package/templates/.agent/skills/lint-and-validate/SKILL.md +0 -45
- package/templates/.agent/skills/lint-and-validate/scripts/lint_runner.py +0 -172
- package/templates/.agent/skills/lint-and-validate/scripts/type_coverage.py +0 -173
- package/templates/.agent/skills/mcp-builder/SKILL.md +0 -176
- package/templates/.agent/skills/nestjs-expert/SKILL.md +0 -552
- package/templates/.agent/skills/nextjs-best-practices/SKILL.md +0 -203
- package/templates/.agent/skills/nodejs-best-practices/SKILL.md +0 -333
- package/templates/.agent/skills/parallel-agents/SKILL.md +0 -175
- package/templates/.agent/skills/performance-profiling/SKILL.md +0 -143
- package/templates/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +0 -76
- package/templates/.agent/skills/powershell-windows/SKILL.md +0 -167
- package/templates/.agent/skills/prisma-expert/SKILL.md +0 -355
- package/templates/.agent/skills/python-patterns/SKILL.md +0 -441
- package/templates/.agent/skills/react-patterns/SKILL.md +0 -198
- package/templates/.agent/skills/red-team-tactics/SKILL.md +0 -199
- package/templates/.agent/skills/server-management/SKILL.md +0 -161
- package/templates/.agent/skills/systematic-debugging/SKILL.md +0 -109
- package/templates/.agent/skills/tdd-workflow/SKILL.md +0 -149
- package/templates/.agent/skills/testing-patterns/SKILL.md +0 -178
- package/templates/.agent/skills/testing-patterns/scripts/test_runner.py +0 -219
- package/templates/.agent/skills/typescript-expert/SKILL.md +0 -429
- package/templates/.agent/skills/vue-expert/SKILL.md +0 -374
- package/templates/.agent/skills/vulnerability-scanner/SKILL.md +0 -276
- package/templates/.agent/skills/vulnerability-scanner/checklists.md +0 -121
- package/templates/.agent/skills/vulnerability-scanner/scripts/security_scan.py +0 -458
- package/templates/.agent/skills/webapp-testing/SKILL.md +0 -187
- package/templates/.agent/skills/webapp-testing/scripts/playwright_runner.py +0 -173
- package/templates/.agent/workflows/debug.md +0 -103
- package/templates/.agent/workflows/deploy.md +0 -176
- package/templates/.agent/workflows/enhance.md +0 -63
- package/templates/.agent/workflows/test.md +0 -144
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: webapp-testing
|
|
3
|
-
description: Web application testing principles. E2E, Playwright, deep audit strategies.
|
|
4
|
-
allowed-tools: Read, Write, Edit, Glob, Grep, Bash
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Web App Testing
|
|
8
|
-
|
|
9
|
-
> Discover and test everything. Leave no route untested.
|
|
10
|
-
|
|
11
|
-
## 🔧 Runtime Scripts
|
|
12
|
-
|
|
13
|
-
**Execute these for automated browser testing:**
|
|
14
|
-
|
|
15
|
-
| Script | Purpose | Usage |
|
|
16
|
-
|--------|---------|-------|
|
|
17
|
-
| `scripts/playwright_runner.py` | Basic browser test | `python scripts/playwright_runner.py https://example.com` |
|
|
18
|
-
| | With screenshot | `python scripts/playwright_runner.py <url> --screenshot` |
|
|
19
|
-
| | Accessibility check | `python scripts/playwright_runner.py <url> --a11y` |
|
|
20
|
-
|
|
21
|
-
**Requires:** `pip install playwright && playwright install chromium`
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## 1. Deep Audit Approach
|
|
26
|
-
|
|
27
|
-
### Discovery First
|
|
28
|
-
|
|
29
|
-
| Target | How to Find |
|
|
30
|
-
|--------|-------------|
|
|
31
|
-
| Routes | Scan app/, pages/, router files |
|
|
32
|
-
| API endpoints | Grep for HTTP methods |
|
|
33
|
-
| Components | Find component directories |
|
|
34
|
-
| Features | Read documentation |
|
|
35
|
-
|
|
36
|
-
### Systematic Testing
|
|
37
|
-
|
|
38
|
-
1. **Map** - List all routes/APIs
|
|
39
|
-
2. **Scan** - Verify they respond
|
|
40
|
-
3. **Test** - Cover critical paths
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## 2. Testing Pyramid for Web
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
/\ E2E (Few)
|
|
48
|
-
/ \ Critical user flows
|
|
49
|
-
/----\
|
|
50
|
-
/ \ Integration (Some)
|
|
51
|
-
/--------\ API, data flow
|
|
52
|
-
/ \
|
|
53
|
-
/------------\ Component (Many)
|
|
54
|
-
Individual UI pieces
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## 3. E2E Test Principles
|
|
60
|
-
|
|
61
|
-
### What to Test
|
|
62
|
-
|
|
63
|
-
| Priority | Tests |
|
|
64
|
-
|----------|-------|
|
|
65
|
-
| 1 | Happy path user flows |
|
|
66
|
-
| 2 | Authentication flows |
|
|
67
|
-
| 3 | Critical business actions |
|
|
68
|
-
| 4 | Error handling |
|
|
69
|
-
|
|
70
|
-
### E2E Best Practices
|
|
71
|
-
|
|
72
|
-
| Practice | Why |
|
|
73
|
-
|----------|-----|
|
|
74
|
-
| Use data-testid | Stable selectors |
|
|
75
|
-
| Wait for elements | Avoid flaky tests |
|
|
76
|
-
| Clean state | Independent tests |
|
|
77
|
-
| Avoid implementation details | Test user behavior |
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
## 4. Playwright Principles
|
|
82
|
-
|
|
83
|
-
### Core Concepts
|
|
84
|
-
|
|
85
|
-
| Concept | Use |
|
|
86
|
-
|---------|-----|
|
|
87
|
-
| Page Object Model | Encapsulate page logic |
|
|
88
|
-
| Fixtures | Reusable test setup |
|
|
89
|
-
| Assertions | Built-in auto-wait |
|
|
90
|
-
| Trace Viewer | Debug failures |
|
|
91
|
-
|
|
92
|
-
### Configuration
|
|
93
|
-
|
|
94
|
-
| Setting | Recommendation |
|
|
95
|
-
|---------|----------------|
|
|
96
|
-
| Retries | 2 on CI |
|
|
97
|
-
| Trace | on-first-retry |
|
|
98
|
-
| Screenshots | on-failure |
|
|
99
|
-
| Video | retain-on-failure |
|
|
100
|
-
|
|
101
|
-
---
|
|
102
|
-
|
|
103
|
-
## 5. Visual Testing
|
|
104
|
-
|
|
105
|
-
### When to Use
|
|
106
|
-
|
|
107
|
-
| Scenario | Value |
|
|
108
|
-
|----------|-------|
|
|
109
|
-
| Design system | High |
|
|
110
|
-
| Marketing pages | High |
|
|
111
|
-
| Component library | Medium |
|
|
112
|
-
| Dynamic content | Lower |
|
|
113
|
-
|
|
114
|
-
### Strategy
|
|
115
|
-
|
|
116
|
-
- Baseline screenshots
|
|
117
|
-
- Compare on changes
|
|
118
|
-
- Review visual diffs
|
|
119
|
-
- Update intentional changes
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## 6. API Testing Principles
|
|
124
|
-
|
|
125
|
-
### Coverage Areas
|
|
126
|
-
|
|
127
|
-
| Area | Tests |
|
|
128
|
-
|------|-------|
|
|
129
|
-
| Status codes | 200, 400, 404, 500 |
|
|
130
|
-
| Response shape | Matches schema |
|
|
131
|
-
| Error messages | User-friendly |
|
|
132
|
-
| Edge cases | Empty, large, special chars |
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## 7. Test Organization
|
|
137
|
-
|
|
138
|
-
### File Structure
|
|
139
|
-
|
|
140
|
-
```
|
|
141
|
-
tests/
|
|
142
|
-
├── e2e/ # Full user flows
|
|
143
|
-
├── integration/ # API, data
|
|
144
|
-
├── component/ # UI units
|
|
145
|
-
└── fixtures/ # Shared data
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### Naming Convention
|
|
149
|
-
|
|
150
|
-
| Pattern | Example |
|
|
151
|
-
|---------|---------|
|
|
152
|
-
| Feature-based | `login.spec.ts` |
|
|
153
|
-
| Descriptive | `user-can-checkout.spec.ts` |
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
## 8. CI Integration
|
|
158
|
-
|
|
159
|
-
### Pipeline Steps
|
|
160
|
-
|
|
161
|
-
1. Install dependencies
|
|
162
|
-
2. Install browsers
|
|
163
|
-
3. Run tests
|
|
164
|
-
4. Upload artifacts (traces, screenshots)
|
|
165
|
-
|
|
166
|
-
### Parallelization
|
|
167
|
-
|
|
168
|
-
| Strategy | Use |
|
|
169
|
-
|----------|-----|
|
|
170
|
-
| Per file | Playwright default |
|
|
171
|
-
| Sharding | Large suites |
|
|
172
|
-
| Workers | Multiple browsers |
|
|
173
|
-
|
|
174
|
-
---
|
|
175
|
-
|
|
176
|
-
## 9. Anti-Patterns
|
|
177
|
-
|
|
178
|
-
| ❌ Don't | ✅ Do |
|
|
179
|
-
|----------|-------|
|
|
180
|
-
| Test implementation | Test behavior |
|
|
181
|
-
| Hardcode waits | Use auto-wait |
|
|
182
|
-
| Skip cleanup | Isolate tests |
|
|
183
|
-
| Ignore flaky tests | Fix root cause |
|
|
184
|
-
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
> **Remember:** E2E tests are expensive. Use them for critical paths only.
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
Skill: webapp-testing
|
|
4
|
-
Script: playwright_runner.py
|
|
5
|
-
Purpose: Run basic Playwright browser tests
|
|
6
|
-
Usage: python playwright_runner.py <url> [--screenshot]
|
|
7
|
-
Output: JSON with page info, health status, and optional screenshot path
|
|
8
|
-
Note: Requires playwright (pip install playwright && playwright install chromium)
|
|
9
|
-
Screenshots: Saved to system temp directory (auto-cleaned by OS)
|
|
10
|
-
"""
|
|
11
|
-
import sys
|
|
12
|
-
import json
|
|
13
|
-
import os
|
|
14
|
-
import tempfile
|
|
15
|
-
from datetime import datetime
|
|
16
|
-
|
|
17
|
-
# Fix Windows console encoding for Unicode output
|
|
18
|
-
try:
|
|
19
|
-
sys.stdout.reconfigure(encoding='utf-8', errors='replace')
|
|
20
|
-
sys.stderr.reconfigure(encoding='utf-8', errors='replace')
|
|
21
|
-
except AttributeError:
|
|
22
|
-
pass # Python < 3.7
|
|
23
|
-
|
|
24
|
-
try:
|
|
25
|
-
from playwright.sync_api import sync_playwright
|
|
26
|
-
PLAYWRIGHT_AVAILABLE = True
|
|
27
|
-
except ImportError:
|
|
28
|
-
PLAYWRIGHT_AVAILABLE = False
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
def run_basic_test(url: str, take_screenshot: bool = False) -> dict:
|
|
32
|
-
"""Run basic browser test on URL."""
|
|
33
|
-
if not PLAYWRIGHT_AVAILABLE:
|
|
34
|
-
return {
|
|
35
|
-
"error": "Playwright not installed",
|
|
36
|
-
"fix": "pip install playwright && playwright install chromium"
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
result = {
|
|
40
|
-
"url": url,
|
|
41
|
-
"timestamp": datetime.now().isoformat(),
|
|
42
|
-
"status": "pending"
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
try:
|
|
46
|
-
with sync_playwright() as p:
|
|
47
|
-
browser = p.chromium.launch(headless=True)
|
|
48
|
-
context = browser.new_context(
|
|
49
|
-
viewport={"width": 1280, "height": 720},
|
|
50
|
-
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
|
|
51
|
-
)
|
|
52
|
-
page = context.new_page()
|
|
53
|
-
|
|
54
|
-
# Navigate
|
|
55
|
-
response = page.goto(url, wait_until="networkidle", timeout=30000)
|
|
56
|
-
|
|
57
|
-
# Basic info
|
|
58
|
-
result["page"] = {
|
|
59
|
-
"title": page.title(),
|
|
60
|
-
"url": page.url,
|
|
61
|
-
"status_code": response.status if response else None
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
# Health checks
|
|
65
|
-
result["health"] = {
|
|
66
|
-
"loaded": response.ok if response else False,
|
|
67
|
-
"has_title": bool(page.title()),
|
|
68
|
-
"has_h1": page.locator("h1").count() > 0,
|
|
69
|
-
"has_links": page.locator("a").count() > 0,
|
|
70
|
-
"has_images": page.locator("img").count() > 0
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
# Console errors
|
|
74
|
-
console_errors = []
|
|
75
|
-
page.on("console", lambda msg: console_errors.append(msg.text) if msg.type == "error" else None)
|
|
76
|
-
|
|
77
|
-
# Performance metrics
|
|
78
|
-
result["performance"] = {
|
|
79
|
-
"dom_content_loaded": page.evaluate("window.performance.timing.domContentLoadedEventEnd - window.performance.timing.navigationStart"),
|
|
80
|
-
"load_complete": page.evaluate("window.performance.timing.loadEventEnd - window.performance.timing.navigationStart")
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
# Screenshot - uses system temp directory (cross-platform, auto-cleaned)
|
|
84
|
-
if take_screenshot:
|
|
85
|
-
# Cross-platform: Windows=%TEMP%, Linux/macOS=/tmp
|
|
86
|
-
screenshot_dir = os.path.join(tempfile.gettempdir(), "maestro_screenshots")
|
|
87
|
-
os.makedirs(screenshot_dir, exist_ok=True)
|
|
88
|
-
screenshot_path = os.path.join(screenshot_dir, f"screenshot_{datetime.now().strftime('%Y%m%d_%H%M%S')}.png")
|
|
89
|
-
page.screenshot(path=screenshot_path, full_page=True)
|
|
90
|
-
result["screenshot"] = screenshot_path
|
|
91
|
-
result["screenshot_note"] = "Saved to temp directory (auto-cleaned by OS)"
|
|
92
|
-
|
|
93
|
-
# Element counts
|
|
94
|
-
result["elements"] = {
|
|
95
|
-
"links": page.locator("a").count(),
|
|
96
|
-
"buttons": page.locator("button").count(),
|
|
97
|
-
"inputs": page.locator("input").count(),
|
|
98
|
-
"images": page.locator("img").count(),
|
|
99
|
-
"forms": page.locator("form").count()
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
browser.close()
|
|
103
|
-
|
|
104
|
-
result["status"] = "success" if result["health"]["loaded"] else "failed"
|
|
105
|
-
result["summary"] = "[OK] Page loaded successfully" if result["status"] == "success" else "[X] Page failed to load"
|
|
106
|
-
|
|
107
|
-
except Exception as e:
|
|
108
|
-
result["status"] = "error"
|
|
109
|
-
result["error"] = str(e)
|
|
110
|
-
result["summary"] = f"[X] Error: {str(e)[:100]}"
|
|
111
|
-
|
|
112
|
-
return result
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
def run_accessibility_check(url: str) -> dict:
|
|
116
|
-
"""Run basic accessibility check."""
|
|
117
|
-
if not PLAYWRIGHT_AVAILABLE:
|
|
118
|
-
return {"error": "Playwright not installed"}
|
|
119
|
-
|
|
120
|
-
result = {"url": url, "accessibility": {}}
|
|
121
|
-
|
|
122
|
-
try:
|
|
123
|
-
with sync_playwright() as p:
|
|
124
|
-
browser = p.chromium.launch(headless=True)
|
|
125
|
-
page = browser.new_page()
|
|
126
|
-
page.goto(url, wait_until="networkidle", timeout=30000)
|
|
127
|
-
|
|
128
|
-
# Basic a11y checks
|
|
129
|
-
result["accessibility"] = {
|
|
130
|
-
"images_with_alt": page.locator("img[alt]").count(),
|
|
131
|
-
"images_without_alt": page.locator("img:not([alt])").count(),
|
|
132
|
-
"buttons_with_label": page.locator("button[aria-label], button:has-text('')").count(),
|
|
133
|
-
"links_with_text": page.locator("a:has-text('')").count(),
|
|
134
|
-
"form_labels": page.locator("label").count(),
|
|
135
|
-
"headings": {
|
|
136
|
-
"h1": page.locator("h1").count(),
|
|
137
|
-
"h2": page.locator("h2").count(),
|
|
138
|
-
"h3": page.locator("h3").count()
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
browser.close()
|
|
143
|
-
result["status"] = "success"
|
|
144
|
-
|
|
145
|
-
except Exception as e:
|
|
146
|
-
result["status"] = "error"
|
|
147
|
-
result["error"] = str(e)
|
|
148
|
-
|
|
149
|
-
return result
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
if __name__ == "__main__":
|
|
153
|
-
if len(sys.argv) < 2:
|
|
154
|
-
print(json.dumps({
|
|
155
|
-
"error": "Usage: python playwright_runner.py <url> [--screenshot] [--a11y]",
|
|
156
|
-
"examples": [
|
|
157
|
-
"python playwright_runner.py https://example.com",
|
|
158
|
-
"python playwright_runner.py https://example.com --screenshot",
|
|
159
|
-
"python playwright_runner.py https://example.com --a11y"
|
|
160
|
-
]
|
|
161
|
-
}, indent=2))
|
|
162
|
-
sys.exit(1)
|
|
163
|
-
|
|
164
|
-
url = sys.argv[1]
|
|
165
|
-
take_screenshot = "--screenshot" in sys.argv
|
|
166
|
-
check_a11y = "--a11y" in sys.argv
|
|
167
|
-
|
|
168
|
-
if check_a11y:
|
|
169
|
-
result = run_accessibility_check(url)
|
|
170
|
-
else:
|
|
171
|
-
result = run_basic_test(url, take_screenshot)
|
|
172
|
-
|
|
173
|
-
print(json.dumps(result, indent=2))
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Debugging command. Activates DEBUG mode for systematic problem investigation.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /debug - Systematic Problem Investigation
|
|
6
|
-
|
|
7
|
-
$ARGUMENTS
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Purpose
|
|
12
|
-
|
|
13
|
-
This command activates DEBUG mode for systematic investigation of issues, errors, or unexpected behavior.
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Behavior
|
|
18
|
-
|
|
19
|
-
When `/debug` is triggered:
|
|
20
|
-
|
|
21
|
-
1. **Gather information**
|
|
22
|
-
- Error message
|
|
23
|
-
- Reproduction steps
|
|
24
|
-
- Expected vs actual behavior
|
|
25
|
-
- Recent changes
|
|
26
|
-
|
|
27
|
-
2. **Form hypotheses**
|
|
28
|
-
- List possible causes
|
|
29
|
-
- Order by likelihood
|
|
30
|
-
|
|
31
|
-
3. **Investigate systematically**
|
|
32
|
-
- Test each hypothesis
|
|
33
|
-
- Check logs, data flow
|
|
34
|
-
- Use elimination method
|
|
35
|
-
|
|
36
|
-
4. **Fix and prevent**
|
|
37
|
-
- Apply fix
|
|
38
|
-
- Explain root cause
|
|
39
|
-
- Add prevention measures
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
## Output Format
|
|
44
|
-
|
|
45
|
-
```markdown
|
|
46
|
-
## 🔍 Debug: [Issue]
|
|
47
|
-
|
|
48
|
-
### 1. Symptom
|
|
49
|
-
[What's happening]
|
|
50
|
-
|
|
51
|
-
### 2. Information Gathered
|
|
52
|
-
- Error: `[error message]`
|
|
53
|
-
- File: `[filepath]`
|
|
54
|
-
- Line: [line number]
|
|
55
|
-
|
|
56
|
-
### 3. Hypotheses
|
|
57
|
-
1. ❓ [Most likely cause]
|
|
58
|
-
2. ❓ [Second possibility]
|
|
59
|
-
3. ❓ [Less likely cause]
|
|
60
|
-
|
|
61
|
-
### 4. Investigation
|
|
62
|
-
|
|
63
|
-
**Testing hypothesis 1:**
|
|
64
|
-
[What I checked] → [Result]
|
|
65
|
-
|
|
66
|
-
**Testing hypothesis 2:**
|
|
67
|
-
[What I checked] → [Result]
|
|
68
|
-
|
|
69
|
-
### 5. Root Cause
|
|
70
|
-
🎯 **[Explanation of why this happened]**
|
|
71
|
-
|
|
72
|
-
### 6. Fix
|
|
73
|
-
```[language]
|
|
74
|
-
// Before
|
|
75
|
-
[broken code]
|
|
76
|
-
|
|
77
|
-
// After
|
|
78
|
-
[fixed code]
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### 7. Prevention
|
|
82
|
-
🛡️ [How to prevent this in the future]
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## Examples
|
|
88
|
-
|
|
89
|
-
```
|
|
90
|
-
/debug login not working
|
|
91
|
-
/debug API returns 500
|
|
92
|
-
/debug form doesn't submit
|
|
93
|
-
/debug data not saving
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## Key Principles
|
|
99
|
-
|
|
100
|
-
- **Ask before assuming** - get full error context
|
|
101
|
-
- **Test hypotheses** - don't guess randomly
|
|
102
|
-
- **Explain why** - not just what to fix
|
|
103
|
-
- **Prevent recurrence** - add tests, validation
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Deployment command for production releases. Pre-flight checks and deployment execution.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /deploy - Production Deployment
|
|
6
|
-
|
|
7
|
-
$ARGUMENTS
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Purpose
|
|
12
|
-
|
|
13
|
-
This command handles production deployment with pre-flight checks, deployment execution, and verification.
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Sub-commands
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
/deploy - Interactive deployment wizard
|
|
21
|
-
/deploy check - Run pre-deployment checks only
|
|
22
|
-
/deploy preview - Deploy to preview/staging
|
|
23
|
-
/deploy production - Deploy to production
|
|
24
|
-
/deploy rollback - Rollback to previous version
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Pre-Deployment Checklist
|
|
30
|
-
|
|
31
|
-
Before any deployment:
|
|
32
|
-
|
|
33
|
-
```markdown
|
|
34
|
-
## 🚀 Pre-Deploy Checklist
|
|
35
|
-
|
|
36
|
-
### Code Quality
|
|
37
|
-
- [ ] No TypeScript errors (`npx tsc --noEmit`)
|
|
38
|
-
- [ ] ESLint passing (`npx eslint .`)
|
|
39
|
-
- [ ] All tests passing (`npm test`)
|
|
40
|
-
|
|
41
|
-
### Security
|
|
42
|
-
- [ ] No hardcoded secrets
|
|
43
|
-
- [ ] Environment variables documented
|
|
44
|
-
- [ ] Dependencies audited (`npm audit`)
|
|
45
|
-
|
|
46
|
-
### Performance
|
|
47
|
-
- [ ] Bundle size acceptable
|
|
48
|
-
- [ ] No console.log statements
|
|
49
|
-
- [ ] Images optimized
|
|
50
|
-
|
|
51
|
-
### Documentation
|
|
52
|
-
- [ ] README updated
|
|
53
|
-
- [ ] CHANGELOG updated
|
|
54
|
-
- [ ] API docs current
|
|
55
|
-
|
|
56
|
-
### Ready to deploy? (y/n)
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## Deployment Flow
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
┌─────────────────┐
|
|
65
|
-
│ /deploy │
|
|
66
|
-
└────────┬────────┘
|
|
67
|
-
│
|
|
68
|
-
▼
|
|
69
|
-
┌─────────────────┐
|
|
70
|
-
│ Pre-flight │
|
|
71
|
-
│ checks │
|
|
72
|
-
└────────┬────────┘
|
|
73
|
-
│
|
|
74
|
-
Pass? ──No──► Fix issues
|
|
75
|
-
│
|
|
76
|
-
Yes
|
|
77
|
-
│
|
|
78
|
-
▼
|
|
79
|
-
┌─────────────────┐
|
|
80
|
-
│ Build │
|
|
81
|
-
│ application │
|
|
82
|
-
└────────┬────────┘
|
|
83
|
-
│
|
|
84
|
-
▼
|
|
85
|
-
┌─────────────────┐
|
|
86
|
-
│ Deploy to │
|
|
87
|
-
│ platform │
|
|
88
|
-
└────────┬────────┘
|
|
89
|
-
│
|
|
90
|
-
▼
|
|
91
|
-
┌─────────────────┐
|
|
92
|
-
│ Health check │
|
|
93
|
-
│ & verify │
|
|
94
|
-
└────────┬────────┘
|
|
95
|
-
│
|
|
96
|
-
▼
|
|
97
|
-
┌─────────────────┐
|
|
98
|
-
│ ✅ Complete │
|
|
99
|
-
└─────────────────┘
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## Output Format
|
|
105
|
-
|
|
106
|
-
### Successful Deploy
|
|
107
|
-
|
|
108
|
-
```markdown
|
|
109
|
-
## 🚀 Deployment Complete
|
|
110
|
-
|
|
111
|
-
### Summary
|
|
112
|
-
- **Version:** v1.2.3
|
|
113
|
-
- **Environment:** production
|
|
114
|
-
- **Duration:** 47 seconds
|
|
115
|
-
- **Platform:** Vercel
|
|
116
|
-
|
|
117
|
-
### URLs
|
|
118
|
-
- 🌐 Production: https://app.example.com
|
|
119
|
-
- 📊 Dashboard: https://vercel.com/project
|
|
120
|
-
|
|
121
|
-
### What Changed
|
|
122
|
-
- Added user profile feature
|
|
123
|
-
- Fixed login bug
|
|
124
|
-
- Updated dependencies
|
|
125
|
-
|
|
126
|
-
### Health Check
|
|
127
|
-
✅ API responding (200 OK)
|
|
128
|
-
✅ Database connected
|
|
129
|
-
✅ All services healthy
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### Failed Deploy
|
|
133
|
-
|
|
134
|
-
```markdown
|
|
135
|
-
## ❌ Deployment Failed
|
|
136
|
-
|
|
137
|
-
### Error
|
|
138
|
-
Build failed at step: TypeScript compilation
|
|
139
|
-
|
|
140
|
-
### Details
|
|
141
|
-
```
|
|
142
|
-
error TS2345: Argument of type 'string' is not assignable...
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
### Resolution
|
|
146
|
-
1. Fix TypeScript error in `src/services/user.ts:45`
|
|
147
|
-
2. Run `npm run build` locally to verify
|
|
148
|
-
3. Try `/deploy` again
|
|
149
|
-
|
|
150
|
-
### Rollback Available
|
|
151
|
-
Previous version (v1.2.2) is still active.
|
|
152
|
-
Run `/deploy rollback` if needed.
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
## Platform Support
|
|
158
|
-
|
|
159
|
-
| Platform | Command | Notes |
|
|
160
|
-
|----------|---------|-------|
|
|
161
|
-
| Vercel | `vercel --prod` | Auto-detected for Next.js |
|
|
162
|
-
| Railway | `railway up` | Needs Railway CLI |
|
|
163
|
-
| Fly.io | `fly deploy` | Needs flyctl |
|
|
164
|
-
| Docker | `docker compose up -d` | For self-hosted |
|
|
165
|
-
|
|
166
|
-
---
|
|
167
|
-
|
|
168
|
-
## Examples
|
|
169
|
-
|
|
170
|
-
```
|
|
171
|
-
/deploy
|
|
172
|
-
/deploy check
|
|
173
|
-
/deploy preview
|
|
174
|
-
/deploy production --skip-tests
|
|
175
|
-
/deploy rollback
|
|
176
|
-
```
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Add or update features in existing application. Used for iterative development.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /enhance - Update Application
|
|
6
|
-
|
|
7
|
-
$ARGUMENTS
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Task
|
|
12
|
-
|
|
13
|
-
This command adds features or makes updates to existing application.
|
|
14
|
-
|
|
15
|
-
### Steps:
|
|
16
|
-
|
|
17
|
-
1. **Understand Current State**
|
|
18
|
-
- Load project state with `session_manager.py`
|
|
19
|
-
- Understand existing features, tech stack
|
|
20
|
-
|
|
21
|
-
2. **Plan Changes**
|
|
22
|
-
- Determine what will be added/changed
|
|
23
|
-
- Detect affected files
|
|
24
|
-
- Check dependencies
|
|
25
|
-
|
|
26
|
-
3. **Present Plan to User** (for major changes)
|
|
27
|
-
```
|
|
28
|
-
"To add admin panel:
|
|
29
|
-
- I'll create 15 new files
|
|
30
|
-
- Update 8 files
|
|
31
|
-
- Takes ~10 minutes
|
|
32
|
-
|
|
33
|
-
Should I start?"
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
4. **Apply**
|
|
37
|
-
- Call relevant agents
|
|
38
|
-
- Make changes
|
|
39
|
-
- Test
|
|
40
|
-
|
|
41
|
-
5. **Update Preview**
|
|
42
|
-
- Hot reload or restart
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
## Usage Examples
|
|
47
|
-
|
|
48
|
-
```
|
|
49
|
-
/enhance add dark mode
|
|
50
|
-
/enhance build admin panel
|
|
51
|
-
/enhance integrate payment system
|
|
52
|
-
/enhance add search feature
|
|
53
|
-
/enhance edit profile page
|
|
54
|
-
/enhance make responsive
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## Caution
|
|
60
|
-
|
|
61
|
-
- Get approval for major changes
|
|
62
|
-
- Warn on conflicting requests (e.g., "use Firebase" when project uses PostgreSQL)
|
|
63
|
-
- Commit each change with git
|