@codyswann/lisa 1.47.1 → 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 (210) hide show
  1. package/all/copy-overwrite/.claude/rules/lisa.md +23 -10
  2. package/all/copy-overwrite/.claude/settings.json +10 -252
  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 -253
  26. package/typescript/copy-overwrite/eslint.typescript.ts +1 -1
  27. package/typescript/create-only/.github/workflows/ci.yml +1 -1
  28. package/typescript/deletions.json +12 -1
  29. package/typescript/package-lisa/package.lisa.json +1 -1
  30. package/all/copy-overwrite/.claude/agents/agent-architect.md +0 -310
  31. package/all/copy-overwrite/.claude/agents/architecture-specialist.md +0 -53
  32. package/all/copy-overwrite/.claude/agents/debug-specialist.md +0 -204
  33. package/all/copy-overwrite/.claude/agents/git-history-analyzer.md +0 -183
  34. package/all/copy-overwrite/.claude/agents/hooks-expert.md +0 -74
  35. package/all/copy-overwrite/.claude/agents/implementer.md +0 -54
  36. package/all/copy-overwrite/.claude/agents/learner.md +0 -44
  37. package/all/copy-overwrite/.claude/agents/performance-specialist.md +0 -95
  38. package/all/copy-overwrite/.claude/agents/product-specialist.md +0 -72
  39. package/all/copy-overwrite/.claude/agents/quality-specialist.md +0 -55
  40. package/all/copy-overwrite/.claude/agents/security-specialist.md +0 -58
  41. package/all/copy-overwrite/.claude/agents/skill-evaluator.md +0 -246
  42. package/all/copy-overwrite/.claude/agents/slash-command-architect.md +0 -87
  43. package/all/copy-overwrite/.claude/agents/test-specialist.md +0 -64
  44. package/all/copy-overwrite/.claude/agents/verification-specialist.md +0 -189
  45. package/all/copy-overwrite/.claude/agents/web-search-researcher.md +0 -112
  46. package/all/copy-overwrite/.claude/commands/git/commit-and-submit-pr.md +0 -7
  47. package/all/copy-overwrite/.claude/commands/git/commit-submit-pr-and-verify.md +0 -7
  48. package/all/copy-overwrite/.claude/commands/git/commit-submit-pr-deploy-and-verify.md +0 -7
  49. package/all/copy-overwrite/.claude/commands/git/commit.md +0 -7
  50. package/all/copy-overwrite/.claude/commands/git/prune.md +0 -6
  51. package/all/copy-overwrite/.claude/commands/git/submit-pr.md +0 -7
  52. package/all/copy-overwrite/.claude/commands/jira/create.md +0 -7
  53. package/all/copy-overwrite/.claude/commands/jira/sync.md +0 -7
  54. package/all/copy-overwrite/.claude/commands/jira/verify.md +0 -7
  55. package/all/copy-overwrite/.claude/commands/lisa/review-implementation.md +0 -7
  56. package/all/copy-overwrite/.claude/commands/plan/add-test-coverage.md +0 -7
  57. package/all/copy-overwrite/.claude/commands/plan/create.md +0 -6
  58. package/all/copy-overwrite/.claude/commands/plan/execute.md +0 -7
  59. package/all/copy-overwrite/.claude/commands/plan/fix-linter-error.md +0 -7
  60. package/all/copy-overwrite/.claude/commands/plan/local-code-review.md +0 -6
  61. package/all/copy-overwrite/.claude/commands/plan/lower-code-complexity.md +0 -6
  62. package/all/copy-overwrite/.claude/commands/plan/reduce-max-lines-per-function.md +0 -7
  63. package/all/copy-overwrite/.claude/commands/plan/reduce-max-lines.md +0 -7
  64. package/all/copy-overwrite/.claude/commands/pull-request/review.md +0 -7
  65. package/all/copy-overwrite/.claude/commands/security/zap-scan.md +0 -6
  66. package/all/copy-overwrite/.claude/commands/sonarqube/check.md +0 -6
  67. package/all/copy-overwrite/.claude/commands/sonarqube/fix.md +0 -6
  68. package/all/copy-overwrite/.claude/commands/tasks/load.md +0 -7
  69. package/all/copy-overwrite/.claude/commands/tasks/sync.md +0 -7
  70. package/all/copy-overwrite/.claude/hooks/check-tired-boss.sh +0 -61
  71. package/all/copy-overwrite/.claude/hooks/debug-hook.sh +0 -47
  72. package/all/copy-overwrite/.claude/hooks/enforce-plan-rules.sh +0 -15
  73. package/all/copy-overwrite/.claude/hooks/notify-ntfy.sh +0 -183
  74. package/all/copy-overwrite/.claude/hooks/setup-jira-cli.sh +0 -52
  75. package/all/copy-overwrite/.claude/hooks/sync-tasks.sh +0 -107
  76. package/all/copy-overwrite/.claude/hooks/ticket-sync-reminder.sh +0 -23
  77. package/all/copy-overwrite/.claude/hooks/track-plan-sessions.sh +0 -164
  78. package/all/copy-overwrite/.claude/hooks/verify-completion.sh +0 -77
  79. package/all/copy-overwrite/.claude/rules/coding-philosophy.md +0 -428
  80. package/all/copy-overwrite/.claude/rules/verfication.md +0 -596
  81. package/all/copy-overwrite/.claude/skills/agent-design-best-practices/SKILL.md +0 -219
  82. package/all/copy-overwrite/.claude/skills/git-commit/SKILL.md +0 -48
  83. package/all/copy-overwrite/.claude/skills/git-commit-and-submit-pr/SKILL.md +0 -8
  84. package/all/copy-overwrite/.claude/skills/git-commit-submit-pr-and-verify/SKILL.md +0 -7
  85. package/all/copy-overwrite/.claude/skills/git-commit-submit-pr-deploy-and-verify/SKILL.md +0 -7
  86. package/all/copy-overwrite/.claude/skills/git-prune/SKILL.md +0 -35
  87. package/all/copy-overwrite/.claude/skills/git-submit-pr/SKILL.md +0 -44
  88. package/all/copy-overwrite/.claude/skills/jira-create/SKILL.md +0 -41
  89. package/all/copy-overwrite/.claude/skills/jira-sync/SKILL.md +0 -63
  90. package/all/copy-overwrite/.claude/skills/jira-verify/SKILL.md +0 -29
  91. package/all/copy-overwrite/.claude/skills/lisa-review-implementation/SKILL.md +0 -209
  92. package/all/copy-overwrite/.claude/skills/plan-add-test-coverage/SKILL.md +0 -44
  93. package/all/copy-overwrite/.claude/skills/plan-execute/SKILL.md +0 -89
  94. package/all/copy-overwrite/.claude/skills/plan-fix-linter-error/SKILL.md +0 -45
  95. package/all/copy-overwrite/.claude/skills/plan-local-code-review/SKILL.md +0 -88
  96. package/all/copy-overwrite/.claude/skills/plan-lower-code-complexity/SKILL.md +0 -44
  97. package/all/copy-overwrite/.claude/skills/plan-reduce-max-lines/SKILL.md +0 -45
  98. package/all/copy-overwrite/.claude/skills/plan-reduce-max-lines-per-function/SKILL.md +0 -46
  99. package/all/copy-overwrite/.claude/skills/pull-request-review/SKILL.md +0 -68
  100. package/all/copy-overwrite/.claude/skills/security-zap-scan/SKILL.md +0 -33
  101. package/all/copy-overwrite/.claude/skills/skill-creator/LICENSE.txt +0 -202
  102. package/all/copy-overwrite/.claude/skills/skill-creator/SKILL.md +0 -210
  103. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/__pycache__/quick_validate.cpython-312.pyc +0 -0
  104. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/init_skill.py +0 -305
  105. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/package_skill.py +0 -112
  106. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/quick_validate.py +0 -67
  107. package/all/copy-overwrite/.claude/skills/sonarqube-check/SKILL.md +0 -11
  108. package/all/copy-overwrite/.claude/skills/sonarqube-fix/SKILL.md +0 -8
  109. package/all/copy-overwrite/.claude/skills/tasks-load/SKILL.md +0 -88
  110. package/all/copy-overwrite/.claude/skills/tasks-sync/SKILL.md +0 -108
  111. package/eslint-plugin-code-organization/README.md +0 -149
  112. package/eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js +0 -473
  113. package/eslint-plugin-code-organization/index.js +0 -28
  114. package/eslint-plugin-code-organization/package.json +0 -10
  115. package/eslint-plugin-code-organization/rules/enforce-statement-order.js +0 -162
  116. package/expo/copy-overwrite/.claude/agents/ops-specialist.md +0 -124
  117. package/expo/copy-overwrite/.claude/rules/expo-verification.md +0 -261
  118. package/expo/copy-overwrite/.claude/skills/apollo-client/SKILL.md +0 -238
  119. package/expo/copy-overwrite/.claude/skills/apollo-client/references/mutation-patterns.md +0 -360
  120. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/SKILL.md +0 -360
  121. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/atomic-levels.md +0 -417
  122. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/folder-structure.md +0 -257
  123. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/gluestack-mapping.md +0 -233
  124. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +0 -329
  125. package/expo/copy-overwrite/.claude/skills/container-view-pattern/SKILL.md +0 -299
  126. package/expo/copy-overwrite/.claude/skills/container-view-pattern/references/examples.md +0 -749
  127. package/expo/copy-overwrite/.claude/skills/container-view-pattern/references/patterns.md +0 -318
  128. package/expo/copy-overwrite/.claude/skills/container-view-pattern/scripts/create_component.py +0 -200
  129. package/expo/copy-overwrite/.claude/skills/container-view-pattern/scripts/validate_component.py +0 -209
  130. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/SKILL.md +0 -268
  131. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/common-issues.md +0 -619
  132. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/file-extensions.md +0 -340
  133. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/platform-api.md +0 -276
  134. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +0 -416
  135. package/expo/copy-overwrite/.claude/skills/directory-structure/SKILL.md +0 -202
  136. package/expo/copy-overwrite/.claude/skills/directory-structure/scripts/validate_structure.py +0 -445
  137. package/expo/copy-overwrite/.claude/skills/expo-env-config/SKILL.md +0 -309
  138. package/expo/copy-overwrite/.claude/skills/expo-env-config/references/validation-patterns.md +0 -417
  139. package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/SKILL.md +0 -431
  140. package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/references/official-docs.md +0 -290
  141. package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/scripts/generate-route.py +0 -171
  142. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/SKILL.md +0 -411
  143. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/color-tokens.md +0 -343
  144. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/component-mapping.md +0 -307
  145. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/spacing-scale.md +0 -300
  146. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/scripts/validate_styling.py +0 -315
  147. package/expo/copy-overwrite/.claude/skills/local-state/SKILL.md +0 -362
  148. package/expo/copy-overwrite/.claude/skills/local-state/references/async-storage.md +0 -505
  149. package/expo/copy-overwrite/.claude/skills/local-state/references/persistence-patterns.md +0 -711
  150. package/expo/copy-overwrite/.claude/skills/local-state/references/reactive-variables.md +0 -446
  151. package/expo/copy-overwrite/.claude/skills/ops-browser-uat/SKILL.md +0 -124
  152. package/expo/copy-overwrite/.claude/skills/ops-check-logs/SKILL.md +0 -211
  153. package/expo/copy-overwrite/.claude/skills/ops-db-ops/SKILL.md +0 -119
  154. package/expo/copy-overwrite/.claude/skills/ops-deploy/SKILL.md +0 -119
  155. package/expo/copy-overwrite/.claude/skills/ops-monitor-errors/SKILL.md +0 -99
  156. package/expo/copy-overwrite/.claude/skills/ops-performance/SKILL.md +0 -165
  157. package/expo/copy-overwrite/.claude/skills/ops-run-local/SKILL.md +0 -166
  158. package/expo/copy-overwrite/.claude/skills/ops-verify-health/SKILL.md +0 -101
  159. package/expo/copy-overwrite/.claude/skills/owasp-zap/SKILL.md +0 -56
  160. package/expo/copy-overwrite/.claude/skills/playwright-selectors/SKILL.md +0 -223
  161. package/expo/copy-overwrite/.claude/skills/testing-library/SKILL.md +0 -314
  162. package/expo/copy-overwrite/.claude/skills/testing-library/references/async-patterns.md +0 -420
  163. package/expo/copy-overwrite/.claude/skills/testing-library/references/expo-router-testing.md +0 -556
  164. package/expo/copy-overwrite/.claude/skills/testing-library/references/mocking-patterns.md +0 -590
  165. package/expo/copy-overwrite/.claude/skills/testing-library/references/query-priority.md +0 -291
  166. package/expo/copy-overwrite/eslint-plugin-component-structure/README.md +0 -234
  167. package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/plugin-index.test.js +0 -89
  168. package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/require-memo-in-view.test.js +0 -201
  169. package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/single-component-per-file.test.js +0 -294
  170. package/expo/copy-overwrite/eslint-plugin-component-structure/index.js +0 -37
  171. package/expo/copy-overwrite/eslint-plugin-component-structure/package.json +0 -10
  172. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/enforce-component-structure.js +0 -235
  173. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/no-return-in-view.js +0 -96
  174. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/require-memo-in-view.js +0 -183
  175. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/single-component-per-file.js +0 -243
  176. package/expo/copy-overwrite/eslint-plugin-ui-standards/README.md +0 -192
  177. package/expo/copy-overwrite/eslint-plugin-ui-standards/index.js +0 -31
  178. package/expo/copy-overwrite/eslint-plugin-ui-standards/package.json +0 -10
  179. package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-classname-outside-ui.js +0 -56
  180. package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-direct-rn-imports.js +0 -60
  181. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/SKILL.md +0 -176
  182. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/advanced-features.md +0 -527
  183. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/project-patterns.md +0 -483
  184. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/quick-start.md +0 -257
  185. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/resolvers-mutations.md +0 -413
  186. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/types-scalars.md +0 -513
  187. package/nestjs/copy-overwrite/.claude/skills/nestjs-rules/SKILL.md +0 -536
  188. package/nestjs/copy-overwrite/.claude/skills/security-zap-scan/SKILL.md +0 -33
  189. package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/SKILL.md +0 -275
  190. package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/configuration-patterns.md +0 -487
  191. package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/entity-patterns.md +0 -450
  192. package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/observability-patterns.md +0 -536
  193. package/rails/copy-overwrite/.claude/skills/action-controller-best-practices/SKILL.md +0 -374
  194. package/rails/copy-overwrite/.claude/skills/action-view-best-practices/SKILL.md +0 -335
  195. package/rails/copy-overwrite/.claude/skills/active-record-model-best-practices/SKILL.md +0 -166
  196. package/rails/copy-overwrite/.claude/skills/plan-add-test-coverage/SKILL.md +0 -45
  197. package/rails/copy-overwrite/.claude/skills/plan-fix-linter-error/SKILL.md +0 -45
  198. package/rails/copy-overwrite/.claude/skills/plan-lower-code-complexity/SKILL.md +0 -48
  199. package/rails/copy-overwrite/.claude/skills/plan-reduce-max-lines/SKILL.md +0 -46
  200. package/rails/copy-overwrite/.claude/skills/plan-reduce-max-lines-per-function/SKILL.md +0 -46
  201. package/typescript/copy-overwrite/.claude/hooks/format-on-edit.sh +0 -76
  202. package/typescript/copy-overwrite/.claude/hooks/install-pkgs.sh +0 -64
  203. package/typescript/copy-overwrite/.claude/hooks/lint-on-edit.sh +0 -81
  204. package/typescript/copy-overwrite/.claude/hooks/sg-scan-on-edit.sh +0 -68
  205. package/typescript/copy-overwrite/.claude/skills/jsdoc-best-practices/SKILL.md +0 -432
  206. package/typescript/copy-overwrite/eslint-plugin-code-organization/README.md +0 -149
  207. package/typescript/copy-overwrite/eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js +0 -473
  208. package/typescript/copy-overwrite/eslint-plugin-code-organization/index.js +0 -28
  209. package/typescript/copy-overwrite/eslint-plugin-code-organization/package.json +0 -10
  210. 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,263 +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
- "type": "command",
70
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/lint-on-edit.sh"
71
- }
72
- ]
73
- },
74
- {
75
- "matcher": "TaskCreate|TaskUpdate",
76
- "hooks": [
77
- {
78
- "type": "command",
79
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/sync-tasks.sh"
80
- }
81
- ]
82
- },
83
- {
84
- "matcher": "",
85
- "hooks": [
86
- {
87
- "type": "command",
88
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
89
- }
90
- ]
91
- },
92
26
  {
93
27
  "matcher": "Task",
94
- "hooks": [
95
- {
96
- "type": "command",
97
- "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code post-task || true"
98
- }
99
- ]
28
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code post-task || true" }]
100
29
  },
101
30
  {
102
31
  "matcher": "TodoWrite",
103
- "hooks": [
104
- {
105
- "type": "command",
106
- "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code post-todo || true"
107
- }
108
- ]
109
- }
110
- ],
111
- "PostToolUseFailure": [
112
- {
113
- "matcher": "",
114
- "hooks": [
115
- {
116
- "type": "command",
117
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh",
118
- "timeout": 5
119
- }
120
- ]
121
- }
122
- ],
123
- "PreCompact": [
124
- {
125
- "matcher": "",
126
- "hooks": [
127
- {
128
- "type": "command",
129
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh",
130
- "timeout": 5
131
- }
132
- ]
32
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code post-todo || true" }]
133
33
  }
134
34
  ],
135
35
  "PreToolUse": [
136
- {
137
- "matcher": "",
138
- "hooks": [
139
- {
140
- "type": "command",
141
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
142
- }
143
- ]
144
- },
145
36
  {
146
37
  "matcher": "Task",
147
- "hooks": [
148
- {
149
- "type": "command",
150
- "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code pre-task || true"
151
- }
152
- ]
38
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code pre-task || true" }]
153
39
  }
154
40
  ],
155
41
  "SessionEnd": [
156
42
  {
157
43
  "matcher": "",
158
- "hooks": [
159
- {
160
- "type": "command",
161
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
162
- },
163
- {
164
- "type": "command",
165
- "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code session-end || true"
166
- }
167
- ]
44
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code session-end || true" }]
168
45
  }
169
46
  ],
170
47
  "SessionStart": [
171
- {
172
- "matcher": "startup",
173
- "hooks": [
174
- {
175
- "type": "command",
176
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/install-pkgs.sh"
177
- }
178
- ]
179
- },
180
- {
181
- "matcher": "",
182
- "hooks": [
183
- {
184
- "type": "command",
185
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/setup-jira-cli.sh"
186
- },
187
- {
188
- "type": "command",
189
- "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code session-start || true"
190
- }
191
- ]
192
- },
193
48
  {
194
49
  "matcher": "",
195
- "hooks": [
196
- {
197
- "type": "command",
198
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
199
- }
200
- ]
201
- }
202
- ],
203
- "Setup": [
204
- {
205
- "matcher": "",
206
- "hooks": [
207
- {
208
- "type": "command",
209
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh",
210
- "timeout": 5
211
- }
212
- ]
50
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code session-start || true" }]
213
51
  }
214
52
  ],
215
53
  "Stop": [
216
54
  {
217
55
  "matcher": "",
218
- "hooks": [
219
- {
220
- "type": "command",
221
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/verify-completion.sh"
222
- }
223
- ]
224
- },
225
- {
226
- "matcher": "",
227
- "hooks": [
228
- {
229
- "type": "command",
230
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/check-tired-boss.sh"
231
- }
232
- ]
233
- },
234
- {
235
- "matcher": "",
236
- "hooks": [
237
- {
238
- "type": "command",
239
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/notify-ntfy.sh"
240
- },
241
- {
242
- "type": "command",
243
- "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code stop || true"
244
- }
245
- ]
246
- },
247
- {
248
- "matcher": "",
249
- "hooks": [
250
- {
251
- "type": "command",
252
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
253
- }
254
- ]
255
- }
256
- ],
257
- "SubagentStart": [
258
- {
259
- "matcher": "",
260
- "hooks": [
261
- {
262
- "type": "command",
263
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh",
264
- "timeout": 5
265
- }
266
- ]
267
- }
268
- ],
269
- "SubagentStop": [
270
- {
271
- "matcher": "",
272
- "hooks": [
273
- {
274
- "type": "command",
275
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh",
276
- "timeout": 5
277
- }
278
- ]
56
+ "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code stop || true" }]
279
57
  }
280
58
  ],
281
59
  "UserPromptSubmit": [
@@ -291,31 +69,11 @@
291
69
  "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code user-prompt-submit || true"
292
70
  }
293
71
  ]
294
- },
295
- {
296
- "matcher": "",
297
- "hooks": [
298
- {
299
- "type": "command",
300
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/enforce-plan-rules.sh"
301
- }
302
- ]
303
- },
304
- {
305
- "matcher": "",
306
- "hooks": [
307
- {
308
- "type": "command",
309
- "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/debug-hook.sh"
310
- }
311
- ]
312
72
  }
313
73
  ]
314
74
  },
315
75
  "permissions": {
316
- "deny": [
317
- "Read(./.entire/metadata/**)"
318
- ]
76
+ "deny": ["Read(./.entire/metadata/**)"]
319
77
  },
320
78
  "plansDirectory": "./plans"
321
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
  */