@codyswann/lisa 1.0.0 → 1.0.5

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