flyee 0.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 (302) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +134 -0
  3. package/bin/install.js +357 -0
  4. package/bridge/bridge.py +1780 -0
  5. package/bridge/local_tracker.py +722 -0
  6. package/core/agents/backend-specialist.md +266 -0
  7. package/core/agents/code-archaeologist.md +106 -0
  8. package/core/agents/database-architect.md +226 -0
  9. package/core/agents/debugger.md +225 -0
  10. package/core/agents/devops-engineer.md +323 -0
  11. package/core/agents/documentation-writer.md +104 -0
  12. package/core/agents/explorer-agent.md +73 -0
  13. package/core/agents/frontend-specialist.md +743 -0
  14. package/core/agents/game-developer.md +162 -0
  15. package/core/agents/mobile-developer.md +377 -0
  16. package/core/agents/orchestrator.md +416 -0
  17. package/core/agents/penetration-tester.md +188 -0
  18. package/core/agents/performance-optimizer.md +187 -0
  19. package/core/agents/product-manager.md +112 -0
  20. package/core/agents/product-owner.md +95 -0
  21. package/core/agents/project-planner.md +470 -0
  22. package/core/agents/qa-automation-engineer.md +103 -0
  23. package/core/agents/security-auditor.md +170 -0
  24. package/core/agents/seo-specialist.md +111 -0
  25. package/core/agents/stitch-designer.md +190 -0
  26. package/core/agents/tdd-reviewer.md +282 -0
  27. package/core/agents/test-engineer.md +158 -0
  28. package/core/scripts/auto_preview.py +148 -0
  29. package/core/scripts/checklist.py +243 -0
  30. package/core/scripts/cost_report.py +149 -0
  31. package/core/scripts/doc-sync-check.py +461 -0
  32. package/core/scripts/parse_user_stories.py +79 -0
  33. package/core/scripts/prepare_notion_updates.py +172 -0
  34. package/core/scripts/print_create_payload.py +18 -0
  35. package/core/scripts/session_manager.py +120 -0
  36. package/core/scripts/task_complete.py +127 -0
  37. package/core/scripts/verify_all.py +327 -0
  38. package/core/skills/analytics-strategy/SKILL.md +128 -0
  39. package/core/skills/api-patterns/SKILL.md +81 -0
  40. package/core/skills/api-patterns/api-style.md +42 -0
  41. package/core/skills/api-patterns/auth.md +24 -0
  42. package/core/skills/api-patterns/documentation.md +26 -0
  43. package/core/skills/api-patterns/graphql.md +41 -0
  44. package/core/skills/api-patterns/rate-limiting.md +31 -0
  45. package/core/skills/api-patterns/response.md +37 -0
  46. package/core/skills/api-patterns/rest.md +40 -0
  47. package/core/skills/api-patterns/scripts/api_validator.py +211 -0
  48. package/core/skills/api-patterns/security-testing.md +122 -0
  49. package/core/skills/api-patterns/trpc.md +41 -0
  50. package/core/skills/api-patterns/versioning.md +22 -0
  51. package/core/skills/app-builder/SKILL.md +75 -0
  52. package/core/skills/app-builder/agent-coordination.md +71 -0
  53. package/core/skills/app-builder/feature-building.md +53 -0
  54. package/core/skills/app-builder/project-detection.md +34 -0
  55. package/core/skills/app-builder/scaffolding.md +118 -0
  56. package/core/skills/app-builder/tech-stack.md +40 -0
  57. package/core/skills/app-builder/templates/SKILL.md +39 -0
  58. package/core/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  59. package/core/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  60. package/core/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  61. package/core/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  62. package/core/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  63. package/core/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  64. package/core/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  65. package/core/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
  66. package/core/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
  67. package/core/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
  68. package/core/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
  69. package/core/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  70. package/core/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
  71. package/core/skills/architecture/SKILL.md +55 -0
  72. package/core/skills/architecture/context-discovery.md +43 -0
  73. package/core/skills/architecture/examples.md +94 -0
  74. package/core/skills/architecture/pattern-selection.md +68 -0
  75. package/core/skills/architecture/patterns-reference.md +50 -0
  76. package/core/skills/architecture/trade-off-analysis.md +77 -0
  77. package/core/skills/atomic-design/SKILL.md +282 -0
  78. package/core/skills/atomic-design/references/classification-guide.md +132 -0
  79. package/core/skills/atomic-design/references/quality-checklist.md +60 -0
  80. package/core/skills/atomic-design/references/stacks/stack-blade.md +254 -0
  81. package/core/skills/atomic-design/references/stacks/stack-nextjs.md +272 -0
  82. package/core/skills/atomic-design/references/stacks/stack-react.md +239 -0
  83. package/core/skills/atomic-design/references/stacks/stack-vue.md +224 -0
  84. package/core/skills/bash-linux/SKILL.md +199 -0
  85. package/core/skills/behavioral-modes/SKILL.md +242 -0
  86. package/core/skills/brainstorming/SKILL.md +163 -0
  87. package/core/skills/brainstorming/dynamic-questioning.md +373 -0
  88. package/core/skills/checkpointing-patterns/SKILL.md +163 -0
  89. package/core/skills/clean-code/SKILL.md +201 -0
  90. package/core/skills/code-review-checklist/SKILL.md +109 -0
  91. package/core/skills/code-truth-validation/SKILL.md +149 -0
  92. package/core/skills/component-library-discovery/SKILL.md +154 -0
  93. package/core/skills/content-strategy/SKILL.md +222 -0
  94. package/core/skills/context-budget/SKILL.md +155 -0
  95. package/core/skills/context-gathering-patterns/SKILL.md +278 -0
  96. package/core/skills/cost-tracking/SKILL.md +206 -0
  97. package/core/skills/database-design/SKILL.md +52 -0
  98. package/core/skills/database-design/database-selection.md +43 -0
  99. package/core/skills/database-design/indexing.md +39 -0
  100. package/core/skills/database-design/migrations.md +48 -0
  101. package/core/skills/database-design/optimization.md +36 -0
  102. package/core/skills/database-design/orm-selection.md +30 -0
  103. package/core/skills/database-design/schema-design.md +56 -0
  104. package/core/skills/database-design/scripts/schema_validator.py +172 -0
  105. package/core/skills/deployment-procedures/SKILL.md +295 -0
  106. package/core/skills/design-md/README.md +34 -0
  107. package/core/skills/design-md/SKILL.md +172 -0
  108. package/core/skills/design-md/examples/DESIGN.md +154 -0
  109. package/core/skills/design-system-enforcement/SKILL.md +339 -0
  110. package/core/skills/doc.md +177 -0
  111. package/core/skills/document-registry/SKILL.md +130 -0
  112. package/core/skills/documentation-publishing/SKILL.md +174 -0
  113. package/core/skills/documentation-templates/SKILL.md +194 -0
  114. package/core/skills/enhance-prompt/README.md +34 -0
  115. package/core/skills/enhance-prompt/SKILL.md +204 -0
  116. package/core/skills/enhance-prompt/references/KEYWORDS.md +114 -0
  117. package/core/skills/frontend-design/SKILL.md +430 -0
  118. package/core/skills/frontend-design/animation-guide.md +331 -0
  119. package/core/skills/frontend-design/color-system.md +311 -0
  120. package/core/skills/frontend-design/decision-trees.md +418 -0
  121. package/core/skills/frontend-design/motion-graphics.md +306 -0
  122. package/core/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  123. package/core/skills/frontend-design/scripts/ux_audit.py +722 -0
  124. package/core/skills/frontend-design/typography-system.md +345 -0
  125. package/core/skills/frontend-design/ux-psychology.md +541 -0
  126. package/core/skills/frontend-design/visual-effects.md +383 -0
  127. package/core/skills/game-development/2d-games/SKILL.md +119 -0
  128. package/core/skills/game-development/3d-games/SKILL.md +135 -0
  129. package/core/skills/game-development/SKILL.md +167 -0
  130. package/core/skills/game-development/game-art/SKILL.md +185 -0
  131. package/core/skills/game-development/game-audio/SKILL.md +190 -0
  132. package/core/skills/game-development/game-design/SKILL.md +129 -0
  133. package/core/skills/game-development/mobile-games/SKILL.md +108 -0
  134. package/core/skills/game-development/multiplayer/SKILL.md +132 -0
  135. package/core/skills/game-development/pc-games/SKILL.md +144 -0
  136. package/core/skills/game-development/vr-ar/SKILL.md +123 -0
  137. package/core/skills/game-development/web-games/SKILL.md +150 -0
  138. package/core/skills/geo-fundamentals/SKILL.md +156 -0
  139. package/core/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  140. package/core/skills/git-workflow/SKILL.md +263 -0
  141. package/core/skills/history-check-patterns/SKILL.md +125 -0
  142. package/core/skills/i18n-localization/SKILL.md +154 -0
  143. package/core/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  144. package/core/skills/integration-completeness/SKILL.md +219 -0
  145. package/core/skills/intelligent-routing/SKILL.md +370 -0
  146. package/core/skills/lint-and-validate/SKILL.md +45 -0
  147. package/core/skills/lint-and-validate/scripts/lint_runner.py +173 -0
  148. package/core/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  149. package/core/skills/local-verification/SKILL.md +195 -0
  150. package/core/skills/mcp-builder/SKILL.md +176 -0
  151. package/core/skills/mobile-design/SKILL.md +394 -0
  152. package/core/skills/mobile-design/decision-trees.md +516 -0
  153. package/core/skills/mobile-design/mobile-backend.md +491 -0
  154. package/core/skills/mobile-design/mobile-color-system.md +420 -0
  155. package/core/skills/mobile-design/mobile-debugging.md +122 -0
  156. package/core/skills/mobile-design/mobile-design-thinking.md +357 -0
  157. package/core/skills/mobile-design/mobile-navigation.md +458 -0
  158. package/core/skills/mobile-design/mobile-performance.md +767 -0
  159. package/core/skills/mobile-design/mobile-testing.md +356 -0
  160. package/core/skills/mobile-design/mobile-typography.md +433 -0
  161. package/core/skills/mobile-design/platform-android.md +666 -0
  162. package/core/skills/mobile-design/platform-ios.md +561 -0
  163. package/core/skills/mobile-design/scripts/mobile_audit.py +670 -0
  164. package/core/skills/mobile-design/touch-psychology.md +537 -0
  165. package/core/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +312 -0
  166. package/core/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
  167. package/core/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -0
  168. package/core/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
  169. package/core/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
  170. package/core/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
  171. package/core/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -0
  172. package/core/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
  173. package/core/skills/nextjs-react-expert/SKILL.md +267 -0
  174. package/core/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
  175. package/core/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
  176. package/core/skills/nodejs-best-practices/SKILL.md +333 -0
  177. package/core/skills/notion-task-patterns/SKILL.md +2529 -0
  178. package/core/skills/page-specifications/SKILL.md +367 -0
  179. package/core/skills/parallel-agents/SKILL.md +175 -0
  180. package/core/skills/performance-profiling/SKILL.md +143 -0
  181. package/core/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
  182. package/core/skills/plan-writing/SKILL.md +190 -0
  183. package/core/skills/powershell-windows/SKILL.md +167 -0
  184. package/core/skills/project-foundation/SKILL.md +117 -0
  185. package/core/skills/project-setup/SKILL.md +141 -0
  186. package/core/skills/project-tracking-patterns/SKILL.md +357 -0
  187. package/core/skills/project-type-discovery/SKILL.md +239 -0
  188. package/core/skills/python-patterns/SKILL.md +441 -0
  189. package/core/skills/qa-test-generation/SKILL.md +156 -0
  190. package/core/skills/react-components/README.md +36 -0
  191. package/core/skills/react-components/SKILL.md +47 -0
  192. package/core/skills/react-components/examples/gold-standard-card.tsx +80 -0
  193. package/core/skills/react-components/package-lock.json +231 -0
  194. package/core/skills/react-components/package.json +16 -0
  195. package/core/skills/react-components/resources/architecture-checklist.md +15 -0
  196. package/core/skills/react-components/resources/component-template.tsx +37 -0
  197. package/core/skills/react-components/resources/stitch-api-reference.md +14 -0
  198. package/core/skills/react-components/resources/style-guide.json +27 -0
  199. package/core/skills/react-components/scripts/fetch-stitch.sh +30 -0
  200. package/core/skills/react-components/scripts/validate.js +68 -0
  201. package/core/skills/red-team-tactics/SKILL.md +199 -0
  202. package/core/skills/remotion/README.md +105 -0
  203. package/core/skills/remotion/SKILL.md +393 -0
  204. package/core/skills/remotion/examples/WalkthroughComposition.tsx +78 -0
  205. package/core/skills/remotion/examples/screens.json +56 -0
  206. package/core/skills/remotion/resources/composition-checklist.md +124 -0
  207. package/core/skills/remotion/resources/screen-slide-template.tsx +123 -0
  208. package/core/skills/remotion/scripts/download-stitch-asset.sh +38 -0
  209. package/core/skills/seo-fundamentals/SKILL.md +129 -0
  210. package/core/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  211. package/core/skills/server-management/SKILL.md +161 -0
  212. package/core/skills/session-resilience/SKILL.md +199 -0
  213. package/core/skills/shadcn-ui/README.md +248 -0
  214. package/core/skills/shadcn-ui/SKILL.md +326 -0
  215. package/core/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
  216. package/core/skills/shadcn-ui/examples/data-table.tsx +313 -0
  217. package/core/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
  218. package/core/skills/shadcn-ui/resources/component-catalog.md +481 -0
  219. package/core/skills/shadcn-ui/resources/customization-guide.md +516 -0
  220. package/core/skills/shadcn-ui/resources/migration-guide.md +463 -0
  221. package/core/skills/shadcn-ui/resources/setup-guide.md +412 -0
  222. package/core/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
  223. package/core/skills/state-machine/SKILL.md +264 -0
  224. package/core/skills/stitch-loop/README.md +54 -0
  225. package/core/skills/stitch-loop/SKILL.md +203 -0
  226. package/core/skills/stitch-loop/examples/SITE.md +73 -0
  227. package/core/skills/stitch-loop/examples/next-prompt.md +25 -0
  228. package/core/skills/stitch-loop/resources/baton-schema.md +61 -0
  229. package/core/skills/stitch-loop/resources/site-template.md +104 -0
  230. package/core/skills/systematic-debugging/SKILL.md +109 -0
  231. package/core/skills/tailwind-patterns/SKILL.md +284 -0
  232. package/core/skills/tdd-validation/SKILL.md +243 -0
  233. package/core/skills/tdd-workflow/SKILL.md +284 -0
  234. package/core/skills/testing-patterns/SKILL.md +196 -0
  235. package/core/skills/testing-patterns/scripts/test_runner.py +219 -0
  236. package/core/skills/ui-ux-discovery/SKILL.md +329 -0
  237. package/core/skills/ui-validation/SKILL.md +190 -0
  238. package/core/skills/ui-validation/scripts/ui_antipattern_check.py +317 -0
  239. package/core/skills/verification-gate/SKILL.md +205 -0
  240. package/core/skills/vulnerability-scanner/SKILL.md +276 -0
  241. package/core/skills/vulnerability-scanner/checklists.md +121 -0
  242. package/core/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  243. package/core/skills/web-design-guidelines/SKILL.md +57 -0
  244. package/core/skills/webapp-testing/SKILL.md +187 -0
  245. package/core/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  246. package/core/templates/ARCHITECTURE.template.md +407 -0
  247. package/core/templates/project-resources.example.json +71 -0
  248. package/core/workflows/atomic.md +182 -0
  249. package/core/workflows/brainstorm.md +134 -0
  250. package/core/workflows/check-task.md +242 -0
  251. package/core/workflows/copy-collect.md +306 -0
  252. package/core/workflows/create-agent.md +33 -0
  253. package/core/workflows/create-skill.md +39 -0
  254. package/core/workflows/create-workflow.md +33 -0
  255. package/core/workflows/create.md +92 -0
  256. package/core/workflows/debug.md +186 -0
  257. package/core/workflows/demand.md +443 -0
  258. package/core/workflows/deploy.md +260 -0
  259. package/core/workflows/discovery.md +267 -0
  260. package/core/workflows/document.md +272 -0
  261. package/core/workflows/ds-components.md +296 -0
  262. package/core/workflows/ds-init.md +58 -0
  263. package/core/workflows/ds-refactor.md +245 -0
  264. package/core/workflows/ds-references.md +197 -0
  265. package/core/workflows/ds-styleguide.md +237 -0
  266. package/core/workflows/ds-token-diff.md +103 -0
  267. package/core/workflows/ds-tokens.md +317 -0
  268. package/core/workflows/ds-validate.md +309 -0
  269. package/core/workflows/execute.md +483 -0
  270. package/core/workflows/extract-template.md +278 -0
  271. package/core/workflows/fix-failed-tests.md +160 -0
  272. package/core/workflows/init-project.md +386 -0
  273. package/core/workflows/legacy-project.md +849 -0
  274. package/core/workflows/log.md +97 -0
  275. package/core/workflows/new-project.md +610 -0
  276. package/core/workflows/new-project.md.bak +3292 -0
  277. package/core/workflows/new-task.md +404 -0
  278. package/core/workflows/orchestrate.md +237 -0
  279. package/core/workflows/page-build.md +296 -0
  280. package/core/workflows/plan.md +89 -0
  281. package/core/workflows/prd.md +255 -0
  282. package/core/workflows/preview.md +81 -0
  283. package/core/workflows/review-page.md +304 -0
  284. package/core/workflows/status.md +86 -0
  285. package/core/workflows/stitch.md +226 -0
  286. package/core/workflows/task-complete.md +473 -0
  287. package/core/workflows/task-update.md +163 -0
  288. package/core/workflows/tdd.md +344 -0
  289. package/core/workflows/test.md +251 -0
  290. package/core/workflows/ui-ux-pro-max.md +437 -0
  291. package/core/workflows/ux-mobile-optimize.md +262 -0
  292. package/core/workflows/ux-mobile-validate.md +297 -0
  293. package/engine-files/GEMINI.md +69 -0
  294. package/package.json +47 -0
  295. package/runtime-adapters/antigravity.js +26 -0
  296. package/runtime-adapters/claude.js +57 -0
  297. package/runtime-adapters/codex.js +51 -0
  298. package/runtime-adapters/copilot.js +51 -0
  299. package/runtime-adapters/cursor.js +51 -0
  300. package/runtime-adapters/gemini-cli.js +30 -0
  301. package/runtime-adapters/opencode.js +51 -0
  302. package/runtime-adapters/windsurf.js +51 -0
@@ -0,0 +1,173 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Lint Runner - Unified linting and type checking
4
+ Runs appropriate linters based on project type.
5
+
6
+ Usage:
7
+ python lint_runner.py <project_path>
8
+
9
+ Supports:
10
+ - Node.js: npm run lint, npx tsc --noEmit
11
+ - Python: ruff check, mypy
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_project_type(project_path: Path) -> dict:
28
+ """Detect project type and available linters."""
29
+ result = {
30
+ "type": "unknown",
31
+ "linters": []
32
+ }
33
+
34
+ # Node.js project
35
+ package_json = project_path / "package.json"
36
+ if package_json.exists():
37
+ result["type"] = "node"
38
+ try:
39
+ pkg = json.loads(package_json.read_text(encoding='utf-8'))
40
+ scripts = pkg.get("scripts", {})
41
+ deps = {**pkg.get("dependencies", {}), **pkg.get("devDependencies", {})}
42
+
43
+ # Check for lint script
44
+ if "lint" in scripts:
45
+ result["linters"].append({"name": "npm lint", "cmd": ["npm", "run", "lint"]})
46
+ elif "eslint" in deps:
47
+ result["linters"].append({"name": "eslint", "cmd": ["npx", "eslint", "."]})
48
+
49
+ # Check for TypeScript
50
+ if "typescript" in deps or (project_path / "tsconfig.json").exists():
51
+ result["linters"].append({"name": "tsc", "cmd": ["npx", "tsc", "--noEmit"]})
52
+
53
+ except:
54
+ pass
55
+
56
+ # Python project
57
+ if (project_path / "pyproject.toml").exists() or (project_path / "requirements.txt").exists():
58
+ result["type"] = "python"
59
+
60
+ # Check for ruff
61
+ result["linters"].append({"name": "ruff", "cmd": ["ruff", "check", "."]})
62
+
63
+ # Check for mypy
64
+ if (project_path / "mypy.ini").exists() or (project_path / "pyproject.toml").exists():
65
+ result["linters"].append({"name": "mypy", "cmd": ["mypy", "."]})
66
+
67
+ return result
68
+
69
+
70
+ def run_linter(linter: dict, cwd: Path) -> dict:
71
+ """Run a single linter and return results."""
72
+ result = {
73
+ "name": linter["name"],
74
+ "passed": False,
75
+ "output": "",
76
+ "error": ""
77
+ }
78
+
79
+ try:
80
+ proc = subprocess.run(
81
+ linter["cmd"],
82
+ cwd=str(cwd),
83
+ capture_output=True,
84
+ text=True,
85
+ encoding='utf-8',
86
+ errors='replace',
87
+ timeout=120,
88
+ shell=sys.platform == 'win32'
89
+ )
90
+
91
+ result["output"] = proc.stdout[:2000] if proc.stdout else ""
92
+ result["error"] = proc.stderr[:500] if proc.stderr else ""
93
+ result["passed"] = proc.returncode == 0
94
+
95
+ except FileNotFoundError:
96
+ result["error"] = f"Command not found: {linter['cmd'][0]}"
97
+ except subprocess.TimeoutExpired:
98
+ result["error"] = "Timeout after 120s"
99
+ except Exception as e:
100
+ result["error"] = str(e)
101
+
102
+ return result
103
+
104
+
105
+ def main():
106
+ project_path = Path(sys.argv[1] if len(sys.argv) > 1 else ".").resolve()
107
+
108
+ print(f"\n{'='*60}")
109
+ print(f"[LINT RUNNER] Unified Linting")
110
+ print(f"{'='*60}")
111
+ print(f"Project: {project_path}")
112
+ print(f"Time: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
113
+
114
+ # Detect project type
115
+ project_info = detect_project_type(project_path)
116
+ print(f"Type: {project_info['type']}")
117
+ print(f"Linters: {len(project_info['linters'])}")
118
+ print("-"*60)
119
+
120
+ if not project_info["linters"]:
121
+ print("No linters found for this project type.")
122
+ output = {
123
+ "script": "lint_runner",
124
+ "project": str(project_path),
125
+ "type": project_info["type"],
126
+ "checks": [],
127
+ "passed": True,
128
+ "message": "No linters configured"
129
+ }
130
+ print(json.dumps(output, indent=2))
131
+ sys.exit(0)
132
+
133
+ # Run each linter
134
+ results = []
135
+ all_passed = True
136
+
137
+ for linter in project_info["linters"]:
138
+ print(f"\nRunning: {linter['name']}...")
139
+ result = run_linter(linter, project_path)
140
+ results.append(result)
141
+
142
+ if result["passed"]:
143
+ print(f" [PASS] {linter['name']}")
144
+ else:
145
+ print(f" [FAIL] {linter['name']}")
146
+ if result["error"]:
147
+ print(f" Error: {result['error'][:200]}")
148
+ all_passed = False
149
+
150
+ # Summary
151
+ print("\n" + "="*60)
152
+ print("SUMMARY")
153
+ print("="*60)
154
+
155
+ for r in results:
156
+ icon = "[PASS]" if r["passed"] else "[FAIL]"
157
+ print(f"{icon} {r['name']}")
158
+
159
+ output = {
160
+ "script": "lint_runner",
161
+ "project": str(project_path),
162
+ "type": project_info["type"],
163
+ "checks": results,
164
+ "passed": all_passed
165
+ }
166
+
167
+ print("\n" + json.dumps(output, indent=2))
168
+
169
+ sys.exit(0 if all_passed else 1)
170
+
171
+
172
+ if __name__ == "__main__":
173
+ main()
@@ -0,0 +1,173 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Type Coverage Checker - Measures TypeScript/Python type coverage.
4
+ Identifies untyped functions, any usage, and type safety issues.
5
+ """
6
+ import sys
7
+ import re
8
+ import subprocess
9
+ from pathlib import Path
10
+
11
+ # Fix Windows console encoding for Unicode output
12
+ try:
13
+ sys.stdout.reconfigure(encoding='utf-8', errors='replace')
14
+ sys.stderr.reconfigure(encoding='utf-8', errors='replace')
15
+ except AttributeError:
16
+ pass # Python < 3.7
17
+
18
+ def check_typescript_coverage(project_path: Path) -> dict:
19
+ """Check TypeScript type coverage."""
20
+ issues = []
21
+ passed = []
22
+ stats = {'any_count': 0, 'untyped_functions': 0, 'total_functions': 0}
23
+
24
+ ts_files = list(project_path.rglob("*.ts")) + list(project_path.rglob("*.tsx"))
25
+ ts_files = [f for f in ts_files if 'node_modules' not in str(f) and '.d.ts' not in str(f)]
26
+
27
+ if not ts_files:
28
+ return {'type': 'typescript', 'files': 0, 'passed': [], 'issues': ["[!] No TypeScript files found"], 'stats': stats}
29
+
30
+ for file_path in ts_files[:30]: # Limit
31
+ try:
32
+ content = file_path.read_text(encoding='utf-8', errors='ignore')
33
+
34
+ # Count 'any' usage
35
+ any_matches = re.findall(r':\s*any\b', content)
36
+ stats['any_count'] += len(any_matches)
37
+
38
+ # Find functions without return types
39
+ # function name(params) { - no return type
40
+ untyped = re.findall(r'function\s+\w+\s*\([^)]*\)\s*{', content)
41
+ # Arrow functions without types: const fn = (x) => or (x) =>
42
+ untyped += re.findall(r'=\s*\([^:)]*\)\s*=>', content)
43
+ stats['untyped_functions'] += len(untyped)
44
+
45
+ # Count typed functions
46
+ typed = re.findall(r'function\s+\w+\s*\([^)]*\)\s*:\s*\w+', content)
47
+ typed += re.findall(r':\s*\([^)]*\)\s*=>\s*\w+', content)
48
+ stats['total_functions'] += len(typed) + len(untyped)
49
+
50
+ except Exception:
51
+ continue
52
+
53
+ # Analyze results
54
+ if stats['any_count'] == 0:
55
+ passed.append("[OK] No 'any' types found")
56
+ elif stats['any_count'] <= 5:
57
+ issues.append(f"[!] {stats['any_count']} 'any' types found (acceptable)")
58
+ else:
59
+ issues.append(f"[X] {stats['any_count']} 'any' types found (too many)")
60
+
61
+ if stats['total_functions'] > 0:
62
+ typed_ratio = (stats['total_functions'] - stats['untyped_functions']) / stats['total_functions'] * 100
63
+ if typed_ratio >= 80:
64
+ passed.append(f"[OK] Type coverage: {typed_ratio:.0f}%")
65
+ elif typed_ratio >= 50:
66
+ issues.append(f"[!] Type coverage: {typed_ratio:.0f}% (improve)")
67
+ else:
68
+ issues.append(f"[X] Type coverage: {typed_ratio:.0f}% (too low)")
69
+
70
+ passed.append(f"[OK] Analyzed {len(ts_files)} TypeScript files")
71
+
72
+ return {'type': 'typescript', 'files': len(ts_files), 'passed': passed, 'issues': issues, 'stats': stats}
73
+
74
+ def check_python_coverage(project_path: Path) -> dict:
75
+ """Check Python type hints coverage."""
76
+ issues = []
77
+ passed = []
78
+ stats = {'untyped_functions': 0, 'typed_functions': 0, 'any_count': 0}
79
+
80
+ py_files = list(project_path.rglob("*.py"))
81
+ py_files = [f for f in py_files if not any(x in str(f) for x in ['venv', '__pycache__', '.git', 'node_modules'])]
82
+
83
+ if not py_files:
84
+ return {'type': 'python', 'files': 0, 'passed': [], 'issues': ["[!] No Python files found"], 'stats': stats}
85
+
86
+ for file_path in py_files[:30]: # Limit
87
+ try:
88
+ content = file_path.read_text(encoding='utf-8', errors='ignore')
89
+
90
+ # Count Any usage
91
+ any_matches = re.findall(r':\s*Any\b', content)
92
+ stats['any_count'] += len(any_matches)
93
+
94
+ # Find functions with type hints
95
+ typed_funcs = re.findall(r'def\s+\w+\s*\([^)]*:[^)]+\)', content)
96
+ typed_funcs += re.findall(r'def\s+\w+\s*\([^)]*\)\s*->', content)
97
+ stats['typed_functions'] += len(typed_funcs)
98
+
99
+ # Find functions without type hints
100
+ all_funcs = re.findall(r'def\s+\w+\s*\(', content)
101
+ stats['untyped_functions'] += len(all_funcs) - len(typed_funcs)
102
+
103
+ except Exception:
104
+ continue
105
+
106
+ total = stats['typed_functions'] + stats['untyped_functions']
107
+
108
+ if total > 0:
109
+ typed_ratio = stats['typed_functions'] / total * 100
110
+ if typed_ratio >= 70:
111
+ passed.append(f"[OK] Type hints coverage: {typed_ratio:.0f}%")
112
+ elif typed_ratio >= 40:
113
+ issues.append(f"[!] Type hints coverage: {typed_ratio:.0f}%")
114
+ else:
115
+ issues.append(f"[X] Type hints coverage: {typed_ratio:.0f}% (add type hints)")
116
+
117
+ if stats['any_count'] == 0:
118
+ passed.append("[OK] No 'Any' types found")
119
+ elif stats['any_count'] <= 3:
120
+ issues.append(f"[!] {stats['any_count']} 'Any' types found")
121
+ else:
122
+ issues.append(f"[X] {stats['any_count']} 'Any' types found")
123
+
124
+ passed.append(f"[OK] Analyzed {len(py_files)} Python files")
125
+
126
+ return {'type': 'python', 'files': len(py_files), 'passed': passed, 'issues': issues, 'stats': stats}
127
+
128
+ def main():
129
+ target = sys.argv[1] if len(sys.argv) > 1 else "."
130
+ project_path = Path(target)
131
+
132
+ print("\n" + "=" * 60)
133
+ print(" TYPE COVERAGE CHECKER")
134
+ print("=" * 60 + "\n")
135
+
136
+ results = []
137
+
138
+ # Check TypeScript
139
+ ts_result = check_typescript_coverage(project_path)
140
+ if ts_result['files'] > 0:
141
+ results.append(ts_result)
142
+
143
+ # Check Python
144
+ py_result = check_python_coverage(project_path)
145
+ if py_result['files'] > 0:
146
+ results.append(py_result)
147
+
148
+ if not results:
149
+ print("[!] No TypeScript or Python files found.")
150
+ sys.exit(0)
151
+
152
+ # Print results
153
+ critical_issues = 0
154
+ for result in results:
155
+ print(f"\n[{result['type'].upper()}]")
156
+ print("-" * 40)
157
+ for item in result['passed']:
158
+ print(f" {item}")
159
+ for item in result['issues']:
160
+ print(f" {item}")
161
+ if item.startswith("[X]"):
162
+ critical_issues += 1
163
+
164
+ print("\n" + "=" * 60)
165
+ if critical_issues == 0:
166
+ print("[OK] TYPE COVERAGE: ACCEPTABLE")
167
+ sys.exit(0)
168
+ else:
169
+ print(f"[X] TYPE COVERAGE: {critical_issues} critical issues")
170
+ sys.exit(1)
171
+
172
+ if __name__ == "__main__":
173
+ main()
@@ -0,0 +1,195 @@
1
+ ---
2
+ name: local-verification
3
+ description: Gate obrigatório de verificação local antes de commits. Dev server, testes, build. Previne push de código quebrado.
4
+ ---
5
+
6
+ # Local Verification Gate
7
+
8
+ > **Single Source of Truth** para verificação local antes de commits.
9
+
10
+ ---
11
+
12
+ ## 🎯 PROPÓSITO
13
+
14
+ Garantir que **NENHUM código quebrado** seja commitado, através de verificação local obrigatória.
15
+
16
+ ---
17
+
18
+ ## 🔗 QUANDO USAR?
19
+
20
+ | Workflow | Fase | Trigger |
21
+ |----------|------|---------|
22
+ | `/legacy-project` | Phase 7 | Antes de cada commit |
23
+ | `/new-project` | Phase 5-6 | Antes de cada commit |
24
+ | `/new-task` | Phase 3 | Antes de cada commit |
25
+ | `/execute` | Durante implementação | Antes de cada commit |
26
+
27
+ ---
28
+
29
+ ## 🧪 GATE DE VERIFICAÇÃO LOCAL (OBRIGATÓRIO)
30
+
31
+ > [!CAUTION]
32
+ > **BLOQUEADOR:** ANTES de commitar qualquer mudança, TODOS os itens devem passar.
33
+
34
+ ### Checklist Obrigatório
35
+
36
+ ```markdown
37
+ ## ✅ Verificação Local - Antes do Commit
38
+
39
+ ### 1. 🖥️ Dev Server
40
+ - [ ] `npm run dev` (ou equivalente) rodando sem erros
41
+ - [ ] Console do browser sem erros críticos
42
+ - [ ] Mudanças visíveis no localhost
43
+
44
+ ### 2. 🧪 Testes
45
+ - [ ] `npm test` passando (se projeto tem testes)
46
+ - [ ] Nenhum teste quebrado pela mudança
47
+
48
+ ### 3. 🏗️ Build
49
+ - [ ] `npm run build` completa sem erros
50
+ - [ ] Nenhum warning crítico
51
+
52
+ ### 4. 👁️ Revisão Visual
53
+ - [ ] Comportamento esperado no browser
54
+ - [ ] Responsividade testada (se UI)
55
+ - [ ] Dark/Light mode testados (se aplicável)
56
+ ```
57
+
58
+ ---
59
+
60
+ ## 📋 COMANDOS POR STACK
61
+
62
+ ### Next.js / React
63
+
64
+ ```bash
65
+ # Dev server
66
+ npm run dev
67
+
68
+ # Testes
69
+ npm test
70
+ npm run test:coverage # Se disponível
71
+
72
+ # Build
73
+ npm run build
74
+
75
+ # Lint (opcional mas recomendado)
76
+ npm run lint
77
+ ```
78
+
79
+ ### HTML/CSS/JS Vanilla
80
+
81
+ ```bash
82
+ # Dev server (usar live-server ou similar)
83
+ npx live-server ./public
84
+
85
+ # Sem testes automáticos típicos
86
+ # Verificar manualmente no browser
87
+ ```
88
+
89
+ ### Python
90
+
91
+ ```bash
92
+ # Dev server
93
+ python -m http.server 8000 # Para sites estáticos
94
+ uvicorn app:main --reload # Para APIs
95
+
96
+ # Testes
97
+ pytest
98
+ pytest --cov # Com cobertura
99
+ ```
100
+
101
+ ---
102
+
103
+ ## 🔄 FLUXO DE IMPLEMENTAÇÃO
104
+
105
+ ```
106
+ Para CADA mudança/feature:
107
+
108
+ 1. ✏️ Modificar código
109
+
110
+ 2. 🖥️ npm run dev → Verificar no browser
111
+
112
+ 3. 🧪 npm test → Garantir que testes passam
113
+
114
+ 4. 🏗️ npm run build → Garantir que compila
115
+
116
+ 5. ✅ GATE PASSOU? → Commit
117
+
118
+ 6. ❌ GATE FALHOU? → Corrigir antes de commit
119
+ ```
120
+
121
+ ---
122
+
123
+ ## ⚠️ SE GATE FALHAR
124
+
125
+ ### Dev Server com Erro
126
+
127
+ ```markdown
128
+ ❌ **Dev Server Falhou**
129
+
130
+ **Erro:** {descrição do erro}
131
+
132
+ **Ações:**
133
+ 1. Verificar console para stack trace
134
+ 2. Corrigir erro de sintaxe/import
135
+ 3. Reiniciar dev server
136
+ 4. Tentar novamente
137
+ ```
138
+
139
+ ### Testes Falhando
140
+
141
+ ```markdown
142
+ ❌ **Testes Falharam**
143
+
144
+ **Testes quebrados:**
145
+ - {nome do teste 1}
146
+ - {nome do teste 2}
147
+
148
+ **Ações:**
149
+ 1. Verificar se a mudança impactou lógica existente
150
+ 2. Atualizar testes se comportamento mudou intencionalmente
151
+ 3. Corrigir código se for regressão
152
+ ```
153
+
154
+ ### Build Falhou
155
+
156
+ ```markdown
157
+ ❌ **Build Falhou**
158
+
159
+ **Erro:** {descrição}
160
+
161
+ **Ações:**
162
+ 1. Verificar TypeScript errors
163
+ 2. Verificar imports ausentes
164
+ 3. Verificar variáveis de ambiente
165
+ 4. Corrigir e tentar novamente
166
+ ```
167
+
168
+ ---
169
+
170
+ ## 🔴 REGRAS CRÍTICAS
171
+
172
+ 1. **NUNCA** commitar sem rodar verificação local
173
+ 2. **NUNCA** ignorar testes falhando
174
+ 3. **SEMPRE** verificar visualmente no browser antes de commit
175
+ 4. **SEMPRE** rodar build antes de push
176
+
177
+ ---
178
+
179
+ ## 📊 TEMPLATE DE REGISTRO
180
+
181
+ Ao completar verificação, registrar:
182
+
183
+ ```markdown
184
+ ### ✅ Verificação Local Completa
185
+
186
+ | Check | Status | Comando |
187
+ |-------|--------|---------|
188
+ | Dev Server | ✅ | `npm run dev` |
189
+ | Testes | ✅ | `npm test` (15 passed) |
190
+ | Build | ✅ | `npm run build` |
191
+ | Visual | ✅ | localhost:3000 |
192
+
193
+ **Pronto para commit.**
194
+ ```
195
+
@@ -0,0 +1,176 @@
1
+ ---
2
+ name: mcp-builder
3
+ description: MCP (Model Context Protocol) server building principles. Tool design, resource patterns, best practices.
4
+ allowed-tools: Read, Write, Edit, Glob, Grep
5
+ ---
6
+
7
+ # MCP Builder
8
+
9
+ > Principles for building MCP servers.
10
+
11
+ ---
12
+
13
+ ## 1. MCP Overview
14
+
15
+ ### What is MCP?
16
+
17
+ Model Context Protocol - standard for connecting AI systems with external tools and data sources.
18
+
19
+ ### Core Concepts
20
+
21
+ | Concept | Purpose |
22
+ |---------|---------|
23
+ | **Tools** | Functions AI can call |
24
+ | **Resources** | Data AI can read |
25
+ | **Prompts** | Pre-defined prompt templates |
26
+
27
+ ---
28
+
29
+ ## 2. Server Architecture
30
+
31
+ ### Project Structure
32
+
33
+ ```
34
+ my-mcp-server/
35
+ ├── src/
36
+ │ └── index.ts # Main entry
37
+ ├── package.json
38
+ └── tsconfig.json
39
+ ```
40
+
41
+ ### Transport Types
42
+
43
+ | Type | Use |
44
+ |------|-----|
45
+ | **Stdio** | Local, CLI-based |
46
+ | **SSE** | Web-based, streaming |
47
+ | **WebSocket** | Real-time, bidirectional |
48
+
49
+ ---
50
+
51
+ ## 3. Tool Design Principles
52
+
53
+ ### Good Tool Design
54
+
55
+ | Principle | Description |
56
+ |-----------|-------------|
57
+ | Clear name | Action-oriented (get_weather, create_user) |
58
+ | Single purpose | One thing well |
59
+ | Validated input | Schema with types and descriptions |
60
+ | Structured output | Predictable response format |
61
+
62
+ ### Input Schema Design
63
+
64
+ | Field | Required? |
65
+ |-------|-----------|
66
+ | Type | Yes - object |
67
+ | Properties | Define each param |
68
+ | Required | List mandatory params |
69
+ | Description | Human-readable |
70
+
71
+ ---
72
+
73
+ ## 4. Resource Patterns
74
+
75
+ ### Resource Types
76
+
77
+ | Type | Use |
78
+ |------|-----|
79
+ | Static | Fixed data (config, docs) |
80
+ | Dynamic | Generated on request |
81
+ | Template | URI with parameters |
82
+
83
+ ### URI Patterns
84
+
85
+ | Pattern | Example |
86
+ |---------|---------|
87
+ | Fixed | `docs://readme` |
88
+ | Parameterized | `users://{userId}` |
89
+ | Collection | `files://project/*` |
90
+
91
+ ---
92
+
93
+ ## 5. Error Handling
94
+
95
+ ### Error Types
96
+
97
+ | Situation | Response |
98
+ |-----------|----------|
99
+ | Invalid params | Validation error message |
100
+ | Not found | Clear "not found" |
101
+ | Server error | Generic error, log details |
102
+
103
+ ### Best Practices
104
+
105
+ - Return structured errors
106
+ - Don't expose internal details
107
+ - Log for debugging
108
+ - Provide actionable messages
109
+
110
+ ---
111
+
112
+ ## 6. Multimodal Handling
113
+
114
+ ### Supported Types
115
+
116
+ | Type | Encoding |
117
+ |------|----------|
118
+ | Text | Plain text |
119
+ | Images | Base64 + MIME type |
120
+ | Files | Base64 + MIME type |
121
+
122
+ ---
123
+
124
+ ## 7. Security Principles
125
+
126
+ ### Input Validation
127
+
128
+ - Validate all tool inputs
129
+ - Sanitize user-provided data
130
+ - Limit resource access
131
+
132
+ ### API Keys
133
+
134
+ - Use environment variables
135
+ - Don't log secrets
136
+ - Validate permissions
137
+
138
+ ---
139
+
140
+ ## 8. Configuration
141
+
142
+ ### Claude Desktop Config
143
+
144
+ | Field | Purpose |
145
+ |-------|---------|
146
+ | command | Executable to run |
147
+ | args | Command arguments |
148
+ | env | Environment variables |
149
+
150
+ ---
151
+
152
+ ## 9. Testing
153
+
154
+ ### Test Categories
155
+
156
+ | Type | Focus |
157
+ |------|-------|
158
+ | Unit | Tool logic |
159
+ | Integration | Full server |
160
+ | Contract | Schema validation |
161
+
162
+ ---
163
+
164
+ ## 10. Best Practices Checklist
165
+
166
+ - [ ] Clear, action-oriented tool names
167
+ - [ ] Complete input schemas with descriptions
168
+ - [ ] Structured JSON output
169
+ - [ ] Error handling for all cases
170
+ - [ ] Input validation
171
+ - [ ] Environment-based configuration
172
+ - [ ] Logging for debugging
173
+
174
+ ---
175
+
176
+ > **Remember:** MCP tools should be simple, focused, and well-documented. The AI relies on descriptions to use them correctly.