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.
Files changed (196) hide show
  1. package/README.md +130 -0
  2. package/bin/cp-kit.js +72 -0
  3. package/package.json +46 -0
  4. package/src/commands/add.js +212 -0
  5. package/src/commands/doctor.js +149 -0
  6. package/src/commands/init.js +662 -0
  7. package/src/commands/list.js +128 -0
  8. package/src/index.js +13 -0
  9. package/templates/agents/backend-specialist.md +263 -0
  10. package/templates/agents/code-archaeologist.md +106 -0
  11. package/templates/agents/database-architect.md +226 -0
  12. package/templates/agents/debugger.md +225 -0
  13. package/templates/agents/devops-engineer.md +242 -0
  14. package/templates/agents/documentation-writer.md +104 -0
  15. package/templates/agents/explorer-agent.md +73 -0
  16. package/templates/agents/frontend-specialist.md +556 -0
  17. package/templates/agents/game-developer.md +162 -0
  18. package/templates/agents/mobile-developer.md +377 -0
  19. package/templates/agents/orchestrator.md +416 -0
  20. package/templates/agents/penetration-tester.md +188 -0
  21. package/templates/agents/performance-optimizer.md +187 -0
  22. package/templates/agents/product-manager.md +112 -0
  23. package/templates/agents/product-owner.md +95 -0
  24. package/templates/agents/project-planner.md +406 -0
  25. package/templates/agents/qa-automation-engineer.md +103 -0
  26. package/templates/agents/security-auditor.md +170 -0
  27. package/templates/agents/seo-specialist.md +111 -0
  28. package/templates/agents/test-engineer.md +158 -0
  29. package/templates/github/agents/backend-specialist.md +67 -0
  30. package/templates/github/agents/code-archaeologist.md +61 -0
  31. package/templates/github/agents/database-architect.md +73 -0
  32. package/templates/github/agents/debugger.md +71 -0
  33. package/templates/github/agents/devops-engineer.md +85 -0
  34. package/templates/github/agents/documentation-writer.md +107 -0
  35. package/templates/github/agents/explorer-agent.md +87 -0
  36. package/templates/github/agents/frontend-specialist.md +54 -0
  37. package/templates/github/agents/game-developer.md +94 -0
  38. package/templates/github/agents/mobile-developer.md +75 -0
  39. package/templates/github/agents/orchestrator.md +48 -0
  40. package/templates/github/agents/penetration-tester.md +87 -0
  41. package/templates/github/agents/performance-optimizer.md +70 -0
  42. package/templates/github/agents/product-manager.md +85 -0
  43. package/templates/github/agents/product-owner.md +77 -0
  44. package/templates/github/agents/project-planner.md +83 -0
  45. package/templates/github/agents/qa-automation-engineer.md +95 -0
  46. package/templates/github/agents/security-auditor.md +72 -0
  47. package/templates/github/agents/seo-specialist.md +78 -0
  48. package/templates/github/agents/test-engineer.md +79 -0
  49. package/templates/github/instructions/database.instructions.md +74 -0
  50. package/templates/github/instructions/python.instructions.md +76 -0
  51. package/templates/github/instructions/security.instructions.md +73 -0
  52. package/templates/github/instructions/typescript.instructions.md +50 -0
  53. package/templates/rules/GEMINI.md +273 -0
  54. package/templates/scripts/mcp-server.js +704 -0
  55. package/templates/skills/core/behavioral-modes/SKILL.md +242 -0
  56. package/templates/skills/core/brainstorming/SKILL.md +163 -0
  57. package/templates/skills/core/brainstorming/dynamic-questioning.md +350 -0
  58. package/templates/skills/core/clean-code/SKILL.md +201 -0
  59. package/templates/skills/core/intelligent-routing/SKILL.md +335 -0
  60. package/templates/skills/core/mcp-builder/SKILL.md +176 -0
  61. package/templates/skills/core/parallel-agents/SKILL.md +175 -0
  62. package/templates/skills/core/plan-writing/SKILL.md +152 -0
  63. package/templates/skills/optional/api-patterns/SKILL.md +81 -0
  64. package/templates/skills/optional/api-patterns/api-style.md +42 -0
  65. package/templates/skills/optional/api-patterns/auth.md +24 -0
  66. package/templates/skills/optional/api-patterns/documentation.md +26 -0
  67. package/templates/skills/optional/api-patterns/graphql.md +41 -0
  68. package/templates/skills/optional/api-patterns/rate-limiting.md +31 -0
  69. package/templates/skills/optional/api-patterns/response.md +37 -0
  70. package/templates/skills/optional/api-patterns/rest.md +40 -0
  71. package/templates/skills/optional/api-patterns/scripts/api_validator.py +211 -0
  72. package/templates/skills/optional/api-patterns/security-testing.md +122 -0
  73. package/templates/skills/optional/api-patterns/trpc.md +41 -0
  74. package/templates/skills/optional/api-patterns/versioning.md +22 -0
  75. package/templates/skills/optional/app-builder/SKILL.md +75 -0
  76. package/templates/skills/optional/app-builder/agent-coordination.md +71 -0
  77. package/templates/skills/optional/app-builder/feature-building.md +53 -0
  78. package/templates/skills/optional/app-builder/project-detection.md +34 -0
  79. package/templates/skills/optional/app-builder/scaffolding.md +118 -0
  80. package/templates/skills/optional/app-builder/tech-stack.md +40 -0
  81. package/templates/skills/optional/app-builder/templates/SKILL.md +39 -0
  82. package/templates/skills/optional/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  83. package/templates/skills/optional/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  84. package/templates/skills/optional/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  85. package/templates/skills/optional/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  86. package/templates/skills/optional/app-builder/templates/express-api/TEMPLATE.md +83 -0
  87. package/templates/skills/optional/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  88. package/templates/skills/optional/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  89. package/templates/skills/optional/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
  90. package/templates/skills/optional/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
  91. package/templates/skills/optional/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
  92. package/templates/skills/optional/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
  93. package/templates/skills/optional/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  94. package/templates/skills/optional/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
  95. package/templates/skills/optional/architecture/SKILL.md +55 -0
  96. package/templates/skills/optional/architecture/context-discovery.md +43 -0
  97. package/templates/skills/optional/architecture/examples.md +94 -0
  98. package/templates/skills/optional/architecture/pattern-selection.md +68 -0
  99. package/templates/skills/optional/architecture/patterns-reference.md +50 -0
  100. package/templates/skills/optional/architecture/trade-off-analysis.md +77 -0
  101. package/templates/skills/optional/bash-linux/SKILL.md +199 -0
  102. package/templates/skills/optional/code-review-checklist/SKILL.md +109 -0
  103. package/templates/skills/optional/database-design/SKILL.md +52 -0
  104. package/templates/skills/optional/database-design/database-selection.md +43 -0
  105. package/templates/skills/optional/database-design/indexing.md +39 -0
  106. package/templates/skills/optional/database-design/migrations.md +48 -0
  107. package/templates/skills/optional/database-design/optimization.md +36 -0
  108. package/templates/skills/optional/database-design/orm-selection.md +30 -0
  109. package/templates/skills/optional/database-design/schema-design.md +56 -0
  110. package/templates/skills/optional/database-design/scripts/schema_validator.py +172 -0
  111. package/templates/skills/optional/deployment-procedures/SKILL.md +241 -0
  112. package/templates/skills/optional/documentation-templates/SKILL.md +194 -0
  113. package/templates/skills/optional/frontend-design/SKILL.md +418 -0
  114. package/templates/skills/optional/frontend-design/animation-guide.md +331 -0
  115. package/templates/skills/optional/frontend-design/color-system.md +311 -0
  116. package/templates/skills/optional/frontend-design/decision-trees.md +418 -0
  117. package/templates/skills/optional/frontend-design/motion-graphics.md +306 -0
  118. package/templates/skills/optional/frontend-design/scripts/accessibility_checker.py +183 -0
  119. package/templates/skills/optional/frontend-design/scripts/ux_audit.py +722 -0
  120. package/templates/skills/optional/frontend-design/typography-system.md +345 -0
  121. package/templates/skills/optional/frontend-design/ux-psychology.md +541 -0
  122. package/templates/skills/optional/frontend-design/visual-effects.md +383 -0
  123. package/templates/skills/optional/game-development/2d-games/SKILL.md +119 -0
  124. package/templates/skills/optional/game-development/3d-games/SKILL.md +135 -0
  125. package/templates/skills/optional/game-development/SKILL.md +167 -0
  126. package/templates/skills/optional/game-development/game-art/SKILL.md +185 -0
  127. package/templates/skills/optional/game-development/game-audio/SKILL.md +190 -0
  128. package/templates/skills/optional/game-development/game-design/SKILL.md +129 -0
  129. package/templates/skills/optional/game-development/mobile-games/SKILL.md +108 -0
  130. package/templates/skills/optional/game-development/multiplayer/SKILL.md +132 -0
  131. package/templates/skills/optional/game-development/pc-games/SKILL.md +144 -0
  132. package/templates/skills/optional/game-development/vr-ar/SKILL.md +123 -0
  133. package/templates/skills/optional/game-development/web-games/SKILL.md +150 -0
  134. package/templates/skills/optional/geo-fundamentals/SKILL.md +156 -0
  135. package/templates/skills/optional/geo-fundamentals/scripts/geo_checker.py +289 -0
  136. package/templates/skills/optional/i18n-localization/SKILL.md +154 -0
  137. package/templates/skills/optional/i18n-localization/scripts/i18n_checker.py +241 -0
  138. package/templates/skills/optional/lint-and-validate/SKILL.md +45 -0
  139. package/templates/skills/optional/lint-and-validate/scripts/lint_runner.py +172 -0
  140. package/templates/skills/optional/lint-and-validate/scripts/type_coverage.py +173 -0
  141. package/templates/skills/optional/mobile-design/SKILL.md +394 -0
  142. package/templates/skills/optional/mobile-design/decision-trees.md +516 -0
  143. package/templates/skills/optional/mobile-design/mobile-backend.md +491 -0
  144. package/templates/skills/optional/mobile-design/mobile-color-system.md +420 -0
  145. package/templates/skills/optional/mobile-design/mobile-debugging.md +122 -0
  146. package/templates/skills/optional/mobile-design/mobile-design-thinking.md +357 -0
  147. package/templates/skills/optional/mobile-design/mobile-navigation.md +458 -0
  148. package/templates/skills/optional/mobile-design/mobile-performance.md +767 -0
  149. package/templates/skills/optional/mobile-design/mobile-testing.md +356 -0
  150. package/templates/skills/optional/mobile-design/mobile-typography.md +433 -0
  151. package/templates/skills/optional/mobile-design/platform-android.md +666 -0
  152. package/templates/skills/optional/mobile-design/platform-ios.md +561 -0
  153. package/templates/skills/optional/mobile-design/scripts/mobile_audit.py +670 -0
  154. package/templates/skills/optional/mobile-design/touch-psychology.md +537 -0
  155. package/templates/skills/optional/nextjs-react-expert/1-async-eliminating-waterfalls.md +312 -0
  156. package/templates/skills/optional/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
  157. package/templates/skills/optional/nextjs-react-expert/3-server-server-side-performance.md +490 -0
  158. package/templates/skills/optional/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
  159. package/templates/skills/optional/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
  160. package/templates/skills/optional/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
  161. package/templates/skills/optional/nextjs-react-expert/7-js-javascript-performance.md +684 -0
  162. package/templates/skills/optional/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
  163. package/templates/skills/optional/nextjs-react-expert/SKILL.md +267 -0
  164. package/templates/skills/optional/nextjs-react-expert/scripts/convert_rules.py +222 -0
  165. package/templates/skills/optional/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
  166. package/templates/skills/optional/nodejs-best-practices/SKILL.md +333 -0
  167. package/templates/skills/optional/performance-profiling/SKILL.md +143 -0
  168. package/templates/skills/optional/performance-profiling/scripts/lighthouse_audit.py +76 -0
  169. package/templates/skills/optional/powershell-windows/SKILL.md +167 -0
  170. package/templates/skills/optional/python-patterns/SKILL.md +441 -0
  171. package/templates/skills/optional/red-team-tactics/SKILL.md +199 -0
  172. package/templates/skills/optional/seo-fundamentals/SKILL.md +129 -0
  173. package/templates/skills/optional/seo-fundamentals/scripts/seo_checker.py +219 -0
  174. package/templates/skills/optional/server-management/SKILL.md +161 -0
  175. package/templates/skills/optional/systematic-debugging/SKILL.md +109 -0
  176. package/templates/skills/optional/tailwind-patterns/SKILL.md +269 -0
  177. package/templates/skills/optional/tdd-workflow/SKILL.md +149 -0
  178. package/templates/skills/optional/testing-patterns/SKILL.md +178 -0
  179. package/templates/skills/optional/testing-patterns/scripts/test_runner.py +219 -0
  180. package/templates/skills/optional/vulnerability-scanner/SKILL.md +276 -0
  181. package/templates/skills/optional/vulnerability-scanner/checklists.md +121 -0
  182. package/templates/skills/optional/vulnerability-scanner/scripts/security_scan.py +458 -0
  183. package/templates/skills/optional/web-design-guidelines/SKILL.md +57 -0
  184. package/templates/skills/optional/webapp-testing/SKILL.md +187 -0
  185. package/templates/skills/optional/webapp-testing/scripts/playwright_runner.py +173 -0
  186. package/templates/workflows/brainstorm.md +113 -0
  187. package/templates/workflows/create.md +59 -0
  188. package/templates/workflows/debug.md +103 -0
  189. package/templates/workflows/deploy.md +176 -0
  190. package/templates/workflows/enhance.md +63 -0
  191. package/templates/workflows/orchestrate.md +237 -0
  192. package/templates/workflows/plan.md +89 -0
  193. package/templates/workflows/preview.md +81 -0
  194. package/templates/workflows/status.md +86 -0
  195. package/templates/workflows/test.md +144 -0
  196. 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.