@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.
- package/README.md +244 -36
- package/all/copy-overwrite/.claude/README.md +1 -3
- package/all/copy-overwrite/.claude/REFERENCE.md +519 -0
- package/all/copy-overwrite/.claude/agents/skill-evaluator.md +7 -7
- package/all/copy-overwrite/.claude/agents/test-coverage-agent.md +17 -0
- package/all/copy-overwrite/.claude/commands/git/commit.md +9 -5
- package/all/copy-overwrite/.claude/commands/git/submit-pr.md +1 -1
- package/all/copy-overwrite/.claude/commands/lisa/review-implementation.md +209 -0
- package/all/copy-overwrite/.claude/commands/project/add-test-coverage.md +58 -0
- package/all/copy-overwrite/.claude/commands/project/archive.md +1 -1
- package/all/copy-overwrite/.claude/commands/project/complete-task.md +53 -1
- package/all/copy-overwrite/.claude/commands/project/debrief.md +12 -23
- package/all/copy-overwrite/.claude/commands/project/execute.md +33 -77
- package/all/copy-overwrite/.claude/commands/project/fix-linter-error.md +87 -0
- package/all/copy-overwrite/.claude/commands/project/implement.md +24 -28
- package/all/copy-overwrite/.claude/commands/project/lower-code-complexity.md +30 -55
- package/all/copy-overwrite/.claude/commands/project/plan.md +87 -242
- package/all/copy-overwrite/.claude/commands/project/reduce-max-lines-per-function.md +76 -0
- package/all/copy-overwrite/.claude/commands/project/reduce-max-lines.md +75 -0
- package/all/copy-overwrite/.claude/commands/project/research.md +86 -188
- package/all/copy-overwrite/.claude/commands/project/review.md +19 -38
- package/all/copy-overwrite/.claude/commands/project/setup.md +1 -1
- package/all/copy-overwrite/.claude/commands/project/verify.md +62 -25
- package/all/copy-overwrite/.claude/commands/pull-request/review.md +25 -7
- package/all/copy-overwrite/.claude/commands/tasks/load.md +63 -0
- package/all/copy-overwrite/.claude/commands/tasks/sync.md +84 -0
- package/all/copy-overwrite/.claude/hooks/README.md +75 -0
- package/all/copy-overwrite/.claude/hooks/check-tired-boss.sh +61 -0
- package/all/copy-overwrite/.claude/hooks/debug-hook.sh +47 -0
- package/all/copy-overwrite/.claude/hooks/notify-ntfy.sh +2 -0
- package/all/copy-overwrite/.claude/hooks/sync-tasks.sh +95 -0
- package/all/copy-overwrite/.claude/{skills/coding-philosophy/SKILL.md → rules/coding-philosophy.md} +93 -70
- package/all/copy-overwrite/.claude/settings.json +35 -14
- package/all/copy-overwrite/.claude/skills/prompt-complexity-scorer/SKILL.md +41 -9
- package/all/copy-overwrite/.claude/skills/skill-creator/scripts/init_skill.py +2 -0
- package/all/copy-overwrite/.claude/skills/skill-creator/scripts/package_skill.py +2 -0
- package/all/copy-overwrite/.claude/skills/skill-creator/scripts/quick_validate.py +2 -0
- package/all/copy-overwrite/.safety-net.json +25 -0
- package/all/copy-overwrite/CLAUDE.md +8 -30
- package/all/copy-overwrite/HUMAN.md +517 -17
- package/all/create-only/.claude/rules/PROJECT_RULES.md +9 -0
- package/all/create-only/scripts/setup-deploy-key.sh +190 -0
- package/all/deletions.json +5 -0
- package/cdk/copy-overwrite/.github/workflows/ci.yml +142 -0
- package/cdk/copy-overwrite/.github/workflows/deploy.yml +59 -0
- package/cdk/copy-overwrite/eslint.cdk.ts +175 -0
- package/cdk/copy-overwrite/eslint.config.ts +51 -0
- package/cdk/copy-overwrite/eslint.slow.config.ts +80 -0
- package/cdk/copy-overwrite/knip.json +53 -0
- package/cdk/copy-overwrite/tsconfig.eslint.json +11 -0
- package/cdk/merge/package.json +17 -1
- package/dist/cli/index.d.ts +3 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +83 -64
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/prompts.d.ts +17 -3
- package/dist/cli/prompts.d.ts.map +1 -1
- package/dist/cli/prompts.js +52 -16
- package/dist/cli/prompts.js.map +1 -1
- package/dist/core/config.d.ts +13 -4
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +17 -9
- package/dist/core/config.js.map +1 -1
- package/dist/core/git-service.d.ts +40 -0
- package/dist/core/git-service.d.ts.map +1 -0
- package/dist/core/git-service.js +52 -0
- package/dist/core/git-service.js.map +1 -0
- package/dist/core/index.d.ts +3 -3
- package/dist/core/index.js +3 -3
- package/dist/core/lisa.d.ts +124 -7
- package/dist/core/lisa.d.ts.map +1 -1
- package/dist/core/lisa.js +423 -221
- package/dist/core/lisa.js.map +1 -1
- package/dist/core/manifest.d.ts +5 -1
- package/dist/core/manifest.d.ts.map +1 -1
- package/dist/core/manifest.js +22 -16
- package/dist/core/manifest.js.map +1 -1
- package/dist/detection/detector.interface.d.ts +1 -1
- package/dist/detection/detectors/cdk.d.ts +6 -1
- package/dist/detection/detectors/cdk.d.ts.map +1 -1
- package/dist/detection/detectors/cdk.js +16 -8
- package/dist/detection/detectors/cdk.js.map +1 -1
- package/dist/detection/detectors/expo.d.ts +6 -1
- package/dist/detection/detectors/expo.d.ts.map +1 -1
- package/dist/detection/detectors/expo.js +13 -8
- package/dist/detection/detectors/expo.js.map +1 -1
- package/dist/detection/detectors/nestjs.d.ts +7 -2
- package/dist/detection/detectors/nestjs.d.ts.map +1 -1
- package/dist/detection/detectors/nestjs.js +17 -9
- package/dist/detection/detectors/nestjs.js.map +1 -1
- package/dist/detection/detectors/npm-package.d.ts +6 -1
- package/dist/detection/detectors/npm-package.d.ts.map +1 -1
- package/dist/detection/detectors/npm-package.js +9 -4
- package/dist/detection/detectors/npm-package.js.map +1 -1
- package/dist/detection/detectors/typescript.d.ts +6 -1
- package/dist/detection/detectors/typescript.d.ts.map +1 -1
- package/dist/detection/detectors/typescript.js +12 -7
- package/dist/detection/detectors/typescript.js.map +1 -1
- package/dist/detection/index.d.ts +13 -3
- package/dist/detection/index.d.ts.map +1 -1
- package/dist/detection/index.js +17 -7
- package/dist/detection/index.js.map +1 -1
- package/dist/errors/index.d.ts +66 -2
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +89 -17
- package/dist/errors/index.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/logging/console-logger.d.ts +21 -1
- package/dist/logging/console-logger.d.ts.map +1 -1
- package/dist/logging/console-logger.js +26 -6
- package/dist/logging/console-logger.js.map +1 -1
- package/dist/logging/index.d.ts +3 -3
- package/dist/logging/index.js +2 -2
- package/dist/logging/logger.interface.d.ts +1 -1
- package/dist/logging/silent-logger.d.ts +21 -1
- package/dist/logging/silent-logger.d.ts.map +1 -1
- package/dist/logging/silent-logger.js +20 -0
- package/dist/logging/silent-logger.js.map +1 -1
- package/dist/strategies/copy-contents.d.ts +47 -6
- package/dist/strategies/copy-contents.d.ts.map +1 -1
- package/dist/strategies/copy-contents.js +99 -49
- package/dist/strategies/copy-contents.js.map +1 -1
- package/dist/strategies/copy-overwrite.d.ts +10 -2
- package/dist/strategies/copy-overwrite.d.ts.map +1 -1
- package/dist/strategies/copy-overwrite.js +17 -9
- package/dist/strategies/copy-overwrite.js.map +1 -1
- package/dist/strategies/create-only.d.ts +10 -2
- package/dist/strategies/create-only.d.ts.map +1 -1
- package/dist/strategies/create-only.js +14 -6
- package/dist/strategies/create-only.js.map +1 -1
- package/dist/strategies/index.d.ts +17 -7
- package/dist/strategies/index.d.ts.map +1 -1
- package/dist/strategies/index.js +19 -9
- package/dist/strategies/index.js.map +1 -1
- package/dist/strategies/merge.d.ts +10 -2
- package/dist/strategies/merge.d.ts.map +1 -1
- package/dist/strategies/merge.js +21 -21
- package/dist/strategies/merge.js.map +1 -1
- package/dist/strategies/strategy.interface.d.ts +1 -1
- package/dist/strategies/strategy.interface.d.ts.map +1 -1
- package/dist/transaction/backup.d.ts +15 -1
- package/dist/transaction/backup.d.ts.map +1 -1
- package/dist/transaction/backup.js +47 -12
- package/dist/transaction/backup.js.map +1 -1
- package/dist/transaction/index.d.ts +3 -3
- package/dist/transaction/index.js +2 -2
- package/dist/transaction/transaction.d.ts +25 -2
- package/dist/transaction/transaction.d.ts.map +1 -1
- package/dist/transaction/transaction.js +25 -2
- package/dist/transaction/transaction.js.map +1 -1
- package/dist/utils/file-operations.d.ts +21 -0
- package/dist/utils/file-operations.d.ts.map +1 -1
- package/dist/utils/file-operations.js +48 -12
- package/dist/utils/file-operations.js.map +1 -1
- package/dist/utils/index.d.ts +3 -3
- package/dist/utils/index.js +3 -3
- package/dist/utils/json-utils.d.ts +12 -0
- package/dist/utils/json-utils.d.ts.map +1 -1
- package/dist/utils/json-utils.js +17 -5
- package/dist/utils/json-utils.js.map +1 -1
- package/dist/utils/path-utils.d.ts +11 -0
- package/dist/utils/path-utils.d.ts.map +1 -1
- package/dist/utils/path-utils.js +12 -1
- package/dist/utils/path-utils.js.map +1 -1
- package/eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js +5 -0
- package/eslint-plugin-code-organization/index.js +5 -0
- package/eslint-plugin-code-organization/rules/enforce-statement-order.js +5 -0
- package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +2 -0
- package/expo/copy-overwrite/.claude/skills/container-view-pattern/scripts/create_component.py +2 -0
- package/expo/copy-overwrite/.claude/skills/container-view-pattern/scripts/validate_component.py +2 -0
- package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +2 -0
- package/expo/copy-overwrite/.claude/skills/directory-structure/scripts/validate_structure.py +2 -0
- package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/scripts/generate-route.py +2 -0
- package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/scripts/validate_styling.py +2 -41
- package/{typescript → expo}/copy-overwrite/.github/workflows/build.yml +3 -0
- package/expo/copy-overwrite/.github/workflows/ci.yml +36 -0
- package/{typescript → expo}/copy-overwrite/.github/workflows/deploy.yml +22 -26
- package/{typescript → expo}/copy-overwrite/.github/workflows/lighthouse.yml +4 -1
- package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/plugin-index.test.js +5 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/require-memo-in-view.test.js +5 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/single-component-per-file.test.js +5 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/index.js +5 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/rules/enforce-component-structure.js +5 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/rules/no-return-in-view.js +6 -1
- package/expo/copy-overwrite/eslint-plugin-component-structure/rules/require-memo-in-view.js +5 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/rules/single-component-per-file.js +5 -0
- package/expo/copy-overwrite/eslint-plugin-ui-standards/README.md +0 -68
- package/expo/copy-overwrite/eslint-plugin-ui-standards/index.js +5 -3
- package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-classname-outside-ui.js +5 -0
- package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-direct-rn-imports.js +5 -0
- package/expo/copy-overwrite/eslint.config.ts +53 -0
- package/expo/copy-overwrite/eslint.expo.ts +330 -0
- package/expo/copy-overwrite/eslint.slow.config.ts +86 -0
- package/expo/copy-overwrite/knip.json +132 -0
- package/expo/copy-overwrite/lighthouserc.js +27 -0
- package/expo/copy-overwrite/tsconfig.eslint.json +25 -0
- package/expo/create-only/lighthouserc-config.json +6 -1
- package/expo/merge/package.json +16 -3
- package/nestjs/copy-overwrite/.claude/skills/nestjs-rules/SKILL.md +1 -1
- package/{typescript → nestjs}/copy-overwrite/.github/k6/README.md +2 -2
- package/{typescript → nestjs}/copy-overwrite/.github/k6/examples/customer-deploy-integration.yml +3 -0
- package/{typescript → nestjs}/copy-overwrite/.github/k6/examples/data-driven-test.js +5 -0
- package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/load.js +6 -2
- package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/smoke.js +5 -0
- package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/soak.js +5 -0
- package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/spike.js +5 -0
- package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/stress.js +5 -0
- package/{typescript → nestjs}/copy-overwrite/.github/k6/scripts/api-test.js +5 -0
- package/{typescript → nestjs}/copy-overwrite/.github/k6/scripts/default-test.js +5 -0
- package/nestjs/copy-overwrite/.github/workflows/ci.yml +29 -0
- package/nestjs/copy-overwrite/.github/workflows/deploy.yml +291 -0
- package/{typescript → nestjs}/copy-overwrite/.github/workflows/load-test.yml +3 -0
- package/nestjs/copy-overwrite/eslint.config.ts +53 -0
- package/nestjs/copy-overwrite/eslint.nestjs.ts +178 -0
- package/nestjs/merge/package.json +11 -3
- package/package.json +34 -40
- package/typescript/copy-contents/.husky/pre-commit +1 -1
- package/typescript/copy-contents/.husky/pre-push +99 -118
- package/typescript/copy-overwrite/.claude/hooks/format-on-edit.sh +2 -0
- package/typescript/copy-overwrite/.claude/hooks/install_pkgs.sh +3 -11
- package/typescript/copy-overwrite/.claude/hooks/lint-on-edit.sh +2 -0
- package/typescript/copy-overwrite/.claude/hooks/sg-scan-on-edit.sh +68 -0
- package/typescript/copy-overwrite/.claude/settings.json +79 -0
- package/typescript/copy-overwrite/.claude/skills/jsdoc-best-practices/SKILL.md +44 -0
- package/typescript/copy-overwrite/.github/README.md +49 -1
- package/typescript/copy-overwrite/.github/dependabot.yml +3 -0
- package/typescript/copy-overwrite/.github/workflows/ci.yml +7 -29
- package/typescript/copy-overwrite/.github/workflows/claude.yml +3 -0
- package/typescript/copy-overwrite/.github/workflows/create-github-issue-on-failure.yml +6 -4
- package/typescript/copy-overwrite/.github/workflows/create-issue-on-failure.yml +176 -0
- package/typescript/copy-overwrite/.github/workflows/create-jira-issue-on-failure.yml +3 -1
- package/typescript/copy-overwrite/.github/workflows/create-sentry-issue-on-failure.yml +3 -1
- package/typescript/copy-overwrite/.github/workflows/lint-slow.yml +40 -0
- package/typescript/copy-overwrite/.github/workflows/quality.yml +151 -38
- package/typescript/copy-overwrite/.github/workflows/release.yml +3 -0
- package/typescript/copy-overwrite/.gitleaksignore +3 -0
- package/typescript/copy-overwrite/.lintstagedrc.json +6 -0
- package/typescript/copy-overwrite/.prettierignore +2 -1
- package/typescript/copy-overwrite/.yamllint +2 -0
- package/typescript/copy-overwrite/ast-grep/rule-tests/.gitkeep +3 -0
- package/typescript/copy-overwrite/ast-grep/rules/.gitkeep +3 -0
- package/typescript/copy-overwrite/ast-grep/utils/.gitkeep +3 -0
- package/typescript/copy-overwrite/{commitlint.config.js → commitlint.config.cjs} +5 -0
- package/typescript/copy-overwrite/eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js +5 -0
- package/typescript/copy-overwrite/eslint-plugin-code-organization/index.js +5 -0
- package/typescript/copy-overwrite/eslint-plugin-code-organization/rules/enforce-statement-order.js +5 -0
- package/typescript/copy-overwrite/eslint.base.ts +430 -0
- package/typescript/copy-overwrite/eslint.config.ts +52 -0
- package/typescript/copy-overwrite/eslint.ignore.config.json +19 -2
- package/typescript/copy-overwrite/eslint.slow.config.ts +69 -0
- package/typescript/copy-overwrite/eslint.typescript.ts +142 -0
- package/typescript/copy-overwrite/knip.json +64 -0
- package/typescript/copy-overwrite/sgconfig.yml +11 -0
- package/typescript/copy-overwrite/tsconfig.eslint.json +9 -0
- package/typescript/create-only/eslint.config.local.ts +24 -0
- package/typescript/{copy-overwrite/eslint.thresholds.config.json → create-only/eslint.thresholds.json} +1 -1
- package/typescript/github-rulesets/base.json +2 -75
- package/typescript/merge/.claude/settings.json +160 -0
- package/typescript/merge/package.json +35 -34
- package/all/copy-overwrite/.claude/commands/rules/format-md.md +0 -72
- package/all/copy-overwrite/.claude/skills/coding-philosophy/references/function-structure.md +0 -416
- package/all/copy-overwrite/.claude/skills/coding-philosophy/references/immutable-patterns.md +0 -316
- package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-inline-styles.js +0 -73
- package/expo/copy-overwrite/eslint.config.mjs +0 -560
- package/lisa.sh +0 -35
- package/typescript/copy-overwrite/eslint.config.mjs +0 -390
- /package/{all/create-only/PROJECT_RULES.md → cdk/copy-overwrite/.github/workflows/.keep} +0 -0
- /package/{typescript → nestjs}/copy-overwrite/.github/k6/BROWSER_TESTING_NOTE.md +0 -0
- /package/{typescript → nestjs}/copy-overwrite/.github/k6/INTEGRATION_GUIDE.md +0 -0
- /package/{typescript → nestjs}/copy-overwrite/.github/k6/SCENARIO_SELECTION_GUIDE.md +0 -0
- /package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/load.json +0 -0
- /package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/smoke.json +0 -0
- /package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/soak.json +0 -0
- /package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/spike.json +0 -0
- /package/{typescript → nestjs}/copy-overwrite/.github/k6/scenarios/stress.json +0 -0
- /package/{typescript → nestjs}/copy-overwrite/.github/k6/thresholds/normal.json +0 -0
- /package/{typescript → nestjs}/copy-overwrite/.github/k6/thresholds/relaxed.json +0 -0
- /package/{typescript → nestjs}/copy-overwrite/.github/k6/thresholds/strict.json +0 -0
- /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
|
|
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
|
|
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
|
|
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
|
|
169
|
+
Implementation teams then install from your organization's fork:
|
|
151
170
|
|
|
152
171
|
```bash
|
|
153
|
-
|
|
154
|
-
|
|
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
|
-
|
|
181
|
+
Install Lisa globally via npm:
|
|
160
182
|
|
|
161
183
|
```bash
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
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 **
|
|
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
|
-
|
|
224
|
+
lisa /path/to/your-project
|
|
179
225
|
|
|
180
226
|
# Or from within your project
|
|
181
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
275
|
+
lisa --uninstall /path/to/project
|
|
224
276
|
|
|
225
277
|
# Preview what would be removed
|
|
226
|
-
|
|
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
|
-
"
|
|
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.,
|
|
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
|
|
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
|
-
|
|
826
|
+
lisa --dry-run /path/to/project
|
|
740
827
|
|
|
741
828
|
# Check compatibility issues
|
|
742
|
-
|
|
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:
|
|
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
|
-
"
|
|
86
|
+
"playwright": false
|
|
89
87
|
}
|
|
90
88
|
}
|
|
91
89
|
```
|