- Lisa Project Review
- This skill compares Lisa's source templates against a target project that has Lisa applied, identifying what the project has changed from Lisa and offering to adopt those improvements back into Lisa.
- This is the inverse of
- /lisa-review-implementation
- :
- lisa:review-implementation
-
- Run FROM project → "What did I change from Lisa?"
- lisa:review-project
- Run FROM Lisa → "What has this project changed?" Prerequisites This skill must be run FROM the Lisa repository directory. The target project must have Lisa already applied (must have a .lisa-manifest file). Instructions Step 1: Validate Lisa Directory Confirm running from Lisa by checking for src/core/lisa.ts . If not in Lisa, error with: This command must be run FROM the Lisa repository. Current directory does not contain src/core/lisa.ts. Usage: /lisa-review-project /path/to/target-project Step 2: Validate Arguments If no project path provided, ask the user: Which project would you like to review? Path: [user provides path] Validate the project path: Check the path exists and is a directory Check .lisa-manifest exists in the project root If missing, error with: Project does not have Lisa applied. Expected to find: {project-path}/.lisa-manifest Did you apply Lisa to this project? Run: lisa {project-path} Step 3: Detect Project Types Parse the project's package.json and filesystem to detect its type(s): npm-package : package.json without "private": true AND has main , bin , exports , or files cdk : cdk.json exists OR aws-cdk in package.json dependencies nestjs : nest-cli.json exists OR @nestjs in package.json dependencies expo : app.json exists OR eas.json exists OR expo in package.json dependencies typescript : tsconfig.json exists OR typescript in package.json dependencies Build the type hierarchy. Example: if expo detected, types = [all, typescript, expo] If no types detected, use [all] . Step 4: Read Manifest and Map Source Files Read the project's .lisa-manifest file line by line: For each line: Skip lines starting with
- (comments) and empty lines
- Parse format:
- strategy|relative/path/to/file
- Extract
- strategy
- and
- relativePath
- For each strategy type, find the corresponding source in Lisa
- Lookup Order for Source Files:
- For each detected type in reverse hierarchy order (most specific first):
- Check
- {type}/copy-overwrite/{relativePath}
- - if found, record it
- Check
- {type}/copy-contents/{relativePath}
- - if found, record it
- Continue to next type
- Example for an Expo project with manifest entry
- copy-overwrite|.github/workflows/ci.yml
- :
- Check
- expo/copy-overwrite/.github/workflows/ci.yml
- - found, use it
- (don't check further)
- If no source found, record as "source-not-found".
- Skip these strategies
- (they're intentionally customized):
- create-only
- - meant to be customized by project
- merge
- - already merged into project's file
- Step 5: Compare Files
- For files with source found and strategy is
- copy-overwrite
- or
- copy-contents
- :
- Read both the Lisa source and project version
- If identical, mark as "in-sync"
- If different:
- Generate diff using:
- diff -u "{lisa-source}" "{project-file}" || true
- Mark as "drifted"
- Store diff for report
- Step 6: Analyze and Categorize
- For each drifted file, provide brief analysis:
- Improvement
-
- Change that makes the file better (better CI config, cleaner code, etc.)
- Customization
-
- Change specific to this project (environment config, custom paths, etc.)
- Bug fix
-
- Fixing an issue in Lisa's template
- Divergence
- Change that's neither an improvement nor needed customization (concerning) Step 7: Generate Report Create a markdown report:
Lisa Project Review ** Lisa Directory: ** {lisa-path} ** Target Project: ** {project-path} ** Project Types: ** {types} ** Project Name: ** {from package.json name or basename} ** Generated: **
Summary
** Total managed files: ** X - ** In sync: ** X - ** Drifted: ** X - ** Intentionally customized (create-only/merge): ** X - ** Source not found: ** X
Drifted Files
{relative/path/to/file} ** Source: ** {type}/copy-overwrite/{path} ** Strategy: ** copy-overwrite ** Category: ** Improvement < details
< summary
View diff (Lisa <- Project) </ summary
```diff {diff output} ``` </ details
** Analysis: **
[Repeat for each drifted file]
Files Not Found in Lisa These files are in the manifest but their source templates couldn't be located in Lisa: - {file1} - {file2} This might mean: - The file was manually added after Lisa was applied - A Lisa template was removed in an update - The file is project-specific
Intentionally Customized
These files use
create-only
or
merge
strategies and are meant to be customized:
-
{file1}
-
In Sync Files < details
< summary
X files match Lisa templates exactly </ summary
- {file1} - {file2} </ details
Step 8: Offer to Adopt Changes After the report, present the findings: I found X files that have drifted from Lisa's templates. [List files with categories] Would you like to: 1. Review specific drifted files in detail 2. Adopt improvements from this project back into Lisa 3. Just view the full report 4. Done - no changes If user wants to adopt improvements: Ask which files to adopt (let them select multiple) For each selected file: Determine the target path in Lisa (preserve type directory) Confirm: "Copy project version to {type}/copy-overwrite/{path} ?" If confirmed, use Write tool to copy project file to Lisa Report success Important Notes Never auto-adopt without confirmation - always ask the user first Preserve the most specific type directory - if a file exists in both typescript/ and all/ , adopt to where it currently exists in Lisa Handle missing files gracefully - if project file is missing but in manifest, note it (possible deletion or git-ignored) Compare carefully - some differences may be platform-specific (line endings, env vars) and should NOT be adopted The diff shows "Lisa <- Project" (what project changed FROM Lisa)