cp-toolkit 2.0.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/README.md +130 -0
- package/bin/cp-kit.js +72 -0
- package/package.json +46 -0
- package/src/commands/add.js +212 -0
- package/src/commands/doctor.js +149 -0
- package/src/commands/init.js +662 -0
- package/src/commands/list.js +128 -0
- package/src/index.js +13 -0
- package/templates/agents/backend-specialist.md +263 -0
- package/templates/agents/code-archaeologist.md +106 -0
- package/templates/agents/database-architect.md +226 -0
- package/templates/agents/debugger.md +225 -0
- package/templates/agents/devops-engineer.md +242 -0
- package/templates/agents/documentation-writer.md +104 -0
- package/templates/agents/explorer-agent.md +73 -0
- package/templates/agents/frontend-specialist.md +556 -0
- package/templates/agents/game-developer.md +162 -0
- package/templates/agents/mobile-developer.md +377 -0
- package/templates/agents/orchestrator.md +416 -0
- package/templates/agents/penetration-tester.md +188 -0
- package/templates/agents/performance-optimizer.md +187 -0
- package/templates/agents/product-manager.md +112 -0
- package/templates/agents/product-owner.md +95 -0
- package/templates/agents/project-planner.md +406 -0
- package/templates/agents/qa-automation-engineer.md +103 -0
- package/templates/agents/security-auditor.md +170 -0
- package/templates/agents/seo-specialist.md +111 -0
- package/templates/agents/test-engineer.md +158 -0
- package/templates/github/agents/backend-specialist.md +67 -0
- package/templates/github/agents/code-archaeologist.md +61 -0
- package/templates/github/agents/database-architect.md +73 -0
- package/templates/github/agents/debugger.md +71 -0
- package/templates/github/agents/devops-engineer.md +85 -0
- package/templates/github/agents/documentation-writer.md +107 -0
- package/templates/github/agents/explorer-agent.md +87 -0
- package/templates/github/agents/frontend-specialist.md +54 -0
- package/templates/github/agents/game-developer.md +94 -0
- package/templates/github/agents/mobile-developer.md +75 -0
- package/templates/github/agents/orchestrator.md +48 -0
- package/templates/github/agents/penetration-tester.md +87 -0
- package/templates/github/agents/performance-optimizer.md +70 -0
- package/templates/github/agents/product-manager.md +85 -0
- package/templates/github/agents/product-owner.md +77 -0
- package/templates/github/agents/project-planner.md +83 -0
- package/templates/github/agents/qa-automation-engineer.md +95 -0
- package/templates/github/agents/security-auditor.md +72 -0
- package/templates/github/agents/seo-specialist.md +78 -0
- package/templates/github/agents/test-engineer.md +79 -0
- package/templates/github/instructions/database.instructions.md +74 -0
- package/templates/github/instructions/python.instructions.md +76 -0
- package/templates/github/instructions/security.instructions.md +73 -0
- package/templates/github/instructions/typescript.instructions.md +50 -0
- package/templates/rules/GEMINI.md +273 -0
- package/templates/scripts/mcp-server.js +704 -0
- package/templates/skills/core/behavioral-modes/SKILL.md +242 -0
- package/templates/skills/core/brainstorming/SKILL.md +163 -0
- package/templates/skills/core/brainstorming/dynamic-questioning.md +350 -0
- package/templates/skills/core/clean-code/SKILL.md +201 -0
- package/templates/skills/core/intelligent-routing/SKILL.md +335 -0
- package/templates/skills/core/mcp-builder/SKILL.md +176 -0
- package/templates/skills/core/parallel-agents/SKILL.md +175 -0
- package/templates/skills/core/plan-writing/SKILL.md +152 -0
- package/templates/skills/optional/api-patterns/SKILL.md +81 -0
- package/templates/skills/optional/api-patterns/api-style.md +42 -0
- package/templates/skills/optional/api-patterns/auth.md +24 -0
- package/templates/skills/optional/api-patterns/documentation.md +26 -0
- package/templates/skills/optional/api-patterns/graphql.md +41 -0
- package/templates/skills/optional/api-patterns/rate-limiting.md +31 -0
- package/templates/skills/optional/api-patterns/response.md +37 -0
- package/templates/skills/optional/api-patterns/rest.md +40 -0
- package/templates/skills/optional/api-patterns/scripts/api_validator.py +211 -0
- package/templates/skills/optional/api-patterns/security-testing.md +122 -0
- package/templates/skills/optional/api-patterns/trpc.md +41 -0
- package/templates/skills/optional/api-patterns/versioning.md +22 -0
- package/templates/skills/optional/app-builder/SKILL.md +75 -0
- package/templates/skills/optional/app-builder/agent-coordination.md +71 -0
- package/templates/skills/optional/app-builder/feature-building.md +53 -0
- package/templates/skills/optional/app-builder/project-detection.md +34 -0
- package/templates/skills/optional/app-builder/scaffolding.md +118 -0
- package/templates/skills/optional/app-builder/tech-stack.md +40 -0
- package/templates/skills/optional/app-builder/templates/SKILL.md +39 -0
- package/templates/skills/optional/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/templates/skills/optional/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/templates/skills/optional/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/templates/skills/optional/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/templates/skills/optional/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/templates/skills/optional/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/templates/skills/optional/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/templates/skills/optional/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
- package/templates/skills/optional/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
- package/templates/skills/optional/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
- package/templates/skills/optional/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
- package/templates/skills/optional/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/templates/skills/optional/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
- package/templates/skills/optional/architecture/SKILL.md +55 -0
- package/templates/skills/optional/architecture/context-discovery.md +43 -0
- package/templates/skills/optional/architecture/examples.md +94 -0
- package/templates/skills/optional/architecture/pattern-selection.md +68 -0
- package/templates/skills/optional/architecture/patterns-reference.md +50 -0
- package/templates/skills/optional/architecture/trade-off-analysis.md +77 -0
- package/templates/skills/optional/bash-linux/SKILL.md +199 -0
- package/templates/skills/optional/code-review-checklist/SKILL.md +109 -0
- package/templates/skills/optional/database-design/SKILL.md +52 -0
- package/templates/skills/optional/database-design/database-selection.md +43 -0
- package/templates/skills/optional/database-design/indexing.md +39 -0
- package/templates/skills/optional/database-design/migrations.md +48 -0
- package/templates/skills/optional/database-design/optimization.md +36 -0
- package/templates/skills/optional/database-design/orm-selection.md +30 -0
- package/templates/skills/optional/database-design/schema-design.md +56 -0
- package/templates/skills/optional/database-design/scripts/schema_validator.py +172 -0
- package/templates/skills/optional/deployment-procedures/SKILL.md +241 -0
- package/templates/skills/optional/documentation-templates/SKILL.md +194 -0
- package/templates/skills/optional/frontend-design/SKILL.md +418 -0
- package/templates/skills/optional/frontend-design/animation-guide.md +331 -0
- package/templates/skills/optional/frontend-design/color-system.md +311 -0
- package/templates/skills/optional/frontend-design/decision-trees.md +418 -0
- package/templates/skills/optional/frontend-design/motion-graphics.md +306 -0
- package/templates/skills/optional/frontend-design/scripts/accessibility_checker.py +183 -0
- package/templates/skills/optional/frontend-design/scripts/ux_audit.py +722 -0
- package/templates/skills/optional/frontend-design/typography-system.md +345 -0
- package/templates/skills/optional/frontend-design/ux-psychology.md +541 -0
- package/templates/skills/optional/frontend-design/visual-effects.md +383 -0
- package/templates/skills/optional/game-development/2d-games/SKILL.md +119 -0
- package/templates/skills/optional/game-development/3d-games/SKILL.md +135 -0
- package/templates/skills/optional/game-development/SKILL.md +167 -0
- package/templates/skills/optional/game-development/game-art/SKILL.md +185 -0
- package/templates/skills/optional/game-development/game-audio/SKILL.md +190 -0
- package/templates/skills/optional/game-development/game-design/SKILL.md +129 -0
- package/templates/skills/optional/game-development/mobile-games/SKILL.md +108 -0
- package/templates/skills/optional/game-development/multiplayer/SKILL.md +132 -0
- package/templates/skills/optional/game-development/pc-games/SKILL.md +144 -0
- package/templates/skills/optional/game-development/vr-ar/SKILL.md +123 -0
- package/templates/skills/optional/game-development/web-games/SKILL.md +150 -0
- package/templates/skills/optional/geo-fundamentals/SKILL.md +156 -0
- package/templates/skills/optional/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/templates/skills/optional/i18n-localization/SKILL.md +154 -0
- package/templates/skills/optional/i18n-localization/scripts/i18n_checker.py +241 -0
- package/templates/skills/optional/lint-and-validate/SKILL.md +45 -0
- package/templates/skills/optional/lint-and-validate/scripts/lint_runner.py +172 -0
- package/templates/skills/optional/lint-and-validate/scripts/type_coverage.py +173 -0
- package/templates/skills/optional/mobile-design/SKILL.md +394 -0
- package/templates/skills/optional/mobile-design/decision-trees.md +516 -0
- package/templates/skills/optional/mobile-design/mobile-backend.md +491 -0
- package/templates/skills/optional/mobile-design/mobile-color-system.md +420 -0
- package/templates/skills/optional/mobile-design/mobile-debugging.md +122 -0
- package/templates/skills/optional/mobile-design/mobile-design-thinking.md +357 -0
- package/templates/skills/optional/mobile-design/mobile-navigation.md +458 -0
- package/templates/skills/optional/mobile-design/mobile-performance.md +767 -0
- package/templates/skills/optional/mobile-design/mobile-testing.md +356 -0
- package/templates/skills/optional/mobile-design/mobile-typography.md +433 -0
- package/templates/skills/optional/mobile-design/platform-android.md +666 -0
- package/templates/skills/optional/mobile-design/platform-ios.md +561 -0
- package/templates/skills/optional/mobile-design/scripts/mobile_audit.py +670 -0
- package/templates/skills/optional/mobile-design/touch-psychology.md +537 -0
- package/templates/skills/optional/nextjs-react-expert/1-async-eliminating-waterfalls.md +312 -0
- package/templates/skills/optional/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
- package/templates/skills/optional/nextjs-react-expert/3-server-server-side-performance.md +490 -0
- package/templates/skills/optional/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
- package/templates/skills/optional/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
- package/templates/skills/optional/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
- package/templates/skills/optional/nextjs-react-expert/7-js-javascript-performance.md +684 -0
- package/templates/skills/optional/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
- package/templates/skills/optional/nextjs-react-expert/SKILL.md +267 -0
- package/templates/skills/optional/nextjs-react-expert/scripts/convert_rules.py +222 -0
- package/templates/skills/optional/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
- package/templates/skills/optional/nodejs-best-practices/SKILL.md +333 -0
- package/templates/skills/optional/performance-profiling/SKILL.md +143 -0
- package/templates/skills/optional/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/templates/skills/optional/powershell-windows/SKILL.md +167 -0
- package/templates/skills/optional/python-patterns/SKILL.md +441 -0
- package/templates/skills/optional/red-team-tactics/SKILL.md +199 -0
- package/templates/skills/optional/seo-fundamentals/SKILL.md +129 -0
- package/templates/skills/optional/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/templates/skills/optional/server-management/SKILL.md +161 -0
- package/templates/skills/optional/systematic-debugging/SKILL.md +109 -0
- package/templates/skills/optional/tailwind-patterns/SKILL.md +269 -0
- package/templates/skills/optional/tdd-workflow/SKILL.md +149 -0
- package/templates/skills/optional/testing-patterns/SKILL.md +178 -0
- package/templates/skills/optional/testing-patterns/scripts/test_runner.py +219 -0
- package/templates/skills/optional/vulnerability-scanner/SKILL.md +276 -0
- package/templates/skills/optional/vulnerability-scanner/checklists.md +121 -0
- package/templates/skills/optional/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/templates/skills/optional/web-design-guidelines/SKILL.md +57 -0
- package/templates/skills/optional/webapp-testing/SKILL.md +187 -0
- package/templates/skills/optional/webapp-testing/scripts/playwright_runner.py +173 -0
- package/templates/workflows/brainstorm.md +113 -0
- package/templates/workflows/create.md +59 -0
- package/templates/workflows/debug.md +103 -0
- package/templates/workflows/deploy.md +176 -0
- package/templates/workflows/enhance.md +63 -0
- package/templates/workflows/orchestrate.md +237 -0
- package/templates/workflows/plan.md +89 -0
- package/templates/workflows/preview.md +81 -0
- package/templates/workflows/status.md +86 -0
- package/templates/workflows/test.md +144 -0
- package/templates/workflows/ui-ux-pro-max.md +296 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: performance-profiling
|
|
3
|
+
description: Performance profiling principles. Measurement, analysis, and optimization techniques.
|
|
4
|
+
allowed-tools: Read, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Performance Profiling
|
|
8
|
+
|
|
9
|
+
> Measure, analyze, optimize - in that order.
|
|
10
|
+
|
|
11
|
+
## 🔧 Runtime Scripts
|
|
12
|
+
|
|
13
|
+
**Execute these for automated profiling:**
|
|
14
|
+
|
|
15
|
+
| Script | Purpose | Usage |
|
|
16
|
+
|--------|---------|-------|
|
|
17
|
+
| `scripts/lighthouse_audit.py` | Lighthouse performance audit | `python scripts/lighthouse_audit.py https://example.com` |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 1. Core Web Vitals
|
|
22
|
+
|
|
23
|
+
### Targets
|
|
24
|
+
|
|
25
|
+
| Metric | Good | Poor | Measures |
|
|
26
|
+
|--------|------|------|----------|
|
|
27
|
+
| **LCP** | < 2.5s | > 4.0s | Loading |
|
|
28
|
+
| **INP** | < 200ms | > 500ms | Interactivity |
|
|
29
|
+
| **CLS** | < 0.1 | > 0.25 | Stability |
|
|
30
|
+
|
|
31
|
+
### When to Measure
|
|
32
|
+
|
|
33
|
+
| Stage | Tool |
|
|
34
|
+
|-------|------|
|
|
35
|
+
| Development | Local Lighthouse |
|
|
36
|
+
| CI/CD | Lighthouse CI |
|
|
37
|
+
| Production | RUM (Real User Monitoring) |
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 2. Profiling Workflow
|
|
42
|
+
|
|
43
|
+
### The 4-Step Process
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
1. BASELINE → Measure current state
|
|
47
|
+
2. IDENTIFY → Find the bottleneck
|
|
48
|
+
3. FIX → Make targeted change
|
|
49
|
+
4. VALIDATE → Confirm improvement
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Profiling Tool Selection
|
|
53
|
+
|
|
54
|
+
| Problem | Tool |
|
|
55
|
+
|---------|------|
|
|
56
|
+
| Page load | Lighthouse |
|
|
57
|
+
| Bundle size | Bundle analyzer |
|
|
58
|
+
| Runtime | DevTools Performance |
|
|
59
|
+
| Memory | DevTools Memory |
|
|
60
|
+
| Network | DevTools Network |
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 3. Bundle Analysis
|
|
65
|
+
|
|
66
|
+
### What to Look For
|
|
67
|
+
|
|
68
|
+
| Issue | Indicator |
|
|
69
|
+
|-------|-----------|
|
|
70
|
+
| Large dependencies | Top of bundle |
|
|
71
|
+
| Duplicate code | Multiple chunks |
|
|
72
|
+
| Unused code | Low coverage |
|
|
73
|
+
| Missing splits | Single large chunk |
|
|
74
|
+
|
|
75
|
+
### Optimization Actions
|
|
76
|
+
|
|
77
|
+
| Finding | Action |
|
|
78
|
+
|---------|--------|
|
|
79
|
+
| Big library | Import specific modules |
|
|
80
|
+
| Duplicate deps | Dedupe, update versions |
|
|
81
|
+
| Route in main | Code split |
|
|
82
|
+
| Unused exports | Tree shake |
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 4. Runtime Profiling
|
|
87
|
+
|
|
88
|
+
### Performance Tab Analysis
|
|
89
|
+
|
|
90
|
+
| Pattern | Meaning |
|
|
91
|
+
|---------|---------|
|
|
92
|
+
| Long tasks (>50ms) | UI blocking |
|
|
93
|
+
| Many small tasks | Possible batching opportunity |
|
|
94
|
+
| Layout/paint | Rendering bottleneck |
|
|
95
|
+
| Script | JavaScript execution |
|
|
96
|
+
|
|
97
|
+
### Memory Tab Analysis
|
|
98
|
+
|
|
99
|
+
| Pattern | Meaning |
|
|
100
|
+
|---------|---------|
|
|
101
|
+
| Growing heap | Possible leak |
|
|
102
|
+
| Large retained | Check references |
|
|
103
|
+
| Detached DOM | Not cleaned up |
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 5. Common Bottlenecks
|
|
108
|
+
|
|
109
|
+
### By Symptom
|
|
110
|
+
|
|
111
|
+
| Symptom | Likely Cause |
|
|
112
|
+
|---------|--------------|
|
|
113
|
+
| Slow initial load | Large JS, render blocking |
|
|
114
|
+
| Slow interactions | Heavy event handlers |
|
|
115
|
+
| Jank during scroll | Layout thrashing |
|
|
116
|
+
| Growing memory | Leaks, retained refs |
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 6. Quick Win Priorities
|
|
121
|
+
|
|
122
|
+
| Priority | Action | Impact |
|
|
123
|
+
|----------|--------|--------|
|
|
124
|
+
| 1 | Enable compression | High |
|
|
125
|
+
| 2 | Lazy load images | High |
|
|
126
|
+
| 3 | Code split routes | High |
|
|
127
|
+
| 4 | Cache static assets | Medium |
|
|
128
|
+
| 5 | Optimize images | Medium |
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## 7. Anti-Patterns
|
|
133
|
+
|
|
134
|
+
| ❌ Don't | ✅ Do |
|
|
135
|
+
|----------|-------|
|
|
136
|
+
| Guess at problems | Profile first |
|
|
137
|
+
| Micro-optimize | Fix biggest issue |
|
|
138
|
+
| Optimize early | Optimize when needed |
|
|
139
|
+
| Ignore real users | Use RUM data |
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
> **Remember:** The fastest code is code that doesn't run. Remove before optimizing.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Skill: performance-profiling
|
|
4
|
+
Script: lighthouse_audit.py
|
|
5
|
+
Purpose: Run Lighthouse performance audit on a URL
|
|
6
|
+
Usage: python lighthouse_audit.py https://example.com
|
|
7
|
+
Output: JSON with performance scores
|
|
8
|
+
Note: Requires lighthouse CLI (npm install -g lighthouse)
|
|
9
|
+
"""
|
|
10
|
+
import subprocess
|
|
11
|
+
import json
|
|
12
|
+
import sys
|
|
13
|
+
import os
|
|
14
|
+
import tempfile
|
|
15
|
+
|
|
16
|
+
def run_lighthouse(url: str) -> dict:
|
|
17
|
+
"""Run Lighthouse audit on URL."""
|
|
18
|
+
try:
|
|
19
|
+
with tempfile.NamedTemporaryFile(suffix='.json', delete=False) as f:
|
|
20
|
+
output_path = f.name
|
|
21
|
+
|
|
22
|
+
result = subprocess.run(
|
|
23
|
+
[
|
|
24
|
+
"lighthouse",
|
|
25
|
+
url,
|
|
26
|
+
"--output=json",
|
|
27
|
+
f"--output-path={output_path}",
|
|
28
|
+
"--chrome-flags=--headless",
|
|
29
|
+
"--only-categories=performance,accessibility,best-practices,seo"
|
|
30
|
+
],
|
|
31
|
+
capture_output=True,
|
|
32
|
+
text=True,
|
|
33
|
+
timeout=120
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
if os.path.exists(output_path):
|
|
37
|
+
with open(output_path, 'r') as f:
|
|
38
|
+
report = json.load(f)
|
|
39
|
+
os.unlink(output_path)
|
|
40
|
+
|
|
41
|
+
categories = report.get("categories", {})
|
|
42
|
+
return {
|
|
43
|
+
"url": url,
|
|
44
|
+
"scores": {
|
|
45
|
+
"performance": int(categories.get("performance", {}).get("score", 0) * 100),
|
|
46
|
+
"accessibility": int(categories.get("accessibility", {}).get("score", 0) * 100),
|
|
47
|
+
"best_practices": int(categories.get("best-practices", {}).get("score", 0) * 100),
|
|
48
|
+
"seo": int(categories.get("seo", {}).get("score", 0) * 100)
|
|
49
|
+
},
|
|
50
|
+
"summary": get_summary(categories)
|
|
51
|
+
}
|
|
52
|
+
else:
|
|
53
|
+
return {"error": "Lighthouse failed to generate report", "stderr": result.stderr[:500]}
|
|
54
|
+
|
|
55
|
+
except subprocess.TimeoutExpired:
|
|
56
|
+
return {"error": "Lighthouse audit timed out"}
|
|
57
|
+
except FileNotFoundError:
|
|
58
|
+
return {"error": "Lighthouse CLI not found. Install with: npm install -g lighthouse"}
|
|
59
|
+
|
|
60
|
+
def get_summary(categories: dict) -> str:
|
|
61
|
+
"""Generate summary based on scores."""
|
|
62
|
+
perf = categories.get("performance", {}).get("score", 0) * 100
|
|
63
|
+
if perf >= 90:
|
|
64
|
+
return "[OK] Excellent performance"
|
|
65
|
+
elif perf >= 50:
|
|
66
|
+
return "[!] Needs improvement"
|
|
67
|
+
else:
|
|
68
|
+
return "[X] Poor performance"
|
|
69
|
+
|
|
70
|
+
if __name__ == "__main__":
|
|
71
|
+
if len(sys.argv) < 2:
|
|
72
|
+
print(json.dumps({"error": "Usage: python lighthouse_audit.py <url>"}))
|
|
73
|
+
sys.exit(1)
|
|
74
|
+
|
|
75
|
+
result = run_lighthouse(sys.argv[1])
|
|
76
|
+
print(json.dumps(result, indent=2))
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: powershell-windows
|
|
3
|
+
description: PowerShell Windows patterns. Critical pitfalls, operator syntax, error handling.
|
|
4
|
+
allowed-tools: Read, Write, Edit, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# PowerShell Windows Patterns
|
|
8
|
+
|
|
9
|
+
> Critical patterns and pitfalls for Windows PowerShell.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Operator Syntax Rules
|
|
14
|
+
|
|
15
|
+
### CRITICAL: Parentheses Required
|
|
16
|
+
|
|
17
|
+
| ❌ Wrong | ✅ Correct |
|
|
18
|
+
|----------|-----------|
|
|
19
|
+
| `if (Test-Path "a" -or Test-Path "b")` | `if ((Test-Path "a") -or (Test-Path "b"))` |
|
|
20
|
+
| `if (Get-Item $x -and $y -eq 5)` | `if ((Get-Item $x) -and ($y -eq 5))` |
|
|
21
|
+
|
|
22
|
+
**Rule:** Each cmdlet call MUST be in parentheses when using logical operators.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 2. Unicode/Emoji Restriction
|
|
27
|
+
|
|
28
|
+
### CRITICAL: No Unicode in Scripts
|
|
29
|
+
|
|
30
|
+
| Purpose | ❌ Don't Use | ✅ Use |
|
|
31
|
+
|---------|-------------|--------|
|
|
32
|
+
| Success | ✅ ✓ | [OK] [+] |
|
|
33
|
+
| Error | ❌ ✗ 🔴 | [!] [X] |
|
|
34
|
+
| Warning | ⚠️ 🟡 | [*] [WARN] |
|
|
35
|
+
| Info | ℹ️ 🔵 | [i] [INFO] |
|
|
36
|
+
| Progress | ⏳ | [...] |
|
|
37
|
+
|
|
38
|
+
**Rule:** Use ASCII characters only in PowerShell scripts.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 3. Null Check Patterns
|
|
43
|
+
|
|
44
|
+
### Always Check Before Access
|
|
45
|
+
|
|
46
|
+
| ❌ Wrong | ✅ Correct |
|
|
47
|
+
|----------|-----------|
|
|
48
|
+
| `$array.Count -gt 0` | `$array -and $array.Count -gt 0` |
|
|
49
|
+
| `$text.Length` | `if ($text) { $text.Length }` |
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 4. String Interpolation
|
|
54
|
+
|
|
55
|
+
### Complex Expressions
|
|
56
|
+
|
|
57
|
+
| ❌ Wrong | ✅ Correct |
|
|
58
|
+
|----------|-----------|
|
|
59
|
+
| `"Value: $($obj.prop.sub)"` | Store in variable first |
|
|
60
|
+
|
|
61
|
+
**Pattern:**
|
|
62
|
+
```
|
|
63
|
+
$value = $obj.prop.sub
|
|
64
|
+
Write-Output "Value: $value"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 5. Error Handling
|
|
70
|
+
|
|
71
|
+
### ErrorActionPreference
|
|
72
|
+
|
|
73
|
+
| Value | Use |
|
|
74
|
+
|-------|-----|
|
|
75
|
+
| Stop | Development (fail fast) |
|
|
76
|
+
| Continue | Production scripts |
|
|
77
|
+
| SilentlyContinue | When errors expected |
|
|
78
|
+
|
|
79
|
+
### Try/Catch Pattern
|
|
80
|
+
|
|
81
|
+
- Don't return inside try block
|
|
82
|
+
- Use finally for cleanup
|
|
83
|
+
- Return after try/catch
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 6. File Paths
|
|
88
|
+
|
|
89
|
+
### Windows Path Rules
|
|
90
|
+
|
|
91
|
+
| Pattern | Use |
|
|
92
|
+
|---------|-----|
|
|
93
|
+
| Literal path | `C:\Users\User\file.txt` |
|
|
94
|
+
| Variable path | `Join-Path $env:USERPROFILE "file.txt"` |
|
|
95
|
+
| Relative | `Join-Path $ScriptDir "data"` |
|
|
96
|
+
|
|
97
|
+
**Rule:** Use Join-Path for cross-platform safety.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 7. Array Operations
|
|
102
|
+
|
|
103
|
+
### Correct Patterns
|
|
104
|
+
|
|
105
|
+
| Operation | Syntax |
|
|
106
|
+
|-----------|--------|
|
|
107
|
+
| Empty array | `$array = @()` |
|
|
108
|
+
| Add item | `$array += $item` |
|
|
109
|
+
| ArrayList add | `$list.Add($item) | Out-Null` |
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 8. JSON Operations
|
|
114
|
+
|
|
115
|
+
### CRITICAL: Depth Parameter
|
|
116
|
+
|
|
117
|
+
| ❌ Wrong | ✅ Correct |
|
|
118
|
+
|----------|-----------|
|
|
119
|
+
| `ConvertTo-Json` | `ConvertTo-Json -Depth 10` |
|
|
120
|
+
|
|
121
|
+
**Rule:** Always specify `-Depth` for nested objects.
|
|
122
|
+
|
|
123
|
+
### File Operations
|
|
124
|
+
|
|
125
|
+
| Operation | Pattern |
|
|
126
|
+
|-----------|---------|
|
|
127
|
+
| Read | `Get-Content "file.json" -Raw | ConvertFrom-Json` |
|
|
128
|
+
| Write | `$data | ConvertTo-Json -Depth 10 | Out-File "file.json" -Encoding UTF8` |
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## 9. Common Errors
|
|
133
|
+
|
|
134
|
+
| Error Message | Cause | Fix |
|
|
135
|
+
|---------------|-------|-----|
|
|
136
|
+
| "parameter 'or'" | Missing parentheses | Wrap cmdlets in () |
|
|
137
|
+
| "Unexpected token" | Unicode character | Use ASCII only |
|
|
138
|
+
| "Cannot find property" | Null object | Check null first |
|
|
139
|
+
| "Cannot convert" | Type mismatch | Use .ToString() |
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## 10. Script Template
|
|
144
|
+
|
|
145
|
+
```powershell
|
|
146
|
+
# Strict mode
|
|
147
|
+
Set-StrictMode -Version Latest
|
|
148
|
+
$ErrorActionPreference = "Continue"
|
|
149
|
+
|
|
150
|
+
# Paths
|
|
151
|
+
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
152
|
+
|
|
153
|
+
# Main
|
|
154
|
+
try {
|
|
155
|
+
# Logic here
|
|
156
|
+
Write-Output "[OK] Done"
|
|
157
|
+
exit 0
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
Write-Warning "Error: $_"
|
|
161
|
+
exit 1
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
> **Remember:** PowerShell has unique syntax rules. Parentheses, ASCII-only, and null checks are non-negotiable.
|