---
name: lisa-review-implementation
description: This skill should be used when comparing a project's Lisa-managed files against Lisa's source templates to identify drift. It reads the project manifest, locates source templates, generates diffs for drifted files, and offers to upstream improvements back to Lisa.
---
# Lisa Implementation Review
This skill compares the current project's Lisa-managed files against Lisa's source templates to identify drift and offer to upstream improvements back to Lisa.
## Prerequisites
This skill requires access to the Lisa installation directory. Either:
1. Start Claude Code with `--add-dir ~/lisa` (or your Lisa path)
2. Pass the Lisa directory as an argument: `/lisa-review-implementation ~/lisa`
## Instructions
### Step 1: Locate Lisa Directory
First, determine the Lisa installation directory:
1. If an argument was provided, use that path
2. Otherwise, check if any `--add-dir` paths contain a `src/core/lisa.ts` file (Lisa's signature file)
3. Common locations to check: `~/lisa`, `~/workspace/lisa`, `../lisa`
If Lisa directory cannot be found, inform the user:
```
Unable to locate Lisa installation directory.
Please either:
1. Start Claude Code with: claude --add-dir /path/to/lisa
2. Run this command with the path: /lisa-review-implementation /path/to/lisa
```
### Step 2: Read the Manifest
Read the project's `.lisa-manifest` file to get the list of managed files.
Parse each line to extract:
- `strategy`: The copy strategy used (copy-overwrite, copy-contents, merge, create-only)
- `relativePath`: The file path relative to project root
Skip:
- Lines starting with `#` (comments)
- Empty lines
- Files with `create-only` strategy (these are meant to be customized)
- Files with `merge` strategy (these are intentionally combined)
### Step 3: Find Source Templates
For each managed file, locate its source in Lisa by checking these directories in order:
1. `npm-package/copy-overwrite/` and `npm-package/copy-contents/`
2. `cdk/copy-overwrite/` and `cdk/copy-contents/`
3. `nestjs/copy-overwrite/` and `nestjs/copy-contents/`
4. `expo/copy-overwrite/` and `expo/copy-contents/`
5. `typescript/copy-overwrite/` and `typescript/copy-contents/`
6. `all/copy-overwrite/` and `all/copy-contents/`
The FIRST match wins (most specific type takes precedence).
Detect which project types apply by checking the project for:
- `npm-package`: package.json without `"private": true` AND has `main`, `bin`, `exports`, or `files`
- `cdk`: presence of `cdk.json` or `aws-cdk` in dependencies
- `nestjs`: presence of `nest-cli.json` or `@nestjs` in dependencies
- `expo`: presence of `app.json`, `eas.json`, or `expo` in dependencies
- `typescript`: presence of `tsconfig.json` or `typescript` in dependencies
Only check type directories that match the project.
### Step 4: Compare Files
For each file, compare the project version against the Lisa source:
1. Read both files
2. If identical, mark as "in sync"
3. If different, generate a diff summary
Use the Bash tool with `diff` to generate readable diffs:
```bash
diff -u "/path/to/lisa/source" "/path/to/project/file" || true
```
### Step 5: Generate Report
Create a markdown report with these sections:
```markdown
# Lisa Implementation Review
**Project:** [project name from package.json]
**Lisa Source:** [lisa directory path]
**Generated:** [current date/time]
## Summary
- **Total managed files:** X
- **In sync:** X
- **Drifted:** X
- **Source not found:** X
## Drifted Files
### [relative/path/to/file]
**Source:** [lisa-type]/copy-overwrite/[path]
**Strategy:** copy-overwrite
View diff
```diff
[diff output]
```
**Recommendation:** [Brief analysis of whether this change should be upstreamed]
---
[Repeat for each drifted file]
## Files Not Found in Lisa
These files are in the manifest but their source templates couldn't be located:
- [list of files]
## In Sync Files
X files are in sync with Lisa
- [list of files]
```
### Step 6: Offer to Upstream Changes
After presenting the report, ask the user which drifted files they want to copy back to Lisa.
For each file the user wants to upstream:
1. Confirm the target path in Lisa (e.g., `typescript/copy-overwrite/.github/workflows/ci.yml`)
2. Use the Write tool to copy the project's version to Lisa
3. Report success
Example prompt:
```
I found X files that have drifted from Lisa's templates.
Which files would you like to copy back to Lisa?
1. .github/workflows/ci.yml - [brief description of changes]
2. .claude/settings.json - [brief description of changes]
3. All of the above
4. None - just show me the report
Select an option (or list specific numbers):
```
### Important Notes
- **Never auto-upstream without confirmation** - always ask the user first
- **Preserve the most specific type directory** - if a file exists in both `typescript/` and `all/`, upstream to where it currently exists
- **Handle binary files gracefully** - skip comparison for non-text files
- **Respect .gitignore patterns** - some generated files shouldn't be compared
- For `copy-contents` files like `.gitignore`, the comparison is trickier since the project may have additional lines - highlight only if Lisa's required lines are missing
## Example Usage
```
User: /lisa-review-implementation
Claude: I'll review your project's Lisa-managed files against the Lisa source templates.
[Locates Lisa directory]
[Reads manifest]
[Compares files]
[Generates report]
# Lisa Implementation Review
**Project:** my-awesome-app
**Lisa Source:** /Users/dev/lisa
**Generated:** 2026-01-18 10:30:00
## Summary
- **Total managed files:** 45
- **In sync:** 42
- **Drifted:** 3
- **Source not found:** 0
## Drifted Files
### .github/workflows/ci.yml
**Source:** typescript/copy-overwrite/.github/workflows/ci.yml
**Strategy:** copy-overwrite
[diff details]
**Recommendation:** This adds a new caching step that improves CI performance. Good candidate for upstreaming.
---
I found 3 files that have drifted. Would you like to upstream any of these changes back to Lisa?
```