@mison/ling 1.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 (268) hide show
  1. package/.agents/.shared/ui-ux-pro-max/data/charts.csv +26 -0
  2. package/.agents/.shared/ui-ux-pro-max/data/colors.csv +97 -0
  3. package/.agents/.shared/ui-ux-pro-max/data/icons.csv +101 -0
  4. package/.agents/.shared/ui-ux-pro-max/data/landing.csv +31 -0
  5. package/.agents/.shared/ui-ux-pro-max/data/products.csv +97 -0
  6. package/.agents/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
  7. package/.agents/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
  8. package/.agents/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  9. package/.agents/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  10. package/.agents/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  11. package/.agents/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  12. package/.agents/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  13. package/.agents/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  14. package/.agents/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  15. package/.agents/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  16. package/.agents/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  17. package/.agents/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  18. package/.agents/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  19. package/.agents/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  20. package/.agents/.shared/ui-ux-pro-max/data/styles.csv +59 -0
  21. package/.agents/.shared/ui-ux-pro-max/data/typography.csv +58 -0
  22. package/.agents/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  23. package/.agents/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  24. package/.agents/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
  25. package/.agents/.shared/ui-ux-pro-max/scripts/core.py +258 -0
  26. package/.agents/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
  27. package/.agents/.shared/ui-ux-pro-max/scripts/search.py +106 -0
  28. package/.agents/ARCHITECTURE.md +285 -0
  29. package/.agents/agents/backend-specialist.md +268 -0
  30. package/.agents/agents/code-archaeologist.md +106 -0
  31. package/.agents/agents/database-architect.md +225 -0
  32. package/.agents/agents/debugger.md +225 -0
  33. package/.agents/agents/devops-engineer.md +242 -0
  34. package/.agents/agents/documentation-writer.md +104 -0
  35. package/.agents/agents/explorer-agent.md +73 -0
  36. package/.agents/agents/frontend-specialist.md +618 -0
  37. package/.agents/agents/game-developer.md +162 -0
  38. package/.agents/agents/mobile-developer.md +382 -0
  39. package/.agents/agents/orchestrator.md +436 -0
  40. package/.agents/agents/penetration-tester.md +188 -0
  41. package/.agents/agents/performance-optimizer.md +187 -0
  42. package/.agents/agents/product-manager.md +112 -0
  43. package/.agents/agents/product-owner.md +95 -0
  44. package/.agents/agents/project-planner.md +405 -0
  45. package/.agents/agents/qa-automation-engineer.md +103 -0
  46. package/.agents/agents/security-auditor.md +170 -0
  47. package/.agents/agents/seo-specialist.md +111 -0
  48. package/.agents/agents/test-engineer.md +158 -0
  49. package/.agents/mcp_config.json +22 -0
  50. package/.agents/rules/GEMINI.md +273 -0
  51. package/.agents/scripts/auto_preview.py +148 -0
  52. package/.agents/scripts/checklist.py +217 -0
  53. package/.agents/scripts/session_manager.py +120 -0
  54. package/.agents/scripts/verify_all.py +327 -0
  55. package/.agents/skills/api-patterns/SKILL.md +84 -0
  56. package/.agents/skills/api-patterns/api-style.md +42 -0
  57. package/.agents/skills/api-patterns/auth.md +24 -0
  58. package/.agents/skills/api-patterns/documentation.md +26 -0
  59. package/.agents/skills/api-patterns/graphql.md +41 -0
  60. package/.agents/skills/api-patterns/rate-limiting.md +31 -0
  61. package/.agents/skills/api-patterns/response.md +37 -0
  62. package/.agents/skills/api-patterns/rest.md +40 -0
  63. package/.agents/skills/api-patterns/scripts/api_validator.py +211 -0
  64. package/.agents/skills/api-patterns/security-testing.md +122 -0
  65. package/.agents/skills/api-patterns/trpc.md +41 -0
  66. package/.agents/skills/api-patterns/versioning.md +22 -0
  67. package/.agents/skills/app-builder/SKILL.md +75 -0
  68. package/.agents/skills/app-builder/agent-coordination.md +74 -0
  69. package/.agents/skills/app-builder/feature-building.md +53 -0
  70. package/.agents/skills/app-builder/project-detection.md +34 -0
  71. package/.agents/skills/app-builder/scaffolding.md +118 -0
  72. package/.agents/skills/app-builder/tech-stack.md +40 -0
  73. package/.agents/skills/app-builder/templates/SKILL.md +39 -0
  74. package/.agents/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  75. package/.agents/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  76. package/.agents/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  77. package/.agents/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  78. package/.agents/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  79. package/.agents/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  80. package/.agents/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  81. package/.agents/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
  82. package/.agents/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
  83. package/.agents/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
  84. package/.agents/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
  85. package/.agents/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  86. package/.agents/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
  87. package/.agents/skills/architecture/SKILL.md +57 -0
  88. package/.agents/skills/architecture/context-discovery.md +43 -0
  89. package/.agents/skills/architecture/examples.md +94 -0
  90. package/.agents/skills/architecture/pattern-selection.md +68 -0
  91. package/.agents/skills/architecture/patterns-reference.md +50 -0
  92. package/.agents/skills/architecture/trade-off-analysis.md +77 -0
  93. package/.agents/skills/bash-linux/SKILL.md +201 -0
  94. package/.agents/skills/behavioral-modes/SKILL.md +264 -0
  95. package/.agents/skills/brainstorming/SKILL.md +164 -0
  96. package/.agents/skills/brainstorming/dynamic-questioning.md +359 -0
  97. package/.agents/skills/clean-code/SKILL.md +200 -0
  98. package/.agents/skills/code-review-checklist/SKILL.md +125 -0
  99. package/.agents/skills/database-design/SKILL.md +54 -0
  100. package/.agents/skills/database-design/database-selection.md +43 -0
  101. package/.agents/skills/database-design/indexing.md +39 -0
  102. package/.agents/skills/database-design/migrations.md +50 -0
  103. package/.agents/skills/database-design/optimization.md +36 -0
  104. package/.agents/skills/database-design/orm-selection.md +30 -0
  105. package/.agents/skills/database-design/schema-design.md +56 -0
  106. package/.agents/skills/database-design/scripts/schema_validator.py +172 -0
  107. package/.agents/skills/deployment-procedures/SKILL.md +241 -0
  108. package/.agents/skills/doc.md +177 -0
  109. package/.agents/skills/documentation-templates/SKILL.md +194 -0
  110. package/.agents/skills/frontend-design/SKILL.md +418 -0
  111. package/.agents/skills/frontend-design/animation-guide.md +331 -0
  112. package/.agents/skills/frontend-design/color-system.md +307 -0
  113. package/.agents/skills/frontend-design/decision-trees.md +418 -0
  114. package/.agents/skills/frontend-design/motion-graphics.md +306 -0
  115. package/.agents/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  116. package/.agents/skills/frontend-design/scripts/ux_audit.py +727 -0
  117. package/.agents/skills/frontend-design/typography-system.md +345 -0
  118. package/.agents/skills/frontend-design/ux-psychology.md +1118 -0
  119. package/.agents/skills/frontend-design/visual-effects.md +383 -0
  120. package/.agents/skills/game-development/2d-games/SKILL.md +119 -0
  121. package/.agents/skills/game-development/3d-games/SKILL.md +135 -0
  122. package/.agents/skills/game-development/SKILL.md +167 -0
  123. package/.agents/skills/game-development/game-art/SKILL.md +185 -0
  124. package/.agents/skills/game-development/game-audio/SKILL.md +190 -0
  125. package/.agents/skills/game-development/game-design/SKILL.md +129 -0
  126. package/.agents/skills/game-development/mobile-games/SKILL.md +108 -0
  127. package/.agents/skills/game-development/multiplayer/SKILL.md +132 -0
  128. package/.agents/skills/game-development/pc-games/SKILL.md +144 -0
  129. package/.agents/skills/game-development/vr-ar/SKILL.md +123 -0
  130. package/.agents/skills/game-development/web-games/SKILL.md +150 -0
  131. package/.agents/skills/geo-fundamentals/SKILL.md +155 -0
  132. package/.agents/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  133. package/.agents/skills/i18n-localization/SKILL.md +154 -0
  134. package/.agents/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  135. package/.agents/skills/intelligent-routing/SKILL.md +335 -0
  136. package/.agents/skills/lint-and-validate/SKILL.md +44 -0
  137. package/.agents/skills/lint-and-validate/scripts/lint_runner.py +184 -0
  138. package/.agents/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  139. package/.agents/skills/mcp-builder/SKILL.md +176 -0
  140. package/.agents/skills/mobile-design/SKILL.md +394 -0
  141. package/.agents/skills/mobile-design/decision-trees.md +516 -0
  142. package/.agents/skills/mobile-design/mobile-backend.md +491 -0
  143. package/.agents/skills/mobile-design/mobile-color-system.md +420 -0
  144. package/.agents/skills/mobile-design/mobile-debugging.md +122 -0
  145. package/.agents/skills/mobile-design/mobile-design-thinking.md +355 -0
  146. package/.agents/skills/mobile-design/mobile-navigation.md +458 -0
  147. package/.agents/skills/mobile-design/mobile-performance.md +767 -0
  148. package/.agents/skills/mobile-design/mobile-testing.md +356 -0
  149. package/.agents/skills/mobile-design/mobile-typography.md +432 -0
  150. package/.agents/skills/mobile-design/platform-android.md +666 -0
  151. package/.agents/skills/mobile-design/platform-ios.md +561 -0
  152. package/.agents/skills/mobile-design/scripts/mobile_audit.py +670 -0
  153. package/.agents/skills/mobile-design/touch-psychology.md +537 -0
  154. package/.agents/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +311 -0
  155. package/.agents/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +241 -0
  156. package/.agents/skills/nextjs-react-expert/3-server-server-side-performance.md +489 -0
  157. package/.agents/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +263 -0
  158. package/.agents/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
  159. package/.agents/skills/nextjs-react-expert/6-rendering-rendering-performance.md +431 -0
  160. package/.agents/skills/nextjs-react-expert/7-js-javascript-performance.md +683 -0
  161. package/.agents/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +149 -0
  162. package/.agents/skills/nextjs-react-expert/SKILL.md +286 -0
  163. package/.agents/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
  164. package/.agents/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
  165. package/.agents/skills/nodejs-best-practices/SKILL.md +333 -0
  166. package/.agents/skills/parallel-agents/SKILL.md +193 -0
  167. package/.agents/skills/performance-profiling/SKILL.md +149 -0
  168. package/.agents/skills/performance-profiling/scripts/lighthouse_audit.py +120 -0
  169. package/.agents/skills/plan-writing/SKILL.md +152 -0
  170. package/.agents/skills/powershell-windows/SKILL.md +166 -0
  171. package/.agents/skills/python-patterns/SKILL.md +441 -0
  172. package/.agents/skills/red-team-tactics/SKILL.md +203 -0
  173. package/.agents/skills/refactoring-patterns/SKILL.md +43 -0
  174. package/.agents/skills/rust-pro/SKILL.md +190 -0
  175. package/.agents/skills/seo-fundamentals/SKILL.md +135 -0
  176. package/.agents/skills/seo-fundamentals/scripts/seo_checker.py +215 -0
  177. package/.agents/skills/server-management/SKILL.md +161 -0
  178. package/.agents/skills/systematic-debugging/SKILL.md +114 -0
  179. package/.agents/skills/tailwind-patterns/SKILL.md +269 -0
  180. package/.agents/skills/tdd-workflow/SKILL.md +149 -0
  181. package/.agents/skills/testing-patterns/SKILL.md +178 -0
  182. package/.agents/skills/testing-patterns/scripts/test_runner.py +219 -0
  183. package/.agents/skills/vulnerability-scanner/SKILL.md +276 -0
  184. package/.agents/skills/vulnerability-scanner/checklists.md +131 -0
  185. package/.agents/skills/vulnerability-scanner/scripts/__pycache__/security_scan.cpython-310.pyc +0 -0
  186. package/.agents/skills/vulnerability-scanner/scripts/security_scan.py +524 -0
  187. package/.agents/skills/web-design-guidelines/SKILL.md +57 -0
  188. package/.agents/skills/webapp-testing/SKILL.md +187 -0
  189. package/.agents/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  190. package/.agents/workflows/brainstorm.md +113 -0
  191. package/.agents/workflows/create.md +59 -0
  192. package/.agents/workflows/debug.md +103 -0
  193. package/.agents/workflows/deploy.md +176 -0
  194. package/.agents/workflows/enhance.md +63 -0
  195. package/.agents/workflows/orchestrate.md +242 -0
  196. package/.agents/workflows/plan.md +89 -0
  197. package/.agents/workflows/preview.md +80 -0
  198. package/.agents/workflows/restore-localize-compat.md +525 -0
  199. package/.agents/workflows/status.md +86 -0
  200. package/.agents/workflows/test.md +144 -0
  201. package/.agents/workflows/ui-ux-pro-max.md +295 -0
  202. package/.spec/profiles/codex/AGENTS.spec.md +7 -0
  203. package/.spec/profiles/codex/ling.spec.rules.md +4 -0
  204. package/.spec/profiles/gemini/GEMINI.spec.md +5 -0
  205. package/.spec/references/README.md +36 -0
  206. package/.spec/references/cse-quickstart.md +96 -0
  207. package/.spec/references/gda-framework.md +394 -0
  208. package/.spec/references/harness-engineering-digest.md +93 -0
  209. package/.spec/skills/cybernetic-systems-engineering/SKILL.md +792 -0
  210. package/.spec/skills/cybernetic-systems-engineering/agents/openai.yaml +5 -0
  211. package/.spec/skills/cybernetic-systems-engineering/assets/quickstart.md +96 -0
  212. package/.spec/skills/cybernetic-systems-engineering/references/README.md +36 -0
  213. package/.spec/skills/cybernetic-systems-engineering/references/gda-framework.md +394 -0
  214. package/.spec/skills/cybernetic-systems-engineering/scripts/issues.csv +20 -0
  215. package/.spec/skills/harness-engineering/SKILL.md +100 -0
  216. package/.spec/skills/harness-engineering/agents/openai.yaml +4 -0
  217. package/.spec/skills/harness-engineering/references/harness-engineering-digest.md +93 -0
  218. package/.spec/templates/driver-prompt.md +7 -0
  219. package/.spec/templates/handoff.md +9 -0
  220. package/.spec/templates/issues.template.csv +2 -0
  221. package/.spec/templates/phase-acceptance.md +9 -0
  222. package/.spec/templates/review-report.md +9 -0
  223. package/AGENT_FLOW.md +609 -0
  224. package/CHANGELOG.md +43 -0
  225. package/LICENSE +21 -0
  226. package/README.md +359 -0
  227. package/bin/adapters/base.js +63 -0
  228. package/bin/adapters/codex.js +421 -0
  229. package/bin/adapters/gemini.js +157 -0
  230. package/bin/ag-kit.js +2266 -0
  231. package/bin/core/builder.js +80 -0
  232. package/bin/core/generator.js +59 -0
  233. package/bin/core/resource-loader.js +64 -0
  234. package/bin/core/transformer.js +208 -0
  235. package/bin/interactive.js +65 -0
  236. package/bin/ling.js +3 -0
  237. package/bin/utils/atomic-writer.js +97 -0
  238. package/bin/utils/git-helper.js +68 -0
  239. package/bin/utils/managed-block.js +65 -0
  240. package/bin/utils/manifest.js +244 -0
  241. package/bin/utils.js +89 -0
  242. package/docs/PLAN.md +54 -0
  243. package/docs/TECH.md +191 -0
  244. package/package.json +56 -0
  245. package/scripts/ci-verify.js +110 -0
  246. package/scripts/clean.js +123 -0
  247. package/scripts/health-check.js +143 -0
  248. package/scripts/health-check.sh +6 -0
  249. package/scripts/postinstall-check.js +112 -0
  250. package/scripts/run-tests.js +49 -0
  251. package/tests/atomic-writer.test.js +47 -0
  252. package/tests/clean-script.test.js +77 -0
  253. package/tests/cli-smoke.test.js +479 -0
  254. package/tests/codex-adapter.test.js +132 -0
  255. package/tests/doctor.test.js +94 -0
  256. package/tests/gemini-adapter.test.js +30 -0
  257. package/tests/generator.test.js +48 -0
  258. package/tests/git-helper.test.js +53 -0
  259. package/tests/global-sync.test.js +133 -0
  260. package/tests/health-check-script.test.js +34 -0
  261. package/tests/managed-block.test.js +41 -0
  262. package/tests/manifest.test.js +97 -0
  263. package/tests/package-tarball.test.js +33 -0
  264. package/tests/phase-c.test.js +107 -0
  265. package/tests/spec-profile.test.js +86 -0
  266. package/tests/standards-compliance.test.js +303 -0
  267. package/tests/transformer.test.js +74 -0
  268. package/tests/versioning.test.js +51 -0
@@ -0,0 +1,327 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Full Verification Suite - Antigravity Kit
4
+ ==========================================
5
+
6
+ Runs COMPLETE validation including all checks + performance + E2E.
7
+ Use this before deployment or major releases.
8
+
9
+ Usage:
10
+ python scripts/verify_all.py . --url <URL>
11
+
12
+ Includes ALL checks:
13
+ [OK] Security Scan (OWASP, secrets, dependencies)
14
+ [OK] Lint & Type Coverage
15
+ [OK] Schema Validation
16
+ [OK] Test Suite (unit + integration)
17
+ [OK] UX Audit (psychology, accessibility)
18
+ [OK] SEO Check
19
+ [OK] Lighthouse (Core Web Vitals)
20
+ [OK] Playwright E2E
21
+ [OK] Bundle Analysis (if applicable)
22
+ [OK] Mobile Audit (if applicable)
23
+ """
24
+
25
+ import sys
26
+ import subprocess
27
+ import argparse
28
+ from pathlib import Path
29
+ from typing import List, Dict, Optional
30
+ from datetime import datetime
31
+
32
+ # ANSI colors
33
+ class Colors:
34
+ HEADER = '\033[95m'
35
+ BLUE = '\033[94m'
36
+ CYAN = '\033[96m'
37
+ GREEN = '\033[92m'
38
+ YELLOW = '\033[93m'
39
+ RED = '\033[91m'
40
+ ENDC = '\033[0m'
41
+ BOLD = '\033[1m'
42
+
43
+ def print_header(text: str):
44
+ print(f"\n{Colors.BOLD}{Colors.CYAN}{'='*70}{Colors.ENDC}")
45
+ print(f"{Colors.BOLD}{Colors.CYAN}{text.center(70)}{Colors.ENDC}")
46
+ print(f"{Colors.BOLD}{Colors.CYAN}{'='*70}{Colors.ENDC}\n")
47
+
48
+ def print_step(text: str):
49
+ print(f"{Colors.BOLD}{Colors.BLUE}[RUN] {text}{Colors.ENDC}")
50
+
51
+ def print_success(text: str):
52
+ print(f"{Colors.GREEN}[OK] {text}{Colors.ENDC}")
53
+
54
+ def print_warning(text: str):
55
+ print(f"{Colors.YELLOW}[WARN] {text}{Colors.ENDC}")
56
+
57
+ def print_error(text: str):
58
+ print(f"{Colors.RED}[FAIL] {text}{Colors.ENDC}")
59
+
60
+ # Complete verification suite
61
+ VERIFICATION_SUITE = [
62
+ # P0: Security (CRITICAL)
63
+ {
64
+ "category": "Security",
65
+ "checks": [
66
+ ("Security Scan", ".agent/skills/vulnerability-scanner/scripts/security_scan.py", True),
67
+ ("Dependency Analysis", ".agent/skills/vulnerability-scanner/scripts/dependency_analyzer.py", False),
68
+ ]
69
+ },
70
+
71
+ # P1: Code Quality (CRITICAL)
72
+ {
73
+ "category": "Code Quality",
74
+ "checks": [
75
+ ("Lint Check", ".agent/skills/lint-and-validate/scripts/lint_runner.py", True),
76
+ ("Type Coverage", ".agent/skills/lint-and-validate/scripts/type_coverage.py", False),
77
+ ]
78
+ },
79
+
80
+ # P2: Data Layer
81
+ {
82
+ "category": "Data Layer",
83
+ "checks": [
84
+ ("Schema Validation", ".agent/skills/database-design/scripts/schema_validator.py", False),
85
+ ]
86
+ },
87
+
88
+ # P3: Testing
89
+ {
90
+ "category": "Testing",
91
+ "checks": [
92
+ ("Test Suite", ".agent/skills/testing-patterns/scripts/test_runner.py", False),
93
+ ]
94
+ },
95
+
96
+ # P4: UX & Accessibility
97
+ {
98
+ "category": "UX & Accessibility",
99
+ "checks": [
100
+ ("UX Audit", ".agent/skills/frontend-design/scripts/ux_audit.py", False),
101
+ ("Accessibility Check", ".agent/skills/frontend-design/scripts/accessibility_checker.py", False),
102
+ ]
103
+ },
104
+
105
+ # P5: SEO & Content
106
+ {
107
+ "category": "SEO & Content",
108
+ "checks": [
109
+ ("SEO Check", ".agent/skills/seo-fundamentals/scripts/seo_checker.py", False),
110
+ ("GEO Check", ".agent/skills/geo-fundamentals/scripts/geo_checker.py", False),
111
+ ]
112
+ },
113
+
114
+ # P6: Performance (requires URL)
115
+ {
116
+ "category": "Performance",
117
+ "requires_url": True,
118
+ "checks": [
119
+ ("Lighthouse Audit", ".agent/skills/performance-profiling/scripts/lighthouse_audit.py", True),
120
+ ("Bundle Analysis", ".agent/skills/performance-profiling/scripts/bundle_analyzer.py", False),
121
+ ]
122
+ },
123
+
124
+ # P7: E2E Testing (requires URL)
125
+ {
126
+ "category": "E2E Testing",
127
+ "requires_url": True,
128
+ "checks": [
129
+ ("Playwright E2E", ".agent/skills/webapp-testing/scripts/playwright_runner.py", False),
130
+ ]
131
+ },
132
+
133
+ # P8: Mobile (if applicable)
134
+ {
135
+ "category": "Mobile",
136
+ "checks": [
137
+ ("Mobile Audit", ".agent/skills/mobile-design/scripts/mobile_audit.py", False),
138
+ ]
139
+ },
140
+
141
+ # P9: Internationalization
142
+ {
143
+ "category": "Internationalization",
144
+ "checks": [
145
+ ("i18n Check", ".agent/skills/i18n-localization/scripts/i18n_checker.py", False),
146
+ ]
147
+ },
148
+ ]
149
+
150
+ def run_script(name: str, script_path: Path, project_path: str, url: Optional[str] = None) -> dict:
151
+ """Run validation script"""
152
+ if not script_path.exists():
153
+ print_warning(f"{name}: Script not found, skipping")
154
+ return {"name": name, "passed": True, "skipped": True, "duration": 0}
155
+
156
+ print_step(f"Running: {name}")
157
+ start_time = datetime.now()
158
+
159
+ # Build command
160
+ cmd = ["python", str(script_path), project_path]
161
+ if url and ("lighthouse" in script_path.name.lower() or "playwright" in script_path.name.lower()):
162
+ cmd.append(url)
163
+
164
+ # Run
165
+ try:
166
+ result = subprocess.run(
167
+ cmd,
168
+ capture_output=True,
169
+ text=True,
170
+ timeout=600 # 10 minute timeout for slow checks
171
+ )
172
+
173
+ duration = (datetime.now() - start_time).total_seconds()
174
+ passed = result.returncode == 0
175
+
176
+ if passed:
177
+ print_success(f"{name}: PASSED ({duration:.1f}s)")
178
+ else:
179
+ print_error(f"{name}: FAILED ({duration:.1f}s)")
180
+ if result.stderr:
181
+ print(f" {result.stderr[:300]}")
182
+
183
+ return {
184
+ "name": name,
185
+ "passed": passed,
186
+ "output": result.stdout,
187
+ "error": result.stderr,
188
+ "skipped": False,
189
+ "duration": duration
190
+ }
191
+
192
+ except subprocess.TimeoutExpired:
193
+ duration = (datetime.now() - start_time).total_seconds()
194
+ print_error(f"{name}: TIMEOUT (>{duration:.0f}s)")
195
+ return {"name": name, "passed": False, "skipped": False, "duration": duration, "error": "Timeout"}
196
+
197
+ except Exception as e:
198
+ duration = (datetime.now() - start_time).total_seconds()
199
+ print_error(f"{name}: ERROR - {str(e)}")
200
+ return {"name": name, "passed": False, "skipped": False, "duration": duration, "error": str(e)}
201
+
202
+ def print_final_report(results: List[dict], start_time: datetime):
203
+ """Print comprehensive final report"""
204
+ total_duration = (datetime.now() - start_time).total_seconds()
205
+
206
+ print_header(" FULL VERIFICATION REPORT")
207
+
208
+ # Statistics
209
+ total = len(results)
210
+ passed = sum(1 for r in results if r["passed"] and not r.get("skipped"))
211
+ failed = sum(1 for r in results if not r["passed"] and not r.get("skipped"))
212
+ skipped = sum(1 for r in results if r.get("skipped"))
213
+
214
+ print(f"Total Duration: {total_duration:.1f}s")
215
+ print(f"Total Checks: {total}")
216
+ print(f"{Colors.GREEN}[OK] Passed: {passed}{Colors.ENDC}")
217
+ print(f"{Colors.RED}[FAIL] Failed: {failed}{Colors.ENDC}")
218
+ print(f"{Colors.YELLOW}[SKIP] Skipped: {skipped}{Colors.ENDC}")
219
+ print()
220
+
221
+ # Category breakdown
222
+ print(f"{Colors.BOLD}Results by Category:{Colors.ENDC}")
223
+ current_category = None
224
+ for r in results:
225
+ # Print category header if changed
226
+ if r.get("category") and r["category"] != current_category:
227
+ current_category = r["category"]
228
+ print(f"\n{Colors.BOLD}{Colors.CYAN}{current_category}:{Colors.ENDC}")
229
+
230
+ # Print result
231
+ if r.get("skipped"):
232
+ status = f"{Colors.YELLOW}[SKIP] {Colors.ENDC}"
233
+ elif r["passed"]:
234
+ status = f"{Colors.GREEN}[OK] {Colors.ENDC}"
235
+ else:
236
+ status = f"{Colors.RED}[FAIL] {Colors.ENDC}"
237
+
238
+ duration_str = f"({r.get('duration', 0):.1f}s)" if not r.get("skipped") else ""
239
+ print(f" {status} {r['name']} {duration_str}")
240
+
241
+ print()
242
+
243
+ # Failed checks detail
244
+ if failed > 0:
245
+ print(f"{Colors.BOLD}{Colors.RED}[FAIL] FAILED CHECKS:{Colors.ENDC}")
246
+ for r in results:
247
+ if not r["passed"] and not r.get("skipped"):
248
+ print(f"\n{Colors.RED}X {r['name']}{Colors.ENDC}")
249
+ if r.get("error"):
250
+ error_preview = r["error"][:200]
251
+ print(f" Error: {error_preview}")
252
+ print()
253
+
254
+ # Final verdict
255
+ if failed > 0:
256
+ print_error(f"VERIFICATION FAILED - {failed} check(s) need attention")
257
+ print(f"\n{Colors.YELLOW}TIP: Tip: Fix critical (security, lint) issues first{Colors.ENDC}")
258
+ return False
259
+ else:
260
+ print_success(" ALL CHECKS PASSED - Ready for deployment! ")
261
+ return True
262
+
263
+ def main():
264
+ parser = argparse.ArgumentParser(
265
+ description="Run complete Antigravity Kit verification suite",
266
+ formatter_class=argparse.RawDescriptionHelpFormatter,
267
+ epilog="""
268
+ Examples:
269
+ python scripts/verify_all.py . --url http://localhost:3000
270
+ python scripts/verify_all.py . --url https://staging.example.com --no-e2e
271
+ """
272
+ )
273
+ parser.add_argument("project", help="Project path to validate")
274
+ parser.add_argument("--url", required=True, help="URL for performance & E2E checks")
275
+ parser.add_argument("--no-e2e", action="store_true", help="Skip E2E tests")
276
+ parser.add_argument("--stop-on-fail", action="store_true", help="Stop on first failure")
277
+
278
+ args = parser.parse_args()
279
+
280
+ project_path = Path(args.project).resolve()
281
+
282
+ if not project_path.exists():
283
+ print_error(f"Project path does not exist: {project_path}")
284
+ sys.exit(1)
285
+
286
+ print_header(" ANTIGRAVITY KIT - FULL VERIFICATION SUITE")
287
+ print(f"Project: {project_path}")
288
+ print(f"URL: {args.url}")
289
+ print(f"Started: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
290
+
291
+ start_time = datetime.now()
292
+ results = []
293
+
294
+ # Run all verification categories
295
+ for suite in VERIFICATION_SUITE:
296
+ category = suite["category"]
297
+ requires_url = suite.get("requires_url", False)
298
+
299
+ # Skip if requires URL and not provided
300
+ if requires_url and not args.url:
301
+ continue
302
+
303
+ # Skip E2E if flag set
304
+ if args.no_e2e and category == "E2E Testing":
305
+ continue
306
+
307
+ print_header(f" {category.upper()}")
308
+
309
+ for name, script_path, required in suite["checks"]:
310
+ script = project_path / script_path
311
+ result = run_script(name, script, str(project_path), args.url)
312
+ result["category"] = category
313
+ results.append(result)
314
+
315
+ # Stop on critical failure if flag set
316
+ if args.stop_on_fail and required and not result["passed"] and not result.get("skipped"):
317
+ print_error(f"CRITICAL: {name} failed. Stopping verification.")
318
+ print_final_report(results, start_time)
319
+ sys.exit(1)
320
+
321
+ # Print final report
322
+ all_passed = print_final_report(results, start_time)
323
+
324
+ sys.exit(0 if all_passed else 1)
325
+
326
+ if __name__ == "__main__":
327
+ main()
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: api-patterns
3
+ description: API design principles and decision-making(API 设计原则与决策逻辑)。REST vs GraphQL vs tRPC selection(选择)、response formats(响应格式)、versioning(版本控制)、pagination(分页)。
4
+ allowed-tools: Read, Write, Edit, Glob, Grep
5
+ ---
6
+
7
+ # API Patterns(API 模式)
8
+
9
+ > API design principles and decision-making for 2025(2025 年 API 设计原则与决策逻辑)。
10
+ > **Learn to THINK, not copy fixed patterns(学习如何思考,而非机械复制固定模式)。**
11
+
12
+ ## 选择性阅读规则(Selective Reading Rule)
13
+
14
+ **仅阅读与当前请求相关的文件(Read ONLY files relevant to the request)!** 查阅内容地图并定位所需章节(Check the content map, find what you need)。
15
+
16
+ ---
17
+
18
+ ## 内容地图(Content Map)
19
+
20
+ | File(文件) | Description(描述) | When to Read(阅读时机) |
21
+ | ---- | ---- | -------- |
22
+ | `api-style.md` | REST vs GraphQL vs tRPC decision tree(决策树) | Choosing API type(选择 API 类型时) |
23
+ | `rest.md` | Resource naming, HTTP methods, status codes(资源命名/HTTP 方法/状态码) | Designing REST API(设计 REST API 时) |
24
+ | `response.md` | Envelope pattern, error format, pagination(信封模式/错误格式/分页) | Response structure(确定响应结构时) |
25
+ | `graphql.md` | Schema design, when to use, security(模式设计/使用场景/安全性) | Considering GraphQL(考虑 GraphQL 时) |
26
+ | `trpc.md` | TypeScript monorepo, type safety(TS 单仓/类型安全) | TS fullstack projects(TS 全栈项目) |
27
+ | `versioning.md` | URI/Header/Query versioning(URI/请求头/查询参数版本控制) | API evolution planning(规划 API 演进) |
28
+ | `auth.md` | JWT, OAuth, Passkey, API Keys(认证方案) | Auth pattern selection(选择认证模式) |
29
+ | `rate-limiting.md` | Token bucket, sliding window(令牌桶/滑动窗口) | API protection(API 保护机制) |
30
+ | `documentation.md` | OpenAPI/Swagger best practices(文档规范) | Documentation(编写 API 文档) |
31
+ | `security-testing.md` | OWASP API Top 10, auth/authz testing(认证/授权测试) | Security audits(安全审计) |
32
+
33
+ ---
34
+
35
+ ## 相关技能(Related Skills)
36
+
37
+ | Need(需求) | Skill(技能) |
38
+ | ---- | ------------ |
39
+ | API implementation(API 落地实现) | `@[skills/nodejs-best-practices]` |
40
+ | Data structure(数据库结构设计) | `@[skills/database-design]` |
41
+ | Security details(安全加固细节) | `@[skills/vulnerability-scanner]` |
42
+
43
+ ---
44
+
45
+ ## [OK] 决策检查清单(Decision Checklist)
46
+
47
+ 设计 API 之前(Before designing an API):
48
+
49
+ - [ ] **Asked user about API consumers?(是否询问 API 消费者?)**
50
+ - [ ] **Chosen API style for THIS context?(是否为当前上下文选择 API 风格?)** (REST/GraphQL/tRPC)
51
+ - [ ] **Defined consistent response format?(是否定义统一响应格式?)**
52
+ - [ ] **Planned versioning strategy?(是否规划版本控制策略?)**
53
+ - [ ] **Considered authentication needs?(是否考虑认证需求?)**
54
+ - [ ] **Planned rate limiting?(是否规划频率限制?)**
55
+ - [ ] **Documentation approach defined?(是否定义文档方案?)**
56
+
57
+ ---
58
+
59
+ ## [FAIL] 反模式(Anti-Patterns)
60
+
61
+ **不要(DON'T):**
62
+
63
+ - 任何场景都默认 REST(Default to REST for everything)。
64
+ - REST 端点使用动词,如 `/getUsers`(Use verbs in REST endpoints)。
65
+ - 响应格式不一致(Return inconsistent response formats)。
66
+ - 向客户端暴露内部错误(Expose internal errors to clients)。
67
+ - 忽略频率限制(Skip rate limiting)。
68
+
69
+ **推荐做法(DO):**
70
+
71
+ - 根据上下文选择 API 风格(Choose API style based on context)。
72
+ - 先询问客户端需求(Ask about client requirements)。
73
+ - 编写详尽文档(Document thoroughly)。
74
+ - 使用合适的 HTTP 状态码(Use appropriate status codes)。
75
+
76
+ ---
77
+
78
+ ## 运行脚本(Script)
79
+
80
+ | Script(脚本) | Purpose(用途) | Command(命令) |
81
+ | ---- | ---- | ---- |
82
+ | `scripts/api_validator.py` | API endpoint validation(API 端点校验) | `python scripts/api_validator.py <project_path>`(项目路径) |
83
+
84
+ ---
@@ -0,0 +1,42 @@
1
+ # API 风格选择(2025)
2
+
3
+ > REST vs GraphQL vs tRPC —— 在什么情况下选择哪种?
4
+
5
+ ## 决策树
6
+
7
+ ```
8
+ 谁是 API 消费者?
9
+ |
10
+ +-- 公共 API / 多平台支持
11
+ | +-- REST + OpenAPI(接口规范,最广泛的兼容性)
12
+ |
13
+ +-- 数据需求复杂 / 多个前端
14
+ | +-- GraphQL(灵活的查询)
15
+ |
16
+ +-- TypeScript(TS)前端 + 后端(monorepo,单仓)
17
+ | +-- tRPC(端到端类型安全)
18
+ |
19
+ +-- 实时性 / 事件驱动
20
+ | +-- WebSocket + AsyncAPI(异步 API 规范)
21
+ |
22
+ +-- 内部微服务
23
+ +-- gRPC(追求性能)或 REST(追求简单)
24
+ ```
25
+
26
+ ## 对比
27
+
28
+ | 因素 | REST | GraphQL | tRPC |
29
+ | :--- | :--- | :------ | :--- |
30
+ | **最佳适用** | 公共 API | 复杂应用 | TS monorepos(TypeScript 单仓) |
31
+ | **学习曲线** | 低 | 中 | 低(如果是 TS 用户) |
32
+ | **过度/不足获取** | 常见(over/under fetching) | 已解决 | 已解决 |
33
+ | **类型安全** | 手动(OpenAPI) | 基于 Schema(模式) | 自动 |
34
+ | **缓存** | HTTP 原生支持 | 复杂 | 基于客户端 |
35
+
36
+ ## 选择问题
37
+
38
+ 1. 谁是 API 消费者?
39
+ 2. 前端是 TypeScript(TS)吗?
40
+ 3. 数据关系有多复杂?
41
+ 4. 缓存是否至关重要?
42
+ 5. 是公共 API 还是内部 API?
@@ -0,0 +1,24 @@
1
+ # 认证模式
2
+
3
+ > 根据用例选择认证模式。
4
+
5
+ ## 选择指南
6
+
7
+ | 模式 | 最佳适用场景 |
8
+ | :--- | :----------- |
9
+ | **JWT(JSON Web Token)** | 无状态、微服务架构 |
10
+ | **Session(会话)** | 传统 Web 应用、简单场景 |
11
+ | **OAuth 2.0(授权协议)** | 第三方集成 |
12
+ | **API Keys(API 密钥)** | 服务器间通信、公共 API |
13
+ | **Passkey(通行密钥)** | 现代无密码认证(2025+) |
14
+
15
+ ## JWT(JSON Web Token)原则
16
+
17
+ ```
18
+ 重要事项:
19
+ +-- 始终验证签名
20
+ +-- 检查过期时间
21
+ +-- 仅包含最小必要的声明(Claims)
22
+ +-- 使用短过期时间 + 刷新令牌(Refresh tokens)
23
+ +-- 绝不在 JWT 中存储敏感数据
24
+ ```
@@ -0,0 +1,26 @@
1
+ # API 文档编写原则
2
+
3
+ > 好的文档 = 快乐的开发者 = API 被广泛采用。
4
+
5
+ ## OpenAPI/Swagger 精要
6
+
7
+ ```
8
+ 应包含:
9
+ +-- 所有端点(Endpoints)及其示例
10
+ +-- 请求/响应 Schema(模式)
11
+ +-- 认证要求
12
+ +-- 错误响应格式
13
+ +-- 速率限制信息
14
+ ```
15
+
16
+ ## 优质文档包含
17
+
18
+ ```
19
+ 核心要素:
20
+ +-- 快速开始 / 入门指南
21
+ +-- 认证指南
22
+ +-- 完整的 API 参考手册
23
+ +-- 错误处理指南
24
+ +-- 代码示例(多种语言)
25
+ +-- 更新日志(Changelog)
26
+ ```
@@ -0,0 +1,41 @@
1
+ # GraphQL(图查询语言)原则
2
+
3
+ > 为复杂、互联的数据提供灵活的查询。
4
+
5
+ ## 何时使用
6
+
7
+ ```
8
+ [OK] 适用场景:
9
+ +-- 数据关系复杂且互相连接
10
+ +-- 有多个前端平台
11
+ +-- 客户端需要灵活的查询
12
+ +-- 数据需求在不断演进
13
+ +-- 减少“过度获取(over-fetching)”非常重要
14
+
15
+ [FAIL] 不适用场景:
16
+ +-- 简单的 CRUD(增删改查)操作
17
+ +-- 包含大量的文件上传
18
+ +-- HTTP(超文本传输协议)级缓存非常重要
19
+ +-- 团队对 GraphQL(图查询语言)不熟悉
20
+ ```
21
+
22
+ ## Schema(模式)设计原则
23
+
24
+ ```
25
+ 设计原则:
26
+ +-- 以图(Graph)的方式思考,而不是端点(Endpoints)
27
+ +-- 设计要有可演进性(通常无版本号)
28
+ +-- 使用 Connections(连接)模式进行分页
29
+ +-- 类型定义要具体(不要使用通用的 "data")
30
+ +-- 深思熟虑地处理空值(Nullability)
31
+ ```
32
+
33
+ ## 安全考量
34
+
35
+ ```
36
+ 防范措施:
37
+ +-- 查询深度攻击(Query depth attacks) -> 设置最大深度
38
+ +-- 查询复杂度(Query complexity) -> 计算查询成本
39
+ +-- 批量滥用(Batching abuse) -> 限制批量大小
40
+ +-- 内省(Introspection) -> 生产环境禁用
41
+ ```
@@ -0,0 +1,31 @@
1
+ # 限流原则
2
+
3
+ > 保护你的 API(接口)免受滥用和过载。
4
+
5
+ ## 为什么要限流
6
+
7
+ ```
8
+ 防范措施:
9
+ +-- 暴力破解攻击
10
+ +-- 资源耗尽
11
+ +-- 成本超支(如果是按量计费)
12
+ +-- 不公平的使用
13
+ ```
14
+
15
+ ## 策略选择
16
+
17
+ | 类型 | 机制 | 适用场景 |
18
+ | :--- | :--- | :------- |
19
+ | **令牌桶(Token bucket)** | 允许突发流量,随时间填充 | 大多数 API |
20
+ | **滑动窗口(Sliding window)** | 平滑分布 | 严格限制 |
21
+ | **固定窗口(Fixed window)** | 每个窗口的简单计数器 | 基本需求 |
22
+
23
+ ## 响应头
24
+
25
+ ```
26
+ 要在响应头中包含:
27
+ +-- X-RateLimit-Limit(最大请求数)
28
+ +-- X-RateLimit-Remaining(剩余请求数)
29
+ +-- X-RateLimit-Reset(重置时间)
30
+ +-- 超出限制时返回 429
31
+ ```
@@ -0,0 +1,37 @@
1
+ # 响应格式原则
2
+
3
+ > 一致性是关键——选择一种格式并坚持使用。
4
+
5
+ ## 常见模式
6
+
7
+ ```
8
+ 请选择一种:
9
+ +-- 信封模式(Envelope pattern): { success, data, error }
10
+ +-- 直接返回数据(Direct data): 仅返回资源内容
11
+ +-- HAL/JSON:API(超媒体模式)
12
+ ```
13
+
14
+ ## 错误响应
15
+
16
+ ```
17
+ 应包含:
18
+ +-- 错误代码(Error code): 用于程序化处理
19
+ +-- 用户消息(User message): 用于界面显示
20
+ +-- 详细信息(Details): 用于调试、字段级错误
21
+ +-- 请求 ID(Request ID): 用于支持查询
22
+ +-- 绝不包含内部实现细节(安全隐患)
23
+ ```
24
+
25
+ ## 分页类型
26
+
27
+ | 类型 | 最佳适用场景 | 权衡 |
28
+ | :--- | :----------- | :---------------- |
29
+ | **Offset(偏移量)** | 简单,支持跳转页码 | 大数据集性能差 |
30
+ | **Cursor(游标)** | 大数据集,无限滚动 | 无法跳转特定页 |
31
+ | **Keyset(键集)** | 性能至关重要 | 需要可排序的键 |
32
+
33
+ ### 选择问题
34
+
35
+ 1. 数据集有多大?
36
+ 2. 用户需要跳转到特定页面吗?
37
+ 3. 数据是否频繁变化?
@@ -0,0 +1,40 @@
1
+ # REST(表述性状态转移)原则
2
+
3
+ > 基于资源的 API(接口)设计——使用名词而非动词。
4
+
5
+ ## 资源命名规则
6
+
7
+ ```
8
+ 设计原则:
9
+ +-- 使用名词,而非动词(资源,而非动作)
10
+ +-- 使用复数形式(/users 而不是 /user)
11
+ +-- 使用小写,连字符分隔(/user-profiles)
12
+ +-- 使用嵌套表示关系(/users/123/posts)
13
+ +-- 保持浅层嵌套(建议最多 3 层)
14
+ ```
15
+
16
+ ## HTTP(超文本传输协议)方法选择
17
+
18
+ | 方法 | 目的 | 是否幂等(Idempotent)? | 是否包含请求体(Body)? |
19
+ | :--- | :--- | :--------- | :----------------------- |
20
+ | **GET** | 读取资源 | 是 | 否 |
21
+ | **POST** | 创建新资源 | 否 | 是 |
22
+ | **PUT** | 替换整个资源 | 是 | 是 |
23
+ | **PATCH** | 部分更新资源 | 否 | 是 |
24
+ | **DELETE** | 删除资源 | 是 | 否 |
25
+
26
+ ## 状态码选择
27
+
28
+ | 场景 | 代码 | 原因 |
29
+ | :--- | :--- | :--- |
30
+ | 成功(读取) | 200 | 标准成功响应 |
31
+ | 已创建 | 201 | 新资源已创建 |
32
+ | 无内容 | 204 | 操作成功,无需返回内容 |
33
+ | 错误请求 | 400 | 请求格式错误 |
34
+ | 未授权 | 401 | 缺少认证信息或无效 |
35
+ | 禁止访问 | 403 | 认证有效,但无权限 |
36
+ | 未找到 | 404 | 资源不存在 |
37
+ | 冲突 | 409 | 状态冲突(如重复资源) |
38
+ | 验证错误 | 422 | 语法正确,但数据无效 |
39
+ | 速率限制 | 429 | 请求过多 |
40
+ | 服务器错误 | 500 | 服务器内部错误 |