javi-forge 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 (500) hide show
  1. package/.gitignore.template +105 -0
  2. package/.releaserc +44 -0
  3. package/README.md +45 -0
  4. package/ai-config/.skillignore +15 -0
  5. package/ai-config/AUTO_INVOKE.md +300 -0
  6. package/ai-config/agents/_TEMPLATE.md +93 -0
  7. package/ai-config/agents/business/api-designer.md +1657 -0
  8. package/ai-config/agents/business/business-analyst.md +1331 -0
  9. package/ai-config/agents/business/product-strategist.md +206 -0
  10. package/ai-config/agents/business/project-manager.md +178 -0
  11. package/ai-config/agents/business/requirements-analyst.md +1277 -0
  12. package/ai-config/agents/business/technical-writer.md +1679 -0
  13. package/ai-config/agents/creative/ux-designer.md +205 -0
  14. package/ai-config/agents/data-ai/ai-engineer.md +487 -0
  15. package/ai-config/agents/data-ai/analytics-engineer.md +953 -0
  16. package/ai-config/agents/data-ai/data-engineer.md +173 -0
  17. package/ai-config/agents/data-ai/data-scientist.md +672 -0
  18. package/ai-config/agents/data-ai/mlops-engineer.md +814 -0
  19. package/ai-config/agents/data-ai/prompt-engineer.md +772 -0
  20. package/ai-config/agents/development/angular-expert.md +620 -0
  21. package/ai-config/agents/development/backend-architect.md +795 -0
  22. package/ai-config/agents/development/database-specialist.md +212 -0
  23. package/ai-config/agents/development/frontend-specialist.md +686 -0
  24. package/ai-config/agents/development/fullstack-engineer.md +668 -0
  25. package/ai-config/agents/development/golang-pro.md +338 -0
  26. package/ai-config/agents/development/java-enterprise.md +400 -0
  27. package/ai-config/agents/development/javascript-pro.md +422 -0
  28. package/ai-config/agents/development/nextjs-pro.md +474 -0
  29. package/ai-config/agents/development/python-pro.md +570 -0
  30. package/ai-config/agents/development/react-pro.md +487 -0
  31. package/ai-config/agents/development/rust-pro.md +246 -0
  32. package/ai-config/agents/development/spring-boot-4-expert.md +326 -0
  33. package/ai-config/agents/development/typescript-pro.md +336 -0
  34. package/ai-config/agents/development/vue-specialist.md +605 -0
  35. package/ai-config/agents/infrastructure/cloud-architect.md +472 -0
  36. package/ai-config/agents/infrastructure/deployment-manager.md +358 -0
  37. package/ai-config/agents/infrastructure/devops-engineer.md +455 -0
  38. package/ai-config/agents/infrastructure/incident-responder.md +519 -0
  39. package/ai-config/agents/infrastructure/kubernetes-expert.md +705 -0
  40. package/ai-config/agents/infrastructure/monitoring-specialist.md +674 -0
  41. package/ai-config/agents/infrastructure/performance-engineer.md +658 -0
  42. package/ai-config/agents/orchestrator.md +241 -0
  43. package/ai-config/agents/quality/accessibility-auditor.md +1204 -0
  44. package/ai-config/agents/quality/code-reviewer-compact.md +123 -0
  45. package/ai-config/agents/quality/code-reviewer.md +363 -0
  46. package/ai-config/agents/quality/dependency-manager.md +743 -0
  47. package/ai-config/agents/quality/e2e-test-specialist.md +1005 -0
  48. package/ai-config/agents/quality/performance-tester.md +1086 -0
  49. package/ai-config/agents/quality/security-auditor.md +133 -0
  50. package/ai-config/agents/quality/test-engineer.md +453 -0
  51. package/ai-config/agents/specialists/api-designer.md +87 -0
  52. package/ai-config/agents/specialists/backend-architect.md +73 -0
  53. package/ai-config/agents/specialists/code-reviewer.md +77 -0
  54. package/ai-config/agents/specialists/db-optimizer.md +75 -0
  55. package/ai-config/agents/specialists/devops-engineer.md +83 -0
  56. package/ai-config/agents/specialists/documentation-writer.md +78 -0
  57. package/ai-config/agents/specialists/frontend-developer.md +75 -0
  58. package/ai-config/agents/specialists/performance-analyst.md +82 -0
  59. package/ai-config/agents/specialists/refactor-specialist.md +74 -0
  60. package/ai-config/agents/specialists/security-auditor.md +74 -0
  61. package/ai-config/agents/specialists/test-engineer.md +81 -0
  62. package/ai-config/agents/specialists/ux-consultant.md +76 -0
  63. package/ai-config/agents/specialized/agent-generator.md +1190 -0
  64. package/ai-config/agents/specialized/blockchain-developer.md +149 -0
  65. package/ai-config/agents/specialized/code-migrator.md +892 -0
  66. package/ai-config/agents/specialized/context-manager.md +978 -0
  67. package/ai-config/agents/specialized/documentation-writer.md +1078 -0
  68. package/ai-config/agents/specialized/ecommerce-expert.md +1756 -0
  69. package/ai-config/agents/specialized/embedded-engineer.md +1714 -0
  70. package/ai-config/agents/specialized/error-detective.md +1034 -0
  71. package/ai-config/agents/specialized/fintech-specialist.md +1659 -0
  72. package/ai-config/agents/specialized/freelance-project-planner-v2.md +1988 -0
  73. package/ai-config/agents/specialized/freelance-project-planner-v3.md +2136 -0
  74. package/ai-config/agents/specialized/freelance-project-planner-v4.md +4503 -0
  75. package/ai-config/agents/specialized/freelance-project-planner.md +722 -0
  76. package/ai-config/agents/specialized/game-developer.md +1963 -0
  77. package/ai-config/agents/specialized/healthcare-dev.md +1620 -0
  78. package/ai-config/agents/specialized/mobile-developer.md +188 -0
  79. package/ai-config/agents/specialized/parallel-plan-executor.md +506 -0
  80. package/ai-config/agents/specialized/plan-executor.md +485 -0
  81. package/ai-config/agents/specialized/solo-dev-planner-modular/00-INDEX.md +485 -0
  82. package/ai-config/agents/specialized/solo-dev-planner-modular/01-CORE.md +3493 -0
  83. package/ai-config/agents/specialized/solo-dev-planner-modular/02-SELF-CORRECTION.md +778 -0
  84. package/ai-config/agents/specialized/solo-dev-planner-modular/03-PROGRESSIVE-SETUP.md +918 -0
  85. package/ai-config/agents/specialized/solo-dev-planner-modular/04-DEPLOYMENT.md +1537 -0
  86. package/ai-config/agents/specialized/solo-dev-planner-modular/05-TESTING.md +2633 -0
  87. package/ai-config/agents/specialized/solo-dev-planner-modular/06-OPERATIONS.md +5610 -0
  88. package/ai-config/agents/specialized/solo-dev-planner-modular/INSTALL.md +335 -0
  89. package/ai-config/agents/specialized/solo-dev-planner-modular/QUICK-REFERENCE.txt +215 -0
  90. package/ai-config/agents/specialized/solo-dev-planner-modular/README.md +260 -0
  91. package/ai-config/agents/specialized/solo-dev-planner-modular/START-HERE.md +379 -0
  92. package/ai-config/agents/specialized/solo-dev-planner-modular/WORKFLOW-DIAGRAM.md +355 -0
  93. package/ai-config/agents/specialized/solo-dev-planner-modular/solo-dev-planner.md +279 -0
  94. package/ai-config/agents/specialized/template-writer.md +347 -0
  95. package/ai-config/agents/specialized/test-runner.md +99 -0
  96. package/ai-config/agents/specialized/vibekanban-smart-worker.md +244 -0
  97. package/ai-config/agents/specialized/wave-executor.md +138 -0
  98. package/ai-config/agents/specialized/workflow-optimizer.md +1114 -0
  99. package/ai-config/commands/git/changelog.md +32 -0
  100. package/ai-config/commands/git/ci-local.md +70 -0
  101. package/ai-config/commands/git/commit.md +35 -0
  102. package/ai-config/commands/git/fix-issue.md +23 -0
  103. package/ai-config/commands/git/pr-create.md +42 -0
  104. package/ai-config/commands/git/pr-review.md +50 -0
  105. package/ai-config/commands/git/worktree.md +39 -0
  106. package/ai-config/commands/refactoring/cleanup.md +24 -0
  107. package/ai-config/commands/refactoring/dead-code.md +40 -0
  108. package/ai-config/commands/refactoring/extract.md +31 -0
  109. package/ai-config/commands/testing/e2e.md +30 -0
  110. package/ai-config/commands/testing/tdd.md +36 -0
  111. package/ai-config/commands/testing/test-coverage.md +30 -0
  112. package/ai-config/commands/testing/test-fix.md +24 -0
  113. package/ai-config/commands/workflow/generate-agents-md.md +85 -0
  114. package/ai-config/commands/workflow/planning.md +47 -0
  115. package/ai-config/commands/workflows/compound.md +89 -0
  116. package/ai-config/commands/workflows/plan.md +77 -0
  117. package/ai-config/commands/workflows/review.md +78 -0
  118. package/ai-config/commands/workflows/work.md +75 -0
  119. package/ai-config/config.yaml +18 -0
  120. package/ai-config/hooks/_TEMPLATE.md +96 -0
  121. package/ai-config/hooks/block-dangerous-commands.md +75 -0
  122. package/ai-config/hooks/commit-guard.md +90 -0
  123. package/ai-config/hooks/context-loader.md +73 -0
  124. package/ai-config/hooks/improve-prompt.md +91 -0
  125. package/ai-config/hooks/learning-log.md +72 -0
  126. package/ai-config/hooks/model-router.md +86 -0
  127. package/ai-config/hooks/secret-scanner.md +64 -0
  128. package/ai-config/hooks/skill-validator.md +102 -0
  129. package/ai-config/hooks/task-artifact.md +114 -0
  130. package/ai-config/hooks/validate-workflow.md +100 -0
  131. package/ai-config/prompts/base.md +71 -0
  132. package/ai-config/prompts/modes/debug.md +34 -0
  133. package/ai-config/prompts/modes/deploy.md +40 -0
  134. package/ai-config/prompts/modes/research.md +32 -0
  135. package/ai-config/prompts/modes/review.md +33 -0
  136. package/ai-config/prompts/review-policy.md +79 -0
  137. package/ai-config/skills/_TEMPLATE.md +157 -0
  138. package/ai-config/skills/backend/api-gateway/SKILL.md +254 -0
  139. package/ai-config/skills/backend/bff-concepts/SKILL.md +239 -0
  140. package/ai-config/skills/backend/bff-spring/SKILL.md +364 -0
  141. package/ai-config/skills/backend/chi-router/SKILL.md +396 -0
  142. package/ai-config/skills/backend/error-handling/SKILL.md +255 -0
  143. package/ai-config/skills/backend/exceptions-spring/SKILL.md +323 -0
  144. package/ai-config/skills/backend/fastapi/SKILL.md +302 -0
  145. package/ai-config/skills/backend/gateway-spring/SKILL.md +390 -0
  146. package/ai-config/skills/backend/go-backend/SKILL.md +457 -0
  147. package/ai-config/skills/backend/gradle-multimodule/SKILL.md +274 -0
  148. package/ai-config/skills/backend/graphql-concepts/SKILL.md +352 -0
  149. package/ai-config/skills/backend/graphql-spring/SKILL.md +398 -0
  150. package/ai-config/skills/backend/grpc-concepts/SKILL.md +283 -0
  151. package/ai-config/skills/backend/grpc-spring/SKILL.md +445 -0
  152. package/ai-config/skills/backend/jwt-auth/SKILL.md +412 -0
  153. package/ai-config/skills/backend/notifications-concepts/SKILL.md +259 -0
  154. package/ai-config/skills/backend/recommendations-concepts/SKILL.md +261 -0
  155. package/ai-config/skills/backend/search-concepts/SKILL.md +263 -0
  156. package/ai-config/skills/backend/search-spring/SKILL.md +375 -0
  157. package/ai-config/skills/backend/spring-boot-4/SKILL.md +172 -0
  158. package/ai-config/skills/backend/websockets/SKILL.md +532 -0
  159. package/ai-config/skills/data-ai/ai-ml/SKILL.md +423 -0
  160. package/ai-config/skills/data-ai/analytics-concepts/SKILL.md +195 -0
  161. package/ai-config/skills/data-ai/analytics-spring/SKILL.md +340 -0
  162. package/ai-config/skills/data-ai/duckdb-analytics/SKILL.md +440 -0
  163. package/ai-config/skills/data-ai/langchain/SKILL.md +238 -0
  164. package/ai-config/skills/data-ai/mlflow/SKILL.md +302 -0
  165. package/ai-config/skills/data-ai/onnx-inference/SKILL.md +290 -0
  166. package/ai-config/skills/data-ai/powerbi/SKILL.md +352 -0
  167. package/ai-config/skills/data-ai/pytorch/SKILL.md +274 -0
  168. package/ai-config/skills/data-ai/scikit-learn/SKILL.md +321 -0
  169. package/ai-config/skills/data-ai/vector-db/SKILL.md +301 -0
  170. package/ai-config/skills/database/graph-databases/SKILL.md +218 -0
  171. package/ai-config/skills/database/graph-spring/SKILL.md +361 -0
  172. package/ai-config/skills/database/pgx-postgres/SKILL.md +512 -0
  173. package/ai-config/skills/database/redis-cache/SKILL.md +343 -0
  174. package/ai-config/skills/database/sqlite-embedded/SKILL.md +388 -0
  175. package/ai-config/skills/database/timescaledb/SKILL.md +320 -0
  176. package/ai-config/skills/docs/api-documentation/SKILL.md +293 -0
  177. package/ai-config/skills/docs/docs-spring/SKILL.md +377 -0
  178. package/ai-config/skills/docs/mustache-templates/SKILL.md +190 -0
  179. package/ai-config/skills/docs/technical-docs/SKILL.md +447 -0
  180. package/ai-config/skills/frontend/astro-ssr/SKILL.md +441 -0
  181. package/ai-config/skills/frontend/frontend-design/SKILL.md +54 -0
  182. package/ai-config/skills/frontend/frontend-web/SKILL.md +368 -0
  183. package/ai-config/skills/frontend/mantine-ui/SKILL.md +396 -0
  184. package/ai-config/skills/frontend/tanstack-query/SKILL.md +439 -0
  185. package/ai-config/skills/frontend/zod-validation/SKILL.md +417 -0
  186. package/ai-config/skills/frontend/zustand-state/SKILL.md +350 -0
  187. package/ai-config/skills/infrastructure/chaos-engineering/SKILL.md +244 -0
  188. package/ai-config/skills/infrastructure/chaos-spring/SKILL.md +378 -0
  189. package/ai-config/skills/infrastructure/devops-infra/SKILL.md +435 -0
  190. package/ai-config/skills/infrastructure/docker-containers/SKILL.md +420 -0
  191. package/ai-config/skills/infrastructure/kubernetes/SKILL.md +456 -0
  192. package/ai-config/skills/infrastructure/opentelemetry/SKILL.md +546 -0
  193. package/ai-config/skills/infrastructure/traefik-proxy/SKILL.md +474 -0
  194. package/ai-config/skills/infrastructure/woodpecker-ci/SKILL.md +315 -0
  195. package/ai-config/skills/mobile/ionic-capacitor/SKILL.md +504 -0
  196. package/ai-config/skills/mobile/mobile-ionic/SKILL.md +448 -0
  197. package/ai-config/skills/prompt-improver/SKILL.md +125 -0
  198. package/ai-config/skills/quality/ghagga-review/SKILL.md +216 -0
  199. package/ai-config/skills/references/hooks-patterns/SKILL.md +238 -0
  200. package/ai-config/skills/references/mcp-servers/SKILL.md +275 -0
  201. package/ai-config/skills/references/plugins-reference/SKILL.md +110 -0
  202. package/ai-config/skills/references/skills-reference/SKILL.md +420 -0
  203. package/ai-config/skills/references/subagent-templates/SKILL.md +193 -0
  204. package/ai-config/skills/systems-iot/modbus-protocol/SKILL.md +410 -0
  205. package/ai-config/skills/systems-iot/mqtt-rumqttc/SKILL.md +408 -0
  206. package/ai-config/skills/systems-iot/rust-systems/SKILL.md +386 -0
  207. package/ai-config/skills/systems-iot/tokio-async/SKILL.md +324 -0
  208. package/ai-config/skills/testing/playwright-e2e/SKILL.md +289 -0
  209. package/ai-config/skills/testing/testcontainers/SKILL.md +299 -0
  210. package/ai-config/skills/testing/vitest-testing/SKILL.md +381 -0
  211. package/ai-config/skills/workflow/ci-local-guide/SKILL.md +118 -0
  212. package/ai-config/skills/workflow/claude-automation-recommender/SKILL.md +299 -0
  213. package/ai-config/skills/workflow/claude-md-improver/SKILL.md +158 -0
  214. package/ai-config/skills/workflow/finishing-a-development-branch/SKILL.md +117 -0
  215. package/ai-config/skills/workflow/git-github/SKILL.md +334 -0
  216. package/ai-config/skills/workflow/git-github/references/examples.md +160 -0
  217. package/ai-config/skills/workflow/git-workflow/SKILL.md +214 -0
  218. package/ai-config/skills/workflow/ide-plugins/SKILL.md +277 -0
  219. package/ai-config/skills/workflow/ide-plugins-intellij/SKILL.md +401 -0
  220. package/ai-config/skills/workflow/obsidian-brain-workflow/SKILL.md +199 -0
  221. package/ai-config/skills/workflow/using-git-worktrees/SKILL.md +100 -0
  222. package/ai-config/skills/workflow/verification-before-completion/SKILL.md +73 -0
  223. package/ai-config/skills/workflow/wave-workflow/SKILL.md +178 -0
  224. package/ci-local/README.md +170 -0
  225. package/ci-local/ci-local.sh +297 -0
  226. package/ci-local/hooks/commit-msg +74 -0
  227. package/ci-local/hooks/pre-commit +162 -0
  228. package/ci-local/hooks/pre-push +41 -0
  229. package/ci-local/install.sh +49 -0
  230. package/ci-local/semgrep.yml +214 -0
  231. package/dist/commands/analyze.d.ts +9 -0
  232. package/dist/commands/analyze.d.ts.map +1 -0
  233. package/dist/commands/analyze.js +55 -0
  234. package/dist/commands/analyze.js.map +1 -0
  235. package/dist/commands/analyze.test.d.ts +2 -0
  236. package/dist/commands/analyze.test.d.ts.map +1 -0
  237. package/dist/commands/analyze.test.js +145 -0
  238. package/dist/commands/analyze.test.js.map +1 -0
  239. package/dist/commands/doctor.d.ts +7 -0
  240. package/dist/commands/doctor.d.ts.map +1 -0
  241. package/dist/commands/doctor.js +158 -0
  242. package/dist/commands/doctor.js.map +1 -0
  243. package/dist/commands/doctor.test.d.ts +2 -0
  244. package/dist/commands/doctor.test.d.ts.map +1 -0
  245. package/dist/commands/doctor.test.js +200 -0
  246. package/dist/commands/doctor.test.js.map +1 -0
  247. package/dist/commands/init.d.ts +9 -0
  248. package/dist/commands/init.d.ts.map +1 -0
  249. package/dist/commands/init.js +283 -0
  250. package/dist/commands/init.js.map +1 -0
  251. package/dist/commands/init.test.d.ts +2 -0
  252. package/dist/commands/init.test.d.ts.map +1 -0
  253. package/dist/commands/init.test.js +271 -0
  254. package/dist/commands/init.test.js.map +1 -0
  255. package/dist/commands/sync.d.ts +8 -0
  256. package/dist/commands/sync.d.ts.map +1 -0
  257. package/dist/commands/sync.js +201 -0
  258. package/dist/commands/sync.js.map +1 -0
  259. package/dist/constants.d.ts +21 -0
  260. package/dist/constants.d.ts.map +1 -0
  261. package/dist/constants.js +57 -0
  262. package/dist/constants.js.map +1 -0
  263. package/dist/e2e/aggressive.e2e.test.d.ts +2 -0
  264. package/dist/e2e/aggressive.e2e.test.d.ts.map +1 -0
  265. package/dist/e2e/aggressive.e2e.test.js +350 -0
  266. package/dist/e2e/aggressive.e2e.test.js.map +1 -0
  267. package/dist/e2e/commands.e2e.test.d.ts +2 -0
  268. package/dist/e2e/commands.e2e.test.d.ts.map +1 -0
  269. package/dist/e2e/commands.e2e.test.js +213 -0
  270. package/dist/e2e/commands.e2e.test.js.map +1 -0
  271. package/dist/index.d.ts +3 -0
  272. package/dist/index.d.ts.map +1 -0
  273. package/dist/index.js +82 -0
  274. package/dist/index.js.map +1 -0
  275. package/dist/lib/common.d.ts +17 -0
  276. package/dist/lib/common.d.ts.map +1 -0
  277. package/dist/lib/common.js +111 -0
  278. package/dist/lib/common.js.map +1 -0
  279. package/dist/lib/common.test.d.ts +2 -0
  280. package/dist/lib/common.test.d.ts.map +1 -0
  281. package/dist/lib/common.test.js +316 -0
  282. package/dist/lib/common.test.js.map +1 -0
  283. package/dist/lib/frontmatter.d.ts +18 -0
  284. package/dist/lib/frontmatter.d.ts.map +1 -0
  285. package/dist/lib/frontmatter.js +61 -0
  286. package/dist/lib/frontmatter.js.map +1 -0
  287. package/dist/lib/frontmatter.test.d.ts +2 -0
  288. package/dist/lib/frontmatter.test.d.ts.map +1 -0
  289. package/dist/lib/frontmatter.test.js +257 -0
  290. package/dist/lib/frontmatter.test.js.map +1 -0
  291. package/dist/lib/template.d.ts +24 -0
  292. package/dist/lib/template.d.ts.map +1 -0
  293. package/dist/lib/template.js +78 -0
  294. package/dist/lib/template.js.map +1 -0
  295. package/dist/lib/template.test.d.ts +2 -0
  296. package/dist/lib/template.test.d.ts.map +1 -0
  297. package/dist/lib/template.test.js +201 -0
  298. package/dist/lib/template.test.js.map +1 -0
  299. package/dist/types/index.d.ts +48 -0
  300. package/dist/types/index.d.ts.map +1 -0
  301. package/dist/types/index.js +2 -0
  302. package/dist/types/index.js.map +1 -0
  303. package/dist/ui/AnalyzeUI.d.ts +7 -0
  304. package/dist/ui/AnalyzeUI.d.ts.map +1 -0
  305. package/dist/ui/AnalyzeUI.js +100 -0
  306. package/dist/ui/AnalyzeUI.js.map +1 -0
  307. package/dist/ui/App.d.ts +13 -0
  308. package/dist/ui/App.d.ts.map +1 -0
  309. package/dist/ui/App.js +100 -0
  310. package/dist/ui/App.js.map +1 -0
  311. package/dist/ui/CIContext.d.ts +9 -0
  312. package/dist/ui/CIContext.d.ts.map +1 -0
  313. package/dist/ui/CIContext.js +9 -0
  314. package/dist/ui/CIContext.js.map +1 -0
  315. package/dist/ui/CISelector.d.ts +8 -0
  316. package/dist/ui/CISelector.d.ts.map +1 -0
  317. package/dist/ui/CISelector.js +45 -0
  318. package/dist/ui/CISelector.js.map +1 -0
  319. package/dist/ui/Doctor.d.ts +3 -0
  320. package/dist/ui/Doctor.d.ts.map +1 -0
  321. package/dist/ui/Doctor.js +89 -0
  322. package/dist/ui/Doctor.js.map +1 -0
  323. package/dist/ui/Header.d.ts +8 -0
  324. package/dist/ui/Header.d.ts.map +1 -0
  325. package/dist/ui/Header.js +30 -0
  326. package/dist/ui/Header.js.map +1 -0
  327. package/dist/ui/MemorySelector.d.ts +8 -0
  328. package/dist/ui/MemorySelector.d.ts.map +1 -0
  329. package/dist/ui/MemorySelector.js +46 -0
  330. package/dist/ui/MemorySelector.js.map +1 -0
  331. package/dist/ui/NameInput.d.ts +8 -0
  332. package/dist/ui/NameInput.d.ts.map +1 -0
  333. package/dist/ui/NameInput.js +69 -0
  334. package/dist/ui/NameInput.js.map +1 -0
  335. package/dist/ui/OptionSelector.d.ts +12 -0
  336. package/dist/ui/OptionSelector.d.ts.map +1 -0
  337. package/dist/ui/OptionSelector.js +69 -0
  338. package/dist/ui/OptionSelector.js.map +1 -0
  339. package/dist/ui/Progress.d.ts +11 -0
  340. package/dist/ui/Progress.d.ts.map +1 -0
  341. package/dist/ui/Progress.js +58 -0
  342. package/dist/ui/Progress.js.map +1 -0
  343. package/dist/ui/StackSelector.d.ts +9 -0
  344. package/dist/ui/StackSelector.d.ts.map +1 -0
  345. package/dist/ui/StackSelector.js +65 -0
  346. package/dist/ui/StackSelector.js.map +1 -0
  347. package/dist/ui/Summary.d.ts +12 -0
  348. package/dist/ui/Summary.d.ts.map +1 -0
  349. package/dist/ui/Summary.js +114 -0
  350. package/dist/ui/Summary.js.map +1 -0
  351. package/dist/ui/SyncUI.d.ts +10 -0
  352. package/dist/ui/SyncUI.d.ts.map +1 -0
  353. package/dist/ui/SyncUI.js +64 -0
  354. package/dist/ui/SyncUI.js.map +1 -0
  355. package/dist/ui/Welcome.d.ts +7 -0
  356. package/dist/ui/Welcome.d.ts.map +1 -0
  357. package/dist/ui/Welcome.js +45 -0
  358. package/dist/ui/Welcome.js.map +1 -0
  359. package/dist/ui/theme.d.ts +10 -0
  360. package/dist/ui/theme.d.ts.map +1 -0
  361. package/dist/ui/theme.js +9 -0
  362. package/dist/ui/theme.js.map +1 -0
  363. package/modules/engram/.gitignore-snippet.txt +6 -0
  364. package/modules/engram/.mcp-config-snippet.json +11 -0
  365. package/modules/engram/README.md +146 -0
  366. package/modules/engram/install-engram.sh +216 -0
  367. package/modules/ghagga/.env.example +43 -0
  368. package/modules/ghagga/README.md +153 -0
  369. package/modules/ghagga/docker-compose.yml +80 -0
  370. package/modules/ghagga/setup-ghagga.sh +139 -0
  371. package/modules/memory-simple/.project/NOTES.md +22 -0
  372. package/modules/memory-simple/README.md +23 -0
  373. package/modules/obsidian-brain/.obsidian/app.json +23 -0
  374. package/modules/obsidian-brain/.obsidian/appearance.json +5 -0
  375. package/modules/obsidian-brain/.obsidian/bookmarks.json +34 -0
  376. package/modules/obsidian-brain/.obsidian/community-plugins.json +1 -0
  377. package/modules/obsidian-brain/.obsidian/core-plugins-migration.json +21 -0
  378. package/modules/obsidian-brain/.obsidian/core-plugins.json +18 -0
  379. package/modules/obsidian-brain/.obsidian/daily-notes.json +5 -0
  380. package/modules/obsidian-brain/.obsidian/graph.json +37 -0
  381. package/modules/obsidian-brain/.obsidian/hotkeys.json +14 -0
  382. package/modules/obsidian-brain/.obsidian/plugins/dataview/data.json +25 -0
  383. package/modules/obsidian-brain/.obsidian/plugins/obsidian-kanban/data.json +29 -0
  384. package/modules/obsidian-brain/.obsidian/plugins/templater-obsidian/data.json +18 -0
  385. package/modules/obsidian-brain/.obsidian/snippets/project-memory.css +71 -0
  386. package/modules/obsidian-brain/.obsidian-gitignore-snippet.txt +8 -0
  387. package/modules/obsidian-brain/.project/Attachments/.gitkeep +0 -0
  388. package/modules/obsidian-brain/.project/Memory/BLOCKERS.md +78 -0
  389. package/modules/obsidian-brain/.project/Memory/CONTEXT.md +102 -0
  390. package/modules/obsidian-brain/.project/Memory/DASHBOARD.md +73 -0
  391. package/modules/obsidian-brain/.project/Memory/DECISIONS.md +87 -0
  392. package/modules/obsidian-brain/.project/Memory/KANBAN.md +15 -0
  393. package/modules/obsidian-brain/.project/Memory/README.md +61 -0
  394. package/modules/obsidian-brain/.project/Memory/WAVES.md +78 -0
  395. package/modules/obsidian-brain/.project/Sessions/TEMPLATE.md +99 -0
  396. package/modules/obsidian-brain/.project/Templates/ADR.md +33 -0
  397. package/modules/obsidian-brain/.project/Templates/Blocker.md +21 -0
  398. package/modules/obsidian-brain/.project/Templates/Session.md +88 -0
  399. package/modules/obsidian-brain/README.md +268 -0
  400. package/modules/obsidian-brain/new-wave.sh +182 -0
  401. package/package.json +51 -0
  402. package/schemas/agent.schema.json +34 -0
  403. package/schemas/ai-config.schema.json +28 -0
  404. package/schemas/skill.schema.json +44 -0
  405. package/src/commands/analyze.test.ts +145 -0
  406. package/src/commands/analyze.ts +69 -0
  407. package/src/commands/doctor.test.ts +208 -0
  408. package/src/commands/doctor.ts +163 -0
  409. package/src/commands/init.test.ts +298 -0
  410. package/src/commands/init.ts +285 -0
  411. package/src/constants.ts +69 -0
  412. package/src/e2e/aggressive.e2e.test.ts +557 -0
  413. package/src/e2e/commands.e2e.test.ts +298 -0
  414. package/src/index.tsx +106 -0
  415. package/src/lib/common.test.ts +318 -0
  416. package/src/lib/common.ts +127 -0
  417. package/src/lib/frontmatter.test.ts +291 -0
  418. package/src/lib/frontmatter.ts +77 -0
  419. package/src/lib/template.test.ts +226 -0
  420. package/src/lib/template.ts +99 -0
  421. package/src/types/index.ts +53 -0
  422. package/src/ui/AnalyzeUI.tsx +133 -0
  423. package/src/ui/App.tsx +175 -0
  424. package/src/ui/CIContext.tsx +25 -0
  425. package/src/ui/CISelector.tsx +72 -0
  426. package/src/ui/Doctor.tsx +122 -0
  427. package/src/ui/Header.tsx +48 -0
  428. package/src/ui/MemorySelector.tsx +73 -0
  429. package/src/ui/NameInput.tsx +82 -0
  430. package/src/ui/OptionSelector.tsx +100 -0
  431. package/src/ui/Progress.tsx +88 -0
  432. package/src/ui/StackSelector.tsx +101 -0
  433. package/src/ui/Summary.tsx +134 -0
  434. package/src/ui/Welcome.tsx +54 -0
  435. package/src/ui/theme.ts +10 -0
  436. package/stryker.config.json +19 -0
  437. package/tasks/_TEMPLATE/files-edited.md +3 -0
  438. package/tasks/_TEMPLATE/plan.md +3 -0
  439. package/tasks/_TEMPLATE/research.md +3 -0
  440. package/tasks/_TEMPLATE/verification.md +5 -0
  441. package/templates/common/dependabot/cargo.yml +11 -0
  442. package/templates/common/dependabot/github-actions.yml +16 -0
  443. package/templates/common/dependabot/gomod.yml +15 -0
  444. package/templates/common/dependabot/gradle.yml +15 -0
  445. package/templates/common/dependabot/header.yml +3 -0
  446. package/templates/common/dependabot/maven.yml +15 -0
  447. package/templates/common/dependabot/npm.yml +20 -0
  448. package/templates/common/dependabot/pip.yml +11 -0
  449. package/templates/dependabot.yml +162 -0
  450. package/templates/github/ci-go.yml +41 -0
  451. package/templates/github/ci-java.yml +45 -0
  452. package/templates/github/ci-monorepo.yml +150 -0
  453. package/templates/github/ci-node.yml +42 -0
  454. package/templates/github/ci-python.yml +42 -0
  455. package/templates/github/ci-rust.yml +42 -0
  456. package/templates/github/dependabot-automerge.yml +40 -0
  457. package/templates/gitlab/gitlab-ci-go.yml +88 -0
  458. package/templates/gitlab/gitlab-ci-java.yml +79 -0
  459. package/templates/gitlab/gitlab-ci-monorepo.yml +126 -0
  460. package/templates/gitlab/gitlab-ci-node.yml +63 -0
  461. package/templates/gitlab/gitlab-ci-python.yml +147 -0
  462. package/templates/gitlab/gitlab-ci-rust.yml +67 -0
  463. package/templates/global/claude-settings.json +98 -0
  464. package/templates/global/codex-config.toml +8 -0
  465. package/templates/global/copilot-instructions/base-rules.instructions.md +13 -0
  466. package/templates/global/copilot-instructions/sdd-orchestrator.instructions.md +37 -0
  467. package/templates/global/gemini-commands/cleanup.toml +20 -0
  468. package/templates/global/gemini-commands/commit.toml +15 -0
  469. package/templates/global/gemini-commands/dead-code.toml +22 -0
  470. package/templates/global/gemini-commands/plan.toml +30 -0
  471. package/templates/global/gemini-commands/review.toml +17 -0
  472. package/templates/global/gemini-commands/sdd-apply.toml +22 -0
  473. package/templates/global/gemini-commands/sdd-ff.toml +14 -0
  474. package/templates/global/gemini-commands/sdd-new.toml +21 -0
  475. package/templates/global/gemini-commands/sdd-verify.toml +21 -0
  476. package/templates/global/gemini-commands/tdd.toml +26 -0
  477. package/templates/global/gemini-settings.json +8 -0
  478. package/templates/global/opencode-config.json +44 -0
  479. package/templates/global/sdd-instructions.md +47 -0
  480. package/templates/global/sdd-orchestrator-claude.md +46 -0
  481. package/templates/global/sdd-orchestrator-copilot.md +34 -0
  482. package/templates/renovate.json +69 -0
  483. package/templates/woodpecker/monorepo/backend.yml +34 -0
  484. package/templates/woodpecker/monorepo/frontend.yml +34 -0
  485. package/templates/woodpecker/monorepo/summary.yml +25 -0
  486. package/templates/woodpecker/woodpecker-go.yml +51 -0
  487. package/templates/woodpecker/woodpecker-java.yml +67 -0
  488. package/templates/woodpecker/woodpecker-node.yml +47 -0
  489. package/templates/woodpecker/woodpecker-python.yml +108 -0
  490. package/templates/woodpecker/woodpecker-rust.yml +57 -0
  491. package/tsconfig.json +19 -0
  492. package/vitest.config.ts +16 -0
  493. package/workflows/reusable-build-go.yml +111 -0
  494. package/workflows/reusable-build-java.yml +120 -0
  495. package/workflows/reusable-build-node.yml +145 -0
  496. package/workflows/reusable-build-python.yml +159 -0
  497. package/workflows/reusable-build-rust.yml +135 -0
  498. package/workflows/reusable-docker.yml +120 -0
  499. package/workflows/reusable-ghagga-review.yml +165 -0
  500. package/workflows/reusable-release.yml +91 -0
@@ -0,0 +1,216 @@
1
+ #!/bin/bash
2
+ # =============================================================================
3
+ # INSTALL-ENGRAM: Instala Engram memory server para AI agents
4
+ # =============================================================================
5
+ # Uso:
6
+ # ./install-engram.sh # Instalar ultima version
7
+ # ./install-engram.sh --check # Solo verificar si esta instalado
8
+ # ./install-engram.sh --mcp-config # Generar config MCP
9
+ # ./install-engram.sh --no-verify # Instalar sin verificar checksum (NO RECOMENDADO)
10
+ # =============================================================================
11
+
12
+ set -e
13
+
14
+ RED='\033[0;31m'
15
+ GREEN='\033[0;32m'
16
+ YELLOW='\033[1;33m'
17
+ CYAN='\033[0;36m'
18
+ NC='\033[0m'
19
+
20
+ REPO="Gentleman-Programming/engram"
21
+ INSTALL_DIR="${ENGRAM_INSTALL_DIR:-$HOME/.local/bin}"
22
+ NO_VERIFY=false
23
+
24
+ # =============================================================================
25
+ # Helpers
26
+ # =============================================================================
27
+
28
+ check_installed() {
29
+ if command -v engram &> /dev/null; then
30
+ local version
31
+ version=$(engram --version 2>/dev/null || echo "unknown")
32
+ echo -e "${GREEN}Engram ya instalado: $version${NC}"
33
+ echo -e " Path: $(which engram)"
34
+ return 0
35
+ fi
36
+ return 1
37
+ }
38
+
39
+ detect_platform() {
40
+ local os arch
41
+
42
+ case "$(uname -s)" in
43
+ Linux*) os="Linux" ;;
44
+ Darwin*) os="Darwin" ;;
45
+ MINGW*|MSYS*|CYGWIN*) os="Windows" ;;
46
+ *) echo -e "${RED}OS no soportado: $(uname -s)${NC}"; exit 1 ;;
47
+ esac
48
+
49
+ case "$(uname -m)" in
50
+ x86_64|amd64) arch="x86_64" ;;
51
+ arm64|aarch64) arch="arm64" ;;
52
+ *) echo -e "${RED}Arquitectura no soportada: $(uname -m)${NC}"; exit 1 ;;
53
+ esac
54
+
55
+ echo "${os}_${arch}"
56
+ }
57
+
58
+ get_latest_version() {
59
+ curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" \
60
+ | grep '"tag_name"' \
61
+ | head -1 \
62
+ | sed 's/.*"tag_name": *"//;s/".*//'
63
+ }
64
+
65
+ generate_mcp_config() {
66
+ local project_name="${1:-$(basename "$(pwd)")}"
67
+ cat << EOF
68
+ {
69
+ "mcpServers": {
70
+ "engram": {
71
+ "command": "engram",
72
+ "args": ["mcp"],
73
+ "env": {
74
+ "ENGRAM_PROJECT": "${project_name}"
75
+ }
76
+ }
77
+ }
78
+ }
79
+ EOF
80
+ }
81
+
82
+ # =============================================================================
83
+ # Main
84
+ # =============================================================================
85
+
86
+ case "${1:-install}" in
87
+ --check)
88
+ if check_installed; then
89
+ exit 0
90
+ else
91
+ echo -e "${YELLOW}Engram no instalado${NC}"
92
+ exit 1
93
+ fi
94
+ ;;
95
+ --mcp-config)
96
+ generate_mcp_config "$2"
97
+ exit 0
98
+ ;;
99
+ --no-verify)
100
+ NO_VERIFY=true
101
+ ;;
102
+ install|"")
103
+ ;;
104
+ *)
105
+ echo "Uso: $0 [--check|--mcp-config [project-name]|--no-verify]"
106
+ exit 1
107
+ ;;
108
+ esac
109
+
110
+ echo -e "${CYAN}=== Instalando Engram ===${NC}"
111
+
112
+ # Verificar si ya existe
113
+ if check_installed; then
114
+ read -p " Reinstalar? [y/N]: " REINSTALL
115
+ [[ "$REINSTALL" != "y" && "$REINSTALL" != "Y" ]] && exit 0
116
+ fi
117
+
118
+ # Detectar plataforma
119
+ PLATFORM=$(detect_platform)
120
+ echo -e "${YELLOW}Plataforma: ${PLATFORM}${NC}"
121
+
122
+ # Obtener ultima version
123
+ echo -e "${YELLOW}Buscando ultima version...${NC}"
124
+ VERSION=$(get_latest_version)
125
+ if [[ -z "$VERSION" ]]; then
126
+ echo -e "${RED}No se pudo obtener la ultima version${NC}"
127
+ echo -e "${YELLOW}Instala manualmente desde: https://github.com/${REPO}/releases${NC}"
128
+ exit 1
129
+ fi
130
+ echo -e "${GREEN}Version: ${VERSION}${NC}"
131
+
132
+ # Construir URL de descarga
133
+ ARCHIVE_NAME="engram_${PLATFORM}.tar.gz"
134
+ if [[ "$PLATFORM" == Windows_* ]]; then
135
+ ARCHIVE_NAME="engram_${PLATFORM}.zip"
136
+ fi
137
+ DOWNLOAD_URL="https://github.com/${REPO}/releases/download/${VERSION}/${ARCHIVE_NAME}"
138
+
139
+ # Descargar
140
+ echo -e "${YELLOW}Descargando ${DOWNLOAD_URL}...${NC}"
141
+ TMP_DIR=$(mktemp -d)
142
+ chmod 700 "$TMP_DIR"
143
+ trap 'rm -rf "$TMP_DIR"' EXIT
144
+
145
+ if ! curl -fsSL -o "${TMP_DIR}/${ARCHIVE_NAME}" "$DOWNLOAD_URL"; then
146
+ echo -e "${RED}Error descargando. Verifica la URL:${NC}"
147
+ echo -e " ${DOWNLOAD_URL}"
148
+ echo -e "${YELLOW}Releases disponibles: https://github.com/${REPO}/releases${NC}"
149
+ exit 1
150
+ fi
151
+
152
+ # Verify checksum (mandatory by default)
153
+ CHECKSUM_URL="https://github.com/${REPO}/releases/download/${VERSION}/checksums.txt"
154
+ if curl -fsSL -o "${TMP_DIR}/checksums.txt" "$CHECKSUM_URL" 2>/dev/null; then
155
+ echo -e "${CYAN}Verifying checksum...${NC}"
156
+ pushd "$TMP_DIR" > /dev/null
157
+ if command -v sha256sum &>/dev/null; then
158
+ sha256sum -c checksums.txt --ignore-missing || {
159
+ echo -e "${RED}Checksum verification failed!${NC}"
160
+ exit 1
161
+ }
162
+ elif command -v shasum &>/dev/null; then
163
+ shasum -a 256 -c checksums.txt --ignore-missing || {
164
+ echo -e "${RED}Checksum verification failed!${NC}"
165
+ exit 1
166
+ }
167
+ fi
168
+ popd > /dev/null
169
+ echo -e "${GREEN}Checksum verified${NC}"
170
+ else
171
+ if [[ "$NO_VERIFY" == "true" ]]; then
172
+ echo -e "${YELLOW}WARNING: Skipping checksum verification (--no-verify)${NC}"
173
+ else
174
+ echo -e "${RED}Error: Could not download checksums. Cannot verify download integrity.${NC}"
175
+ echo -e "${YELLOW}Use --no-verify flag to skip verification (NOT RECOMMENDED).${NC}"
176
+ exit 1
177
+ fi
178
+ fi
179
+
180
+ # Extraer
181
+ echo -e "${YELLOW}Extrayendo...${NC}"
182
+ if [[ "$ARCHIVE_NAME" == *.zip ]]; then
183
+ unzip -o "${TMP_DIR}/${ARCHIVE_NAME}" -d "${TMP_DIR}" > /dev/null
184
+ else
185
+ tar xzf "${TMP_DIR}/${ARCHIVE_NAME}" -C "${TMP_DIR}"
186
+ fi
187
+
188
+ # Instalar
189
+ mkdir -p "$INSTALL_DIR"
190
+ cp "${TMP_DIR}/engram" "${INSTALL_DIR}/engram" 2>/dev/null \
191
+ || cp "${TMP_DIR}/engram.exe" "${INSTALL_DIR}/engram.exe" 2>/dev/null
192
+ chmod +x "${INSTALL_DIR}/engram" 2>/dev/null || true
193
+
194
+ # Verificar PATH
195
+ if ! echo "$PATH" | tr ':' '\n' | grep -q "^${INSTALL_DIR}$"; then
196
+ echo -e "${YELLOW}Agrega ${INSTALL_DIR} a tu PATH:${NC}"
197
+ echo -e " export PATH=\"\$PATH:${INSTALL_DIR}\""
198
+ echo -e " # O agrega a ~/.bashrc / ~/.zshrc"
199
+ fi
200
+
201
+ # Verificar instalacion
202
+ if command -v engram &> /dev/null || [[ -f "${INSTALL_DIR}/engram" ]]; then
203
+ echo -e "${GREEN}Engram instalado correctamente${NC}"
204
+ echo -e " Path: ${INSTALL_DIR}/engram"
205
+ else
206
+ echo -e "${RED}Error: engram no encontrado despues de instalar${NC}"
207
+ exit 1
208
+ fi
209
+
210
+ # Generar config MCP
211
+ echo -e ""
212
+ echo -e "${CYAN}Config MCP para tu proyecto:${NC}"
213
+ echo -e ""
214
+ generate_mcp_config
215
+ echo -e ""
216
+ echo -e "${GREEN}Copia esto a .mcp.json en la raiz de tu proyecto${NC}"
@@ -0,0 +1,43 @@
1
+ # =============================================================================
2
+ # GHAGGA - Variables de Entorno
3
+ # =============================================================================
4
+ # Copia este archivo como .env y configura tus valores.
5
+ # NUNCA commitees el archivo .env con tus keys reales.
6
+ # =============================================================================
7
+
8
+ # --- Supabase ---
9
+ POSTGRES_PASSWORD=CHANGE_ME_BEFORE_USE
10
+ SUPABASE_URL=http://localhost:54321
11
+ SUPABASE_ANON_KEY=your-anon-key
12
+ SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
13
+
14
+ # --- GitHub App ---
15
+ GITHUB_APP_ID=
16
+ GITHUB_PRIVATE_KEY=
17
+ GITHUB_WEBHOOK_SECRET=
18
+
19
+ # --- LLM Providers (configura al menos uno) ---
20
+
21
+ # Anthropic (recomendado)
22
+ ANTHROPIC_API_KEY=
23
+
24
+ # OpenAI
25
+ OPENAI_API_KEY=
26
+
27
+ # Google
28
+ GOOGLE_API_KEY=
29
+
30
+ # Azure OpenAI (alternativa a OpenAI directo)
31
+ # AZURE_OPENAI_API_KEY=
32
+ # AZURE_OPENAI_ENDPOINT=
33
+ # AZURE_OPENAI_DEPLOYMENT=
34
+
35
+ # --- Review Config ---
36
+ # Modo: simple | workflow | consensus
37
+ REVIEW_MODE=simple
38
+
39
+ # Modelo por defecto
40
+ DEFAULT_MODEL=claude-sonnet-4-20250514
41
+
42
+ # --- Semgrep (opcional) ---
43
+ # SEMGREP_APP_TOKEN=
@@ -0,0 +1,153 @@
1
+ # GHAGGA - AI Code Review for GitHub PRs
2
+
3
+ > Multi-Agent code review automatizado para Pull Requests de GitHub.
4
+
5
+ ## Que es GHAGGA
6
+
7
+ [GHAGGA](https://github.com/JNZader/ghagga/) es un sistema de code review con IA que revisa automaticamente tus Pull Requests usando multiples proveedores LLM (Claude, GPT, Gemini).
8
+
9
+ ## Arquitectura
10
+
11
+ ```
12
+ GitHub PR → Webhook → Supabase Edge Function → Multi-LLM Review → PR Comments
13
+
14
+ Dashboard React
15
+ ```
16
+
17
+ ### Componentes
18
+
19
+ | Componente | Stack | Descripcion |
20
+ |-----------|-------|-------------|
21
+ | Dashboard | React + Mantine + Vite | UI para configurar y monitorear reviews |
22
+ | Backend | Supabase + Deno Edge Functions | Procesa webhooks y orquesta reviews |
23
+ | Database | PostgreSQL + pgvector + pg_trgm | Almacena reviews, embeddings, busqueda |
24
+ | Analysis | Semgrep | Analisis estatico complementario |
25
+
26
+ ### Modos de Review
27
+
28
+ | Modo | Descripcion | Cuando usar |
29
+ |------|-------------|-------------|
30
+ | **Simple** | Un solo LLM analiza el codigo | Reviews rapidas, bajo costo |
31
+ | **Workflow** | Pipeline multi-paso secuencial | Analisis profundo, cada paso especializado |
32
+ | **Consensus** | Multiples LLMs evaluan y votan | Maxima confiabilidad, reviews criticas |
33
+
34
+ ## Opciones de Deployment
35
+
36
+ | Opcion | Complejidad | Costo | Cuando usar |
37
+ |--------|------------|-------|-------------|
38
+ | Reusable Workflow | Baja | Free tier | Solo quieres PR reviews, sin dashboard |
39
+ | Docker Compose | Media | Self-hosted | Equipo quiere dashboard, tiene servidor |
40
+ | Full Clone | Alta | Self-hosted | Necesitas personalizar logica de review |
41
+
42
+ ### Costos de API
43
+ - **Simple mode**: ~$0.01-0.05 por review (1 LLM call)
44
+ - **Workflow mode**: ~$0.05-0.15 por review (multi-paso)
45
+ - **Consensus mode**: ~$0.15-0.50 por review (multiples LLMs)
46
+
47
+ ## Instalacion
48
+
49
+ ### Prerequisitos
50
+
51
+ - [Supabase CLI](https://supabase.com/docs/guides/cli)
52
+ - [Docker](https://docker.com) (para Supabase local)
53
+ - [Deno](https://deno.land) (para Edge Functions)
54
+ - Una GitHub App configurada
55
+
56
+ ### Opcion 1: Reusable Workflow (CI)
57
+
58
+ En tu `.github/workflows/ci.yml`:
59
+
60
+ ```yaml
61
+ jobs:
62
+ review:
63
+ uses: JNZader/project-starter-framework/.github/workflows/reusable-ghagga-review.yml@main
64
+ with:
65
+ ghagga-url: ${{ vars.GHAGGA_URL }}
66
+ secrets:
67
+ ghagga-token: ${{ secrets.GHAGGA_TOKEN }}
68
+ ```
69
+
70
+ ### Opcion 2: Docker Compose (este modulo)
71
+
72
+ ```bash
73
+ # Desde tu proyecto
74
+ cp optional/ghagga/docker-compose.yml .
75
+ cp optional/ghagga/.env.example .env.ghagga
76
+
77
+ # Editar .env.ghagga con tus keys
78
+ # Levantar servicios
79
+ docker compose -f docker-compose.yml up -d
80
+ ```
81
+
82
+ ### Opcion 3: Full Clone (desarrollo)
83
+
84
+ ```bash
85
+ # Clonar GHAGGA
86
+ git clone https://github.com/JNZader/ghagga.git
87
+ cd ghagga
88
+
89
+ # Levantar Supabase local
90
+ supabase start
91
+
92
+ # Configurar variables de entorno
93
+ cp .env.example .env
94
+ # Editar .env con tus API keys
95
+
96
+ # Servir Edge Functions
97
+ supabase functions serve
98
+
99
+ # Dashboard
100
+ cd dashboard && npm install && npm run dev
101
+ ```
102
+
103
+ ## Setup GitHub App
104
+
105
+ 1. Ir a GitHub Settings > Developer settings > GitHub Apps
106
+ 2. Crear nueva app con permisos:
107
+ - **Pull requests**: Read & Write (para comentar)
108
+ - **Contents**: Read (para leer codigo)
109
+ - **Webhooks**: Activar para eventos `pull_request`
110
+ 3. Configurar Webhook URL apuntando a tu instancia de GHAGGA
111
+ 4. Generar Private Key y guardarla como secret
112
+
113
+ Ver guia completa: [GHAGGA - GitHub App Setup](https://github.com/JNZader/ghagga/blob/main/docs/GITHUB_APP_SETUP.md)
114
+
115
+ ## Configuracion de Providers
116
+
117
+ GHAGGA soporta multiples proveedores LLM:
118
+
119
+ | Provider | Modelos | Variable de entorno |
120
+ |----------|---------|-------------------|
121
+ | Anthropic | claude-sonnet-4-20250514 | `ANTHROPIC_API_KEY` |
122
+ | OpenAI | gpt-4o, gpt-4-turbo | `OPENAI_API_KEY` |
123
+ | Google | gemini-2.0-flash, gemini-1.5-pro | `GOOGLE_API_KEY` |
124
+ | Azure OpenAI | gpt-4o (via Azure) | `AZURE_OPENAI_*` |
125
+
126
+ Configura al menos un provider en tu `.env`.
127
+
128
+ ## Features Avanzadas
129
+
130
+ ### Hebbian Learning
131
+
132
+ GHAGGA aprende de reviews anteriores para mejorar recomendaciones futuras.
133
+ Los patrones recurrentes se refuerzan automaticamente.
134
+
135
+ ### Hybrid Search
136
+
137
+ Combina busqueda semantica (pgvector embeddings) con full-text search (pg_trgm) para encontrar codigo similar y reviews previas relevantes.
138
+
139
+ ### Semgrep Integration
140
+
141
+ Ejecuta reglas Semgrep como complemento al analisis LLM, cubriendo patrones de seguridad OWASP.
142
+
143
+ ## Integracion con el Framework
144
+
145
+ Cuando usas GHAGGA con project-starter-framework:
146
+
147
+ - **CI-Local** valida codigo antes del push (pre-commit, pre-push)
148
+ - **GHAGGA** revisa el PR despues del push (review automatico)
149
+ - **Ambos** usan Semgrep: CI-Local para chequeo local, GHAGGA para analisis profundo
150
+
151
+ ```
152
+ Developer → CI-Local (pre-push) → Push → PR → GHAGGA Review → Merge
153
+ ```
@@ -0,0 +1,80 @@
1
+ # =============================================================================
2
+ # GHAGGA Local Development - Docker Compose
3
+ # =============================================================================
4
+ # Levanta Supabase + Dashboard para desarrollo local de GHAGGA.
5
+ #
6
+ # Uso:
7
+ # docker compose up -d # Levantar servicios
8
+ # docker compose logs -f # Ver logs
9
+ # docker compose down # Detener
10
+ #
11
+ # Prerequisitos:
12
+ # - Docker y Docker Compose
13
+ # - Copiar .env.example a .env y configurar API keys
14
+ # =============================================================================
15
+
16
+ services:
17
+ # ---------------------------------------------------------------------------
18
+ # Supabase (PostgreSQL + Auth + Edge Functions)
19
+ # ---------------------------------------------------------------------------
20
+ supabase-db:
21
+ image: supabase/postgres:15.6.1.143
22
+ ports:
23
+ - "127.0.0.1:54322:5432"
24
+ environment:
25
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env.ghagga}
26
+ POSTGRES_DB: ghagga
27
+ volumes:
28
+ - ghagga-db:/var/lib/postgresql/data
29
+ healthcheck:
30
+ test: ["CMD-SHELL", "pg_isready -U postgres"]
31
+ interval: 10s
32
+ timeout: 5s
33
+ retries: 5
34
+
35
+ supabase-kong:
36
+ image: kong:3.5
37
+ # NOTE: kong.yml is required. Get it from the GHAGGA repository:
38
+ # curl -o kong.yml https://raw.githubusercontent.com/JNZader/ghagga/main/kong.yml
39
+ volumes:
40
+ - ./kong.yml:/home/kong/kong.yml:ro
41
+ ports:
42
+ - "127.0.0.1:54321:8000" # Supabase API
43
+ - "127.0.0.1:54323:8443" # Supabase API (HTTPS)
44
+ environment:
45
+ KONG_DATABASE: "off"
46
+ KONG_DECLARATIVE_CONFIG: /home/kong/kong.yml
47
+ depends_on:
48
+ supabase-db:
49
+ condition: service_healthy
50
+ healthcheck:
51
+ test: ["CMD-SHELL", "kong health || exit 1"]
52
+ interval: 10s
53
+ timeout: 5s
54
+ retries: 5
55
+
56
+ # ---------------------------------------------------------------------------
57
+ # GHAGGA Dashboard (React + Vite)
58
+ # ---------------------------------------------------------------------------
59
+ dashboard:
60
+ build:
61
+ context: .
62
+ dockerfile: Dockerfile.dashboard
63
+ args:
64
+ GHAGGA_REPO: https://github.com/JNZader/ghagga.git
65
+ ports:
66
+ - "127.0.0.1:5173:5173"
67
+ environment:
68
+ VITE_SUPABASE_URL: http://localhost:54321
69
+ VITE_SUPABASE_ANON_KEY: ${SUPABASE_ANON_KEY:?Set SUPABASE_ANON_KEY in .env.ghagga}
70
+ depends_on:
71
+ supabase-kong:
72
+ condition: service_healthy
73
+ healthcheck:
74
+ test: ["CMD-SHELL", "curl -f http://localhost:5173/ || exit 1"]
75
+ interval: 15s
76
+ timeout: 5s
77
+ retries: 3
78
+
79
+ volumes:
80
+ ghagga-db:
@@ -0,0 +1,139 @@
1
+ #!/bin/bash
2
+ # =============================================================================
3
+ # SETUP-GHAGGA: Configura GHAGGA code review para tu proyecto
4
+ # =============================================================================
5
+ # Uso:
6
+ # ./setup-ghagga.sh # Setup interactivo
7
+ # ./setup-ghagga.sh --workflow # Solo copiar reusable workflow
8
+ # ./setup-ghagga.sh --docker # Setup Docker Compose
9
+ # =============================================================================
10
+
11
+ set -e
12
+
13
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
14
+
15
+ RED='\033[0;31m'
16
+ GREEN='\033[0;32m'
17
+ YELLOW='\033[1;33m'
18
+ CYAN='\033[0;36m'
19
+ NC='\033[0m'
20
+
21
+ echo -e "${CYAN}=== Setup GHAGGA Code Review ===${NC}"
22
+
23
+ # =============================================================================
24
+ # Helpers
25
+ # =============================================================================
26
+
27
+ setup_workflow() {
28
+ echo -e "${YELLOW}Configurando GitHub Actions workflow...${NC}"
29
+
30
+ mkdir -p .github/workflows
31
+
32
+ cat > .github/workflows/ghagga-review.yml << 'EOF'
33
+ # =============================================================================
34
+ # GHAGGA AI Code Review
35
+ # =============================================================================
36
+ # Trigger: Pull requests to main/develop
37
+ # Requires: GHAGGA_URL and GHAGGA_TOKEN in repo settings
38
+ # =============================================================================
39
+
40
+ name: AI Code Review
41
+
42
+ on:
43
+ pull_request:
44
+ types: [opened, synchronize, reopened]
45
+ branches: [main, develop]
46
+
47
+ concurrency:
48
+ group: ghagga-${{ github.event.pull_request.number }}
49
+ cancel-in-progress: true
50
+
51
+ jobs:
52
+ review:
53
+ uses: JNZader/project-starter-framework/.github/workflows/reusable-ghagga-review.yml@main
54
+ with:
55
+ ghagga-url: ${{ vars.GHAGGA_URL }}
56
+ review-mode: simple
57
+ secrets:
58
+ ghagga-token: ${{ secrets.GHAGGA_TOKEN }}
59
+ EOF
60
+
61
+ echo -e "${GREEN} Creado .github/workflows/ghagga-review.yml${NC}"
62
+ echo -e ""
63
+ echo -e "${YELLOW}Configura en tu repo (Settings > Secrets and variables):${NC}"
64
+ echo -e " Variables:"
65
+ echo -e " GHAGGA_URL = URL de tu instancia GHAGGA"
66
+ echo -e " Secrets:"
67
+ echo -e " GHAGGA_TOKEN = Token de autenticacion"
68
+ }
69
+
70
+ setup_docker() {
71
+ echo -e "${YELLOW}Configurando Docker Compose...${NC}"
72
+
73
+ if [[ -f "$SCRIPT_DIR/docker-compose.yml" ]]; then
74
+ cp "$SCRIPT_DIR/docker-compose.yml" ./docker-compose.ghagga.yml
75
+ echo -e "${GREEN} Copiado docker-compose.ghagga.yml${NC}"
76
+ fi
77
+
78
+ if [[ -f "$SCRIPT_DIR/.env.example" ]]; then
79
+ if [[ ! -f ".env.ghagga" ]]; then
80
+ cp "$SCRIPT_DIR/.env.example" .env.ghagga
81
+ echo -e "${GREEN} Copiado .env.ghagga (editar con tus API keys)${NC}"
82
+ else
83
+ echo -e "${YELLOW} .env.ghagga ya existe, no se sobreescribe${NC}"
84
+ fi
85
+ fi
86
+
87
+ echo -e ""
88
+ echo -e "${CYAN}Para levantar GHAGGA local:${NC}"
89
+ echo -e " 1. Editar .env.ghagga con tus API keys"
90
+ echo -e " 2. docker compose -f docker-compose.ghagga.yml up -d"
91
+ echo -e " 3. Dashboard: http://localhost:5173"
92
+ }
93
+
94
+ setup_gitignore() {
95
+ local entries=(".env.ghagga" "docker-compose.ghagga.yml")
96
+ for entry in "${entries[@]}"; do
97
+ if ! grep -qF "$entry" .gitignore 2>/dev/null; then
98
+ echo "$entry" >> .gitignore
99
+ fi
100
+ done
101
+ echo -e "${GREEN} .gitignore actualizado${NC}"
102
+ }
103
+
104
+ # =============================================================================
105
+ # Main
106
+ # =============================================================================
107
+
108
+ case "${1:-interactive}" in
109
+ --workflow)
110
+ setup_workflow
111
+ ;;
112
+ --docker)
113
+ setup_docker
114
+ setup_gitignore
115
+ ;;
116
+ interactive|"")
117
+ echo -e " ${CYAN}Como quieres integrar GHAGGA?${NC}"
118
+ echo -e " 1) GitHub Actions workflow (recomendado)"
119
+ echo -e " 2) Docker Compose local"
120
+ echo -e " 3) Ambos"
121
+ echo -e ""
122
+ read -p " Opcion [1/2/3]: " GHAGGA_CHOICE
123
+
124
+ case "$GHAGGA_CHOICE" in
125
+ 1) setup_workflow ;;
126
+ 2) setup_docker; setup_gitignore ;;
127
+ 3) setup_workflow; setup_docker; setup_gitignore ;;
128
+ *) echo -e "${GREEN} Sin GHAGGA${NC}" ;;
129
+ esac
130
+ ;;
131
+ *)
132
+ echo "Uso: $0 [--workflow|--docker]"
133
+ exit 1
134
+ ;;
135
+ esac
136
+
137
+ echo -e ""
138
+ echo -e "${GREEN}Setup GHAGGA completado${NC}"
139
+ echo -e "Docs: https://github.com/JNZader/ghagga/"
@@ -0,0 +1,22 @@
1
+ # Project Notes
2
+
3
+ > Notas simples del proyecto. Actualizar según sea necesario.
4
+
5
+ ## Estado Actual
6
+
7
+ - **Fase:** [Desarrollo/Testing/Producción]
8
+ - **Última actualización:** [Fecha]
9
+
10
+ ## Decisiones Importantes
11
+
12
+ 1. [Decisión 1]
13
+ 2. [Decisión 2]
14
+
15
+ ## TODOs
16
+
17
+ - [ ] Task 1
18
+ - [ ] Task 2
19
+
20
+ ## Notas
21
+
22
+ [Cualquier nota relevante del proyecto]
@@ -0,0 +1,23 @@
1
+ # Simple Memory
2
+
3
+ > Alternativa simple a VibeKanban. Solo un archivo de notas.
4
+
5
+ ## Instalación
6
+
7
+ ```bash
8
+ cp -r optional/memory-simple/.project /path/to/your/project/
9
+ ```
10
+
11
+ ## Uso
12
+
13
+ Editar `.project/NOTES.md` con:
14
+ - Estado actual del proyecto
15
+ - Decisiones importantes
16
+ - TODOs pendientes
17
+ - Notas relevantes
18
+
19
+ ## Cuándo usar
20
+
21
+ - Proyectos pequeños/personales
22
+ - No necesitas gestión de oleadas
23
+ - Prefieres simplicidad sobre metodología
@@ -0,0 +1,23 @@
1
+ {
2
+ "useMarkdownLinks": false,
3
+ "newLinkFormat": "relative",
4
+ "attachmentFolderPath": ".project/Attachments",
5
+ "alwaysUpdateLinks": true,
6
+ "showLineNumber": true,
7
+ "userIgnoreFilters": [
8
+ "node_modules/",
9
+ "target/",
10
+ "build/",
11
+ "dist/",
12
+ ".gradle/",
13
+ ".ci-local/docker/",
14
+ "__pycache__/",
15
+ ".pytest_cache/",
16
+ "coverage/",
17
+ ".git/",
18
+ "vendor/"
19
+ ],
20
+ "newFileLocation": "current",
21
+ "strictLineBreaks": false,
22
+ "showFrontmatter": true
23
+ }