.claude/skills/lisa-review-project/SKILL.md
This skill should be used when comparing Lisa's source templates against a target project's implementation to identify drift. It validates the Lisa directory, detects project types, scans template directories, compares files, categorizes changes, and offers to adopt improvements back into Lisa. This is the inverse of lisa:review-implementation.
npx skillsauth add codyswanngt/lisa lisa-review-projectInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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:
This skill must be run FROM the Lisa repository directory. The target project must have Lisa already applied.
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
If no project path provided, ask the user:
Which project would you like to review?
Path: [user provides path]
Validate the project path:
package.json (Node-based projects)Gemfile or config/application.rb (Rails projects)Parse the project's package.json and filesystem to detect its type(s):
package.json without "private": true AND has main, bin, exports, or filescdk.json exists OR aws-cdk in package.json dependenciesnest-cli.json exists OR @nestjs in package.json dependenciesapp.json exists OR eas.json exists OR expo in package.json dependenciestsconfig.json exists OR typescript in package.json dependenciesGemfile exists OR config/application.rb existsBuild the type hierarchy. Example: if expo detected, types = [all, typescript, expo]
If no types detected, use [all].
Instead of reading a manifest, scan Lisa's template directories directly to build the list of managed files.
For each type in the hierarchy (e.g., [all, typescript, expo]):
{type}/copy-overwrite/ — record each as (relativePath, "copy-overwrite", sourceTemplate){type}/copy-contents/ — record each as (relativePath, "copy-contents", sourceTemplate){type}/package-lisa/package.lisa.json exists, include package.json in the managed set and build its expected contents by merging every detected type's package-lisa template in hierarchy order.relativePath appears in multiple copy-* types, the most specific type wins (last in hierarchy).This gives you the complete list of Lisa-managed files and their source templates.
Skip these strategies (they're intentionally customized):
create-only - meant to be customized by projectmerge - already merged into project's fileFor files with source found and strategy is copy-overwrite or copy-contents:
diff -u "{lisa-source}" "{project-file}" || trueFor each drifted file, provide brief analysis:
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:** {current date/time ISO}
## 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:** {Brief analysis of the change and why it matters}
---
[Repeat for each drifted file]
## Files Present in Lisa Templates but Missing from Project
These files exist in Lisa templates but not in the project:
- {file1}
- {file2}
This might mean:
- Lisa hasn't been applied to this project yet
- The file was deleted by the project
- The file is gitignored
## Intentionally Customized
These files use `create-only` or `merge` strategies and are meant to be customized:
- {file1}
- {file2}
## In Sync Files
<details>
<summary>X files match Lisa templates exactly</summary>
- {file1}
- {file2}
</details>
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:
{type}/copy-overwrite/{path}?"typescript/ and all/, adopt to where it currently exists in Lisatools
Configure the official SonarQube plugin + MCP as Lisa's single Sonar substrate across every supported coding agent. Installs/updates the SonarQube CLI, authenticates (browser login on a dev machine, or SONARQUBE_CLI_TOKEN headless), selects the Test Manager target, runs `sonar integrate <agent>` for each supported agent (Claude, Codex, Cursor, Copilot, Antigravity) and wires the MCP for OpenCode, then writes only non-secret policy to .lisa.config.json. Separate from the CI SonarCloud scan gate, which is unchanged.
tools
Configure the official SonarQube plugin + MCP as Lisa's single Sonar substrate across every supported coding agent. Installs/updates the SonarQube CLI, authenticates (browser login on a dev machine, or SONARQUBE_CLI_TOKEN headless), selects the Test Manager target, runs `sonar integrate <agent>` for each supported agent (Claude, Codex, Cursor, Copilot, Antigravity) and wires the MCP for OpenCode, then writes only non-secret policy to .lisa.config.json. Separate from the CI SonarCloud scan gate, which is unchanged.
tools
Configure the official SonarQube plugin + MCP as Lisa's single Sonar substrate across every supported coding agent. Installs/updates the SonarQube CLI, authenticates (browser login on a dev machine, or SONARQUBE_CLI_TOKEN headless), selects the Test Manager target, runs `sonar integrate <agent>` for each supported agent (Claude, Codex, Cursor, Copilot, Antigravity) and wires the MCP for OpenCode, then writes only non-secret policy to .lisa.config.json. Separate from the CI SonarCloud scan gate, which is unchanged.
tools
Configure the official SonarQube plugin + MCP as Lisa's single Sonar substrate across every supported coding agent. Installs/updates the SonarQube CLI, authenticates (browser login on a dev machine, or SONARQUBE_CLI_TOKEN headless), selects the Test Manager target, runs `sonar integrate <agent>` for each supported agent (Claude, Codex, Cursor, Copilot, Antigravity) and wires the MCP for OpenCode, then writes only non-secret policy to .lisa.config.json. Separate from the CI SonarCloud scan gate, which is unchanged.