@codyswann/lisa 1.47.0 → 1.48.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 (216) hide show
  1. package/all/copy-overwrite/.claude/rules/lisa.md +23 -10
  2. package/all/copy-overwrite/.claude/settings.json +10 -230
  3. package/all/deletions.json +67 -1
  4. package/cdk/copy-overwrite/.claude/settings.json +80 -0
  5. package/cdk/create-only/.github/workflows/ci.yml +1 -1
  6. package/cdk/create-only/.github/workflows/deploy.yml +1 -1
  7. package/dist/core/lisa.d.ts +14 -0
  8. package/dist/core/lisa.d.ts.map +1 -1
  9. package/dist/core/lisa.js +47 -0
  10. package/dist/core/lisa.js.map +1 -1
  11. package/expo/copy-overwrite/.claude/settings.json +80 -0
  12. package/expo/copy-overwrite/eslint.expo.ts +2 -2
  13. package/expo/create-only/.github/workflows/ci.yml +1 -1
  14. package/expo/create-only/.github/workflows/deploy.yml +1 -1
  15. package/expo/deletions.json +33 -0
  16. package/expo/package-lisa/package.lisa.json +2 -2
  17. package/nestjs/copy-overwrite/.claude/settings.json +80 -0
  18. package/nestjs/create-only/.github/workflows/ci.yml +1 -1
  19. package/nestjs/create-only/.github/workflows/deploy.yml +1 -1
  20. package/nestjs/deletions.json +8 -0
  21. package/package.json +8 -4
  22. package/rails/copy-overwrite/.claude/settings.json +80 -0
  23. package/rails/create-only/.github/workflows/ci.yml +1 -1
  24. package/rails/deletions.json +11 -1
  25. package/typescript/copy-overwrite/.claude/settings.json +13 -231
  26. package/typescript/copy-overwrite/.github/workflows/claude-ci-auto-fix.yml +1 -0
  27. package/typescript/copy-overwrite/.github/workflows/claude-code-review-response.yml +11 -10
  28. package/typescript/copy-overwrite/.github/workflows/claude-deploy-auto-fix.yml +1 -0
  29. package/typescript/copy-overwrite/.github/workflows/claude-nightly-code-complexity.yml +1 -0
  30. package/typescript/copy-overwrite/.github/workflows/claude-nightly-test-coverage.yml +1 -0
  31. package/typescript/copy-overwrite/.github/workflows/claude-nightly-test-improvement.yml +2 -0
  32. package/typescript/copy-overwrite/.github/workflows/claude.yml +1 -0
  33. package/typescript/copy-overwrite/eslint.typescript.ts +1 -1
  34. package/typescript/create-only/.github/workflows/ci.yml +1 -1
  35. package/typescript/deletions.json +12 -1
  36. package/typescript/package-lisa/package.lisa.json +1 -1
  37. package/all/copy-overwrite/.claude/agents/agent-architect.md +0 -310
  38. package/all/copy-overwrite/.claude/agents/architecture-specialist.md +0 -53
  39. package/all/copy-overwrite/.claude/agents/debug-specialist.md +0 -204
  40. package/all/copy-overwrite/.claude/agents/git-history-analyzer.md +0 -183
  41. package/all/copy-overwrite/.claude/agents/hooks-expert.md +0 -74
  42. package/all/copy-overwrite/.claude/agents/implementer.md +0 -54
  43. package/all/copy-overwrite/.claude/agents/learner.md +0 -44
  44. package/all/copy-overwrite/.claude/agents/performance-specialist.md +0 -95
  45. package/all/copy-overwrite/.claude/agents/product-specialist.md +0 -72
  46. package/all/copy-overwrite/.claude/agents/quality-specialist.md +0 -55
  47. package/all/copy-overwrite/.claude/agents/security-specialist.md +0 -58
  48. package/all/copy-overwrite/.claude/agents/skill-evaluator.md +0 -246
  49. package/all/copy-overwrite/.claude/agents/slash-command-architect.md +0 -87
  50. package/all/copy-overwrite/.claude/agents/test-specialist.md +0 -64
  51. package/all/copy-overwrite/.claude/agents/verification-specialist.md +0 -189
  52. package/all/copy-overwrite/.claude/agents/web-search-researcher.md +0 -112
  53. package/all/copy-overwrite/.claude/commands/git/commit-and-submit-pr.md +0 -7
  54. package/all/copy-overwrite/.claude/commands/git/commit-submit-pr-and-verify.md +0 -7
  55. package/all/copy-overwrite/.claude/commands/git/commit-submit-pr-deploy-and-verify.md +0 -7
  56. package/all/copy-overwrite/.claude/commands/git/commit.md +0 -7
  57. package/all/copy-overwrite/.claude/commands/git/prune.md +0 -6
  58. package/all/copy-overwrite/.claude/commands/git/submit-pr.md +0 -7
  59. package/all/copy-overwrite/.claude/commands/jira/create.md +0 -7
  60. package/all/copy-overwrite/.claude/commands/jira/sync.md +0 -7
  61. package/all/copy-overwrite/.claude/commands/jira/verify.md +0 -7
  62. package/all/copy-overwrite/.claude/commands/lisa/review-implementation.md +0 -7
  63. package/all/copy-overwrite/.claude/commands/plan/add-test-coverage.md +0 -7
  64. package/all/copy-overwrite/.claude/commands/plan/create.md +0 -6
  65. package/all/copy-overwrite/.claude/commands/plan/execute.md +0 -7
  66. package/all/copy-overwrite/.claude/commands/plan/fix-linter-error.md +0 -7
  67. package/all/copy-overwrite/.claude/commands/plan/local-code-review.md +0 -6
  68. package/all/copy-overwrite/.claude/commands/plan/lower-code-complexity.md +0 -6
  69. package/all/copy-overwrite/.claude/commands/plan/reduce-max-lines-per-function.md +0 -7
  70. package/all/copy-overwrite/.claude/commands/plan/reduce-max-lines.md +0 -7
  71. package/all/copy-overwrite/.claude/commands/pull-request/review.md +0 -7
  72. package/all/copy-overwrite/.claude/commands/security/zap-scan.md +0 -6
  73. package/all/copy-overwrite/.claude/commands/sonarqube/check.md +0 -6
  74. package/all/copy-overwrite/.claude/commands/sonarqube/fix.md +0 -6
  75. package/all/copy-overwrite/.claude/commands/tasks/load.md +0 -7
  76. package/all/copy-overwrite/.claude/commands/tasks/sync.md +0 -7
  77. package/all/copy-overwrite/.claude/hooks/check-tired-boss.sh +0 -61
  78. package/all/copy-overwrite/.claude/hooks/debug-hook.sh +0 -47
  79. package/all/copy-overwrite/.claude/hooks/enforce-plan-rules.sh +0 -15
  80. package/all/copy-overwrite/.claude/hooks/notify-ntfy.sh +0 -183
  81. package/all/copy-overwrite/.claude/hooks/setup-jira-cli.sh +0 -52
  82. package/all/copy-overwrite/.claude/hooks/sync-tasks.sh +0 -107
  83. package/all/copy-overwrite/.claude/hooks/ticket-sync-reminder.sh +0 -23
  84. package/all/copy-overwrite/.claude/hooks/track-plan-sessions.sh +0 -164
  85. package/all/copy-overwrite/.claude/rules/coding-philosophy.md +0 -428
  86. package/all/copy-overwrite/.claude/rules/verfication.md +0 -541
  87. package/all/copy-overwrite/.claude/skills/agent-design-best-practices/SKILL.md +0 -219
  88. package/all/copy-overwrite/.claude/skills/git-commit/SKILL.md +0 -48
  89. package/all/copy-overwrite/.claude/skills/git-commit-and-submit-pr/SKILL.md +0 -8
  90. package/all/copy-overwrite/.claude/skills/git-commit-submit-pr-and-verify/SKILL.md +0 -7
  91. package/all/copy-overwrite/.claude/skills/git-commit-submit-pr-deploy-and-verify/SKILL.md +0 -7
  92. package/all/copy-overwrite/.claude/skills/git-prune/SKILL.md +0 -35
  93. package/all/copy-overwrite/.claude/skills/git-submit-pr/SKILL.md +0 -44
  94. package/all/copy-overwrite/.claude/skills/jira-create/SKILL.md +0 -41
  95. package/all/copy-overwrite/.claude/skills/jira-sync/SKILL.md +0 -63
  96. package/all/copy-overwrite/.claude/skills/jira-verify/SKILL.md +0 -29
  97. package/all/copy-overwrite/.claude/skills/lisa-review-implementation/SKILL.md +0 -209
  98. package/all/copy-overwrite/.claude/skills/plan-add-test-coverage/SKILL.md +0 -44
  99. package/all/copy-overwrite/.claude/skills/plan-execute/SKILL.md +0 -89
  100. package/all/copy-overwrite/.claude/skills/plan-fix-linter-error/SKILL.md +0 -45
  101. package/all/copy-overwrite/.claude/skills/plan-local-code-review/SKILL.md +0 -88
  102. package/all/copy-overwrite/.claude/skills/plan-lower-code-complexity/SKILL.md +0 -44
  103. package/all/copy-overwrite/.claude/skills/plan-reduce-max-lines/SKILL.md +0 -45
  104. package/all/copy-overwrite/.claude/skills/plan-reduce-max-lines-per-function/SKILL.md +0 -46
  105. package/all/copy-overwrite/.claude/skills/pull-request-review/SKILL.md +0 -68
  106. package/all/copy-overwrite/.claude/skills/security-zap-scan/SKILL.md +0 -33
  107. package/all/copy-overwrite/.claude/skills/skill-creator/LICENSE.txt +0 -202
  108. package/all/copy-overwrite/.claude/skills/skill-creator/SKILL.md +0 -210
  109. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/__pycache__/quick_validate.cpython-312.pyc +0 -0
  110. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/init_skill.py +0 -305
  111. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/package_skill.py +0 -112
  112. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/quick_validate.py +0 -67
  113. package/all/copy-overwrite/.claude/skills/sonarqube-check/SKILL.md +0 -11
  114. package/all/copy-overwrite/.claude/skills/sonarqube-fix/SKILL.md +0 -8
  115. package/all/copy-overwrite/.claude/skills/tasks-load/SKILL.md +0 -88
  116. package/all/copy-overwrite/.claude/skills/tasks-sync/SKILL.md +0 -108
  117. package/eslint-plugin-code-organization/README.md +0 -149
  118. package/eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js +0 -473
  119. package/eslint-plugin-code-organization/index.js +0 -28
  120. package/eslint-plugin-code-organization/package.json +0 -10
  121. package/eslint-plugin-code-organization/rules/enforce-statement-order.js +0 -162
  122. package/expo/copy-overwrite/.claude/agents/ops-specialist.md +0 -124
  123. package/expo/copy-overwrite/.claude/rules/expo-verification.md +0 -261
  124. package/expo/copy-overwrite/.claude/skills/apollo-client/SKILL.md +0 -238
  125. package/expo/copy-overwrite/.claude/skills/apollo-client/references/mutation-patterns.md +0 -360
  126. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/SKILL.md +0 -360
  127. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/atomic-levels.md +0 -417
  128. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/folder-structure.md +0 -257
  129. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/gluestack-mapping.md +0 -233
  130. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +0 -329
  131. package/expo/copy-overwrite/.claude/skills/container-view-pattern/SKILL.md +0 -299
  132. package/expo/copy-overwrite/.claude/skills/container-view-pattern/references/examples.md +0 -749
  133. package/expo/copy-overwrite/.claude/skills/container-view-pattern/references/patterns.md +0 -318
  134. package/expo/copy-overwrite/.claude/skills/container-view-pattern/scripts/create_component.py +0 -200
  135. package/expo/copy-overwrite/.claude/skills/container-view-pattern/scripts/validate_component.py +0 -209
  136. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/SKILL.md +0 -268
  137. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/common-issues.md +0 -619
  138. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/file-extensions.md +0 -340
  139. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/platform-api.md +0 -276
  140. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +0 -416
  141. package/expo/copy-overwrite/.claude/skills/directory-structure/SKILL.md +0 -202
  142. package/expo/copy-overwrite/.claude/skills/directory-structure/scripts/validate_structure.py +0 -445
  143. package/expo/copy-overwrite/.claude/skills/expo-env-config/SKILL.md +0 -309
  144. package/expo/copy-overwrite/.claude/skills/expo-env-config/references/validation-patterns.md +0 -417
  145. package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/SKILL.md +0 -431
  146. package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/references/official-docs.md +0 -290
  147. package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/scripts/generate-route.py +0 -171
  148. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/SKILL.md +0 -411
  149. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/color-tokens.md +0 -343
  150. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/component-mapping.md +0 -307
  151. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/spacing-scale.md +0 -300
  152. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/scripts/validate_styling.py +0 -315
  153. package/expo/copy-overwrite/.claude/skills/local-state/SKILL.md +0 -362
  154. package/expo/copy-overwrite/.claude/skills/local-state/references/async-storage.md +0 -505
  155. package/expo/copy-overwrite/.claude/skills/local-state/references/persistence-patterns.md +0 -711
  156. package/expo/copy-overwrite/.claude/skills/local-state/references/reactive-variables.md +0 -446
  157. package/expo/copy-overwrite/.claude/skills/ops-browser-uat/SKILL.md +0 -124
  158. package/expo/copy-overwrite/.claude/skills/ops-check-logs/SKILL.md +0 -211
  159. package/expo/copy-overwrite/.claude/skills/ops-db-ops/SKILL.md +0 -119
  160. package/expo/copy-overwrite/.claude/skills/ops-deploy/SKILL.md +0 -119
  161. package/expo/copy-overwrite/.claude/skills/ops-monitor-errors/SKILL.md +0 -99
  162. package/expo/copy-overwrite/.claude/skills/ops-performance/SKILL.md +0 -165
  163. package/expo/copy-overwrite/.claude/skills/ops-run-local/SKILL.md +0 -166
  164. package/expo/copy-overwrite/.claude/skills/ops-verify-health/SKILL.md +0 -101
  165. package/expo/copy-overwrite/.claude/skills/owasp-zap/SKILL.md +0 -56
  166. package/expo/copy-overwrite/.claude/skills/playwright-selectors/SKILL.md +0 -223
  167. package/expo/copy-overwrite/.claude/skills/testing-library/SKILL.md +0 -314
  168. package/expo/copy-overwrite/.claude/skills/testing-library/references/async-patterns.md +0 -420
  169. package/expo/copy-overwrite/.claude/skills/testing-library/references/expo-router-testing.md +0 -556
  170. package/expo/copy-overwrite/.claude/skills/testing-library/references/mocking-patterns.md +0 -590
  171. package/expo/copy-overwrite/.claude/skills/testing-library/references/query-priority.md +0 -291
  172. package/expo/copy-overwrite/eslint-plugin-component-structure/README.md +0 -234
  173. package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/plugin-index.test.js +0 -89
  174. package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/require-memo-in-view.test.js +0 -201
  175. package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/single-component-per-file.test.js +0 -294
  176. package/expo/copy-overwrite/eslint-plugin-component-structure/index.js +0 -37
  177. package/expo/copy-overwrite/eslint-plugin-component-structure/package.json +0 -10
  178. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/enforce-component-structure.js +0 -235
  179. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/no-return-in-view.js +0 -96
  180. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/require-memo-in-view.js +0 -183
  181. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/single-component-per-file.js +0 -243
  182. package/expo/copy-overwrite/eslint-plugin-ui-standards/README.md +0 -192
  183. package/expo/copy-overwrite/eslint-plugin-ui-standards/index.js +0 -31
  184. package/expo/copy-overwrite/eslint-plugin-ui-standards/package.json +0 -10
  185. package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-classname-outside-ui.js +0 -56
  186. package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-direct-rn-imports.js +0 -60
  187. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/SKILL.md +0 -176
  188. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/advanced-features.md +0 -527
  189. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/project-patterns.md +0 -483
  190. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/quick-start.md +0 -257
  191. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/resolvers-mutations.md +0 -413
  192. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/types-scalars.md +0 -513
  193. package/nestjs/copy-overwrite/.claude/skills/nestjs-rules/SKILL.md +0 -536
  194. package/nestjs/copy-overwrite/.claude/skills/security-zap-scan/SKILL.md +0 -33
  195. package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/SKILL.md +0 -275
  196. package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/configuration-patterns.md +0 -487
  197. package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/entity-patterns.md +0 -450
  198. package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/observability-patterns.md +0 -536
  199. package/rails/copy-overwrite/.claude/skills/action-controller-best-practices/SKILL.md +0 -374
  200. package/rails/copy-overwrite/.claude/skills/action-view-best-practices/SKILL.md +0 -335
  201. package/rails/copy-overwrite/.claude/skills/active-record-model-best-practices/SKILL.md +0 -166
  202. package/rails/copy-overwrite/.claude/skills/plan-add-test-coverage/SKILL.md +0 -45
  203. package/rails/copy-overwrite/.claude/skills/plan-fix-linter-error/SKILL.md +0 -45
  204. package/rails/copy-overwrite/.claude/skills/plan-lower-code-complexity/SKILL.md +0 -48
  205. package/rails/copy-overwrite/.claude/skills/plan-reduce-max-lines/SKILL.md +0 -46
  206. package/rails/copy-overwrite/.claude/skills/plan-reduce-max-lines-per-function/SKILL.md +0 -46
  207. package/typescript/copy-overwrite/.claude/hooks/format-on-edit.sh +0 -76
  208. package/typescript/copy-overwrite/.claude/hooks/install-pkgs.sh +0 -64
  209. package/typescript/copy-overwrite/.claude/hooks/lint-on-edit.sh +0 -105
  210. package/typescript/copy-overwrite/.claude/hooks/sg-scan-on-edit.sh +0 -68
  211. package/typescript/copy-overwrite/.claude/skills/jsdoc-best-practices/SKILL.md +0 -432
  212. package/typescript/copy-overwrite/eslint-plugin-code-organization/README.md +0 -149
  213. package/typescript/copy-overwrite/eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js +0 -473
  214. package/typescript/copy-overwrite/eslint-plugin-code-organization/index.js +0 -28
  215. package/typescript/copy-overwrite/eslint-plugin-code-organization/package.json +0 -10
  216. package/typescript/copy-overwrite/eslint-plugin-code-organization/rules/enforce-statement-order.js +0 -162
@@ -17,22 +17,36 @@ The following files are managed by Lisa and will be overwritten on every `lisa`
17
17
  - `eslint.thresholds.json`
18
18
  - `jest.thresholds.json`
19
19
 
20
- ## Directories with both Lisa-managed and project content
20
+ ## Plugin-managed content
21
21
 
22
- These directories contain files deployed by Lisa **and** files you create. Do not edit or delete Lisa-managed files they will be overwritten. You **can** freely add your own. Check `.lisa-manifest` to see which specific files Lisa manages.
22
+ Agents, skills, hooks, and commands are now distributed via the stack-specific Claude Code plugin (e.g., `typescript@lisa`, `expo@lisa`, `nestjs@lisa`). These resources live in the Lisa GitHub repository and update automatically when Claude Code syncs the plugin.
23
23
 
24
- - `.claude/skills/` Add your own skill directories alongside Lisa's
25
- - `.claude/commands/` — Add your own command namespaces alongside Lisa's
26
- - `.claude/hooks/` — Add your own hook scripts alongside Lisa's
27
- - `.claude/agents/` — Add your own agent files alongside Lisa's
24
+ You do not need to manage these files locally. To customize behavior:
25
+ - Add your own agents to `.claude/agents/` alongside plugin-provided ones
26
+ - Add your own skills to `.claude/skills/` alongside plugin-provided ones
27
+ - Add your own hook scripts to `.claude/hooks/` alongside plugin-provided ones
28
+ - Add your own command namespaces to `.claude/commands/` alongside plugin-provided ones
29
+
30
+ | Managed File (do not edit) | Local Override (edit this instead) |
31
+ |---|---|
28
32
  | `eslint.thresholds.json` | Edit directly (create-only, Lisa won't overwrite) |
29
33
  | `jest.thresholds.json` | Edit directly (create-only, Lisa won't overwrite) |
30
- | `.claude/rules/coding-philosophy.md` | `.claude/rules/PROJECT_RULES.md` |
31
- | `.claude/rules/verfication.md` | `.claude/rules/PROJECT_RULES.md` |
34
+
35
+ ## CI/Deploy workflow pattern
36
+
37
+ New projects' `ci.yml` and `deploy.yml` reference the quality and release workflows directly from the Lisa repo:
38
+
39
+ - `ci.yml` calls `CodySwannGT/lisa/.github/workflows/quality.yml@main`
40
+ - `deploy.yml` calls `CodySwannGT/lisa/.github/workflows/release.yml@main`
41
+
42
+ This means workflow improvements in the Lisa repo are picked up automatically without running `lisa:update`.
43
+
44
+ **Existing projects** that were set up before this change will still have local references (`uses: ./.github/workflows/quality.yml`). When you run `lisa:update`, the CLI will print a migration notice with the exact one-time change to make in your `ci.yml` and `deploy.yml`. After making that change, your project will also receive automatic workflow updates.
45
+
46
+ The local copies of `quality.yml` and `release.yml` remain deployed to your project for reference but are no longer called directly by `ci.yml` or `deploy.yml` after migration.
32
47
 
33
48
  ## Files and directories with NO local override (do not edit at all)
34
49
 
35
- - `.claude/rules/coding-philosophy.md`, `.claude/rules/verfication.md`, `.claude/rules/expo-verification.md` (Expo)
36
50
  - `CLAUDE.md`, `HUMAN.md`, `.safety-net.json`
37
51
  - `.prettierrc.json`, `.prettierignore`, `.lintstagedrc.json`, `.versionrc`, `.nvmrc`
38
52
  - `.yamllint`, `.gitleaksignore`, `.coderabbit.yml`, `commitlint.config.cjs`, `sgconfig.yml`, `knip.json`
@@ -40,7 +54,6 @@ These directories contain files deployed by Lisa **and** files you create. Do no
40
54
  - `jest.base.ts`, `jest.typescript.ts`, `jest.expo.ts`, `jest.nestjs.ts`, `jest.cdk.ts`
41
55
  - `tsconfig.base.json`, `tsconfig.typescript.json`, `tsconfig.expo.json`, `tsconfig.nestjs.json`, `tsconfig.cdk.json`
42
56
  - `tsconfig.eslint.json`, `tsconfig.build.json`, `tsconfig.spec.json`
43
- - `eslint-plugin-code-organization/*`, `eslint-plugin-component-structure/*`, `eslint-plugin-ui-standards/*`
44
57
  - `.claude/settings.json`
45
58
  - `.claude/README.md`
46
59
  - `.github/workflows/quality.yml`, `.github/workflows/release.yml`, `.github/workflows/claude.yml`, `.github/workflows/claude-ci-auto-fix.yml`, `.github/workflows/claude-deploy-auto-fix.yml`, `.github/workflows/claude-code-review-response.yml`, `.github/workflows/claude-nightly-test-improvement.yml`, `.github/workflows/claude-nightly-test-coverage.yml`, `.github/workflows/claude-nightly-code-complexity.yml`, `.github/workflows/auto-update-pr-branches.yml`
@@ -12,6 +12,9 @@
12
12
  "coderabbit@claude-plugins-official": true,
13
13
  "sentry@claude-plugins-official": true
14
14
  },
15
+ "extraKnownMarketplaces": {
16
+ "CodySwannGT/lisa": true
17
+ },
15
18
  "env": {
16
19
  "BASH_DEFAULT_TIMEOUT_MS": "1800000",
17
20
  "BASH_MAX_TIMEOUT_MS": "7200000",
@@ -19,241 +22,38 @@
19
22
  "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
20
23
  },
21
24
  "hooks": {
22
- "Notification": [
23
- {
24
- "matcher": "permission_prompt|idle_prompt",
25
- "hooks": [
26
- {
27
- "type": "command",
28
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/notify-ntfy.sh",
29
- "timeout": 5
30
- }
31
- ]
32
- },
33
- {
34
- "matcher": "",
35
- "hooks": [
36
- {
37
- "type": "command",
38
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh",
39
- "timeout": 5
40
- }
41
- ]
42
- }
43
- ],
44
- "PermissionRequest": [
45
- {
46
- "matcher": "",
47
- "hooks": [
48
- {
49
- "type": "command",
50
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh",
51
- "timeout": 5
52
- }
53
- ]
54
- }
55
- ],
56
25
  "PostToolUse": [
57
- {
58
- "matcher": "Write|Edit",
59
- "hooks": [
60
- {
61
- "type": "command",
62
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/format-on-edit.sh"
63
- },
64
- {
65
- "type": "command",
66
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/sg-scan-on-edit.sh"
67
- }
68
- ]
69
- },
70
- {
71
- "matcher": "TaskCreate|TaskUpdate",
72
- "hooks": [
73
- {
74
- "type": "command",
75
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/sync-tasks.sh"
76
- }
77
- ]
78
- },
79
- {
80
- "matcher": "",
81
- "hooks": [
82
- {
83
- "type": "command",
84
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
85
- }
86
- ]
87
- },
88
26
  {
89
27
  "matcher": "Task",
90
- "hooks": [
91
- {
92
- "type": "command",
93
- "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code post-task || true"
94
- }
95
- ]
28
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code post-task || true" }]
96
29
  },
97
30
  {
98
31
  "matcher": "TodoWrite",
99
- "hooks": [
100
- {
101
- "type": "command",
102
- "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code post-todo || true"
103
- }
104
- ]
105
- }
106
- ],
107
- "PostToolUseFailure": [
108
- {
109
- "matcher": "",
110
- "hooks": [
111
- {
112
- "type": "command",
113
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh",
114
- "timeout": 5
115
- }
116
- ]
117
- }
118
- ],
119
- "PreCompact": [
120
- {
121
- "matcher": "",
122
- "hooks": [
123
- {
124
- "type": "command",
125
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh",
126
- "timeout": 5
127
- }
128
- ]
32
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code post-todo || true" }]
129
33
  }
130
34
  ],
131
35
  "PreToolUse": [
132
- {
133
- "matcher": "",
134
- "hooks": [
135
- {
136
- "type": "command",
137
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
138
- }
139
- ]
140
- },
141
36
  {
142
37
  "matcher": "Task",
143
- "hooks": [
144
- {
145
- "type": "command",
146
- "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code pre-task || true"
147
- }
148
- ]
38
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code pre-task || true" }]
149
39
  }
150
40
  ],
151
41
  "SessionEnd": [
152
42
  {
153
43
  "matcher": "",
154
- "hooks": [
155
- {
156
- "type": "command",
157
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
158
- },
159
- {
160
- "type": "command",
161
- "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code session-end || true"
162
- }
163
- ]
44
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code session-end || true" }]
164
45
  }
165
46
  ],
166
47
  "SessionStart": [
167
- {
168
- "matcher": "startup",
169
- "hooks": [
170
- {
171
- "type": "command",
172
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/install-pkgs.sh"
173
- }
174
- ]
175
- },
176
- {
177
- "matcher": "",
178
- "hooks": [
179
- {
180
- "type": "command",
181
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/setup-jira-cli.sh"
182
- },
183
- {
184
- "type": "command",
185
- "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code session-start || true"
186
- }
187
- ]
188
- },
189
48
  {
190
49
  "matcher": "",
191
- "hooks": [
192
- {
193
- "type": "command",
194
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
195
- }
196
- ]
197
- }
198
- ],
199
- "Setup": [
200
- {
201
- "matcher": "",
202
- "hooks": [
203
- {
204
- "type": "command",
205
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh",
206
- "timeout": 5
207
- }
208
- ]
50
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code session-start || true" }]
209
51
  }
210
52
  ],
211
53
  "Stop": [
212
54
  {
213
55
  "matcher": "",
214
- "hooks": [
215
- {
216
- "type": "command",
217
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/notify-ntfy.sh"
218
- },
219
- {
220
- "type": "command",
221
- "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code stop || true"
222
- }
223
- ]
224
- },
225
- {
226
- "matcher": "",
227
- "hooks": [
228
- {
229
- "type": "command",
230
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
231
- }
232
- ]
233
- }
234
- ],
235
- "SubagentStart": [
236
- {
237
- "matcher": "",
238
- "hooks": [
239
- {
240
- "type": "command",
241
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh",
242
- "timeout": 5
243
- }
244
- ]
245
- }
246
- ],
247
- "SubagentStop": [
248
- {
249
- "matcher": "",
250
- "hooks": [
251
- {
252
- "type": "command",
253
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh",
254
- "timeout": 5
255
- }
256
- ]
56
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code stop || true" }]
257
57
  }
258
58
  ],
259
59
  "UserPromptSubmit": [
@@ -269,31 +69,11 @@
269
69
  "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code user-prompt-submit || true"
270
70
  }
271
71
  ]
272
- },
273
- {
274
- "matcher": "",
275
- "hooks": [
276
- {
277
- "type": "command",
278
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/enforce-plan-rules.sh"
279
- }
280
- ]
281
- },
282
- {
283
- "matcher": "",
284
- "hooks": [
285
- {
286
- "type": "command",
287
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
288
- }
289
- ]
290
72
  }
291
73
  ]
292
74
  },
293
75
  "permissions": {
294
- "deny": [
295
- "Read(./.entire/metadata/**)"
296
- ]
76
+ "deny": ["Read(./.entire/metadata/**)"]
297
77
  },
298
78
  "plansDirectory": "./plans"
299
79
  }
@@ -59,6 +59,72 @@
59
59
  ".claude/agents/spec-analyst.md",
60
60
  ".claude/agents/tech-reviewer.md",
61
61
  ".claude/agents/test-coverage-agent.md",
62
- ".claude/agents/test-strategist.md"
62
+ ".claude/agents/test-strategist.md",
63
+ ".claude/agents/agent-architect.md",
64
+ ".claude/agents/architecture-specialist.md",
65
+ ".claude/agents/debug-specialist.md",
66
+ ".claude/agents/git-history-analyzer.md",
67
+ ".claude/agents/hooks-expert.md",
68
+ ".claude/agents/implementer.md",
69
+ ".claude/agents/learner.md",
70
+ ".claude/agents/performance-specialist.md",
71
+ ".claude/agents/product-specialist.md",
72
+ ".claude/agents/quality-specialist.md",
73
+ ".claude/agents/security-specialist.md",
74
+ ".claude/agents/skill-evaluator.md",
75
+ ".claude/agents/slash-command-architect.md",
76
+ ".claude/agents/test-specialist.md",
77
+ ".claude/agents/verification-specialist.md",
78
+ ".claude/agents/web-search-researcher.md",
79
+ ".claude/commands/git",
80
+ ".claude/commands/jira",
81
+ ".claude/commands/lisa",
82
+ ".claude/commands/plan",
83
+ ".claude/commands/plans",
84
+ ".claude/commands/pull-request",
85
+ ".claude/commands/security",
86
+ ".claude/commands/sonarqube",
87
+ ".claude/commands/tasks",
88
+ ".claude/skills/agent-design-best-practices",
89
+ ".claude/skills/git-commit",
90
+ ".claude/skills/git-commit-and-submit-pr",
91
+ ".claude/skills/git-commit-submit-pr-and-verify",
92
+ ".claude/skills/git-commit-submit-pr-deploy-and-verify",
93
+ ".claude/skills/git-prune",
94
+ ".claude/skills/git-submit-pr",
95
+ ".claude/skills/jira-add-journey",
96
+ ".claude/skills/jira-create",
97
+ ".claude/skills/jira-evidence",
98
+ ".claude/skills/jira-fix",
99
+ ".claude/skills/jira-implement",
100
+ ".claude/skills/jira-journey",
101
+ ".claude/skills/jira-sync",
102
+ ".claude/skills/jira-verify",
103
+ ".claude/skills/lisa-review-implementation",
104
+ ".claude/skills/plan-add-test-coverage",
105
+ ".claude/skills/plan-execute",
106
+ ".claude/skills/plan-fix-linter-error",
107
+ ".claude/skills/plan-local-code-review",
108
+ ".claude/skills/plan-lower-code-complexity",
109
+ ".claude/skills/plan-reduce-max-lines",
110
+ ".claude/skills/plan-reduce-max-lines-per-function",
111
+ ".claude/skills/pull-request-review",
112
+ ".claude/skills/security-zap-scan",
113
+ ".claude/skills/skill-creator",
114
+ ".claude/skills/sonarqube-check",
115
+ ".claude/skills/sonarqube-fix",
116
+ ".claude/skills/tasks-load",
117
+ ".claude/skills/tasks-sync",
118
+ ".claude/hooks/check-tired-boss.sh",
119
+ ".claude/hooks/debug-hook.sh",
120
+ ".claude/hooks/enforce-plan-rules.sh",
121
+ ".claude/hooks/notify-ntfy.sh",
122
+ ".claude/hooks/setup-jira-cli.sh",
123
+ ".claude/hooks/sync-tasks.sh",
124
+ ".claude/hooks/ticket-sync-reminder.sh",
125
+ ".claude/hooks/track-plan-sessions.sh",
126
+ ".claude/hooks/verify-completion.sh",
127
+ ".claude/rules/coding-philosophy.md",
128
+ ".claude/rules/verfication.md"
63
129
  ]
64
130
  }
@@ -0,0 +1,80 @@
1
+ {
2
+ "attribution": {
3
+ "commit": "🤖 Generated with Claude Code\n\nCo-Authored-By: Claude",
4
+ "pr": "🤖 Generated with Claude Code"
5
+ },
6
+ "enabledPlugins": {
7
+ "typescript-lsp@claude-plugins-official": true,
8
+ "safety-net@cc-marketplace": true,
9
+ "code-simplifier@claude-plugins-official": true,
10
+ "code-review@claude-plugins-official": true,
11
+ "playwright@claude-plugins-official": true,
12
+ "coderabbit@claude-plugins-official": true,
13
+ "sentry@claude-plugins-official": true,
14
+ "cdk@lisa": true
15
+ },
16
+ "extraKnownMarketplaces": {
17
+ "CodySwannGT/lisa": true
18
+ },
19
+ "env": {
20
+ "BASH_DEFAULT_TIMEOUT_MS": "1800000",
21
+ "BASH_MAX_TIMEOUT_MS": "7200000",
22
+ "CLAUDE_DEBUG": "0",
23
+ "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
24
+ },
25
+ "hooks": {
26
+ "PostToolUse": [
27
+ {
28
+ "matcher": "Task",
29
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code post-task || true" }]
30
+ },
31
+ {
32
+ "matcher": "TodoWrite",
33
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code post-todo || true" }]
34
+ }
35
+ ],
36
+ "PreToolUse": [
37
+ {
38
+ "matcher": "Task",
39
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code pre-task || true" }]
40
+ }
41
+ ],
42
+ "SessionEnd": [
43
+ {
44
+ "matcher": "",
45
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code session-end || true" }]
46
+ }
47
+ ],
48
+ "SessionStart": [
49
+ {
50
+ "matcher": "",
51
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code session-start || true" }]
52
+ }
53
+ ],
54
+ "Stop": [
55
+ {
56
+ "matcher": "",
57
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code stop || true" }]
58
+ }
59
+ ],
60
+ "UserPromptSubmit": [
61
+ {
62
+ "matcher": "",
63
+ "hooks": [
64
+ {
65
+ "type": "command",
66
+ "command": "echo 'REMINDER: Start your response with \"I'\\''m tired boss\" as required by CLAUDE.md.'"
67
+ },
68
+ {
69
+ "type": "command",
70
+ "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code user-prompt-submit || true"
71
+ }
72
+ ]
73
+ }
74
+ ]
75
+ },
76
+ "permissions": {
77
+ "deny": ["Read(./.entire/metadata/**)"]
78
+ },
79
+ "plansDirectory": "./plans"
80
+ }
@@ -126,7 +126,7 @@ jobs:
126
126
  name: 🔍 Quality Checks
127
127
  needs: [determine_environment, cdk-checks] # Ensure CDK checks pass first
128
128
  # Reference to the quality checks workflow
129
- uses: ./.github/workflows/quality.yml
129
+ uses: CodySwannGT/lisa/.github/workflows/quality.yml@main
130
130
  with:
131
131
  node_version: '22.21.1'
132
132
  package_manager: 'bun'
@@ -43,7 +43,7 @@ jobs:
43
43
  release:
44
44
  name: 📦 Release
45
45
  # Reference to the quality checks workflow
46
- uses: ./.github/workflows/release.yml
46
+ uses: CodySwannGT/lisa/.github/workflows/release.yml@main
47
47
  needs: [determine_environment]
48
48
  with:
49
49
  environment: ${{ needs.determine_environment.outputs.environment }}
@@ -199,6 +199,20 @@ export declare class Lisa {
199
199
  * Print summary
200
200
  */
201
201
  private printSummary;
202
+ /**
203
+ * Read a file's contents, returning null if the file does not exist or cannot be read.
204
+ * Used for optional file checks that should not interrupt the main flow on failure.
205
+ * @param filePath - Absolute path to the file to read
206
+ * @returns File contents as a string, or null if unavailable
207
+ */
208
+ private tryReadFile;
209
+ /**
210
+ * Print migration notices when the project's ci.yml or deploy.yml still reference
211
+ * local quality/release workflows instead of the canonical Lisa repo versions.
212
+ * Printed after the update summary so users see it as a post-update action item.
213
+ * @param projectDir - The destination project directory to inspect
214
+ */
215
+ private printMigrationNotices;
202
216
  /**
203
217
  * Remove empty directories after uninstall
204
218
  */
@@ -1 +1 @@
1
- {"version":3,"file":"lisa.d.ts","sourceRoot":"","sources":["../../src/core/lisa.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lisa.d.ts","sourceRoot":"","sources":["../../src/core/lisa.ts"],"names":[],"mappings":"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"}
package/dist/core/lisa.js CHANGED
@@ -259,6 +259,7 @@ export class Lisa {
259
259
  await this.processDeletions();
260
260
  await this.finalize();
261
261
  this.printSummary();
262
+ await this.printMigrationNotices(this.config.destDir);
262
263
  return this.getSuccessResult();
263
264
  }
264
265
  catch (error) {
@@ -715,6 +716,52 @@ export class Lisa {
715
716
  this.printProjectTypes();
716
717
  this.printValidationResult();
717
718
  }
719
+ /**
720
+ * Read a file's contents, returning null if the file does not exist or cannot be read.
721
+ * Used for optional file checks that should not interrupt the main flow on failure.
722
+ * @param filePath - Absolute path to the file to read
723
+ * @returns File contents as a string, or null if unavailable
724
+ */
725
+ async tryReadFile(filePath) {
726
+ try {
727
+ return await readFile(filePath, "utf-8");
728
+ }
729
+ catch {
730
+ return null;
731
+ }
732
+ }
733
+ /**
734
+ * Print migration notices when the project's ci.yml or deploy.yml still reference
735
+ * local quality/release workflows instead of the canonical Lisa repo versions.
736
+ * Printed after the update summary so users see it as a post-update action item.
737
+ * @param projectDir - The destination project directory to inspect
738
+ */
739
+ async printMigrationNotices(projectDir) {
740
+ const ciPath = path.join(projectDir, ".github", "workflows", "ci.yml");
741
+ const deployPath = path.join(projectDir, ".github", "workflows", "deploy.yml");
742
+ const [ciContent, deployContent] = await Promise.all([
743
+ this.tryReadFile(ciPath),
744
+ this.tryReadFile(deployPath),
745
+ ]);
746
+ const notices = [
747
+ ciContent?.includes("uses: ./.github/workflows/quality.yml")
748
+ ? " .github/workflows/ci.yml — change:\n uses: ./.github/workflows/quality.yml\n → uses: CodySwannGT/lisa/.github/workflows/quality.yml@main"
749
+ : null,
750
+ deployContent?.includes("uses: ./.github/workflows/release.yml")
751
+ ? " .github/workflows/deploy.yml — change:\n uses: ./.github/workflows/release.yml\n → uses: CodySwannGT/lisa/.github/workflows/release.yml@main"
752
+ : null,
753
+ ].filter((n) => n !== null);
754
+ if (notices.length === 0) {
755
+ return;
756
+ }
757
+ console.log("");
758
+ console.log(pc.yellow("⚠️ Action required: Update your CI/Deploy workflows to call the Lisa repo directly."));
759
+ console.log("");
760
+ console.log(notices.join("\n\n"));
761
+ console.log("");
762
+ console.log(" After this one-time change, quality/release workflow updates will be automatic.");
763
+ console.log("");
764
+ }
718
765
  /**
719
766
  * Remove empty directories after uninstall
720
767
  */