@codyswann/lisa 1.0.0 → 1.0.2

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 (278) hide show
  1. package/README.md +242 -36
  2. package/all/copy-overwrite/.claude/README.md +1 -3
  3. package/all/copy-overwrite/.claude/REFERENCE.md +519 -0
  4. package/all/copy-overwrite/.claude/agents/skill-evaluator.md +7 -7
  5. package/all/copy-overwrite/.claude/agents/test-coverage-agent.md +17 -0
  6. package/all/copy-overwrite/.claude/commands/git/commit.md +9 -5
  7. package/all/copy-overwrite/.claude/commands/git/submit-pr.md +1 -1
  8. package/all/copy-overwrite/.claude/commands/lisa/review-implementation.md +209 -0
  9. package/all/copy-overwrite/.claude/commands/project/add-test-coverage.md +58 -0
  10. package/all/copy-overwrite/.claude/commands/project/archive.md +1 -1
  11. package/all/copy-overwrite/.claude/commands/project/complete-task.md +53 -1
  12. package/all/copy-overwrite/.claude/commands/project/debrief.md +12 -23
  13. package/all/copy-overwrite/.claude/commands/project/execute.md +33 -77
  14. package/all/copy-overwrite/.claude/commands/project/fix-linter-error.md +54 -0
  15. package/all/copy-overwrite/.claude/commands/project/implement.md +24 -28
  16. package/all/copy-overwrite/.claude/commands/project/lower-code-complexity.md +30 -55
  17. package/all/copy-overwrite/.claude/commands/project/plan.md +87 -242
  18. package/all/copy-overwrite/.claude/commands/project/research.md +86 -188
  19. package/all/copy-overwrite/.claude/commands/project/review.md +19 -38
  20. package/all/copy-overwrite/.claude/commands/project/setup.md +1 -1
  21. package/all/copy-overwrite/.claude/commands/project/verify.md +62 -25
  22. package/all/copy-overwrite/.claude/commands/pull-request/review.md +25 -7
  23. package/all/copy-overwrite/.claude/commands/tasks/load.md +63 -0
  24. package/all/copy-overwrite/.claude/commands/tasks/sync.md +84 -0
  25. package/all/copy-overwrite/.claude/hooks/README.md +75 -0
  26. package/all/copy-overwrite/.claude/hooks/check-tired-boss.sh +61 -0
  27. package/all/copy-overwrite/.claude/hooks/debug-hook.sh +47 -0
  28. package/all/copy-overwrite/.claude/hooks/notify-ntfy.sh +2 -0
  29. package/all/copy-overwrite/.claude/hooks/sync-tasks.sh +95 -0
  30. package/all/copy-overwrite/.claude/{skills/coding-philosophy/SKILL.md → rules/coding-philosophy.md} +93 -70
  31. package/all/copy-overwrite/.claude/settings.json +35 -14
  32. package/all/copy-overwrite/.claude/skills/prompt-complexity-scorer/SKILL.md +41 -9
  33. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/init_skill.py +2 -0
  34. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/package_skill.py +2 -0
  35. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/quick_validate.py +2 -0
  36. package/all/copy-overwrite/.safety-net.json +25 -0
  37. package/all/copy-overwrite/CLAUDE.md +8 -30
  38. package/all/copy-overwrite/HUMAN.md +499 -17
  39. package/all/create-only/.claude/rules/PROJECT_RULES.md +9 -0
  40. package/all/create-only/scripts/setup-deploy-key.sh +190 -0
  41. package/all/deletions.json +5 -0
  42. package/cdk/copy-overwrite/.github/workflows/ci.yml +142 -0
  43. package/cdk/copy-overwrite/.github/workflows/deploy.yml +59 -0
  44. package/cdk/copy-overwrite/eslint.cdk.ts +175 -0
  45. package/cdk/copy-overwrite/eslint.config.ts +51 -0
  46. package/cdk/copy-overwrite/eslint.slow.config.ts +80 -0
  47. package/cdk/copy-overwrite/knip.json +53 -0
  48. package/cdk/copy-overwrite/tsconfig.eslint.json +11 -0
  49. package/cdk/merge/package.json +17 -1
  50. package/dist/cli/index.d.ts +3 -2
  51. package/dist/cli/index.d.ts.map +1 -1
  52. package/dist/cli/index.js +83 -64
  53. package/dist/cli/index.js.map +1 -1
  54. package/dist/cli/prompts.d.ts +17 -3
  55. package/dist/cli/prompts.d.ts.map +1 -1
  56. package/dist/cli/prompts.js +52 -16
  57. package/dist/cli/prompts.js.map +1 -1
  58. package/dist/core/config.d.ts +13 -4
  59. package/dist/core/config.d.ts.map +1 -1
  60. package/dist/core/config.js +17 -9
  61. package/dist/core/config.js.map +1 -1
  62. package/dist/core/git-service.d.ts +40 -0
  63. package/dist/core/git-service.d.ts.map +1 -0
  64. package/dist/core/git-service.js +52 -0
  65. package/dist/core/git-service.js.map +1 -0
  66. package/dist/core/index.d.ts +3 -3
  67. package/dist/core/index.js +3 -3
  68. package/dist/core/lisa.d.ts +124 -7
  69. package/dist/core/lisa.d.ts.map +1 -1
  70. package/dist/core/lisa.js +423 -221
  71. package/dist/core/lisa.js.map +1 -1
  72. package/dist/core/manifest.d.ts +5 -1
  73. package/dist/core/manifest.d.ts.map +1 -1
  74. package/dist/core/manifest.js +22 -16
  75. package/dist/core/manifest.js.map +1 -1
  76. package/dist/detection/detector.interface.d.ts +1 -1
  77. package/dist/detection/detectors/cdk.d.ts +6 -1
  78. package/dist/detection/detectors/cdk.d.ts.map +1 -1
  79. package/dist/detection/detectors/cdk.js +16 -8
  80. package/dist/detection/detectors/cdk.js.map +1 -1
  81. package/dist/detection/detectors/expo.d.ts +6 -1
  82. package/dist/detection/detectors/expo.d.ts.map +1 -1
  83. package/dist/detection/detectors/expo.js +13 -8
  84. package/dist/detection/detectors/expo.js.map +1 -1
  85. package/dist/detection/detectors/nestjs.d.ts +7 -2
  86. package/dist/detection/detectors/nestjs.d.ts.map +1 -1
  87. package/dist/detection/detectors/nestjs.js +17 -9
  88. package/dist/detection/detectors/nestjs.js.map +1 -1
  89. package/dist/detection/detectors/npm-package.d.ts +6 -1
  90. package/dist/detection/detectors/npm-package.d.ts.map +1 -1
  91. package/dist/detection/detectors/npm-package.js +9 -4
  92. package/dist/detection/detectors/npm-package.js.map +1 -1
  93. package/dist/detection/detectors/typescript.d.ts +6 -1
  94. package/dist/detection/detectors/typescript.d.ts.map +1 -1
  95. package/dist/detection/detectors/typescript.js +12 -7
  96. package/dist/detection/detectors/typescript.js.map +1 -1
  97. package/dist/detection/index.d.ts +13 -3
  98. package/dist/detection/index.d.ts.map +1 -1
  99. package/dist/detection/index.js +17 -7
  100. package/dist/detection/index.js.map +1 -1
  101. package/dist/errors/index.d.ts +66 -2
  102. package/dist/errors/index.d.ts.map +1 -1
  103. package/dist/errors/index.js +89 -17
  104. package/dist/errors/index.js.map +1 -1
  105. package/dist/index.js +3 -3
  106. package/dist/index.js.map +1 -1
  107. package/dist/logging/console-logger.d.ts +21 -1
  108. package/dist/logging/console-logger.d.ts.map +1 -1
  109. package/dist/logging/console-logger.js +26 -6
  110. package/dist/logging/console-logger.js.map +1 -1
  111. package/dist/logging/index.d.ts +3 -3
  112. package/dist/logging/index.js +2 -2
  113. package/dist/logging/logger.interface.d.ts +1 -1
  114. package/dist/logging/silent-logger.d.ts +21 -1
  115. package/dist/logging/silent-logger.d.ts.map +1 -1
  116. package/dist/logging/silent-logger.js +20 -0
  117. package/dist/logging/silent-logger.js.map +1 -1
  118. package/dist/strategies/copy-contents.d.ts +47 -6
  119. package/dist/strategies/copy-contents.d.ts.map +1 -1
  120. package/dist/strategies/copy-contents.js +99 -49
  121. package/dist/strategies/copy-contents.js.map +1 -1
  122. package/dist/strategies/copy-overwrite.d.ts +10 -2
  123. package/dist/strategies/copy-overwrite.d.ts.map +1 -1
  124. package/dist/strategies/copy-overwrite.js +17 -9
  125. package/dist/strategies/copy-overwrite.js.map +1 -1
  126. package/dist/strategies/create-only.d.ts +10 -2
  127. package/dist/strategies/create-only.d.ts.map +1 -1
  128. package/dist/strategies/create-only.js +14 -6
  129. package/dist/strategies/create-only.js.map +1 -1
  130. package/dist/strategies/index.d.ts +17 -7
  131. package/dist/strategies/index.d.ts.map +1 -1
  132. package/dist/strategies/index.js +19 -9
  133. package/dist/strategies/index.js.map +1 -1
  134. package/dist/strategies/merge.d.ts +10 -2
  135. package/dist/strategies/merge.d.ts.map +1 -1
  136. package/dist/strategies/merge.js +21 -21
  137. package/dist/strategies/merge.js.map +1 -1
  138. package/dist/strategies/strategy.interface.d.ts +1 -1
  139. package/dist/strategies/strategy.interface.d.ts.map +1 -1
  140. package/dist/transaction/backup.d.ts +15 -1
  141. package/dist/transaction/backup.d.ts.map +1 -1
  142. package/dist/transaction/backup.js +47 -12
  143. package/dist/transaction/backup.js.map +1 -1
  144. package/dist/transaction/index.d.ts +3 -3
  145. package/dist/transaction/index.js +2 -2
  146. package/dist/transaction/transaction.d.ts +25 -2
  147. package/dist/transaction/transaction.d.ts.map +1 -1
  148. package/dist/transaction/transaction.js +25 -2
  149. package/dist/transaction/transaction.js.map +1 -1
  150. package/dist/utils/file-operations.d.ts +21 -0
  151. package/dist/utils/file-operations.d.ts.map +1 -1
  152. package/dist/utils/file-operations.js +48 -12
  153. package/dist/utils/file-operations.js.map +1 -1
  154. package/dist/utils/index.d.ts +3 -3
  155. package/dist/utils/index.js +3 -3
  156. package/dist/utils/json-utils.d.ts +12 -0
  157. package/dist/utils/json-utils.d.ts.map +1 -1
  158. package/dist/utils/json-utils.js +17 -5
  159. package/dist/utils/json-utils.js.map +1 -1
  160. package/dist/utils/path-utils.d.ts +11 -0
  161. package/dist/utils/path-utils.d.ts.map +1 -1
  162. package/dist/utils/path-utils.js +12 -1
  163. package/dist/utils/path-utils.js.map +1 -1
  164. package/eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js +5 -0
  165. package/eslint-plugin-code-organization/index.js +5 -0
  166. package/eslint-plugin-code-organization/rules/enforce-statement-order.js +5 -0
  167. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +2 -0
  168. package/expo/copy-overwrite/.claude/skills/container-view-pattern/scripts/create_component.py +2 -0
  169. package/expo/copy-overwrite/.claude/skills/container-view-pattern/scripts/validate_component.py +2 -0
  170. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +2 -0
  171. package/expo/copy-overwrite/.claude/skills/directory-structure/scripts/validate_structure.py +2 -0
  172. package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/scripts/generate-route.py +2 -0
  173. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/scripts/validate_styling.py +2 -41
  174. package/{typescript → expo}/copy-overwrite/.github/workflows/build.yml +3 -0
  175. package/expo/copy-overwrite/.github/workflows/ci.yml +36 -0
  176. package/{typescript → expo}/copy-overwrite/.github/workflows/deploy.yml +6 -26
  177. package/{typescript → expo}/copy-overwrite/.github/workflows/lighthouse.yml +4 -1
  178. package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/plugin-index.test.js +5 -0
  179. package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/require-memo-in-view.test.js +5 -0
  180. package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/single-component-per-file.test.js +5 -0
  181. package/expo/copy-overwrite/eslint-plugin-component-structure/index.js +5 -0
  182. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/enforce-component-structure.js +5 -0
  183. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/no-return-in-view.js +6 -1
  184. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/require-memo-in-view.js +5 -0
  185. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/single-component-per-file.js +5 -0
  186. package/expo/copy-overwrite/eslint-plugin-ui-standards/README.md +0 -68
  187. package/expo/copy-overwrite/eslint-plugin-ui-standards/index.js +5 -3
  188. package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-classname-outside-ui.js +5 -0
  189. package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-direct-rn-imports.js +5 -0
  190. package/expo/copy-overwrite/eslint.config.ts +53 -0
  191. package/expo/copy-overwrite/eslint.expo.ts +330 -0
  192. package/expo/copy-overwrite/eslint.slow.config.ts +86 -0
  193. package/expo/copy-overwrite/knip.json +132 -0
  194. package/expo/copy-overwrite/lighthouserc.js +27 -0
  195. package/expo/copy-overwrite/tsconfig.eslint.json +25 -0
  196. package/expo/create-only/lighthouserc-config.json +6 -1
  197. package/expo/merge/package.json +16 -3
  198. package/nestjs/copy-overwrite/.claude/skills/nestjs-rules/SKILL.md +1 -1
  199. package/{typescript → nestjs}/copy-overwrite/.github/k6/README.md +2 -2
  200. package/{typescript → nestjs}/copy-overwrite/.github/k6/examples/customer-deploy-integration.yml +3 -0
  201. package/{typescript → nestjs}/copy-overwrite/.github/k6/examples/data-driven-test.js +5 -0
  202. package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/load.js +6 -2
  203. package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/smoke.js +5 -0
  204. package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/soak.js +5 -0
  205. package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/spike.js +5 -0
  206. package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/stress.js +5 -0
  207. package/{typescript → nestjs}/copy-overwrite/.github/k6/scripts/api-test.js +5 -0
  208. package/{typescript → nestjs}/copy-overwrite/.github/k6/scripts/default-test.js +5 -0
  209. package/nestjs/copy-overwrite/.github/workflows/ci.yml +29 -0
  210. package/nestjs/copy-overwrite/.github/workflows/deploy.yml +291 -0
  211. package/{typescript → nestjs}/copy-overwrite/.github/workflows/load-test.yml +3 -0
  212. package/nestjs/copy-overwrite/eslint.config.ts +53 -0
  213. package/nestjs/copy-overwrite/eslint.nestjs.ts +178 -0
  214. package/nestjs/merge/package.json +11 -3
  215. package/package.json +34 -40
  216. package/typescript/copy-contents/.husky/pre-commit +1 -1
  217. package/typescript/copy-contents/.husky/pre-push +99 -118
  218. package/typescript/copy-overwrite/.claude/hooks/format-on-edit.sh +2 -0
  219. package/typescript/copy-overwrite/.claude/hooks/install_pkgs.sh +3 -11
  220. package/typescript/copy-overwrite/.claude/hooks/lint-on-edit.sh +2 -0
  221. package/typescript/copy-overwrite/.claude/hooks/sg-scan-on-edit.sh +68 -0
  222. package/typescript/copy-overwrite/.claude/settings.json +79 -0
  223. package/typescript/copy-overwrite/.claude/skills/jsdoc-best-practices/SKILL.md +44 -0
  224. package/typescript/copy-overwrite/.github/README.md +49 -1
  225. package/typescript/copy-overwrite/.github/dependabot.yml +3 -0
  226. package/typescript/copy-overwrite/.github/workflows/ci.yml +7 -29
  227. package/typescript/copy-overwrite/.github/workflows/claude.yml +3 -0
  228. package/typescript/copy-overwrite/.github/workflows/create-github-issue-on-failure.yml +6 -4
  229. package/typescript/copy-overwrite/.github/workflows/create-issue-on-failure.yml +176 -0
  230. package/typescript/copy-overwrite/.github/workflows/create-jira-issue-on-failure.yml +3 -1
  231. package/typescript/copy-overwrite/.github/workflows/create-sentry-issue-on-failure.yml +3 -1
  232. package/typescript/copy-overwrite/.github/workflows/lint-slow.yml +40 -0
  233. package/typescript/copy-overwrite/.github/workflows/quality.yml +151 -38
  234. package/typescript/copy-overwrite/.github/workflows/release.yml +3 -0
  235. package/typescript/copy-overwrite/.gitleaksignore +3 -0
  236. package/typescript/copy-overwrite/.lintstagedrc.json +6 -0
  237. package/typescript/copy-overwrite/.prettierignore +2 -1
  238. package/typescript/copy-overwrite/.yamllint +2 -0
  239. package/typescript/copy-overwrite/ast-grep/rule-tests/.gitkeep +3 -0
  240. package/typescript/copy-overwrite/ast-grep/rules/.gitkeep +3 -0
  241. package/typescript/copy-overwrite/ast-grep/utils/.gitkeep +3 -0
  242. package/typescript/copy-overwrite/{commitlint.config.js → commitlint.config.cjs} +5 -0
  243. package/typescript/copy-overwrite/eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js +5 -0
  244. package/typescript/copy-overwrite/eslint-plugin-code-organization/index.js +5 -0
  245. package/typescript/copy-overwrite/eslint-plugin-code-organization/rules/enforce-statement-order.js +5 -0
  246. package/typescript/copy-overwrite/eslint.base.ts +430 -0
  247. package/typescript/copy-overwrite/eslint.config.ts +52 -0
  248. package/typescript/copy-overwrite/eslint.ignore.config.json +19 -2
  249. package/typescript/copy-overwrite/eslint.slow.config.ts +69 -0
  250. package/typescript/copy-overwrite/eslint.typescript.ts +142 -0
  251. package/typescript/copy-overwrite/knip.json +64 -0
  252. package/typescript/copy-overwrite/sgconfig.yml +11 -0
  253. package/typescript/copy-overwrite/tsconfig.eslint.json +9 -0
  254. package/typescript/create-only/eslint.config.local.ts +24 -0
  255. package/typescript/{copy-overwrite/eslint.thresholds.config.json → create-only/eslint.thresholds.json} +1 -1
  256. package/typescript/github-rulesets/base.json +2 -75
  257. package/typescript/merge/.claude/settings.json +160 -0
  258. package/typescript/merge/package.json +35 -34
  259. package/all/copy-overwrite/.claude/commands/rules/format-md.md +0 -72
  260. package/all/copy-overwrite/.claude/skills/coding-philosophy/references/function-structure.md +0 -416
  261. package/all/copy-overwrite/.claude/skills/coding-philosophy/references/immutable-patterns.md +0 -316
  262. package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-inline-styles.js +0 -73
  263. package/expo/copy-overwrite/eslint.config.mjs +0 -560
  264. package/lisa.sh +0 -35
  265. package/typescript/copy-overwrite/eslint.config.mjs +0 -390
  266. /package/{all/create-only/PROJECT_RULES.md → cdk/copy-overwrite/.github/workflows/.keep} +0 -0
  267. /package/{typescript → nestjs}/copy-overwrite/.github/k6/BROWSER_TESTING_NOTE.md +0 -0
  268. /package/{typescript → nestjs}/copy-overwrite/.github/k6/INTEGRATION_GUIDE.md +0 -0
  269. /package/{typescript → nestjs}/copy-overwrite/.github/k6/SCENARIO_SELECTION_GUIDE.md +0 -0
  270. /package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/load.json +0 -0
  271. /package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/smoke.json +0 -0
  272. /package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/soak.json +0 -0
  273. /package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/spike.json +0 -0
  274. /package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/stress.json +0 -0
  275. /package/{typescript → nestjs}/copy-overwrite/.github/k6/thresholds/normal.json +0 -0
  276. /package/{typescript → nestjs}/copy-overwrite/.github/k6/thresholds/relaxed.json +0 -0
  277. /package/{typescript → nestjs}/copy-overwrite/.github/k6/thresholds/strict.json +0 -0
  278. /package/{typescript → nestjs}/copy-overwrite/.github/workflows/k6-load-test-README.md +0 -0
package/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Lisa is a **Claude Code governance framework** that ensures Claude produces high-quality, consistent code through multiple layers of guardrails, guidance, and automated enforcement.
4
4
 
5
+ > **New to Lisa?** Start with the **[Architecture Overview](OVERVIEW.md)** for a visual guide to how Lisa works, including the developer workflow diagram and multi-layer governance architecture.
6
+
5
7
  ## Why Lisa Exists
6
8
 
7
9
  Claude Code is powerful, but without guardrails it can:
@@ -60,7 +62,7 @@ Lisa is designed for a **two-tier organizational model** that separates AI exper
60
62
  │ IMPLEMENTATION TEAMS │
61
63
  │ │
62
64
  │ • Focus on building end-user software │
63
- │ • Run `lisa.sh` to bootstrap projects
65
+ │ • Run `npx @codyswann/lisa` to bootstrap projects
64
66
  │ • Use simple commands like `/project:implement` │
65
67
  │ • Don't need deep AI expertise │
66
68
  │ • Automatically get guardrails & quality enforcement │
@@ -122,7 +124,7 @@ That's it. Behind the scenes, Lisa ensures:
122
124
  - Knowledge gap detection (stops if questions need answering)
123
125
  - Task breakdown and TDD implementation
124
126
  - Verification that all tasks completed
125
- - New patterns captured in `PROJECT_RULES.md`
127
+ - New patterns captured in `.claude/rules/PROJECT_RULES.md`
126
128
 
127
129
  ### Platform Team Iteration Example
128
130
 
@@ -130,9 +132,26 @@ That's it. Behind the scenes, Lisa ensures:
130
132
  2. **Platform Team** adds a `cognitiveComplexity: 10` threshold to ESLint config
131
133
  3. **Platform Team** writes a skill teaching Claude to decompose complex logic
132
134
  4. **Platform Team** pushes update to Lisa repository
133
- 5. **Implementation Teams** run `lisa.sh` on their projects (or it happens via CI)
135
+ 5. **Implementation Teams** run `lisa` on their projects (or it happens via CI)
134
136
  6. **Implementation Teams** now automatically get simpler, more maintainable code
135
137
 
138
+ ### Upstreaming Improvements
139
+
140
+ When implementation teams make improvements to Lisa-managed files (better CI configs, new hooks, etc.), the `/lisa:review-implementation` command helps upstream those changes back to Lisa:
141
+
142
+ ```bash
143
+ # Start Claude Code with access to both your project and Lisa
144
+ claude --add-dir ~/lisa
145
+
146
+ # Run the review command
147
+ /lisa:review-implementation
148
+ ```
149
+
150
+ This command:
151
+ 1. Compares your project's Lisa-managed files against Lisa's source templates
152
+ 2. Generates a diff report showing what has changed
153
+ 3. Offers to copy improvements back to Lisa for all teams to benefit
154
+
136
155
  ### Forking for Your Organization
137
156
 
138
157
  ```bash
@@ -147,38 +166,68 @@ cd lisa
147
166
  git push origin main
148
167
  ```
149
168
 
150
- Implementation teams then clone from your organization's fork:
169
+ Implementation teams then install from your organization's fork:
151
170
 
152
171
  ```bash
153
- git clone https://github.com/your-org/lisa ~/lisa
154
- ~/lisa/lisa.sh /path/to/project
172
+ # Install globally from your fork
173
+ npm install -g github:your-org/lisa
174
+
175
+ # Or use npx with your fork
176
+ npx github:your-org/lisa /path/to/project
155
177
  ```
156
178
 
157
179
  ## Installation
158
180
 
159
- Clone the Lisa repository to your machine:
181
+ Install Lisa globally via npm:
160
182
 
161
183
  ```bash
162
- git clone <lisa-repo-url> ~/lisa
163
- cd ~/lisa
164
- npm install
165
- npm run build
184
+ npm install -g @codyswann/lisa
185
+ ```
186
+
187
+ Or use npx to run without installing:
188
+
189
+ ```bash
190
+ npx @codyswann/lisa /path/to/project
166
191
  ```
167
192
 
168
193
  ### Requirements
169
194
 
170
- - **Node.js 18+**
171
- - **npm** or **bun**
195
+ - **Node.js 18+** (workflows default to 22.x)
196
+ - **npm**, **bun**, or **pnpm**
197
+
198
+ ### Optional Tools
199
+
200
+ These tools enhance Lisa's capabilities but are not required:
201
+
202
+ - **[CodeRabbit CLI](https://coderabbit.ai/)** - AI-powered code review tool used by `/project:review`
203
+
204
+ **Installation (choose one):**
205
+ ```bash
206
+ # Recommended
207
+ curl -fsSL https://cli.coderabbit.ai/install.sh | sh
208
+ coderabbit --version # Verify installation
209
+
210
+ # Homebrew (macOS/Linux)
211
+ brew install coderabbit
212
+
213
+ # NPX (no install needed)
214
+ npx coderabbitai-mcp@latest
215
+ ```
216
+
217
+ If not installed, the CodeRabbit review step in `/project:review` will be skipped silently.
172
218
 
173
219
  ## Usage
174
220
 
175
221
  Run Lisa against any project directory:
176
222
 
177
223
  ```bash
178
- ~/lisa/lisa.sh /path/to/your-project
224
+ lisa /path/to/your-project
179
225
 
180
226
  # Or from within your project
181
- ~/lisa/lisa.sh .
227
+ lisa .
228
+
229
+ # Or with npx (no install required)
230
+ npx @codyswann/lisa .
182
231
  ```
183
232
 
184
233
  ### Options
@@ -196,7 +245,7 @@ Run Lisa against any project directory:
196
245
  Preview changes before applying them:
197
246
 
198
247
  ```bash
199
- ~/lisa/lisa.sh --dry-run /path/to/your-project
248
+ lisa --dry-run /path/to/your-project
200
249
  ```
201
250
 
202
251
  ### CI/CD Usage
@@ -204,7 +253,10 @@ Preview changes before applying them:
204
253
  For automated pipelines, use non-interactive mode:
205
254
 
206
255
  ```bash
207
- ~/lisa/lisa.sh --yes /path/to/project
256
+ lisa --yes /path/to/project
257
+
258
+ # Or with npx
259
+ npx @codyswann/lisa --yes /path/to/project
208
260
  ```
209
261
 
210
262
  ### Validate Mode
@@ -212,7 +264,7 @@ For automated pipelines, use non-interactive mode:
212
264
  Check project compatibility without making changes:
213
265
 
214
266
  ```bash
215
- ~/lisa/lisa.sh --validate /path/to/project
267
+ lisa --validate /path/to/project
216
268
  ```
217
269
 
218
270
  ### Uninstall
@@ -220,10 +272,10 @@ Check project compatibility without making changes:
220
272
  Remove Lisa-managed files from a project:
221
273
 
222
274
  ```bash
223
- ~/lisa/lisa.sh --uninstall /path/to/project
275
+ lisa --uninstall /path/to/project
224
276
 
225
277
  # Preview what would be removed
226
- ~/lisa/lisa.sh --dry-run --uninstall /path/to/project
278
+ lisa --dry-run --uninstall /path/to/project
227
279
  ```
228
280
 
229
281
  Note: Files applied with `copy-contents` or `merge` strategies require manual cleanup as they modify existing content.
@@ -339,6 +391,7 @@ Pre-built workflows for common tasks:
339
391
  | `/project:verify` | Run all quality checks |
340
392
  | `/git:commit` | Create conventional commit |
341
393
  | `/git:submit-pr` | Create pull request |
394
+ | `/lisa:review-implementation` | Compare project files against Lisa templates, upstream changes |
342
395
 
343
396
  ### Custom ESLint Plugins
344
397
 
@@ -350,7 +403,6 @@ Lisa includes custom ESLint plugins that enforce code structure:
350
403
  **eslint-plugin-component-structure** (Expo)
351
404
  - `single-component-per-file` - One component per file
352
405
  - `require-memo-in-view` - Memoization in view components
353
- - `no-inline-styles` - Extract styles to StyleSheet
354
406
 
355
407
  ### Thresholds
356
408
 
@@ -360,10 +412,30 @@ Configurable limits in `eslint.thresholds.config.json`:
360
412
  {
361
413
  "cognitiveComplexity": 10,
362
414
  "maxLines": 300,
363
- "maxLinesView": 300
415
+ "maxLinesPerFunction": 75
364
416
  }
365
417
  ```
366
418
 
419
+ ### File Backups
420
+
421
+ When Lisa overwrites files that have local modifications (conflicts), it automatically creates timestamped backup copies in the `.lisabak/` directory. This allows you to review or recover your original files if needed.
422
+
423
+ **Backup naming format:** `<YYYY-MM-DD>-<filename>.<extension>.lisa.bak`
424
+
425
+ **Example:**
426
+ ```
427
+ .lisabak/
428
+ ├── 2026-01-19-eslint.config.mjs.lisa.bak
429
+ ├── 2026-01-19-package.json.lisa.bak
430
+ └── 2026-01-19-.prettierrc.json.lisa.bak
431
+ ```
432
+
433
+ **Key behaviors:**
434
+ - Backups are created only when files are overwritten (not on first creation or when identical)
435
+ - Multiple backups of the same file on the same day are all preserved
436
+ - The `.lisabak/` directory is automatically added to `.gitignore` (backups are local-only)
437
+ - Backups are meant for manual review; the `.lisabak/` directory can be safely deleted after reviewing
438
+
367
439
  ## Project Type Detection
368
440
 
369
441
  Lisa auto-detects project types and applies appropriate configurations:
@@ -472,6 +544,28 @@ Once configured, all future releases are automatic:
472
544
  - npm CLI 11.5+ (workflow automatically installs latest)
473
545
  - Cannot use self-hosted GitHub runners (not yet supported by npm)
474
546
 
547
+ **Workflow Configuration:**
548
+
549
+ The `publish-to-npm.yml` workflow accepts configurable inputs:
550
+
551
+ | Input | Default | Description |
552
+ |-------|---------|-------------|
553
+ | `node_version` | `20.x` | Node.js version to use |
554
+ | `package_manager` | `npm` | Package manager (`npm`, `yarn`, or `bun`) |
555
+
556
+ Example with custom configuration:
557
+
558
+ ```yaml
559
+ publish:
560
+ uses: ./.github/workflows/publish-to-npm.yml
561
+ needs: [release]
562
+ with:
563
+ tag: ${{ needs.release.outputs.tag }}
564
+ version: ${{ needs.release.outputs.version }}
565
+ node_version: '22.x'
566
+ package_manager: 'bun'
567
+ ```
568
+
475
569
  ### Extending Lisa for Other Stacks
476
570
 
477
571
  Lisa currently supports TypeScript, npm-package, Expo, NestJS, and CDK—but the architecture is designed for extension. **We're calling on the community to contribute stack-specific configurations.**
@@ -581,7 +675,7 @@ Each type directory contains subdirectories that control how files are applied:
581
675
 
582
676
  **copy-contents**: For files like `.gitignore` where you want to ensure certain lines exist without removing custom entries.
583
677
 
584
- **create-only**: Template files that should only be created once (e.g., `PROJECT_RULES.md` for project-specific customization).
678
+ **create-only**: Template files that should only be created once (e.g., `.claude/rules/PROJECT_RULES.md` for project-specific customization).
585
679
 
586
680
  **merge**: For `package.json` files. Performs a deep merge where:
587
681
  - Lisa provides default values
@@ -625,7 +719,6 @@ lisa/
625
719
  ├── nestjs/ # NestJS projects
626
720
  ├── cdk/ # CDK projects
627
721
  ├── tests/ # Vitest test suite
628
- ├── lisa.sh # Wrapper script
629
722
  ├── package.json
630
723
  ├── tsconfig.json
631
724
  └── vitest.config.ts
@@ -656,7 +749,7 @@ When principles conflict, **KISS wins**. The decision framework:
656
749
 
657
750
  ### Project-Specific Rules
658
751
 
659
- Edit `PROJECT_RULES.md` (created by Lisa) to add project-specific instructions:
752
+ Edit `.claude/rules/PROJECT_RULES.md` (created by Lisa) to add project-specific instructions:
660
753
 
661
754
  ```markdown
662
755
  # Project Rules
@@ -708,14 +801,6 @@ nvm install 18
708
801
  nvm use 18
709
802
  ```
710
803
 
711
- #### "Permission denied" when running lisa.sh
712
-
713
- Make the script executable:
714
-
715
- ```bash
716
- chmod +x ~/lisa/lisa.sh
717
- ```
718
-
719
804
  #### JSON merge fails with "parse error"
720
805
 
721
806
  Your project's `package.json` may have syntax errors. Validate it:
@@ -736,10 +821,10 @@ chmod +x .claude/hooks/*.sh
736
821
 
737
822
  ```bash
738
823
  # See all operations without making changes
739
- ~/lisa/lisa.sh --dry-run /path/to/project
824
+ lisa --dry-run /path/to/project
740
825
 
741
826
  # Check compatibility issues
742
- ~/lisa/lisa.sh --validate /path/to/project
827
+ lisa --validate /path/to/project
743
828
  ```
744
829
 
745
830
  ## Development
@@ -763,7 +848,7 @@ npm test
763
848
  npm run test:watch
764
849
 
765
850
  # Run with coverage
766
- npm run test:coverage
851
+ npm run test:cov
767
852
  ```
768
853
 
769
854
  ### Type Checking
@@ -862,6 +947,127 @@ EOF
862
947
  - Threshold-based complexity limits
863
948
  - Git hooks via Husky for pre-commit gates
864
949
 
950
+ ## Future Enhancements
951
+
952
+ Planned improvements for future versions of Lisa:
953
+
954
+ ### Beads / Task Management Integration
955
+
956
+ Integrate with [Beads](https://github.com/steveyegge/beads), a git-backed issue tracker engineered for AI-supervised coding workflows, and Claude Code's task management system (v2.1.16+).
957
+
958
+ **Value:**
959
+ - **Persistent Memory**: Beads stores tasks as JSONL in `.beads/`, version-controlled with code—agents maintain context across sessions
960
+ - **Dependency-Aware Execution**: `bd ready` shows only unblocked work, enabling true parallel multi-agent execution
961
+ - **Async Workflows**: Combine Claude Code Web + ntfy notifications + Beads status updates for fire-and-forget task execution
962
+ - **Audit Trail**: Git-tracked task history provides immutable record of work decomposition and completion
963
+
964
+ **Integration Points:**
965
+ - Update `/project:plan` to create Beads issues with dependencies
966
+ - Update `/project:execute` to claim and resolve tasks automatically
967
+ - Enable multi-agent orchestration querying `bd ready` for unblocked work
968
+
969
+ ### Biome Migration
970
+
971
+ Migrate formatting from Prettier to [Biome](https://biomejs.dev/) for 40x faster formatting, while keeping ESLint for governance-critical rules.
972
+
973
+ **Value:**
974
+ - **Performance**: Biome formats 10,000 files in 0.3s vs Prettier's 12.1s
975
+ - **Unified Tooling**: Single binary replaces Prettier, reducing dependencies
976
+ - **97% Prettier-Compatible**: Nearly identical output with minimal configuration changes
977
+
978
+ **Approach:**
979
+ - Replace Prettier with Biome formatter (low-risk, high-reward)
980
+ - Keep ESLint for custom rules (enforce-statement-order, functional/immutable-data)
981
+ - Monitor Biome's GritQL plugin system for future full migration when it matures
982
+
983
+ **Note:** Full ESLint replacement is not recommended yet—Lisa's custom plugins and eslint-plugin-functional have no Biome equivalents.
984
+
985
+ ### ESLint Plugin Extraction
986
+
987
+ Extract custom ESLint plugins to separate npm packages for independent versioning and broader adoption.
988
+
989
+ **Current Plugins:**
990
+ - `eslint-plugin-code-organization` (1 rule: enforce-statement-order)
991
+ - `eslint-plugin-component-structure` (4 rules: container/view pattern enforcement)
992
+ - `eslint-plugin-ui-standards` (3 rules: NativeWind/styling standards)
993
+
994
+ **Value:**
995
+ - **Independent Versioning**: Bug fixes ship without waiting for Lisa releases
996
+ - **Reusability**: Any ESLint project can adopt these rules, not just Lisa users
997
+ - **Easier Contribution**: Focused repos with clearer scope for community PRs
998
+ - **Smaller Bundle**: Lisa package size reduced; users install only needed plugins
999
+ - **Clear Ownership**: Each plugin has its own documentation and maintenance cycle
1000
+
1001
+ **Extraction Order:**
1002
+ 1. `eslint-plugin-code-organization` (generic, cleanest extraction)
1003
+ 2. `eslint-plugin-ui-standards` (Expo-specific, smaller)
1004
+ 3. `eslint-plugin-component-structure` (largest, most complex)
1005
+
1006
+ ### Test Library Standardization
1007
+
1008
+ Standardize on Vitest across all Lisa-managed projects for consistent, fast testing.
1009
+
1010
+ **Current State:** Lisa uses Vitest 3.0 with 97 tests, 90% coverage thresholds, and v8 provider.
1011
+
1012
+ **Value:**
1013
+ - **Consistency**: All projects use same test APIs and patterns
1014
+ - **Performance**: Vitest is 10-20x faster than Jest in watch mode
1015
+ - **TypeScript-Native**: No ts-jest configuration needed
1016
+ - **Modern Ecosystem**: Growing adoption (20M+ weekly downloads), active maintenance
1017
+
1018
+ **Trade-offs Considered:**
1019
+ - Jest: Industry standard but slower, requires ts-jest for TypeScript
1020
+ - Bun Test: Fastest but smallest ecosystem, 34% compatibility issues reported
1021
+ - Vitest: Best balance of speed, TypeScript support, and ecosystem maturity
1022
+
1023
+ ### Ruby on Rails Support
1024
+
1025
+ Add Ruby on Rails as a project type with RuboCop integration and Rails-specific skills.
1026
+
1027
+ **Detection:** Check for `Gemfile` + `Gemfile.lock` + `config/application.rb` + `app/` directory
1028
+
1029
+ **What Lisa Would Provide:**
1030
+ - **RuboCop Configuration**: `.rubocop.yml` with rubocop-rails, rubocop-performance, rubocop-rspec
1031
+ - **Skills**: Rails conventions (MVC, service objects, concerns), RSpec testing, database/migrations
1032
+ - **Gemfile Merge**: Add development gems (rspec-rails, factory_bot_rails, faker) via merge strategy
1033
+ - **CI/CD**: GitHub workflows for RuboCop + RSpec
1034
+
1035
+ **Skills to Create:**
1036
+ 1. `rails-conventions` - MVC patterns, service objects, concerns, ActiveRecord
1037
+ 2. `rspec-testing` - Test structure, shared examples, factories, isolation
1038
+ 3. `rubocop-patterns` - Linting rules, Rails-specific cops
1039
+ 4. `rails-database` - Migrations, models, scopes, associations
1040
+
1041
+ **Note:** Rails would be a standalone type (not inheriting from TypeScript) since Ruby uses different tooling.
1042
+
1043
+ ### Plugin Publishing
1044
+
1045
+ Publish Claude Code skills, commands, and agents as installable plugins via the Claude Code marketplace system.
1046
+
1047
+ **Current Plugin Ecosystem:**
1048
+ - Official plugins: `claude-plugins-official` (typescript-lsp, code-review, playwright)
1049
+ - Community registry: [claude-plugins.dev](https://claude-plugins.dev/)
1050
+
1051
+ **Lisa Components That Could Become Plugins:**
1052
+ - `coding-philosophy` skill - Teachable immutability and function structure patterns
1053
+ - `prompt-complexity-scorer` skill - Request complexity evaluation
1054
+ - `jsdoc-best-practices` skill - Documentation standards
1055
+ - `project:*` commands - Implementation workflows
1056
+ - Custom agents (skill-evaluator, codebase-analyzer)
1057
+
1058
+ **Value:**
1059
+ - **À La Carte Adoption**: Teams install only relevant governance patterns
1060
+ - **Automatic Updates**: Plugin updates flow without re-running Lisa CLI
1061
+ - **Community Contributions**: Accept PRs for stack-specific patterns (Django, FastAPI, etc.)
1062
+ - **Ecosystem Discovery**: Listed on claude-plugins.dev for broader reach
1063
+ - **Mix-and-Match**: Combine Lisa's `coding-philosophy` with other teams' specialized plugins
1064
+
1065
+ **Implementation Path:**
1066
+ 1. Extract skills as standalone plugins with `.claude-plugin/plugin.json` manifests
1067
+ 2. Create `lisa-governance-plugins` marketplace repository
1068
+ 3. List on claude-plugins.dev community registry
1069
+ 4. Provide marketplace.json for organizations to self-host
1070
+
865
1071
  ## License
866
1072
 
867
1073
  MIT License - see [LICENSE](LICENSE) for details
@@ -43,7 +43,6 @@ The `enabledPlugins` section in `settings.json` references Claude Code plugins.
43
43
  |--------|-------------|--------------|
44
44
  | `claude-plugins-official` | Official Anthropic plugins | Built-in, no registration needed |
45
45
  | `cc-marketplace` | Community marketplace | Available at [Claude Code Marketplace](https://marketplace.claude.ai) |
46
- | `beads-marketplace` | Beads project plugins | See [Beads Documentation](https://beads.dev) |
47
46
 
48
47
  ### Enabled Plugins
49
48
 
@@ -53,7 +52,6 @@ The `enabledPlugins` section in `settings.json` references Claude Code plugins.
53
52
  | `safety-net` | `cc-marketplace` | Backup and safety features |
54
53
  | `code-simplifier` | `claude-plugins-official` | Code complexity reduction suggestions |
55
54
  | `code-review` | `claude-plugins-official` | Automated code review capabilities |
56
- | `beads` | `beads-marketplace` | Beads project integration |
57
55
  | `playwright` | `claude-plugins-official` | Playwright test integration |
58
56
 
59
57
  ### Installing Plugins
@@ -85,7 +83,7 @@ Create `settings.local.json` to override settings for your local environment:
85
83
  "PostToolUse": []
86
84
  },
87
85
  "enabledPlugins": {
88
- "beads@beads-marketplace": false
86
+ "playwright": false
89
87
  }
90
88
  }
91
89
  ```