@codyswann/lisa 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +867 -0
  3. package/all/copy-overwrite/.claude/README.md +205 -0
  4. package/all/copy-overwrite/.claude/agents/agent-architect.md +311 -0
  5. package/all/copy-overwrite/.claude/agents/codebase-analyzer.md +146 -0
  6. package/all/copy-overwrite/.claude/agents/codebase-locator.md +125 -0
  7. package/all/copy-overwrite/.claude/agents/codebase-pattern-finder.md +237 -0
  8. package/all/copy-overwrite/.claude/agents/git-history-analyzer.md +183 -0
  9. package/all/copy-overwrite/.claude/agents/hooks-expert.md +74 -0
  10. package/all/copy-overwrite/.claude/agents/skill-evaluator.md +246 -0
  11. package/all/copy-overwrite/.claude/agents/slash-command-architect.md +87 -0
  12. package/all/copy-overwrite/.claude/agents/web-search-researcher.md +112 -0
  13. package/all/copy-overwrite/.claude/commands/git/commit-and-submit-pr.md +8 -0
  14. package/all/copy-overwrite/.claude/commands/git/commit.md +44 -0
  15. package/all/copy-overwrite/.claude/commands/git/prune.md +34 -0
  16. package/all/copy-overwrite/.claude/commands/git/submit-pr.md +50 -0
  17. package/all/copy-overwrite/.claude/commands/jira/create.md +50 -0
  18. package/all/copy-overwrite/.claude/commands/jira/verify.md +34 -0
  19. package/all/copy-overwrite/.claude/commands/project/archive.md +8 -0
  20. package/all/copy-overwrite/.claude/commands/project/bootstrap.md +49 -0
  21. package/all/copy-overwrite/.claude/commands/project/complete-task.md +7 -0
  22. package/all/copy-overwrite/.claude/commands/project/debrief.md +65 -0
  23. package/all/copy-overwrite/.claude/commands/project/execute.md +94 -0
  24. package/all/copy-overwrite/.claude/commands/project/implement.md +42 -0
  25. package/all/copy-overwrite/.claude/commands/project/local-code-review.md +88 -0
  26. package/all/copy-overwrite/.claude/commands/project/lower-code-complexity.md +74 -0
  27. package/all/copy-overwrite/.claude/commands/project/plan.md +314 -0
  28. package/all/copy-overwrite/.claude/commands/project/research.md +248 -0
  29. package/all/copy-overwrite/.claude/commands/project/review.md +63 -0
  30. package/all/copy-overwrite/.claude/commands/project/setup.md +19 -0
  31. package/all/copy-overwrite/.claude/commands/project/verify.md +38 -0
  32. package/all/copy-overwrite/.claude/commands/pull-request/review.md +12 -0
  33. package/all/copy-overwrite/.claude/commands/rules/format-md.md +72 -0
  34. package/all/copy-overwrite/.claude/commands/sonarqube/check.md +6 -0
  35. package/all/copy-overwrite/.claude/commands/sonarqube/fix.md +3 -0
  36. package/all/copy-overwrite/.claude/hooks/README.md +301 -0
  37. package/all/copy-overwrite/.claude/hooks/notify-ntfy.sh +181 -0
  38. package/all/copy-overwrite/.claude/settings.json +41 -0
  39. package/all/copy-overwrite/.claude/settings.local.json.example +14 -0
  40. package/all/copy-overwrite/.claude/skills/coding-philosophy/SKILL.md +405 -0
  41. package/all/copy-overwrite/.claude/skills/coding-philosophy/references/function-structure.md +416 -0
  42. package/all/copy-overwrite/.claude/skills/coding-philosophy/references/immutable-patterns.md +316 -0
  43. package/all/copy-overwrite/.claude/skills/prompt-complexity-scorer/SKILL.md +118 -0
  44. package/all/copy-overwrite/.claude/skills/skill-creator/LICENSE.txt +202 -0
  45. package/all/copy-overwrite/.claude/skills/skill-creator/SKILL.md +210 -0
  46. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/__pycache__/quick_validate.cpython-312.pyc +0 -0
  47. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/init_skill.py +303 -0
  48. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
  49. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/quick_validate.py +65 -0
  50. package/all/copy-overwrite/CLAUDE.md +77 -0
  51. package/all/copy-overwrite/HUMAN.md +17 -0
  52. package/all/copy-overwrite/specs/.keep +0 -0
  53. package/all/create-only/PROJECT_RULES.md +0 -0
  54. package/cdk/merge/package.json +20 -0
  55. package/dist/cli/index.d.ts +7 -0
  56. package/dist/cli/index.d.ts.map +1 -0
  57. package/dist/cli/index.js +107 -0
  58. package/dist/cli/index.js.map +1 -0
  59. package/dist/cli/prompts.d.ts +45 -0
  60. package/dist/cli/prompts.d.ts.map +1 -0
  61. package/dist/cli/prompts.js +58 -0
  62. package/dist/cli/prompts.js.map +1 -0
  63. package/dist/core/config.d.ts +73 -0
  64. package/dist/core/config.d.ts.map +1 -0
  65. package/dist/core/config.js +36 -0
  66. package/dist/core/config.js.map +1 -0
  67. package/dist/core/index.d.ts +4 -0
  68. package/dist/core/index.d.ts.map +1 -0
  69. package/dist/core/index.js +4 -0
  70. package/dist/core/index.js.map +1 -0
  71. package/dist/core/lisa.d.ts +81 -0
  72. package/dist/core/lisa.d.ts.map +1 -0
  73. package/dist/core/lisa.js +459 -0
  74. package/dist/core/lisa.js.map +1 -0
  75. package/dist/core/manifest.d.ts +58 -0
  76. package/dist/core/manifest.d.ts.map +1 -0
  77. package/dist/core/manifest.js +104 -0
  78. package/dist/core/manifest.js.map +1 -0
  79. package/dist/detection/detector.interface.d.ts +15 -0
  80. package/dist/detection/detector.interface.d.ts.map +1 -0
  81. package/dist/detection/detector.interface.js +2 -0
  82. package/dist/detection/detector.interface.js.map +1 -0
  83. package/dist/detection/detectors/cdk.d.ts +10 -0
  84. package/dist/detection/detectors/cdk.d.ts.map +1 -0
  85. package/dist/detection/detectors/cdk.js +34 -0
  86. package/dist/detection/detectors/cdk.js.map +1 -0
  87. package/dist/detection/detectors/expo.d.ts +10 -0
  88. package/dist/detection/detectors/expo.d.ts.map +1 -0
  89. package/dist/detection/detectors/expo.js +30 -0
  90. package/dist/detection/detectors/expo.js.map +1 -0
  91. package/dist/detection/detectors/nestjs.d.ts +10 -0
  92. package/dist/detection/detectors/nestjs.d.ts.map +1 -0
  93. package/dist/detection/detectors/nestjs.js +34 -0
  94. package/dist/detection/detectors/nestjs.js.map +1 -0
  95. package/dist/detection/detectors/npm-package.d.ts +13 -0
  96. package/dist/detection/detectors/npm-package.d.ts.map +1 -0
  97. package/dist/detection/detectors/npm-package.js +30 -0
  98. package/dist/detection/detectors/npm-package.js.map +1 -0
  99. package/dist/detection/detectors/typescript.d.ts +10 -0
  100. package/dist/detection/detectors/typescript.d.ts.map +1 -0
  101. package/dist/detection/detectors/typescript.js +25 -0
  102. package/dist/detection/detectors/typescript.js.map +1 -0
  103. package/dist/detection/index.d.ts +24 -0
  104. package/dist/detection/index.d.ts.map +1 -0
  105. package/dist/detection/index.js +57 -0
  106. package/dist/detection/index.js.map +1 -0
  107. package/dist/errors/index.d.ts +69 -0
  108. package/dist/errors/index.d.ts.map +1 -0
  109. package/dist/errors/index.js +110 -0
  110. package/dist/errors/index.js.map +1 -0
  111. package/dist/index.d.ts +3 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +8 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/logging/console-logger.d.ts +12 -0
  116. package/dist/logging/console-logger.d.ts.map +1 -0
  117. package/dist/logging/console-logger.js +22 -0
  118. package/dist/logging/console-logger.js.map +1 -0
  119. package/dist/logging/index.d.ts +4 -0
  120. package/dist/logging/index.d.ts.map +1 -0
  121. package/dist/logging/index.js +3 -0
  122. package/dist/logging/index.js.map +1 -0
  123. package/dist/logging/logger.interface.d.ts +20 -0
  124. package/dist/logging/logger.interface.d.ts.map +1 -0
  125. package/dist/logging/logger.interface.js +2 -0
  126. package/dist/logging/logger.interface.js.map +1 -0
  127. package/dist/logging/silent-logger.d.ts +12 -0
  128. package/dist/logging/silent-logger.d.ts.map +1 -0
  129. package/dist/logging/silent-logger.js +21 -0
  130. package/dist/logging/silent-logger.js.map +1 -0
  131. package/dist/strategies/copy-contents.d.ts +14 -0
  132. package/dist/strategies/copy-contents.d.ts.map +1 -0
  133. package/dist/strategies/copy-contents.js +69 -0
  134. package/dist/strategies/copy-contents.js.map +1 -0
  135. package/dist/strategies/copy-overwrite.d.ts +14 -0
  136. package/dist/strategies/copy-overwrite.d.ts.map +1 -0
  137. package/dist/strategies/copy-overwrite.js +47 -0
  138. package/dist/strategies/copy-overwrite.js.map +1 -0
  139. package/dist/strategies/create-only.d.ts +13 -0
  140. package/dist/strategies/create-only.d.ts.map +1 -0
  141. package/dist/strategies/create-only.js +30 -0
  142. package/dist/strategies/create-only.js.map +1 -0
  143. package/dist/strategies/index.d.ts +31 -0
  144. package/dist/strategies/index.d.ts.map +1 -0
  145. package/dist/strategies/index.js +52 -0
  146. package/dist/strategies/index.js.map +1 -0
  147. package/dist/strategies/merge.d.ts +13 -0
  148. package/dist/strategies/merge.d.ts.map +1 -0
  149. package/dist/strategies/merge.js +60 -0
  150. package/dist/strategies/merge.js.map +1 -0
  151. package/dist/strategies/strategy.interface.d.ts +31 -0
  152. package/dist/strategies/strategy.interface.d.ts.map +1 -0
  153. package/dist/strategies/strategy.interface.js +2 -0
  154. package/dist/strategies/strategy.interface.js.map +1 -0
  155. package/dist/transaction/backup.d.ts +38 -0
  156. package/dist/transaction/backup.d.ts.map +1 -0
  157. package/dist/transaction/backup.js +97 -0
  158. package/dist/transaction/backup.js.map +1 -0
  159. package/dist/transaction/index.d.ts +4 -0
  160. package/dist/transaction/index.d.ts.map +1 -0
  161. package/dist/transaction/index.js +3 -0
  162. package/dist/transaction/index.js.map +1 -0
  163. package/dist/transaction/transaction.d.ts +34 -0
  164. package/dist/transaction/transaction.d.ts.map +1 -0
  165. package/dist/transaction/transaction.js +68 -0
  166. package/dist/transaction/transaction.js.map +1 -0
  167. package/dist/utils/file-operations.d.ts +29 -0
  168. package/dist/utils/file-operations.d.ts.map +1 -0
  169. package/dist/utils/file-operations.js +84 -0
  170. package/dist/utils/file-operations.js.map +1 -0
  171. package/dist/utils/index.d.ts +4 -0
  172. package/dist/utils/index.d.ts.map +1 -0
  173. package/dist/utils/index.js +4 -0
  174. package/dist/utils/index.js.map +1 -0
  175. package/dist/utils/json-utils.d.ts +22 -0
  176. package/dist/utils/json-utils.d.ts.map +1 -0
  177. package/dist/utils/json-utils.js +57 -0
  178. package/dist/utils/json-utils.js.map +1 -0
  179. package/dist/utils/path-utils.d.ts +21 -0
  180. package/dist/utils/path-utils.d.ts.map +1 -0
  181. package/dist/utils/path-utils.js +35 -0
  182. package/dist/utils/path-utils.js.map +1 -0
  183. package/eslint-plugin-code-organization/README.md +149 -0
  184. package/eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js +468 -0
  185. package/eslint-plugin-code-organization/index.js +23 -0
  186. package/eslint-plugin-code-organization/package.json +10 -0
  187. package/eslint-plugin-code-organization/rules/enforce-statement-order.js +157 -0
  188. package/expo/copy-overwrite/.claude/skills/apollo-client/SKILL.md +238 -0
  189. package/expo/copy-overwrite/.claude/skills/apollo-client/references/mutation-patterns.md +360 -0
  190. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/SKILL.md +360 -0
  191. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
  192. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
  193. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
  194. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +327 -0
  195. package/expo/copy-overwrite/.claude/skills/container-view-pattern/SKILL.md +299 -0
  196. package/expo/copy-overwrite/.claude/skills/container-view-pattern/references/examples.md +749 -0
  197. package/expo/copy-overwrite/.claude/skills/container-view-pattern/references/patterns.md +318 -0
  198. package/expo/copy-overwrite/.claude/skills/container-view-pattern/scripts/create_component.py +198 -0
  199. package/expo/copy-overwrite/.claude/skills/container-view-pattern/scripts/validate_component.py +207 -0
  200. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/SKILL.md +268 -0
  201. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/common-issues.md +619 -0
  202. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
  203. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/platform-api.md +276 -0
  204. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +414 -0
  205. package/expo/copy-overwrite/.claude/skills/directory-structure/SKILL.md +202 -0
  206. package/expo/copy-overwrite/.claude/skills/directory-structure/scripts/validate_structure.py +443 -0
  207. package/expo/copy-overwrite/.claude/skills/expo-env-config/SKILL.md +309 -0
  208. package/expo/copy-overwrite/.claude/skills/expo-env-config/references/validation-patterns.md +417 -0
  209. package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/SKILL.md +431 -0
  210. package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/references/official-docs.md +290 -0
  211. package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/scripts/generate-route.py +169 -0
  212. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/SKILL.md +411 -0
  213. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/color-tokens.md +343 -0
  214. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/component-mapping.md +307 -0
  215. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
  216. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/scripts/validate_styling.py +354 -0
  217. package/expo/copy-overwrite/.claude/skills/local-state/SKILL.md +362 -0
  218. package/expo/copy-overwrite/.claude/skills/local-state/references/async-storage.md +505 -0
  219. package/expo/copy-overwrite/.claude/skills/local-state/references/persistence-patterns.md +711 -0
  220. package/expo/copy-overwrite/.claude/skills/local-state/references/reactive-variables.md +446 -0
  221. package/expo/copy-overwrite/.claude/skills/playwright-selectors/SKILL.md +223 -0
  222. package/expo/copy-overwrite/.claude/skills/testing-library/SKILL.md +319 -0
  223. package/expo/copy-overwrite/.claude/skills/testing-library/references/async-patterns.md +420 -0
  224. package/expo/copy-overwrite/.claude/skills/testing-library/references/expo-router-testing.md +556 -0
  225. package/expo/copy-overwrite/.claude/skills/testing-library/references/mocking-patterns.md +590 -0
  226. package/expo/copy-overwrite/.claude/skills/testing-library/references/query-priority.md +291 -0
  227. package/expo/copy-overwrite/.easignore.extra +2 -0
  228. package/expo/copy-overwrite/.mcp.json +33 -0
  229. package/expo/copy-overwrite/eslint-plugin-component-structure/README.md +234 -0
  230. package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/plugin-index.test.js +84 -0
  231. package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/require-memo-in-view.test.js +196 -0
  232. package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/single-component-per-file.test.js +289 -0
  233. package/expo/copy-overwrite/eslint-plugin-component-structure/index.js +32 -0
  234. package/expo/copy-overwrite/eslint-plugin-component-structure/package.json +10 -0
  235. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/enforce-component-structure.js +230 -0
  236. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/no-return-in-view.js +91 -0
  237. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/require-memo-in-view.js +178 -0
  238. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/single-component-per-file.js +238 -0
  239. package/expo/copy-overwrite/eslint-plugin-ui-standards/README.md +260 -0
  240. package/expo/copy-overwrite/eslint-plugin-ui-standards/index.js +29 -0
  241. package/expo/copy-overwrite/eslint-plugin-ui-standards/package.json +10 -0
  242. package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-classname-outside-ui.js +51 -0
  243. package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-direct-rn-imports.js +55 -0
  244. package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-inline-styles.js +73 -0
  245. package/expo/copy-overwrite/eslint.config.mjs +560 -0
  246. package/expo/copy-overwrite/lighthouserc.js +194 -0
  247. package/expo/create-only/lighthouserc-config.json +28 -0
  248. package/expo/merge/package.json +132 -0
  249. package/lisa.sh +35 -0
  250. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/SKILL.md +176 -0
  251. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/advanced-features.md +527 -0
  252. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/project-patterns.md +483 -0
  253. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/quick-start.md +257 -0
  254. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
  255. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/types-scalars.md +513 -0
  256. package/nestjs/copy-overwrite/.claude/skills/nestjs-rules/SKILL.md +536 -0
  257. package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/SKILL.md +275 -0
  258. package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
  259. package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/entity-patterns.md +450 -0
  260. package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/observability-patterns.md +536 -0
  261. package/nestjs/merge/package.json +75 -0
  262. package/package.json +124 -0
  263. package/typescript/copy-contents/.husky/commit-msg +91 -0
  264. package/typescript/copy-contents/.husky/pre-commit +96 -0
  265. package/typescript/copy-contents/.husky/pre-push +211 -0
  266. package/typescript/copy-overwrite/.claude/hooks/format-on-edit.sh +74 -0
  267. package/typescript/copy-overwrite/.claude/hooks/install_pkgs.sh +59 -0
  268. package/typescript/copy-overwrite/.claude/hooks/lint-on-edit.sh +103 -0
  269. package/typescript/copy-overwrite/.claude/skills/jsdoc-best-practices/SKILL.md +388 -0
  270. package/typescript/copy-overwrite/.github/README.md +455 -0
  271. package/typescript/copy-overwrite/.github/dependabot.yml +40 -0
  272. package/typescript/copy-overwrite/.github/k6/BROWSER_TESTING_NOTE.md +129 -0
  273. package/typescript/copy-overwrite/.github/k6/INTEGRATION_GUIDE.md +354 -0
  274. package/typescript/copy-overwrite/.github/k6/README.md +386 -0
  275. package/typescript/copy-overwrite/.github/k6/SCENARIO_SELECTION_GUIDE.md +264 -0
  276. package/typescript/copy-overwrite/.github/k6/examples/customer-deploy-integration.yml +115 -0
  277. package/typescript/copy-overwrite/.github/k6/examples/data-driven-test.js +268 -0
  278. package/typescript/copy-overwrite/.github/k6/scenarios/load.js +142 -0
  279. package/typescript/copy-overwrite/.github/k6/scenarios/load.json +27 -0
  280. package/typescript/copy-overwrite/.github/k6/scenarios/smoke.js +26 -0
  281. package/typescript/copy-overwrite/.github/k6/scenarios/smoke.json +20 -0
  282. package/typescript/copy-overwrite/.github/k6/scenarios/soak.js +244 -0
  283. package/typescript/copy-overwrite/.github/k6/scenarios/soak.json +29 -0
  284. package/typescript/copy-overwrite/.github/k6/scenarios/spike.js +180 -0
  285. package/typescript/copy-overwrite/.github/k6/scenarios/spike.json +32 -0
  286. package/typescript/copy-overwrite/.github/k6/scenarios/stress.js +206 -0
  287. package/typescript/copy-overwrite/.github/k6/scenarios/stress.json +38 -0
  288. package/typescript/copy-overwrite/.github/k6/scripts/api-test.js +452 -0
  289. package/typescript/copy-overwrite/.github/k6/scripts/default-test.js +185 -0
  290. package/typescript/copy-overwrite/.github/k6/thresholds/normal.json +30 -0
  291. package/typescript/copy-overwrite/.github/k6/thresholds/relaxed.json +21 -0
  292. package/typescript/copy-overwrite/.github/k6/thresholds/strict.json +29 -0
  293. package/typescript/copy-overwrite/.github/workflows/build.yml +72 -0
  294. package/typescript/copy-overwrite/.github/workflows/ci.yml +49 -0
  295. package/typescript/copy-overwrite/.github/workflows/claude.yml +51 -0
  296. package/typescript/copy-overwrite/.github/workflows/create-github-issue-on-failure.yml +113 -0
  297. package/typescript/copy-overwrite/.github/workflows/create-jira-issue-on-failure.yml +195 -0
  298. package/typescript/copy-overwrite/.github/workflows/create-sentry-issue-on-failure.yml +267 -0
  299. package/typescript/copy-overwrite/.github/workflows/deploy.yml +228 -0
  300. package/typescript/copy-overwrite/.github/workflows/k6-load-test-README.md +230 -0
  301. package/typescript/copy-overwrite/.github/workflows/lighthouse.yml +68 -0
  302. package/typescript/copy-overwrite/.github/workflows/load-test.yml +282 -0
  303. package/typescript/copy-overwrite/.github/workflows/quality.yml +1737 -0
  304. package/typescript/copy-overwrite/.github/workflows/release.yml +1599 -0
  305. package/typescript/copy-overwrite/.gitleaksignore +28 -0
  306. package/typescript/copy-overwrite/.nvmrc +1 -0
  307. package/typescript/copy-overwrite/.prettierignore +23 -0
  308. package/typescript/copy-overwrite/.prettierrc.json +22 -0
  309. package/typescript/copy-overwrite/.versionrc +42 -0
  310. package/typescript/copy-overwrite/.yamllint +20 -0
  311. package/typescript/copy-overwrite/commitlint.config.js +11 -0
  312. package/typescript/copy-overwrite/eslint-plugin-code-organization/README.md +149 -0
  313. package/typescript/copy-overwrite/eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js +468 -0
  314. package/typescript/copy-overwrite/eslint-plugin-code-organization/index.js +23 -0
  315. package/typescript/copy-overwrite/eslint-plugin-code-organization/package.json +10 -0
  316. package/typescript/copy-overwrite/eslint-plugin-code-organization/rules/enforce-statement-order.js +157 -0
  317. package/typescript/copy-overwrite/eslint.config.mjs +390 -0
  318. package/typescript/copy-overwrite/eslint.ignore.config.json +57 -0
  319. package/typescript/copy-overwrite/eslint.thresholds.config.json +5 -0
  320. package/typescript/github-rulesets/base.json +106 -0
  321. package/typescript/merge/.claude/settings.json +28 -0
  322. package/typescript/merge/package.json +71 -0
@@ -0,0 +1,21 @@
1
+ {
2
+ "thresholds": {
3
+ "http_req_failed": {
4
+ "threshold": "rate<0.2",
5
+ "abortOnFail": false
6
+ },
7
+ "http_req_duration": {
8
+ "threshold": "p(95)<3000"
9
+ },
10
+ "http_req_duration{name:Home}": {
11
+ "threshold": "p(95)<2000"
12
+ },
13
+ "http_req_duration{name:API}": {
14
+ "threshold": "p(95)<5000"
15
+ },
16
+ "checks": {
17
+ "threshold": "rate>0.8"
18
+ }
19
+ },
20
+ "description": "Relaxed thresholds for development and initial testing"
21
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "thresholds": {
3
+ "http_req_failed": {
4
+ "threshold": "rate<0.01",
5
+ "abortOnFail": true,
6
+ "delayAbortEval": "10s"
7
+ },
8
+ "http_req_duration": {
9
+ "threshold": "p(95)<200",
10
+ "abortOnFail": false
11
+ },
12
+ "http_req_duration{name:Home}": {
13
+ "threshold": "p(95)<150"
14
+ },
15
+ "http_req_duration{name:API}": {
16
+ "threshold": "p(95)<300"
17
+ },
18
+ "http_reqs": {
19
+ "threshold": "rate>10",
20
+ "abortOnFail": false
21
+ },
22
+ "checks": {
23
+ "threshold": "rate>0.95"
24
+ },
25
+ "iterations": {
26
+ "threshold": "count>100"
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,72 @@
1
+ name: EAS Build
2
+ on:
3
+ workflow_dispatch:
4
+ inputs:
5
+ environment:
6
+ description: 'Environment to build for'
7
+ required: true
8
+ default: 'dev'
9
+ type: choice
10
+ options:
11
+ - dev
12
+ - staging
13
+ - main
14
+ workflow_call:
15
+ inputs:
16
+ environment:
17
+ description: 'Environment to build for'
18
+ required: true
19
+ type: string
20
+ secrets:
21
+ EXPO_TOKEN:
22
+ required: true
23
+ push:
24
+ branches:
25
+ - dev
26
+ - staging
27
+ - main
28
+ paths:
29
+ - app.config.ts # Only trigger builds if this file changes
30
+
31
+ jobs:
32
+ build:
33
+ name: Install and build
34
+ runs-on: ubuntu-latest
35
+ steps:
36
+ - uses: actions/checkout@v4
37
+ - uses: actions/setup-node@v4
38
+ with:
39
+ node-version: '22.21.1'
40
+ - name: 🍞 Setup Bun
41
+ uses: oven-sh/setup-bun@v2
42
+ with:
43
+ bun-version: latest
44
+ - name: Setup Expo and EAS
45
+ uses: expo/expo-github-action@v8
46
+ with:
47
+ eas-version: latest
48
+ token: ${{ secrets.EXPO_TOKEN }}
49
+ - name: Install dependencies
50
+ run: bun install
51
+ - name: Determine Environment
52
+ id: env
53
+ run: |
54
+ if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
55
+ echo "environment=${{ github.event.inputs.environment }}" >> $GITHUB_OUTPUT
56
+ elif [ "${{ github.event_name }}" == "workflow_call" ]; then
57
+ echo "environment=${{ inputs.environment }}" >> $GITHUB_OUTPUT
58
+ else
59
+ echo "environment=${{ github.ref_name }}" >> $GITHUB_OUTPUT
60
+ fi
61
+ - name: Build Dev Preview
62
+ if: steps.env.outputs.environment == 'dev'
63
+ run: eas build --platform all --non-interactive --no-wait --profile=dev-preview
64
+ - name: Build Dev
65
+ if: steps.env.outputs.environment == 'dev'
66
+ run: eas build --platform all --non-interactive --no-wait --profile=dev
67
+ - name: Build Staging
68
+ if: steps.env.outputs.environment == 'staging'
69
+ run: eas build --platform all --non-interactive --no-wait --profile=staging --auto-submit
70
+ - name: Build Production
71
+ if: steps.env.outputs.environment == 'main'
72
+ run: eas build --platform all --non-interactive --no-wait --profile=production --auto-submit
@@ -0,0 +1,49 @@
1
+ name: 🔍 CI Quality Checks
2
+
3
+ on:
4
+ pull_request:
5
+ workflow_dispatch:
6
+
7
+ jobs:
8
+ quality:
9
+ name: 🔍 Quality Checks
10
+ timeout-minutes: 30
11
+ # Reference to the quality checks workflow
12
+ uses: ./.github/workflows/quality.yml
13
+ with:
14
+ node_version: '22.21.1'
15
+ package_manager: 'bun'
16
+ skip_jobs: 'test,test:integration,test:e2e'
17
+ secrets: inherit
18
+
19
+ # playwright:
20
+ # name: 🎭 Playwright Tests
21
+ # timeout-minutes: 30
22
+ # needs: [quality]
23
+ # uses: ./.github/workflows/playwright.yml
24
+ # with:
25
+ # pr_number: ${{ github.event.pull_request.number }}
26
+ # branch_ref: ${{ github.head_ref }}
27
+ # base_ref: ${{ github.base_ref }}
28
+
29
+ lighthouse:
30
+ name: 💡 Lighthouse CI
31
+ timeout-minutes: 15
32
+ needs: [quality]
33
+ uses: ./.github/workflows/lighthouse.yml
34
+ with:
35
+ node_version: '22.21.1'
36
+ package_manager: 'bun'
37
+
38
+ create_sentry_issue_on_failure:
39
+ name: 🚨 Create Sentry Issue on Failure
40
+ timeout-minutes: 5
41
+ needs: [quality]
42
+ if: ${{ always() && (needs.quality.result == 'failure' || needs.quality.result == 'failure') && !contains(github.event.head_commit.message, '[skip ci]') }}
43
+ uses: ./.github/workflows/create-sentry-issue-on-failure.yml
44
+ with:
45
+ workflow_name: 'CI Quality Checks'
46
+ failed_job: ${{ needs.quality.result == 'failure' && 'quality' || 'playwright' }}
47
+ SENTRY_ORG: ${{ vars.SENTRY_ORG }}
48
+ SENTRY_PROJECT: ${{ vars.SENTRY_PROJECT }}
49
+ secrets: inherit
@@ -0,0 +1,51 @@
1
+ name: Claude Code
2
+
3
+ on:
4
+ issue_comment:
5
+ types: [created]
6
+ pull_request_review_comment:
7
+ types: [created]
8
+ issues:
9
+ types: [opened, assigned]
10
+ pull_request_review:
11
+ types: [submitted]
12
+
13
+ jobs:
14
+ claude:
15
+ if: |
16
+ (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
17
+ (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
18
+ (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
19
+ (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
20
+ runs-on: ubuntu-latest
21
+ permissions:
22
+ contents: read
23
+ pull-requests: read
24
+ issues: read
25
+ id-token: write
26
+ actions: read # Required for Claude to read CI results on PRs
27
+ steps:
28
+ - name: Checkout repository
29
+ uses: actions/checkout@v4
30
+ with:
31
+ fetch-depth: 1
32
+
33
+ - name: Run Claude Code
34
+ id: claude
35
+ uses: anthropics/claude-code-action@v1
36
+ with:
37
+ claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
38
+
39
+ # This is an optional setting that allows Claude to read CI results on PRs
40
+ additional_permissions: |
41
+ actions: read
42
+
43
+ # Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it.
44
+ # prompt: 'Update the pull request description to include a summary of changes.'
45
+
46
+ # Optional: Add claude_args to customize behavior and configuration
47
+ # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
48
+ # or https://docs.anthropic.com/en/docs/claude-code/sdk#command-line for available options
49
+ claude_args: |
50
+ --allowedTools "Bash(npm install),Bash(npm run build),Bash(npm run test:*),Bash(npm run lint:*),Bash(npm run format:*),Bash(npm run typecheck),Bash(npm run lint)"
51
+ --system-prompt "Follow our coding standards. Ensure all new code has tests. Look at package.json for scripts. Make sure all quality checks pass before committing. Reuse existing helper functions when possible."
@@ -0,0 +1,113 @@
1
+ # -----------------------------------------------------------------------------
2
+ # GitHub Issue Creation Workflow
3
+ # -----------------------------------------------------------------------------
4
+ # ⚠️ WARNING: THIS FILE IS AUTO-GENERATED. DO NOT EDIT MANUALLY! ⚠️
5
+ # Any changes may be overwritten by the generation process.
6
+ # This workflow creates a GitHub issue when another workflow fails.
7
+ # It captures details about the failure and creates a standardized issue
8
+ # to help track and resolve CI/CD problems.
9
+ #
10
+ # Example usage in another workflow:
11
+ # ```yaml
12
+ # create_github_issue_on_failure:
13
+ # if: failure()
14
+ # uses: ./.github/workflows/github-issue-on-failure.yml
15
+ # with:
16
+ # workflow_name: 'My Workflow'
17
+ # failed_job: 'build_and_test'
18
+ # secrets:
19
+ # PAT: ${{ secrets.PAT }}
20
+ # ```
21
+
22
+ name: 🚨 GitHub Issue on Workflow Failure
23
+
24
+ on:
25
+ workflow_call:
26
+ inputs:
27
+ workflow_name:
28
+ required: true
29
+ type: string
30
+ description: 'Name of the workflow that failed'
31
+ failed_job:
32
+ required: false
33
+ type: string
34
+ description: 'Name of the job that failed (optional)'
35
+ node_version:
36
+ description: 'Node.js version to use'
37
+ required: false
38
+ default: '20.x'
39
+ type: string
40
+ package_manager:
41
+ description: 'Package manager to use (npm, yarn, or bun)'
42
+ required: false
43
+ default: 'npm'
44
+ type: string
45
+ working_directory:
46
+ description: 'Directory to run commands in (if not root)'
47
+ required: false
48
+ default: ''
49
+ type: string
50
+ secrets:
51
+ PAT:
52
+ required: true
53
+ description: 'Personal Access Token with repo scope'
54
+
55
+ # Concurrency is managed by the parent workflow that calls this one
56
+ # This avoids deadlocks between parent and child workflows
57
+
58
+ jobs:
59
+ create_issue:
60
+ name: 📝 Create GitHub Issue
61
+ runs-on: ubuntu-latest
62
+ timeout-minutes: 5
63
+ steps:
64
+ - name: 📥 Checkout repository
65
+ uses: actions/checkout@v4
66
+
67
+ - name: 🔧 Setup Node.js
68
+ uses: actions/setup-node@v4
69
+ with:
70
+ node-version: ${{ inputs.node_version }}
71
+ cache: ${{ inputs.package_manager }}
72
+
73
+ - name: 🔖 Create Issue
74
+ uses: actions/github-script@v7
75
+ with:
76
+ github-token: ${{ secrets.PAT }}
77
+ script: |
78
+ // Get repository and run information
79
+ const { owner, repo } = context.repo;
80
+ const runId = context.runId;
81
+ const runUrl = `https://github.com/${owner}/${repo}/actions/runs/${runId}`;
82
+
83
+ // Get workflow information from inputs
84
+ const workflowName = '${{ inputs.workflow_name }}';
85
+ const failedJob = '${{ inputs.failed_job }}' || 'Unknown';
86
+
87
+ // Create standardized issue title and body
88
+ const title = `🚨 Workflow Failure: ${workflowName}${failedJob !== 'Unknown' ? ` - ${failedJob}` : ''}`;
89
+ const body = `
90
+ ## Workflow Failure
91
+
92
+ The "${workflowName}" workflow has failed${failedJob !== 'Unknown' ? ` in job: **${failedJob}**` : ''}.
93
+
94
+ ### Details
95
+ - **Workflow Run**: [View Run Details](${runUrl})
96
+ - **Commit**: ${context.sha}
97
+ - **Commit Message**: ${context.payload.head_commit ? context.payload.head_commit.message : 'N/A'}
98
+ - **Triggered by**: ${context.actor}
99
+ - **Failed at**: ${new Date().toISOString()}
100
+
101
+ Please investigate the workflow logs for more details on the failure.
102
+ `;
103
+
104
+ // Create the issue
105
+ await github.rest.issues.create({
106
+ owner,
107
+ repo,
108
+ title,
109
+ body,
110
+ labels: ['bug', 'automation', 'ci-failure']
111
+ });
112
+
113
+ console.log(`Issue created for workflow failure: ${runUrl}`);
@@ -0,0 +1,195 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Jira Issue Creation Workflow
3
+ # -----------------------------------------------------------------------------
4
+ # ⚠️ WARNING: THIS FILE IS AUTO-GENERATED. DO NOT EDIT MANUALLY! ⚠️
5
+ # Any changes may be overwritten by the generation process.
6
+ # This workflow creates a Jira issue when another workflow fails.
7
+ # It captures details about the failure and creates a standardized issue
8
+ # to help track and resolve CI/CD problems in Jira.
9
+ #
10
+ # Example usage in another workflow:
11
+ # ```yaml
12
+ # create_jira_issue_on_failure:
13
+ # if: failure()
14
+ # uses: ./.github/workflows/jira-issue-on-failure.yml
15
+ # with:
16
+ # workflow_name: 'My Workflow'
17
+ # failed_job: 'build_and_test'
18
+ # JIRA_BASE_URL: ${{ vars.JIRA_BASE_URL }}
19
+ # JIRA_USER_EMAIL: ${{ vars.JIRA_USER_EMAIL }}
20
+ # JIRA_PROJECT_KEY: ${{ vars.JIRA_PROJECT_KEY }}
21
+ # secrets:
22
+ # JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
23
+ # ```
24
+
25
+ name: 🔖 Jira Issue on Workflow Failure
26
+
27
+ on:
28
+ workflow_call:
29
+ inputs:
30
+ workflow_name:
31
+ required: true
32
+ type: string
33
+ description: 'Name of the workflow that failed'
34
+ failed_job:
35
+ required: false
36
+ type: string
37
+ description: 'Name of the job that failed (optional)'
38
+ issue_type:
39
+ required: false
40
+ type: string
41
+ default: 'Bug'
42
+ description: 'Type of Jira issue to create (Bug, Task, etc.)'
43
+ JIRA_BASE_URL:
44
+ required: true
45
+ type: string
46
+ description: 'Jira instance base URL (e.g., https://your-domain.atlassian.net)'
47
+ JIRA_USER_EMAIL:
48
+ required: true
49
+ type: string
50
+ description: 'Email address of the Jira user associated with the API token'
51
+ JIRA_PROJECT_KEY:
52
+ required: true
53
+ type: string
54
+ description: 'The key of the Jira project where issues should be created'
55
+ node_version:
56
+ description: 'Node.js version to use'
57
+ required: false
58
+ default: '20.x'
59
+ type: string
60
+ package_manager:
61
+ description: 'Package manager to use (npm, yarn, or bun)'
62
+ required: false
63
+ default: 'npm'
64
+ type: string
65
+ working_directory:
66
+ description: 'Directory to run commands in (if not root)'
67
+ required: false
68
+ default: ''
69
+ type: string
70
+ secrets:
71
+ JIRA_API_TOKEN:
72
+ required: true
73
+ description: 'Jira API token for authentication'
74
+
75
+ # Concurrency is managed by the parent workflow that calls this one
76
+ # This avoids deadlocks between parent and child workflows
77
+
78
+ jobs:
79
+ create_jira_issue:
80
+ name: 📝 Create Jira Issue
81
+ runs-on: ubuntu-latest
82
+ timeout-minutes: 5
83
+ steps:
84
+ - name: 📥 Checkout repository
85
+ uses: actions/checkout@v4
86
+
87
+ - name: 🔧 Setup Node.js
88
+ uses: actions/setup-node@v4
89
+ with:
90
+ node-version: ${{ inputs.node_version }}
91
+ cache: ${{ inputs.package_manager }}
92
+
93
+ - name: 🔖 Create Jira Issue
94
+ id: create_jira_issue
95
+ run: |
96
+ cd "${{ inputs.working_directory || '.' }}"
97
+
98
+ # Set variables
99
+ WORKFLOW_NAME="${{ inputs.workflow_name }}"
100
+ FAILED_JOB="${{ inputs.failed_job || 'Unknown' }}"
101
+ ISSUE_TYPE="${{ inputs.issue_type }}"
102
+ RUN_URL="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
103
+
104
+ # Get commit message, handling special characters properly
105
+ # Remove leading/trailing whitespace and escape for shell
106
+ COMMIT_MESSAGE="${{ github.event.head_commit.message || 'N/A' }}"
107
+
108
+ # Create summary with failure details
109
+ if [ "$FAILED_JOB" != "Unknown" ]; then
110
+ SUMMARY="🚨 CI Failure: ${WORKFLOW_NAME} - ${FAILED_JOB}"
111
+ else
112
+ SUMMARY="🚨 CI Failure: ${WORKFLOW_NAME}"
113
+ fi
114
+
115
+ # Create Jira description with properly escaped values
116
+ FAILED_AT=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
117
+
118
+ # Create JSON payload for Jira API using jq for proper escaping
119
+ # All dynamic content is passed as jq arguments to ensure proper escaping
120
+ PAYLOAD=$(jq -n \
121
+ --arg key "${{ inputs.JIRA_PROJECT_KEY }}" \
122
+ --arg summary "${SUMMARY}" \
123
+ --arg workflow_name "${WORKFLOW_NAME}" \
124
+ --arg failed_job "${FAILED_JOB}" \
125
+ --arg run_url "${RUN_URL}" \
126
+ --arg repository "${{ github.repository }}" \
127
+ --arg commit "${{ github.sha }}" \
128
+ --arg commit_message "${COMMIT_MESSAGE}" \
129
+ --arg triggered_by "${{ github.actor }}" \
130
+ --arg failed_at "${FAILED_AT}" \
131
+ --arg issuetype "${ISSUE_TYPE}" \
132
+ '{
133
+ "fields": {
134
+ "project": {
135
+ "key": $key
136
+ },
137
+ "summary": $summary,
138
+ "description": ("h2. Workflow Failure\n\nThe \"" + $workflow_name + "\" workflow has failed" + (if $failed_job != "Unknown" then " in job: *" + $failed_job + "*" else "" end) + ".\n\nh3. Details\n* *Workflow Run*: [View Run Details|" + $run_url + "]\n* *Repository*: " + $repository + "\n* *Commit*: " + $commit + "\n* *Commit Message*: " + $commit_message + "\n* *Triggered by*: " + $triggered_by + "\n* *Failed at*: " + $failed_at + "\n\nPlease investigate the workflow logs for more details on the failure."),
139
+ "issuetype": {
140
+ "name": $issuetype
141
+ },
142
+ "labels": ["ci-failure", "automated"]
143
+ }
144
+ }')
145
+
146
+ # Debug: Print the payload to see what's being sent
147
+ echo "Debug: Generated payload:"
148
+ echo "$PAYLOAD" | jq .
149
+
150
+ # Call Jira API to create issue
151
+ RESPONSE=$(curl -s -D- \
152
+ -u "${{ inputs.JIRA_USER_EMAIL }}:${{ secrets.JIRA_API_TOKEN }}" \
153
+ -X POST \
154
+ -H "Content-Type: application/json" \
155
+ --data "${PAYLOAD}" \
156
+ "${{ inputs.JIRA_BASE_URL }}/rest/api/2/issue")
157
+
158
+ # Extract issue key from response
159
+ ISSUE_KEY=$(echo "$RESPONSE" | grep -o 'key":"[^"]*' | cut -d'"' -f3)
160
+
161
+ if [ -n "$ISSUE_KEY" ]; then
162
+ echo "Successfully created Jira issue: $ISSUE_KEY"
163
+ echo "issue_key=$ISSUE_KEY" >> $GITHUB_OUTPUT
164
+ echo "issue_url=${{ inputs.JIRA_BASE_URL }}/browse/$ISSUE_KEY" >> $GITHUB_OUTPUT
165
+ else
166
+ echo "Failed to create Jira issue. API response:"
167
+ echo "$RESPONSE"
168
+
169
+ # Extract HTTP status code for better error diagnosis
170
+ HTTP_STATUS=$(echo "$RESPONSE" | grep -oE "^HTTP/[0-9.]+ [0-9]+" | awk '{print $2}')
171
+ if [ -n "$HTTP_STATUS" ]; then
172
+ echo "HTTP Status Code: $HTTP_STATUS"
173
+
174
+ if [ "$HTTP_STATUS" = "404" ]; then
175
+ echo "Error: API endpoint not found. Please check JIRA_BASE_URL configuration."
176
+ elif [ "$HTTP_STATUS" = "401" ]; then
177
+ echo "Error: Authentication failed. Please check JIRA_USER_EMAIL and JIRA_API_TOKEN."
178
+ elif [ "$HTTP_STATUS" = "403" ]; then
179
+ echo "Error: Permission denied. Please check user permissions."
180
+ fi
181
+ fi
182
+
183
+ # Print payload for debugging (with sensitive data redacted)
184
+ echo "Request payload (redacted):"
185
+ echo "$PAYLOAD" | sed 's/"key":"[^"]*"/"key":"***"/g'
186
+
187
+ exit 1
188
+ fi
189
+
190
+ - name: 📢 Report Issue Creation
191
+ if: steps.create_jira_issue.outputs.issue_key
192
+ run: |
193
+ cd "${{ inputs.working_directory || '.' }}"
194
+ echo "Created Jira issue: ${{ steps.create_jira_issue.outputs.issue_key }}"
195
+ echo "Issue URL: ${{ steps.create_jira_issue.outputs.issue_url }}"