@mrtrinhvn/ag-kit 1.0.10 → 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.
Files changed (218) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/bin/cli.js +62 -0
  4. package/package.json +7 -1
  5. package/template/.agent/rules/GEMINI.md +1 -1
  6. package/template/.agent/skills/regent-orchestrator/SKILL.md +31 -0
  7. package/template/.agent/skills/telegram-bridge/SKILL.md +30 -0
  8. package/.agent/.shared/ui-ux-pro-max/data/charts.csv +0 -26
  9. package/.agent/.shared/ui-ux-pro-max/data/colors.csv +0 -97
  10. package/.agent/.shared/ui-ux-pro-max/data/icons.csv +0 -101
  11. package/.agent/.shared/ui-ux-pro-max/data/landing.csv +0 -31
  12. package/.agent/.shared/ui-ux-pro-max/data/products.csv +0 -97
  13. package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +0 -24
  14. package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +0 -45
  15. package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +0 -53
  16. package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +0 -56
  17. package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +0 -53
  18. package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +0 -53
  19. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +0 -51
  20. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +0 -59
  21. package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +0 -52
  22. package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +0 -54
  23. package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +0 -61
  24. package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +0 -54
  25. package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +0 -51
  26. package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +0 -50
  27. package/.agent/.shared/ui-ux-pro-max/data/styles.csv +0 -59
  28. package/.agent/.shared/ui-ux-pro-max/data/typography.csv +0 -58
  29. package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +0 -101
  30. package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
  31. package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +0 -31
  32. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
  33. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
  34. package/.agent/.shared/ui-ux-pro-max/scripts/core.py +0 -258
  35. package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +0 -1067
  36. package/.agent/.shared/ui-ux-pro-max/scripts/search.py +0 -106
  37. package/.agent/ARCHITECTURE.md +0 -288
  38. package/.agent/agents/backend-specialist.md +0 -263
  39. package/.agent/agents/code-archaeologist.md +0 -106
  40. package/.agent/agents/database-architect.md +0 -226
  41. package/.agent/agents/debugger.md +0 -225
  42. package/.agent/agents/devops-engineer.md +0 -242
  43. package/.agent/agents/documentation-writer.md +0 -104
  44. package/.agent/agents/explorer-agent.md +0 -73
  45. package/.agent/agents/frontend-specialist.md +0 -556
  46. package/.agent/agents/game-developer.md +0 -162
  47. package/.agent/agents/mobile-developer.md +0 -377
  48. package/.agent/agents/orchestrator.md +0 -416
  49. package/.agent/agents/penetration-tester.md +0 -188
  50. package/.agent/agents/performance-optimizer.md +0 -187
  51. package/.agent/agents/product-manager.md +0 -112
  52. package/.agent/agents/product-owner.md +0 -95
  53. package/.agent/agents/project-planner.md +0 -406
  54. package/.agent/agents/qa-automation-engineer.md +0 -103
  55. package/.agent/agents/quant-architect.md +0 -31
  56. package/.agent/agents/security-auditor.md +0 -170
  57. package/.agent/agents/seo-specialist.md +0 -111
  58. package/.agent/agents/test-engineer.md +0 -158
  59. package/.agent/mcp_config.json +0 -24
  60. package/.agent/rules/GEMINI.md +0 -280
  61. package/.agent/scripts/auto_preview.py +0 -148
  62. package/.agent/scripts/checklist.py +0 -217
  63. package/.agent/scripts/session_manager.py +0 -120
  64. package/.agent/scripts/verify_all.py +0 -327
  65. package/.agent/skills/api-patterns/SKILL.md +0 -81
  66. package/.agent/skills/api-patterns/api-style.md +0 -42
  67. package/.agent/skills/api-patterns/auth.md +0 -24
  68. package/.agent/skills/api-patterns/documentation.md +0 -26
  69. package/.agent/skills/api-patterns/graphql.md +0 -41
  70. package/.agent/skills/api-patterns/rate-limiting.md +0 -31
  71. package/.agent/skills/api-patterns/response.md +0 -37
  72. package/.agent/skills/api-patterns/rest.md +0 -40
  73. package/.agent/skills/api-patterns/scripts/api_validator.py +0 -211
  74. package/.agent/skills/api-patterns/security-testing.md +0 -122
  75. package/.agent/skills/api-patterns/trpc.md +0 -41
  76. package/.agent/skills/api-patterns/versioning.md +0 -22
  77. package/.agent/skills/app-builder/SKILL.md +0 -75
  78. package/.agent/skills/app-builder/agent-coordination.md +0 -71
  79. package/.agent/skills/app-builder/feature-building.md +0 -53
  80. package/.agent/skills/app-builder/project-detection.md +0 -34
  81. package/.agent/skills/app-builder/scaffolding.md +0 -118
  82. package/.agent/skills/app-builder/tech-stack.md +0 -40
  83. package/.agent/skills/app-builder/templates/SKILL.md +0 -39
  84. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +0 -76
  85. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +0 -92
  86. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +0 -88
  87. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +0 -88
  88. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +0 -83
  89. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +0 -90
  90. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +0 -90
  91. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +0 -82
  92. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +0 -100
  93. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +0 -106
  94. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +0 -101
  95. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +0 -83
  96. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +0 -93
  97. package/.agent/skills/architecture/SKILL.md +0 -55
  98. package/.agent/skills/architecture/context-discovery.md +0 -43
  99. package/.agent/skills/architecture/examples.md +0 -94
  100. package/.agent/skills/architecture/pattern-selection.md +0 -68
  101. package/.agent/skills/architecture/patterns-reference.md +0 -50
  102. package/.agent/skills/architecture/trade-off-analysis.md +0 -77
  103. package/.agent/skills/bash-linux/SKILL.md +0 -199
  104. package/.agent/skills/behavioral-modes/SKILL.md +0 -242
  105. package/.agent/skills/brainstorming/SKILL.md +0 -168
  106. package/.agent/skills/brainstorming/dynamic-questioning.md +0 -350
  107. package/.agent/skills/business-ops/SKILL.md +0 -26
  108. package/.agent/skills/clean-code/SKILL.md +0 -202
  109. package/.agent/skills/cli-generator/SKILL.md +0 -48
  110. package/.agent/skills/code-review-checklist/SKILL.md +0 -109
  111. package/.agent/skills/cognitive-session/SKILL.md +0 -28
  112. package/.agent/skills/data-science/SKILL.md +0 -28
  113. package/.agent/skills/database-design/SKILL.md +0 -52
  114. package/.agent/skills/database-design/database-selection.md +0 -43
  115. package/.agent/skills/database-design/indexing.md +0 -39
  116. package/.agent/skills/database-design/migrations.md +0 -48
  117. package/.agent/skills/database-design/optimization.md +0 -36
  118. package/.agent/skills/database-design/orm-selection.md +0 -30
  119. package/.agent/skills/database-design/schema-design.md +0 -56
  120. package/.agent/skills/database-design/scripts/schema_validator.py +0 -172
  121. package/.agent/skills/deployment-procedures/SKILL.md +0 -241
  122. package/.agent/skills/doc.md +0 -177
  123. package/.agent/skills/documentation-templates/SKILL.md +0 -194
  124. package/.agent/skills/frontend-design/SKILL.md +0 -418
  125. package/.agent/skills/frontend-design/animation-guide.md +0 -331
  126. package/.agent/skills/frontend-design/color-system.md +0 -311
  127. package/.agent/skills/frontend-design/decision-trees.md +0 -418
  128. package/.agent/skills/frontend-design/motion-graphics.md +0 -306
  129. package/.agent/skills/frontend-design/scripts/accessibility_checker.py +0 -183
  130. package/.agent/skills/frontend-design/scripts/ux_audit.py +0 -722
  131. package/.agent/skills/frontend-design/typography-system.md +0 -345
  132. package/.agent/skills/frontend-design/ux-psychology.md +0 -541
  133. package/.agent/skills/frontend-design/visual-effects.md +0 -383
  134. package/.agent/skills/game-development/2d-games/SKILL.md +0 -119
  135. package/.agent/skills/game-development/3d-games/SKILL.md +0 -135
  136. package/.agent/skills/game-development/SKILL.md +0 -167
  137. package/.agent/skills/game-development/game-art/SKILL.md +0 -185
  138. package/.agent/skills/game-development/game-audio/SKILL.md +0 -190
  139. package/.agent/skills/game-development/game-design/SKILL.md +0 -129
  140. package/.agent/skills/game-development/mobile-games/SKILL.md +0 -108
  141. package/.agent/skills/game-development/multiplayer/SKILL.md +0 -132
  142. package/.agent/skills/game-development/pc-games/SKILL.md +0 -144
  143. package/.agent/skills/game-development/vr-ar/SKILL.md +0 -123
  144. package/.agent/skills/game-development/web-games/SKILL.md +0 -150
  145. package/.agent/skills/geo-fundamentals/SKILL.md +0 -156
  146. package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +0 -289
  147. package/.agent/skills/i18n-localization/SKILL.md +0 -154
  148. package/.agent/skills/i18n-localization/scripts/i18n_checker.py +0 -241
  149. package/.agent/skills/intelligent-routing/SKILL.md +0 -335
  150. package/.agent/skills/knowledge-management/SKILL.md +0 -66
  151. package/.agent/skills/lint-and-validate/SKILL.md +0 -45
  152. package/.agent/skills/lint-and-validate/scripts/lint_runner.py +0 -172
  153. package/.agent/skills/lint-and-validate/scripts/type_coverage.py +0 -173
  154. package/.agent/skills/llm-routing-quirks/SKILL.md +0 -41
  155. package/.agent/skills/mcp-builder/SKILL.md +0 -176
  156. package/.agent/skills/memory-architecture/SKILL.md +0 -107
  157. package/.agent/skills/mini-antigravity-injection/SKILL.md +0 -61
  158. package/.agent/skills/mobile-design/SKILL.md +0 -394
  159. package/.agent/skills/mobile-design/decision-trees.md +0 -516
  160. package/.agent/skills/mobile-design/mobile-backend.md +0 -491
  161. package/.agent/skills/mobile-design/mobile-color-system.md +0 -420
  162. package/.agent/skills/mobile-design/mobile-debugging.md +0 -122
  163. package/.agent/skills/mobile-design/mobile-design-thinking.md +0 -357
  164. package/.agent/skills/mobile-design/mobile-navigation.md +0 -458
  165. package/.agent/skills/mobile-design/mobile-performance.md +0 -767
  166. package/.agent/skills/mobile-design/mobile-testing.md +0 -356
  167. package/.agent/skills/mobile-design/mobile-typography.md +0 -433
  168. package/.agent/skills/mobile-design/platform-android.md +0 -666
  169. package/.agent/skills/mobile-design/platform-ios.md +0 -561
  170. package/.agent/skills/mobile-design/scripts/mobile_audit.py +0 -670
  171. package/.agent/skills/mobile-design/touch-psychology.md +0 -537
  172. package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
  173. package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
  174. package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
  175. package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
  176. package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
  177. package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
  178. package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
  179. package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
  180. package/.agent/skills/nextjs-react-expert/9-cache-components.md +0 -103
  181. package/.agent/skills/nextjs-react-expert/SKILL.md +0 -267
  182. package/.agent/skills/nextjs-react-expert/scripts/convert_rules.py +0 -222
  183. package/.agent/skills/nextjs-react-expert/scripts/react_performance_checker.py +0 -252
  184. package/.agent/skills/nodejs-best-practices/SKILL.md +0 -333
  185. package/.agent/skills/parallel-agents/SKILL.md +0 -175
  186. package/.agent/skills/performance-profiling/SKILL.md +0 -143
  187. package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +0 -76
  188. package/.agent/skills/plan-writing/SKILL.md +0 -153
  189. package/.agent/skills/powershell-windows/SKILL.md +0 -167
  190. package/.agent/skills/product-management/SKILL.md +0 -30
  191. package/.agent/skills/python-patterns/SKILL.md +0 -441
  192. package/.agent/skills/red-team-tactics/SKILL.md +0 -199
  193. package/.agent/skills/rust-pro/SKILL.md +0 -176
  194. package/.agent/skills/seo-fundamentals/SKILL.md +0 -129
  195. package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +0 -219
  196. package/.agent/skills/server-management/SKILL.md +0 -161
  197. package/.agent/skills/systematic-debugging/SKILL.md +0 -120
  198. package/.agent/skills/tailwind-patterns/SKILL.md +0 -269
  199. package/.agent/skills/tdd-workflow/SKILL.md +0 -148
  200. package/.agent/skills/testing-patterns/SKILL.md +0 -178
  201. package/.agent/skills/testing-patterns/scripts/test_runner.py +0 -219
  202. package/.agent/skills/vulnerability-scanner/SKILL.md +0 -276
  203. package/.agent/skills/vulnerability-scanner/checklists.md +0 -121
  204. package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +0 -458
  205. package/.agent/skills/web-design-guidelines/SKILL.md +0 -57
  206. package/.agent/skills/webapp-testing/SKILL.md +0 -187
  207. package/.agent/skills/webapp-testing/scripts/playwright_runner.py +0 -173
  208. package/.agent/workflows/brainstorm.md +0 -113
  209. package/.agent/workflows/create.md +0 -59
  210. package/.agent/workflows/debug.md +0 -103
  211. package/.agent/workflows/deploy.md +0 -176
  212. package/.agent/workflows/enhance.md +0 -63
  213. package/.agent/workflows/orchestrate.md +0 -237
  214. package/.agent/workflows/plan.md +0 -89
  215. package/.agent/workflows/preview.md +0 -81
  216. package/.agent/workflows/status.md +0 -86
  217. package/.agent/workflows/test.md +0 -144
  218. package/.agent/workflows/ui-ux-pro-max.md +0 -296
@@ -1,219 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- Test Runner - Unified test execution and coverage reporting
4
- Runs tests and generates coverage report based on project type.
5
-
6
- Usage:
7
- python test_runner.py <project_path> [--coverage]
8
-
9
- Supports:
10
- - Node.js: npm test, jest, vitest
11
- - Python: pytest, unittest
12
- """
13
-
14
- import subprocess
15
- import sys
16
- import json
17
- from pathlib import Path
18
- from datetime import datetime
19
-
20
- # Fix Windows console encoding
21
- try:
22
- sys.stdout.reconfigure(encoding='utf-8', errors='replace')
23
- except:
24
- pass
25
-
26
-
27
- def detect_test_framework(project_path: Path) -> dict:
28
- """Detect test framework and commands."""
29
- result = {
30
- "type": "unknown",
31
- "framework": None,
32
- "cmd": None,
33
- "coverage_cmd": None
34
- }
35
-
36
- # Node.js project
37
- package_json = project_path / "package.json"
38
- if package_json.exists():
39
- result["type"] = "node"
40
- try:
41
- pkg = json.loads(package_json.read_text(encoding='utf-8'))
42
- scripts = pkg.get("scripts", {})
43
- deps = {**pkg.get("dependencies", {}), **pkg.get("devDependencies", {})}
44
-
45
- # Check for test script
46
- if "test" in scripts:
47
- result["framework"] = "npm test"
48
- result["cmd"] = ["npm", "test"]
49
-
50
- # Try to detect specific framework for coverage
51
- if "vitest" in deps:
52
- result["framework"] = "vitest"
53
- result["coverage_cmd"] = ["npx", "vitest", "run", "--coverage"]
54
- elif "jest" in deps:
55
- result["framework"] = "jest"
56
- result["coverage_cmd"] = ["npx", "jest", "--coverage"]
57
- elif "vitest" in deps:
58
- result["framework"] = "vitest"
59
- result["cmd"] = ["npx", "vitest", "run"]
60
- result["coverage_cmd"] = ["npx", "vitest", "run", "--coverage"]
61
- elif "jest" in deps:
62
- result["framework"] = "jest"
63
- result["cmd"] = ["npx", "jest"]
64
- result["coverage_cmd"] = ["npx", "jest", "--coverage"]
65
-
66
- except:
67
- pass
68
-
69
- # Python project
70
- if (project_path / "pyproject.toml").exists() or (project_path / "requirements.txt").exists():
71
- result["type"] = "python"
72
- result["framework"] = "pytest"
73
- result["cmd"] = ["python", "-m", "pytest", "-v"]
74
- result["coverage_cmd"] = ["python", "-m", "pytest", "--cov", "--cov-report=term-missing"]
75
-
76
- return result
77
-
78
-
79
- def run_tests(cmd: list, cwd: Path) -> dict:
80
- """Run tests and return results."""
81
- result = {
82
- "passed": False,
83
- "output": "",
84
- "error": "",
85
- "tests_run": 0,
86
- "tests_passed": 0,
87
- "tests_failed": 0
88
- }
89
-
90
- try:
91
- proc = subprocess.run(
92
- cmd,
93
- cwd=str(cwd),
94
- capture_output=True,
95
- text=True,
96
- encoding='utf-8',
97
- errors='replace',
98
- timeout=300 # 5 min timeout for tests
99
- )
100
-
101
- result["output"] = proc.stdout[:3000] if proc.stdout else ""
102
- result["error"] = proc.stderr[:500] if proc.stderr else ""
103
- result["passed"] = proc.returncode == 0
104
-
105
- # Try to parse test counts from output
106
- output = proc.stdout or ""
107
-
108
- # Jest/Vitest pattern: "Tests: X passed, Y failed, Z total"
109
- if "passed" in output.lower() and "failed" in output.lower():
110
- import re
111
- match = re.search(r'(\d+)\s+passed', output, re.IGNORECASE)
112
- if match:
113
- result["tests_passed"] = int(match.group(1))
114
- match = re.search(r'(\d+)\s+failed', output, re.IGNORECASE)
115
- if match:
116
- result["tests_failed"] = int(match.group(1))
117
- result["tests_run"] = result["tests_passed"] + result["tests_failed"]
118
-
119
- # Pytest pattern: "X passed, Y failed"
120
- if "pytest" in str(cmd):
121
- import re
122
- match = re.search(r'(\d+)\s+passed', output)
123
- if match:
124
- result["tests_passed"] = int(match.group(1))
125
- match = re.search(r'(\d+)\s+failed', output)
126
- if match:
127
- result["tests_failed"] = int(match.group(1))
128
- result["tests_run"] = result["tests_passed"] + result["tests_failed"]
129
-
130
- except FileNotFoundError:
131
- result["error"] = f"Command not found: {cmd[0]}"
132
- except subprocess.TimeoutExpired:
133
- result["error"] = "Timeout after 300s"
134
- except Exception as e:
135
- result["error"] = str(e)
136
-
137
- return result
138
-
139
-
140
- def main():
141
- project_path = Path(sys.argv[1] if len(sys.argv) > 1 else ".").resolve()
142
- with_coverage = "--coverage" in sys.argv
143
-
144
- print(f"\n{'='*60}")
145
- print(f"[TEST RUNNER] Unified Test Execution")
146
- print(f"{'='*60}")
147
- print(f"Project: {project_path}")
148
- print(f"Coverage: {'enabled' if with_coverage else 'disabled'}")
149
- print(f"Time: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
150
-
151
- # Detect test framework
152
- test_info = detect_test_framework(project_path)
153
- print(f"Type: {test_info['type']}")
154
- print(f"Framework: {test_info['framework']}")
155
- print("-"*60)
156
-
157
- if not test_info["cmd"]:
158
- print("No test framework found for this project.")
159
- output = {
160
- "script": "test_runner",
161
- "project": str(project_path),
162
- "type": test_info["type"],
163
- "framework": None,
164
- "passed": True,
165
- "message": "No tests configured"
166
- }
167
- print(json.dumps(output, indent=2))
168
- sys.exit(0)
169
-
170
- # Choose command
171
- cmd = test_info["coverage_cmd"] if with_coverage and test_info["coverage_cmd"] else test_info["cmd"]
172
-
173
- print(f"Running: {' '.join(cmd)}")
174
- print("-"*60)
175
-
176
- # Run tests
177
- result = run_tests(cmd, project_path)
178
-
179
- # Print output (truncated)
180
- if result["output"]:
181
- lines = result["output"].split("\n")
182
- for line in lines[:30]:
183
- print(line)
184
- if len(lines) > 30:
185
- print(f"... ({len(lines) - 30} more lines)")
186
-
187
- # Summary
188
- print("\n" + "="*60)
189
- print("SUMMARY")
190
- print("="*60)
191
-
192
- if result["passed"]:
193
- print("[PASS] All tests passed")
194
- else:
195
- print("[FAIL] Some tests failed")
196
- if result["error"]:
197
- print(f"Error: {result['error'][:200]}")
198
-
199
- if result["tests_run"] > 0:
200
- print(f"Tests: {result['tests_run']} total, {result['tests_passed']} passed, {result['tests_failed']} failed")
201
-
202
- output = {
203
- "script": "test_runner",
204
- "project": str(project_path),
205
- "type": test_info["type"],
206
- "framework": test_info["framework"],
207
- "tests_run": result["tests_run"],
208
- "tests_passed": result["tests_passed"],
209
- "tests_failed": result["tests_failed"],
210
- "passed": result["passed"]
211
- }
212
-
213
- print("\n" + json.dumps(output, indent=2))
214
-
215
- sys.exit(0 if result["passed"] else 1)
216
-
217
-
218
- if __name__ == "__main__":
219
- main()
@@ -1,276 +0,0 @@
1
- ---
2
- name: vulnerability-scanner
3
- description: Advanced vulnerability analysis principles. OWASP 2025, Supply Chain Security, attack surface mapping, risk prioritization.
4
- allowed-tools: Read, Glob, Grep, Bash
5
- ---
6
-
7
- # Vulnerability Scanner
8
-
9
- > Think like an attacker, defend like an expert. 2025 threat landscape awareness.
10
-
11
- ## 🔧 Runtime Scripts
12
-
13
- **Execute for automated validation:**
14
-
15
- | Script | Purpose | Usage |
16
- |--------|---------|-------|
17
- | `scripts/security_scan.py` | Validate security principles applied | `python scripts/security_scan.py <project_path>` |
18
-
19
- ## 📋 Reference Files
20
-
21
- | File | Purpose |
22
- |------|---------|
23
- | [checklists.md](checklists.md) | OWASP Top 10, Auth, API, Data protection checklists |
24
-
25
- ---
26
-
27
- ## 1. Security Expert Mindset
28
-
29
- ### Core Principles
30
-
31
- | Principle | Application |
32
- |-----------|-------------|
33
- | **Assume Breach** | Design as if attacker already inside |
34
- | **Zero Trust** | Never trust, always verify |
35
- | **Defense in Depth** | Multiple layers, no single point |
36
- | **Least Privilege** | Minimum required access only |
37
- | **Fail Secure** | On error, deny access |
38
-
39
- ### Threat Modeling Questions
40
-
41
- Before scanning, ask:
42
- 1. What are we protecting? (Assets)
43
- 2. Who would attack? (Threat actors)
44
- 3. How would they attack? (Attack vectors)
45
- 4. What's the impact? (Business risk)
46
-
47
- ---
48
-
49
- ## 2. OWASP Top 10:2025
50
-
51
- ### Risk Categories
52
-
53
- | Rank | Category | Think About |
54
- |------|----------|-------------|
55
- | **A01** | Broken Access Control | Who can access what? IDOR, SSRF |
56
- | **A02** | Security Misconfiguration | Defaults, headers, exposed services |
57
- | **A03** | Software Supply Chain 🆕 | Dependencies, CI/CD, build integrity |
58
- | **A04** | Cryptographic Failures | Weak crypto, exposed secrets |
59
- | **A05** | Injection | User input → system commands |
60
- | **A06** | Insecure Design | Flawed architecture |
61
- | **A07** | Authentication Failures | Session, credential management |
62
- | **A08** | Integrity Failures | Unsigned updates, tampered data |
63
- | **A09** | Logging & Alerting | Blind spots, no monitoring |
64
- | **A10** | Exceptional Conditions 🆕 | Error handling, fail-open states |
65
-
66
- ### 2025 Key Changes
67
-
68
- ```
69
- 2021 → 2025 Shifts:
70
- ├── SSRF merged into A01 (Access Control)
71
- ├── A02 elevated (Cloud/Container configs)
72
- ├── A03 NEW: Supply Chain (major focus)
73
- ├── A10 NEW: Exceptional Conditions
74
- └── Focus shift: Root causes > Symptoms
75
- ```
76
-
77
- ---
78
-
79
- ## 3. Supply Chain Security (A03)
80
-
81
- ### Attack Surface
82
-
83
- | Vector | Risk | Question to Ask |
84
- |--------|------|-----------------|
85
- | **Dependencies** | Malicious packages | Do we audit new deps? |
86
- | **Lock files** | Integrity attacks | Are they committed? |
87
- | **Build pipeline** | CI/CD compromise | Who can modify? |
88
- | **Registry** | Typosquatting | Verified sources? |
89
-
90
- ### Defense Principles
91
-
92
- - Verify package integrity (checksums)
93
- - Pin versions, audit updates
94
- - Use private registries for critical deps
95
- - Sign and verify artifacts
96
-
97
- ---
98
-
99
- ## 4. Attack Surface Mapping
100
-
101
- ### What to Map
102
-
103
- | Category | Elements |
104
- |----------|----------|
105
- | **Entry Points** | APIs, forms, file uploads |
106
- | **Data Flows** | Input → Process → Output |
107
- | **Trust Boundaries** | Where auth/authz checked |
108
- | **Assets** | Secrets, PII, business data |
109
-
110
- ### Prioritization Matrix
111
-
112
- ```
113
- Risk = Likelihood × Impact
114
-
115
- High Impact + High Likelihood → CRITICAL
116
- High Impact + Low Likelihood → HIGH
117
- Low Impact + High Likelihood → MEDIUM
118
- Low Impact + Low Likelihood → LOW
119
- ```
120
-
121
- ---
122
-
123
- ## 5. Risk Prioritization
124
-
125
- ### CVSS + Context
126
-
127
- | Factor | Weight | Question |
128
- |--------|--------|----------|
129
- | **CVSS Score** | Base severity | How severe is the vuln? |
130
- | **EPSS Score** | Exploit likelihood | Is it being exploited? |
131
- | **Asset Value** | Business context | What's at risk? |
132
- | **Exposure** | Attack surface | Internet-facing? |
133
-
134
- ### Prioritization Decision Tree
135
-
136
- ```
137
- Is it actively exploited (EPSS >0.5)?
138
- ├── YES → CRITICAL: Immediate action
139
- └── NO → Check CVSS
140
- ├── CVSS ≥9.0 → HIGH
141
- ├── CVSS 7.0-8.9 → Consider asset value
142
- └── CVSS <7.0 → Schedule for later
143
- ```
144
-
145
- ---
146
-
147
- ## 6. Exceptional Conditions (A10 - New)
148
-
149
- ### Fail-Open vs Fail-Closed
150
-
151
- | Scenario | Fail-Open (BAD) | Fail-Closed (GOOD) |
152
- |----------|-----------------|---------------------|
153
- | Auth error | Allow access | Deny access |
154
- | Parsing fails | Accept input | Reject input |
155
- | Timeout | Retry forever | Limit + abort |
156
-
157
- ### What to Check
158
-
159
- - Exception handlers that catch-all and ignore
160
- - Missing error handling on security operations
161
- - Race conditions in auth/authz
162
- - Resource exhaustion scenarios
163
-
164
- ---
165
-
166
- ## 7. Scanning Methodology
167
-
168
- ### Phase-Based Approach
169
-
170
- ```
171
- 1. RECONNAISSANCE
172
- └── Understand the target
173
- ├── Technology stack
174
- ├── Entry points
175
- └── Data flows
176
-
177
- 2. DISCOVERY
178
- └── Identify potential issues
179
- ├── Configuration review
180
- ├── Dependency analysis
181
- └── Code pattern search
182
-
183
- 3. ANALYSIS
184
- └── Validate and prioritize
185
- ├── False positive elimination
186
- ├── Risk scoring
187
- └── Attack chain mapping
188
-
189
- 4. REPORTING
190
- └── Actionable findings
191
- ├── Clear reproduction steps
192
- ├── Business impact
193
- └── Remediation guidance
194
- ```
195
-
196
- ---
197
-
198
- ## 8. Code Pattern Analysis
199
-
200
- ### High-Risk Patterns
201
-
202
- | Pattern | Risk | Look For |
203
- |---------|------|----------|
204
- | **String concat in queries** | Injection | `"SELECT * FROM " + user_input` |
205
- | **Dynamic code execution** | RCE | `eval()`, `exec()`, `Function()` |
206
- | **Unsafe deserialization** | RCE | `pickle.loads()`, `unserialize()` |
207
- | **Path manipulation** | Traversal | User input in file paths |
208
- | **Disabled security** | Various | `verify=False`, `--insecure` |
209
-
210
- ### Secret Patterns
211
-
212
- | Type | Indicators |
213
- |------|-----------|
214
- | API Keys | `api_key`, `apikey`, high entropy |
215
- | Tokens | `token`, `bearer`, `jwt` |
216
- | Credentials | `password`, `secret`, `key` |
217
- | Cloud | `AWS_`, `AZURE_`, `GCP_` prefixes |
218
-
219
- ---
220
-
221
- ## 9. Cloud Security Considerations
222
-
223
- ### Shared Responsibility
224
-
225
- | Layer | You Own | Provider Owns |
226
- |-------|---------|---------------|
227
- | Data | ✅ | ❌ |
228
- | Application | ✅ | ❌ |
229
- | OS/Runtime | Depends | Depends |
230
- | Infrastructure | ❌ | ✅ |
231
-
232
- ### Cloud-Specific Checks
233
-
234
- - IAM: Least privilege applied?
235
- - Storage: Public buckets?
236
- - Network: Security groups tightened?
237
- - Secrets: Using secrets manager?
238
-
239
- ---
240
-
241
- ## 10. Anti-Patterns
242
-
243
- | ❌ Don't | ✅ Do |
244
- |----------|-------|
245
- | Scan without understanding | Map attack surface first |
246
- | Alert on every CVE | Prioritize by exploitability + asset |
247
- | Ignore false positives | Maintain verified baseline |
248
- | Fix symptoms only | Address root causes |
249
- | Scan once before deploy | Continuous scanning |
250
- | Trust third-party deps blindly | Verify integrity, audit code |
251
-
252
- ---
253
-
254
- ## 11. Reporting Principles
255
-
256
- ### Finding Structure
257
-
258
- Each finding should answer:
259
- 1. **What?** - Clear vulnerability description
260
- 2. **Where?** - Exact location (file, line, endpoint)
261
- 3. **Why?** - Root cause explanation
262
- 4. **Impact?** - Business consequence
263
- 5. **How to fix?** - Specific remediation
264
-
265
- ### Severity Classification
266
-
267
- | Severity | Criteria |
268
- |----------|----------|
269
- | **Critical** | RCE, auth bypass, mass data exposure |
270
- | **High** | Data exposure, privilege escalation |
271
- | **Medium** | Limited scope, requires conditions |
272
- | **Low** | Informational, best practice |
273
-
274
- ---
275
-
276
- > **Remember:** Vulnerability scanning finds issues. Expert thinking prioritizes what matters. Always ask: "What would an attacker do with this?"
@@ -1,121 +0,0 @@
1
- # Security Checklists
2
-
3
- > Quick reference checklists for security audits. Use alongside vulnerability-scanner principles.
4
-
5
- ---
6
-
7
- ## OWASP Top 10 Audit Checklist
8
-
9
- ### A01: Broken Access Control
10
- - [ ] Authorization on all protected routes
11
- - [ ] Deny by default
12
- - [ ] Rate limiting implemented
13
- - [ ] CORS properly configured
14
-
15
- ### A02: Cryptographic Failures
16
- - [ ] Passwords hashed (bcrypt/argon2, cost 12+)
17
- - [ ] Sensitive data encrypted at rest
18
- - [ ] TLS 1.2+ for all connections
19
- - [ ] No secrets in code/logs
20
-
21
- ### A03: Injection
22
- - [ ] Parameterized queries
23
- - [ ] Input validation on all user data
24
- - [ ] Output encoding for XSS
25
- - [ ] No eval() or dynamic code execution
26
-
27
- ### A04: Insecure Design
28
- - [ ] Threat modeling done
29
- - [ ] Security requirements defined
30
- - [ ] Business logic validated
31
-
32
- ### A05: Security Misconfiguration
33
- - [ ] Unnecessary features disabled
34
- - [ ] Error messages sanitized
35
- - [ ] Security headers configured
36
- - [ ] Default credentials changed
37
-
38
- ### A06: Vulnerable Components
39
- - [ ] Dependencies up to date
40
- - [ ] No known vulnerabilities
41
- - [ ] Unused dependencies removed
42
-
43
- ### A07: Authentication Failures
44
- - [ ] MFA available
45
- - [ ] Session invalidation on logout
46
- - [ ] Session timeout implemented
47
- - [ ] Brute force protection
48
-
49
- ### A08: Integrity Failures
50
- - [ ] Dependency integrity verified
51
- - [ ] CI/CD pipeline secured
52
- - [ ] Update mechanism secured
53
-
54
- ### A09: Logging Failures
55
- - [ ] Security events logged
56
- - [ ] Logs protected
57
- - [ ] No sensitive data in logs
58
- - [ ] Alerting configured
59
-
60
- ### A10: SSRF
61
- - [ ] URL validation implemented
62
- - [ ] Allow-list for external calls
63
- - [ ] Network segmentation
64
-
65
- ---
66
-
67
- ## Authentication Checklist
68
-
69
- - [ ] Strong password policy
70
- - [ ] Account lockout
71
- - [ ] Secure password reset
72
- - [ ] Session management
73
- - [ ] Token expiration
74
- - [ ] Logout invalidation
75
-
76
- ---
77
-
78
- ## API Security Checklist
79
-
80
- - [ ] Authentication required
81
- - [ ] Authorization per endpoint
82
- - [ ] Input validation
83
- - [ ] Rate limiting
84
- - [ ] Output sanitization
85
- - [ ] Error handling
86
-
87
- ---
88
-
89
- ## Data Protection Checklist
90
-
91
- - [ ] Encryption at rest
92
- - [ ] Encryption in transit
93
- - [ ] Key management
94
- - [ ] Data minimization
95
- - [ ] Secure deletion
96
-
97
- ---
98
-
99
- ## Security Headers
100
-
101
- | Header | Purpose |
102
- |--------|---------|
103
- | **Content-Security-Policy** | XSS prevention |
104
- | **X-Content-Type-Options** | MIME sniffing |
105
- | **X-Frame-Options** | Clickjacking |
106
- | **Strict-Transport-Security** | Force HTTPS |
107
- | **Referrer-Policy** | Referrer control |
108
-
109
- ---
110
-
111
- ## Quick Audit Commands
112
-
113
- | Check | What to Look For |
114
- |-------|------------------|
115
- | Secrets in code | password, api_key, secret |
116
- | Dangerous patterns | eval, innerHTML, SQL concat |
117
- | Dependency issues | npm audit, snyk |
118
-
119
- ---
120
-
121
- > **Usage:** Copy relevant checklists into your PLAN.md or security report.