achira-wf 3.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 (229) hide show
  1. package/.achira/ARCHITECTURE.md +296 -0
  2. package/.achira/core/agents/backend-specialist.md +263 -0
  3. package/.achira/core/agents/code-archaeologist.md +106 -0
  4. package/.achira/core/agents/database-architect.md +226 -0
  5. package/.achira/core/agents/debugger.md +225 -0
  6. package/.achira/core/agents/devops-engineer.md +242 -0
  7. package/.achira/core/agents/documentation-writer.md +104 -0
  8. package/.achira/core/agents/explorer-agent.md +73 -0
  9. package/.achira/core/agents/frontend-specialist.md +593 -0
  10. package/.achira/core/agents/game-developer.md +162 -0
  11. package/.achira/core/agents/mobile-developer.md +377 -0
  12. package/.achira/core/agents/orchestrator.md +416 -0
  13. package/.achira/core/agents/penetration-tester.md +188 -0
  14. package/.achira/core/agents/performance-optimizer.md +187 -0
  15. package/.achira/core/agents/product-manager.md +112 -0
  16. package/.achira/core/agents/product-owner.md +95 -0
  17. package/.achira/core/agents/project-planner.md +413 -0
  18. package/.achira/core/agents/qa-automation-engineer.md +103 -0
  19. package/.achira/core/agents/security-auditor.md +170 -0
  20. package/.achira/core/agents/seo-specialist.md +111 -0
  21. package/.achira/core/agents/test-engineer.md +158 -0
  22. package/.achira/core/mcp_config.json +24 -0
  23. package/.achira/core/shared/ui-ux-pro-max/data/charts.csv +26 -0
  24. package/.achira/core/shared/ui-ux-pro-max/data/colors.csv +97 -0
  25. package/.achira/core/shared/ui-ux-pro-max/data/icons.csv +101 -0
  26. package/.achira/core/shared/ui-ux-pro-max/data/landing.csv +31 -0
  27. package/.achira/core/shared/ui-ux-pro-max/data/products.csv +97 -0
  28. package/.achira/core/shared/ui-ux-pro-max/data/prompts.csv +24 -0
  29. package/.achira/core/shared/ui-ux-pro-max/data/react-performance.csv +45 -0
  30. package/.achira/core/shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  31. package/.achira/core/shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  32. package/.achira/core/shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  33. package/.achira/core/shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  34. package/.achira/core/shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  35. package/.achira/core/shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  36. package/.achira/core/shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  37. package/.achira/core/shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  38. package/.achira/core/shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  39. package/.achira/core/shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  40. package/.achira/core/shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  41. package/.achira/core/shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  42. package/.achira/core/shared/ui-ux-pro-max/data/styles.csv +59 -0
  43. package/.achira/core/shared/ui-ux-pro-max/data/typography.csv +58 -0
  44. package/.achira/core/shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  45. package/.achira/core/shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  46. package/.achira/core/shared/ui-ux-pro-max/data/web-interface.csv +31 -0
  47. package/.achira/core/shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
  48. package/.achira/core/shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
  49. package/.achira/core/shared/ui-ux-pro-max/scripts/__pycache__/generate_theme.cpython-314.pyc +0 -0
  50. package/.achira/core/shared/ui-ux-pro-max/scripts/core.py +258 -0
  51. package/.achira/core/shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
  52. package/.achira/core/shared/ui-ux-pro-max/scripts/generate_theme.py +99 -0
  53. package/.achira/core/shared/ui-ux-pro-max/scripts/search.py +106 -0
  54. package/.achira/core/skills/api-patterns/SKILL.md +81 -0
  55. package/.achira/core/skills/api-patterns/api-style.md +42 -0
  56. package/.achira/core/skills/api-patterns/auth.md +24 -0
  57. package/.achira/core/skills/api-patterns/documentation.md +26 -0
  58. package/.achira/core/skills/api-patterns/graphql.md +41 -0
  59. package/.achira/core/skills/api-patterns/rate-limiting.md +31 -0
  60. package/.achira/core/skills/api-patterns/response.md +37 -0
  61. package/.achira/core/skills/api-patterns/rest.md +40 -0
  62. package/.achira/core/skills/api-patterns/scripts/api_validator.py +211 -0
  63. package/.achira/core/skills/api-patterns/security-testing.md +122 -0
  64. package/.achira/core/skills/api-patterns/trpc.md +41 -0
  65. package/.achira/core/skills/api-patterns/versioning.md +22 -0
  66. package/.achira/core/skills/app-builder/SKILL.md +98 -0
  67. package/.achira/core/skills/app-builder/agent-coordination.md +71 -0
  68. package/.achira/core/skills/app-builder/feature-building.md +53 -0
  69. package/.achira/core/skills/app-builder/project-detection.md +34 -0
  70. package/.achira/core/skills/app-builder/scaffolding.md +118 -0
  71. package/.achira/core/skills/app-builder/tech-stack.md +40 -0
  72. package/.achira/core/skills/app-builder/templates/SKILL.md +39 -0
  73. package/.achira/core/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  74. package/.achira/core/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  75. package/.achira/core/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  76. package/.achira/core/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  77. package/.achira/core/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  78. package/.achira/core/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  79. package/.achira/core/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  80. package/.achira/core/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
  81. package/.achira/core/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
  82. package/.achira/core/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
  83. package/.achira/core/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
  84. package/.achira/core/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  85. package/.achira/core/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
  86. package/.achira/core/skills/architecture/SKILL.md +55 -0
  87. package/.achira/core/skills/architecture/context-discovery.md +43 -0
  88. package/.achira/core/skills/architecture/examples.md +94 -0
  89. package/.achira/core/skills/architecture/pattern-selection.md +68 -0
  90. package/.achira/core/skills/architecture/patterns-reference.md +50 -0
  91. package/.achira/core/skills/architecture/trade-off-analysis.md +77 -0
  92. package/.achira/core/skills/bash-linux/SKILL.md +199 -0
  93. package/.achira/core/skills/behavioral-modes/SKILL.md +242 -0
  94. package/.achira/core/skills/brainstorming/SKILL.md +163 -0
  95. package/.achira/core/skills/brainstorming/dynamic-questioning.md +350 -0
  96. package/.achira/core/skills/clean-code/SKILL.md +201 -0
  97. package/.achira/core/skills/code-review-checklist/SKILL.md +109 -0
  98. package/.achira/core/skills/database-design/SKILL.md +52 -0
  99. package/.achira/core/skills/database-design/database-selection.md +43 -0
  100. package/.achira/core/skills/database-design/indexing.md +39 -0
  101. package/.achira/core/skills/database-design/migrations.md +48 -0
  102. package/.achira/core/skills/database-design/optimization.md +36 -0
  103. package/.achira/core/skills/database-design/orm-selection.md +30 -0
  104. package/.achira/core/skills/database-design/schema-design.md +56 -0
  105. package/.achira/core/skills/database-design/scripts/schema_validator.py +172 -0
  106. package/.achira/core/skills/deployment-procedures/SKILL.md +241 -0
  107. package/.achira/core/skills/doc.md +177 -0
  108. package/.achira/core/skills/documentation-templates/SKILL.md +194 -0
  109. package/.achira/core/skills/frontend-design/SKILL.md +418 -0
  110. package/.achira/core/skills/frontend-design/animation-guide.md +331 -0
  111. package/.achira/core/skills/frontend-design/color-system.md +311 -0
  112. package/.achira/core/skills/frontend-design/decision-trees.md +418 -0
  113. package/.achira/core/skills/frontend-design/motion-graphics.md +306 -0
  114. package/.achira/core/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  115. package/.achira/core/skills/frontend-design/scripts/ux_audit.py +722 -0
  116. package/.achira/core/skills/frontend-design/typography-system.md +345 -0
  117. package/.achira/core/skills/frontend-design/ux-psychology.md +1116 -0
  118. package/.achira/core/skills/frontend-design/visual-effects.md +383 -0
  119. package/.achira/core/skills/game-development/2d-games/SKILL.md +119 -0
  120. package/.achira/core/skills/game-development/3d-games/SKILL.md +135 -0
  121. package/.achira/core/skills/game-development/SKILL.md +167 -0
  122. package/.achira/core/skills/game-development/game-art/SKILL.md +185 -0
  123. package/.achira/core/skills/game-development/game-audio/SKILL.md +190 -0
  124. package/.achira/core/skills/game-development/game-design/SKILL.md +129 -0
  125. package/.achira/core/skills/game-development/mobile-games/SKILL.md +108 -0
  126. package/.achira/core/skills/game-development/multiplayer/SKILL.md +132 -0
  127. package/.achira/core/skills/game-development/pc-games/SKILL.md +144 -0
  128. package/.achira/core/skills/game-development/vr-ar/SKILL.md +123 -0
  129. package/.achira/core/skills/game-development/web-games/SKILL.md +150 -0
  130. package/.achira/core/skills/geo-fundamentals/SKILL.md +156 -0
  131. package/.achira/core/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  132. package/.achira/core/skills/i18n-localization/SKILL.md +154 -0
  133. package/.achira/core/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  134. package/.achira/core/skills/intelligent-routing/SKILL.md +335 -0
  135. package/.achira/core/skills/lint-and-validate/SKILL.md +45 -0
  136. package/.achira/core/skills/lint-and-validate/scripts/lint_runner.py +184 -0
  137. package/.achira/core/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  138. package/.achira/core/skills/mcp-builder/SKILL.md +176 -0
  139. package/.achira/core/skills/mobile-design/SKILL.md +394 -0
  140. package/.achira/core/skills/mobile-design/decision-trees.md +516 -0
  141. package/.achira/core/skills/mobile-design/mobile-backend.md +491 -0
  142. package/.achira/core/skills/mobile-design/mobile-color-system.md +420 -0
  143. package/.achira/core/skills/mobile-design/mobile-debugging.md +122 -0
  144. package/.achira/core/skills/mobile-design/mobile-design-thinking.md +357 -0
  145. package/.achira/core/skills/mobile-design/mobile-navigation.md +458 -0
  146. package/.achira/core/skills/mobile-design/mobile-performance.md +767 -0
  147. package/.achira/core/skills/mobile-design/mobile-testing.md +356 -0
  148. package/.achira/core/skills/mobile-design/mobile-typography.md +433 -0
  149. package/.achira/core/skills/mobile-design/platform-android.md +666 -0
  150. package/.achira/core/skills/mobile-design/platform-ios.md +561 -0
  151. package/.achira/core/skills/mobile-design/scripts/mobile_audit.py +670 -0
  152. package/.achira/core/skills/mobile-design/touch-psychology.md +537 -0
  153. package/.achira/core/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +312 -0
  154. package/.achira/core/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
  155. package/.achira/core/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -0
  156. package/.achira/core/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
  157. package/.achira/core/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
  158. package/.achira/core/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
  159. package/.achira/core/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -0
  160. package/.achira/core/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
  161. package/.achira/core/skills/nextjs-react-expert/SKILL.md +286 -0
  162. package/.achira/core/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
  163. package/.achira/core/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
  164. package/.achira/core/skills/nodejs-best-practices/SKILL.md +333 -0
  165. package/.achira/core/skills/parallel-agents/SKILL.md +175 -0
  166. package/.achira/core/skills/performance-profiling/SKILL.md +143 -0
  167. package/.achira/core/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
  168. package/.achira/core/skills/plan-writing/SKILL.md +152 -0
  169. package/.achira/core/skills/powershell-windows/SKILL.md +167 -0
  170. package/.achira/core/skills/project-setup/SKILL.md +291 -0
  171. package/.achira/core/skills/python-patterns/SKILL.md +441 -0
  172. package/.achira/core/skills/red-team-tactics/SKILL.md +199 -0
  173. package/.achira/core/skills/rust-pro/SKILL.md +176 -0
  174. package/.achira/core/skills/seo-fundamentals/SKILL.md +129 -0
  175. package/.achira/core/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  176. package/.achira/core/skills/server-management/SKILL.md +161 -0
  177. package/.achira/core/skills/systematic-debugging/SKILL.md +109 -0
  178. package/.achira/core/skills/tailwind-patterns/SKILL.md +269 -0
  179. package/.achira/core/skills/tdd-workflow/SKILL.md +149 -0
  180. package/.achira/core/skills/testing-patterns/SKILL.md +178 -0
  181. package/.achira/core/skills/testing-patterns/scripts/test_runner.py +219 -0
  182. package/.achira/core/skills/vulnerability-scanner/SKILL.md +276 -0
  183. package/.achira/core/skills/vulnerability-scanner/checklists.md +121 -0
  184. package/.achira/core/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  185. package/.achira/core/skills/web-design-guidelines/SKILL.md +57 -0
  186. package/.achira/core/skills/webapp-testing/SKILL.md +187 -0
  187. package/.achira/core/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  188. package/.achira/rules/GEMINI.md +273 -0
  189. package/.achira/scripts/__pycache__/checklist.cpython-314.pyc +0 -0
  190. package/.achira/scripts/__pycache__/shared_utils.cpython-314.pyc +0 -0
  191. package/.achira/scripts/__pycache__/verify_all.cpython-314.pyc +0 -0
  192. package/.achira/scripts/auto_preview.py +148 -0
  193. package/.achira/scripts/checklist.py +193 -0
  194. package/.achira/scripts/session_manager.py +120 -0
  195. package/.achira/scripts/shared_utils.py +64 -0
  196. package/.achira/scripts/verify_all.py +304 -0
  197. package/.achira/workflows/brainstorm.md +113 -0
  198. package/.achira/workflows/create.md +59 -0
  199. package/.achira/workflows/debug.md +103 -0
  200. package/.achira/workflows/deploy.md +176 -0
  201. package/.achira/workflows/enhance.md +63 -0
  202. package/.achira/workflows/html+js+css.md +363 -0
  203. package/.achira/workflows/next.js.md +316 -0
  204. package/.achira/workflows/orchestrate.md +237 -0
  205. package/.achira/workflows/plan.md +89 -0
  206. package/.achira/workflows/preview.md +81 -0
  207. package/.achira/workflows/react+vite.md +280 -0
  208. package/.achira/workflows/registry.json +35 -0
  209. package/.achira/workflows/status.md +86 -0
  210. package/.achira/workflows/test.md +144 -0
  211. package/.achira/workflows/ui-ux-pro-max.md +296 -0
  212. package/.agent/workflows/brainstorm.md +113 -0
  213. package/.agent/workflows/create.md +59 -0
  214. package/.agent/workflows/debug.md +103 -0
  215. package/.agent/workflows/deploy.md +176 -0
  216. package/.agent/workflows/enhance.md +63 -0
  217. package/.agent/workflows/html+js+css.md +363 -0
  218. package/.agent/workflows/next.js.md +316 -0
  219. package/.agent/workflows/orchestrate.md +237 -0
  220. package/.agent/workflows/plan.md +89 -0
  221. package/.agent/workflows/preview.md +81 -0
  222. package/.agent/workflows/react+vite.md +280 -0
  223. package/.agent/workflows/status.md +86 -0
  224. package/.agent/workflows/test.md +144 -0
  225. package/.agent/workflows/ui-ux-pro-max.md +296 -0
  226. package/LICENSE +21 -0
  227. package/README.md +110 -0
  228. package/cli.js +293 -0
  229. package/package.json +48 -0
@@ -0,0 +1,193 @@
1
+ """
2
+ Master Checklist Runner - Achira Workflow OS
3
+ ==========================================
4
+
5
+ Orchestrates all validation scripts in priority order.
6
+ Use this for incremental validation during development.
7
+
8
+ Usage:
9
+ python scripts/checklist.py . # Run core checks
10
+ python scripts/checklist.py . --url <URL> # Include performance checks
11
+
12
+ Priority Order:
13
+ P0: Security Scan (vulnerabilities, secrets)
14
+ P1: Lint & Type Check (code quality)
15
+ P2: Schema Validation (if database exists)
16
+ P3: Test Runner (unit/integration tests)
17
+ P4: UX Audit (psychology laws, accessibility)
18
+ P5: SEO Check (meta tags, structure)
19
+ P6: Performance (lighthouse - requires URL)
20
+ """
21
+
22
+ import sys
23
+ import argparse
24
+ import subprocess
25
+ from pathlib import Path
26
+ from typing import List, Tuple, Optional
27
+
28
+ # Import shared utilities
29
+ sys.path.append(str(Path(__file__).parent))
30
+ from shared_utils import Colors, print_header, print_step, print_success, print_warning, print_error, get_python_cmd # type: ignore
31
+
32
+ # Define priority-ordered checks
33
+ CORE_CHECKS = [
34
+ ("Security Scan", ".achira/core/skills/vulnerability-scanner/scripts/security_scan.py", True),
35
+ ("Lint Check", ".achira/core/skills/lint-and-validate/scripts/lint_runner.py", True),
36
+ ("Schema Validation", ".achira/core/skills/database-design/scripts/schema_validator.py", False),
37
+ ("Test Runner", ".achira/core/skills/testing-patterns/scripts/test_runner.py", False),
38
+ ("UX Audit", ".achira/core/skills/frontend-design/scripts/ux_audit.py", False),
39
+ ("SEO Check", ".achira/core/skills/seo-fundamentals/scripts/seo_checker.py", False),
40
+ ]
41
+
42
+ PERFORMANCE_CHECKS = [
43
+ ("Lighthouse Audit", ".achira/core/skills/performance-profiling/scripts/lighthouse_audit.py", True),
44
+ ("Playwright E2E", ".achira/core/skills/webapp-testing/scripts/playwright_runner.py", False),
45
+ ]
46
+
47
+ def check_script_exists(script_path: Path) -> bool:
48
+ """Check if script file exists"""
49
+ return script_path.exists() and script_path.is_file()
50
+
51
+ def run_script(name: str, script_path: Path, project_path: str, url: Optional[str] = None) -> dict:
52
+ """
53
+ Run a validation script and capture results
54
+
55
+ Returns:
56
+ dict with keys: name, passed, output, skipped
57
+ """
58
+ if not check_script_exists(script_path):
59
+ print_warning(f"{name}: Script not found, skipping")
60
+ return {"name": name, "passed": True, "output": "", "skipped": True}
61
+
62
+ print_step(f"Running: {name}")
63
+
64
+ # Build command
65
+ cmd = get_python_cmd() + [str(script_path), project_path]
66
+ if url and ("lighthouse" in script_path.name.lower() or "playwright" in script_path.name.lower()):
67
+ cmd.append(url)
68
+
69
+ # Run script
70
+ try:
71
+ result = subprocess.run(
72
+ cmd,
73
+ capture_output=True,
74
+ text=True,
75
+ timeout=300 # 5 minute timeout
76
+ )
77
+
78
+ passed = result.returncode == 0
79
+
80
+ if passed:
81
+ print_success(f"{name}: PASSED")
82
+ else:
83
+ print_error(f"{name}: FAILED")
84
+ if result.stderr:
85
+ err_msg = str(result.stderr)
86
+ print(f" Error: {err_msg[:200]}") # type: ignore
87
+
88
+ return {
89
+ "name": name,
90
+ "passed": passed,
91
+ "output": result.stdout,
92
+ "error": result.stderr,
93
+ "skipped": False
94
+ }
95
+
96
+ except subprocess.TimeoutExpired:
97
+ print_error(f"{name}: TIMEOUT (>5 minutes)")
98
+ return {"name": name, "passed": False, "output": "", "error": "Timeout", "skipped": False}
99
+
100
+ except Exception as e:
101
+ print_error(f"{name}: ERROR - {str(e)}")
102
+ return {"name": name, "passed": False, "output": "", "error": str(e), "skipped": False}
103
+
104
+ def print_summary(results: List[dict]):
105
+ """Print final summary report"""
106
+ print_header("📊 CHECKLIST SUMMARY")
107
+
108
+ passed_count = sum(1 for r in results if r["passed"] and not r.get("skipped"))
109
+ failed_count = sum(1 for r in results if not r["passed"] and not r.get("skipped"))
110
+ skipped_count = sum(1 for r in results if r.get("skipped"))
111
+
112
+ print(f"Total Checks: {len(results)}")
113
+ print(f"{Colors.GREEN}✅ Passed: {passed_count}{Colors.ENDC}")
114
+ print(f"{Colors.RED}❌ Failed: {failed_count}{Colors.ENDC}")
115
+ print(f"{Colors.YELLOW}⏭️ Skipped: {skipped_count}{Colors.ENDC}")
116
+ print()
117
+
118
+ # Detailed results
119
+ for r in results:
120
+ if r.get("skipped"):
121
+ status = f"{Colors.YELLOW}⏭️ {Colors.ENDC}"
122
+ elif r["passed"]:
123
+ status = f"{Colors.GREEN}✅{Colors.ENDC}"
124
+ else:
125
+ status = f"{Colors.RED}❌{Colors.ENDC}"
126
+
127
+ print(f"{status} {r['name']}")
128
+
129
+ print()
130
+
131
+ if failed_count > 0:
132
+ print_error(f"{failed_count} check(s) FAILED - Please fix before proceeding")
133
+ return False
134
+ else:
135
+ print_success("All checks PASSED ✨")
136
+ return True
137
+
138
+ def main():
139
+ parser = argparse.ArgumentParser(
140
+ description="Run Antigravity Kit validation checklist",
141
+ formatter_class=argparse.RawDescriptionHelpFormatter,
142
+ epilog="""
143
+ Examples:
144
+ python scripts/checklist.py . # Core checks only
145
+ python scripts/checklist.py . --url http://localhost:3000 # Include performance
146
+ """
147
+ )
148
+ parser.add_argument("project", help="Project path to validate")
149
+ parser.add_argument("--url", help="URL for performance checks (lighthouse, playwright)")
150
+ parser.add_argument("--skip-performance", action="store_true", help="Skip performance checks even if URL provided")
151
+
152
+ args = parser.parse_args()
153
+
154
+ project_path = Path(args.project).resolve()
155
+
156
+ if not project_path.exists():
157
+ print_error(f"Project path does not exist: {project_path}")
158
+ sys.exit(1)
159
+
160
+ print_header("🚀 ACHIRA WORKFLOW OS - MASTER CHECKLIST")
161
+ print(f"Project: {project_path}")
162
+ print(f"URL: {args.url if args.url else 'Not provided (performance checks skipped)'}")
163
+
164
+ results = []
165
+
166
+ # Run core checks
167
+ print_header("📋 CORE CHECKS")
168
+ for name, script_path, required in CORE_CHECKS:
169
+ script = project_path / script_path
170
+ result = run_script(name, script, str(project_path))
171
+ results.append(result)
172
+
173
+ # If required check fails, stop
174
+ if required and not result["passed"] and not result.get("skipped"):
175
+ print_error(f"CRITICAL: {name} failed. Stopping checklist.")
176
+ print_summary(results)
177
+ sys.exit(1)
178
+
179
+ # Run performance checks if URL provided
180
+ if args.url and not args.skip_performance:
181
+ print_header("⚡ PERFORMANCE CHECKS")
182
+ for name, script_path, required in PERFORMANCE_CHECKS:
183
+ script = project_path / script_path
184
+ result = run_script(name, script, str(project_path), args.url)
185
+ results.append(result)
186
+
187
+ # Print summary
188
+ all_passed = print_summary(results)
189
+
190
+ sys.exit(0 if all_passed else 1)
191
+
192
+ if __name__ == "__main__":
193
+ main()
@@ -0,0 +1,120 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Session Manager - Antigravity Kit
4
+ =================================
5
+ Analyzes project state, detects tech stack, tracks file statistics, and provides
6
+ a summary of the current session.
7
+
8
+ Usage:
9
+ python .achira/scripts/session_manager.py status [path]
10
+ python .achira/scripts/session_manager.py info [path]
11
+ """
12
+
13
+ import os
14
+ import json
15
+ import argparse
16
+ from pathlib import Path
17
+ from typing import Dict, Any, List
18
+
19
+ def get_project_root(path: str) -> Path:
20
+ return Path(path).resolve()
21
+
22
+ def analyze_package_json(root: Path) -> Dict[str, Any]:
23
+ pkg_file = root / "package.json"
24
+ if not pkg_file.exists():
25
+ return {"type": "unknown", "dependencies": {}}
26
+
27
+ try:
28
+ with open(pkg_file, 'r', encoding='utf-8') as f:
29
+ data = json.load(f)
30
+
31
+ deps = data.get("dependencies", {})
32
+ dev_deps = data.get("devDependencies", {})
33
+ all_deps = {**deps, **dev_deps}
34
+
35
+ stack = []
36
+ if "next" in all_deps: stack.append("Next.js")
37
+ elif "react" in all_deps: stack.append("React")
38
+ elif "vue" in all_deps: stack.append("Vue")
39
+ elif "svelte" in all_deps: stack.append("Svelte")
40
+ elif "express" in all_deps: stack.append("Express")
41
+ elif "nestjs" in all_deps or "@nestjs/core" in all_deps: stack.append("NestJS")
42
+
43
+ if "tailwindcss" in all_deps: stack.append("Tailwind CSS")
44
+ if "prisma" in all_deps: stack.append("Prisma")
45
+ if "typescript" in all_deps: stack.append("TypeScript")
46
+
47
+ return {
48
+ "name": data.get("name", "unnamed"),
49
+ "version": data.get("version", "0.0.0"),
50
+ "stack": stack,
51
+ "scripts": list(data.get("scripts", {}).keys())
52
+ }
53
+ except Exception as e:
54
+ return {"error": str(e)}
55
+
56
+ def count_files(root: Path) -> Dict[str, int]:
57
+ stats = {"created": 0, "modified": 0, "total": 0}
58
+ # Simple count for now, comprehensive tracking would require git diff or extensive history
59
+ exclude = {".git", "node_modules", ".next", "dist", "build", ".agent", ".gemini", "__pycache__"}
60
+
61
+ for root_dir, dirs, files in os.walk(root):
62
+ dirs[:] = [d for d in dirs if d not in exclude]
63
+ stats["total"] += len(files)
64
+
65
+ return stats
66
+
67
+ def detect_features(root: Path) -> List[str]:
68
+ # Heuristic: look at folder names in src/
69
+ features = []
70
+ src = root / "src"
71
+ if src.exists():
72
+ possible_dirs = ["components", "modules", "features", "app", "pages", "services"]
73
+ for d in possible_dirs:
74
+ p = src / d
75
+ if p.exists() and p.is_dir():
76
+ # List subdirectories as likely features
77
+ for child in p.iterdir():
78
+ if child.is_dir():
79
+ features.append(child.name)
80
+ return features[:10] # Limit to top 10
81
+
82
+ def print_status(root: Path):
83
+ info = analyze_package_json(root)
84
+ stats = count_files(root)
85
+ features = detect_features(root)
86
+
87
+ print("\n=== Project Status ===")
88
+ print(f"\n📁 Project: {info.get('name', root.name)}")
89
+ print(f"📂 Path: {root}")
90
+ print(f"🏷️ Type: {', '.join(info.get('stack', ['Generic']))}")
91
+ print(f"📊 Status: Active")
92
+
93
+ print("\n🔧 Tech Stack:")
94
+ for tech in info.get('stack', []):
95
+ print(f" • {tech}")
96
+
97
+ print(f"\n✅ Detected Modules/Features ({len(features)}):")
98
+ for feat in features:
99
+ print(f" • {feat}")
100
+ if not features:
101
+ print(" (No distinct feature modules detected)")
102
+
103
+ print(f"\n📄 Files: {stats['total']} total files tracked")
104
+ print("\n====================\n")
105
+
106
+ def main():
107
+ parser = argparse.ArgumentParser(description="Session Manager")
108
+ parser.add_argument("command", choices=["status", "info"], help="Command to run")
109
+ parser.add_argument("path", nargs="?", default=".", help="Project path")
110
+
111
+ args = parser.parse_args()
112
+ root = get_project_root(args.path)
113
+
114
+ if args.command == "status":
115
+ print_status(root)
116
+ elif args.command == "info":
117
+ print(json.dumps(analyze_package_json(root), indent=2))
118
+
119
+ if __name__ == "__main__":
120
+ main()
@@ -0,0 +1,64 @@
1
+ import sys
2
+ import os
3
+ import subprocess
4
+ from pathlib import Path
5
+ from typing import List, Optional
6
+
7
+ # ANSI Colors
8
+ class Colors:
9
+ HEADER = '\033[95m'
10
+ BLUE = '\033[94m'
11
+ CYAN = '\033[96m'
12
+ GREEN = '\033[92m'
13
+ YELLOW = '\033[93m'
14
+ RED = '\033[91m'
15
+ ENDC = '\033[0m'
16
+ BOLD = '\033[1m'
17
+ UNDERLINE = '\033[4m'
18
+
19
+ def print_header(text: str):
20
+ print(f"\n{Colors.BOLD}{Colors.CYAN}{'='*70}")
21
+ print(f"{text.center(70)}")
22
+ print(f"{'='*70}{Colors.ENDC}\n")
23
+
24
+ def print_step(text: str):
25
+ print(f"{Colors.BOLD}{Colors.BLUE}🔄 {text}{Colors.ENDC}")
26
+
27
+ def print_success(text: str):
28
+ print(f"{Colors.GREEN}✅ {text}{Colors.ENDC}")
29
+
30
+ def print_warning(text: str):
31
+ print(f"{Colors.YELLOW}⚠️ {text}{Colors.ENDC}")
32
+
33
+ def print_error(text: str):
34
+ print(f"{Colors.RED}❌ {text}{Colors.ENDC}")
35
+
36
+ def resolve_achira_path(base_path: Path) -> Path:
37
+ """Ensure we find the .achira directory even if run from subfolders."""
38
+ curr: Path = base_path.resolve()
39
+ for _ in range(5): # search up to 5 levels
40
+ if (curr / ".achira").exists(): # type: ignore
41
+ return curr / ".achira" # type: ignore
42
+ if curr.parent == curr: # type: ignore
43
+ break
44
+ curr = curr.parent # type: ignore
45
+ return base_path / ".achira"
46
+
47
+ def get_python_cmd() -> List[str]:
48
+ """Return the python command, preferring 'uv run' if available."""
49
+ try:
50
+ # Check if uv is installed and in path
51
+ subprocess.run(["uv", "--version"], capture_output=True, check=True)
52
+ return ["uv", "run", "python"]
53
+ except (subprocess.CalledProcessError, FileNotFoundError):
54
+ return [sys.executable or "python"]
55
+
56
+ def run_command(cmd: List[str], cwd: Optional[str] = None, timeout: int = 600) -> subprocess.CompletedProcess:
57
+ """Run a system command with capture."""
58
+ return subprocess.run(
59
+ cmd,
60
+ cwd=cwd,
61
+ capture_output=True,
62
+ text=True,
63
+ timeout=timeout
64
+ )
@@ -0,0 +1,304 @@
1
+ """
2
+ Full Verification Suite - Achira Workflow OS
3
+ ==========================================
4
+
5
+ Runs COMPLETE validation including all checks + performance + E2E.
6
+ Use this before deployment or major releases.
7
+
8
+ Usage:
9
+ python scripts/verify_all.py . --url <URL>
10
+
11
+ Includes ALL checks:
12
+ ✅ Security Scan (OWASP, secrets, dependencies)
13
+ ✅ Lint & Type Coverage
14
+ ✅ Schema Validation
15
+ ✅ Test Suite (unit + integration)
16
+ ✅ UX Audit (psychology, accessibility)
17
+ ✅ SEO Check
18
+ ✅ Lighthouse (Core Web Vitals)
19
+ ✅ Playwright E2E
20
+ ✅ Bundle Analysis (if applicable)
21
+ ✅ Mobile Audit (if applicable)
22
+ """
23
+
24
+ import sys
25
+ import argparse
26
+ import subprocess
27
+ from pathlib import Path
28
+ from typing import List, Dict, Optional, Tuple, Any
29
+ from datetime import datetime
30
+
31
+ # Import shared utilities
32
+ sys.path.append(str(Path(__file__).parent))
33
+ from shared_utils import Colors, print_header, print_step, print_success, print_warning, print_error, get_python_cmd # type: ignore
34
+
35
+ # Complete verification suite
36
+ VERIFICATION_SUITE: List[Dict[str, Any]] = [
37
+ # P0: Security (CRITICAL)
38
+ {
39
+ "category": "Security",
40
+ "checks": [
41
+ ("Security Scan", ".achira/core/skills/vulnerability-scanner/scripts/security_scan.py", True),
42
+ ("Dependency Analysis", ".achira/core/skills/vulnerability-scanner/scripts/dependency_analyzer.py", False),
43
+ ]
44
+ },
45
+
46
+ # P1: Code Quality (CRITICAL)
47
+ {
48
+ "category": "Code Quality",
49
+ "checks": [
50
+ ("Lint Check", ".achira/core/skills/lint-and-validate/scripts/lint_runner.py", True),
51
+ ("Type Coverage", ".achira/core/skills/lint-and-validate/scripts/type_coverage.py", False),
52
+ ]
53
+ },
54
+
55
+ # P2: Data Layer
56
+ {
57
+ "category": "Data Layer",
58
+ "checks": [
59
+ ("Schema Validation", ".achira/core/skills/database-design/scripts/schema_validator.py", False),
60
+ ]
61
+ },
62
+
63
+ # P3: Testing
64
+ {
65
+ "category": "Testing",
66
+ "checks": [
67
+ ("Test Suite", ".achira/core/skills/testing-patterns/scripts/test_runner.py", False),
68
+ ]
69
+ },
70
+
71
+ # P4: UX & Accessibility
72
+ {
73
+ "category": "UX & Accessibility",
74
+ "checks": [
75
+ ("UX Audit", ".achira/core/skills/frontend-design/scripts/ux_audit.py", False),
76
+ ("Accessibility Check", ".achira/core/skills/frontend-design/scripts/accessibility_checker.py", False),
77
+ ]
78
+ },
79
+
80
+ # P5: SEO & Content
81
+ {
82
+ "category": "SEO & Content",
83
+ "checks": [
84
+ ("SEO Check", ".achira/core/skills/seo-fundamentals/scripts/seo_checker.py", False),
85
+ ("GEO Check", ".achira/core/skills/geo-fundamentals/scripts/geo_checker.py", False),
86
+ ]
87
+ },
88
+
89
+ # P6: Performance (requires URL)
90
+ {
91
+ "category": "Performance",
92
+ "requires_url": True,
93
+ "checks": [
94
+ ("Lighthouse Audit", ".achira/core/skills/performance-profiling/scripts/lighthouse_audit.py", True),
95
+ ("Bundle Analysis", ".achira/core/skills/performance-profiling/scripts/bundle_analyzer.py", False),
96
+ ]
97
+ },
98
+
99
+ # P7: E2E Testing (requires URL)
100
+ {
101
+ "category": "E2E Testing",
102
+ "requires_url": True,
103
+ "checks": [
104
+ ("Playwright E2E", ".achira/core/skills/webapp-testing/scripts/playwright_runner.py", False),
105
+ ]
106
+ },
107
+
108
+ # P8: Mobile (if applicable)
109
+ {
110
+ "category": "Mobile",
111
+ "checks": [
112
+ ("Mobile Audit", ".achira/core/skills/mobile-design/scripts/mobile_audit.py", False),
113
+ ]
114
+ },
115
+
116
+ # P9: Internationalization
117
+ {
118
+ "category": "Internationalization",
119
+ "checks": [
120
+ ("i18n Check", ".achira/core/skills/i18n-localization/scripts/i18n_checker.py", False),
121
+ ]
122
+ },
123
+ ]
124
+
125
+ def run_script(name: str, script_path: Path, project_path: str, url: Optional[str] = None) -> dict:
126
+ """Run validation script"""
127
+ if not script_path.exists():
128
+ print_warning(f"{name}: Script not found, skipping")
129
+ return {"name": name, "passed": True, "skipped": True, "duration": 0}
130
+
131
+ print_step(f"Running: {name}")
132
+ start_time = datetime.now()
133
+
134
+ # Build command
135
+ cmd = get_python_cmd() + [str(script_path), project_path]
136
+ if url and ("lighthouse" in script_path.name.lower() or "playwright" in script_path.name.lower()):
137
+ cmd.append(url)
138
+
139
+ # Run
140
+ try:
141
+ result = subprocess.run(
142
+ cmd,
143
+ capture_output=True,
144
+ text=True,
145
+ timeout=600 # 10 minute timeout for slow checks
146
+ )
147
+
148
+ duration = (datetime.now() - start_time).total_seconds()
149
+ passed = result.returncode == 0
150
+
151
+ if passed:
152
+ print_success(f"{name}: PASSED ({duration:.1f}s)")
153
+ else:
154
+ print_error(f"{name}: FAILED ({duration:.1f}s)")
155
+ if result.stderr:
156
+ err_msg = str(result.stderr)
157
+ print(f" {err_msg[:300]}") # type: ignore
158
+
159
+ return {
160
+ "name": name,
161
+ "passed": passed,
162
+ "output": result.stdout,
163
+ "error": result.stderr,
164
+ "skipped": False,
165
+ "duration": duration
166
+ }
167
+
168
+ except subprocess.TimeoutExpired:
169
+ duration = (datetime.now() - start_time).total_seconds()
170
+ print_error(f"{name}: TIMEOUT (>{duration:.0f}s)")
171
+ return {"name": name, "passed": False, "skipped": False, "duration": duration, "error": "Timeout"}
172
+
173
+ except Exception as e:
174
+ duration = (datetime.now() - start_time).total_seconds()
175
+ print_error(f"{name}: ERROR - {str(e)}")
176
+ return {"name": name, "passed": False, "skipped": False, "duration": duration, "error": str(e)}
177
+
178
+ def print_final_report(results: List[dict], start_time: datetime):
179
+ """Print comprehensive final report"""
180
+ total_duration = (datetime.now() - start_time).total_seconds()
181
+
182
+ print_header("📊 FULL VERIFICATION REPORT")
183
+
184
+ # Statistics
185
+ total = len(results)
186
+ passed = sum(1 for r in results if r["passed"] and not r.get("skipped"))
187
+ failed = sum(1 for r in results if not r["passed"] and not r.get("skipped"))
188
+ skipped = sum(1 for r in results if r.get("skipped"))
189
+
190
+ print(f"Total Duration: {total_duration:.1f}s")
191
+ print(f"Total Checks: {total}")
192
+ print(f"{Colors.GREEN}✅ Passed: {passed}{Colors.ENDC}")
193
+ print(f"{Colors.RED}❌ Failed: {failed}{Colors.ENDC}")
194
+ print(f"{Colors.YELLOW}⏭️ Skipped: {skipped}{Colors.ENDC}")
195
+ print()
196
+
197
+ # Category breakdown
198
+ print(f"{Colors.BOLD}Results by Category:{Colors.ENDC}")
199
+ current_category = None
200
+ for r in results:
201
+ # Print category header if changed
202
+ if r.get("category") and r["category"] != current_category:
203
+ current_category = r["category"]
204
+ print(f"\n{Colors.BOLD}{Colors.CYAN}{current_category}:{Colors.ENDC}")
205
+
206
+ # Print result
207
+ if r.get("skipped"):
208
+ status = f"{Colors.YELLOW}⏭️ {Colors.ENDC}"
209
+ elif r["passed"]:
210
+ status = f"{Colors.GREEN}✅{Colors.ENDC}"
211
+ else:
212
+ status = f"{Colors.RED}❌{Colors.ENDC}"
213
+
214
+ duration_str = f"({r.get('duration', 0):.1f}s)" if not r.get("skipped") else ""
215
+ print(f" {status} {r['name']} {duration_str}")
216
+
217
+ print()
218
+
219
+ # Failed checks detail
220
+ if failed > 0:
221
+ print(f"{Colors.BOLD}{Colors.RED}❌ FAILED CHECKS:{Colors.ENDC}")
222
+ for r in results:
223
+ if not r["passed"] and not r.get("skipped"):
224
+ print(f"\n{Colors.RED}✗ {r['name']}{Colors.ENDC}")
225
+ if r.get("error"):
226
+ error_preview = str(r["error"])[:200] # type: ignore
227
+ print(f" Error: {error_preview}")
228
+ print()
229
+
230
+ # Final verdict
231
+ if failed > 0:
232
+ print_error(f"VERIFICATION FAILED - {failed} check(s) need attention")
233
+ print(f"\n{Colors.YELLOW}💡 Tip: Fix critical (security, lint) issues first{Colors.ENDC}")
234
+ return False
235
+ else:
236
+ print_success("✨ ALL CHECKS PASSED - Ready for deployment! ✨")
237
+ return True
238
+
239
+ def main():
240
+ parser = argparse.ArgumentParser(
241
+ description="Run complete Antigravity Kit verification suite",
242
+ formatter_class=argparse.RawDescriptionHelpFormatter,
243
+ epilog="""
244
+ Examples:
245
+ python scripts/verify_all.py . --url http://localhost:3000
246
+ python scripts/verify_all.py . --url https://staging.example.com --no-e2e
247
+ """
248
+ )
249
+ parser.add_argument("project", help="Project path to validate")
250
+ parser.add_argument("--url", required=True, help="URL for performance & E2E checks")
251
+ parser.add_argument("--no-e2e", action="store_true", help="Skip E2E tests")
252
+ parser.add_argument("--stop-on-fail", action="store_true", help="Stop on first failure")
253
+
254
+ args = parser.parse_args()
255
+
256
+ project_path = Path(args.project).resolve()
257
+
258
+ if not project_path.exists():
259
+ print_error(f"Project path does not exist: {project_path}")
260
+ sys.exit(1)
261
+
262
+ print_header("🚀 ACHIRA WORKFLOW OS - FULL VERIFICATION SUITE")
263
+ print(f"Project: {project_path}")
264
+ print(f"URL: {args.url}")
265
+ print(f"Started: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
266
+
267
+ start_time = datetime.now()
268
+ results = []
269
+
270
+ # Run all verification categories
271
+ for suite in VERIFICATION_SUITE:
272
+ category = suite["category"]
273
+ requires_url = suite.get("requires_url", False)
274
+
275
+ # Skip if requires URL and not provided
276
+ if requires_url and not args.url:
277
+ continue
278
+
279
+ # Skip E2E if flag set
280
+ if args.no_e2e and category == "E2E Testing":
281
+ continue
282
+
283
+ cat_name = str(category)
284
+ print_header(f"📋 {cat_name.upper()}")
285
+
286
+ for name, script_path, required in suite["checks"]:
287
+ script = project_path / script_path
288
+ result = run_script(name, script, str(project_path), args.url)
289
+ result["category"] = category
290
+ results.append(result)
291
+
292
+ # Stop on critical failure if flag set
293
+ if args.stop_on_fail and required and not result["passed"] and not result.get("skipped"):
294
+ print_error(f"CRITICAL: {name} failed. Stopping verification.")
295
+ print_final_report(results, start_time)
296
+ sys.exit(1)
297
+
298
+ # Print final report
299
+ all_passed = print_final_report(results, start_time)
300
+
301
+ sys.exit(0 if all_passed else 1)
302
+
303
+ if __name__ == "__main__":
304
+ main()