lisa-integration-test
Lisa Integration Test
Apply Lisa templates to a downstream project and verify it works end-to-end. If anything breaks, fix the upstream templates in Lisa and retry until the project passes all checks.
This must be run FROM the Lisa repository directory.
Prerequisites
- Running from the Lisa repo (has
src/core/lisa.ts) - The target project's working directory is clean (no uncommitted changes)
Instructions
Step 1: Validate Environment
- Confirm running from Lisa by checking for
src/core/lisa.ts - Extract project path from
$ARGUMENTS. If not provided, ask the user. - Validate the project path exists and has at least one project marker:
package.json(Node/Bun/TypeScript projects)Gemfileorconfig/application.rb(Rails projects)
- Check the project's working directory is clean:
git -C <project-path> status --porcelain- If dirty, tell the user and stop: "The project has uncommitted changes. Please commit or stash them first."
Step 2: Record Baseline
Before applying Lisa, record the project's current state:
- Run
git -C <project-path> log --oneline -1to note the current HEAD - Note the project's branch and whether there's an open PR:
git -C <project-path> branch --show-current
Step 3: Apply Lisa
Run from the Lisa directory:
bun run dev <project-path>
If Lisa fails, report the error and stop.
Step 4: Check What Changed
Run git -C <project-path> status --short to see what Lisa modified.
If nothing changed, report "Lisa applied cleanly with no changes" and stop.
Step 5: Verify the Project
Run the project's verification commands in order. Stop at the first failure:
- Typecheck:
cd <project-path> && bun run typecheck(ornpm run typecheckbased on package manager) - Lint:
cd <project-path> && bun run lint(or equivalent) - Test:
cd <project-path> && bun run test(or equivalent)
Determine the package manager by checking which lockfile exists:
bun.lockb→ bunpnpm-lock.yaml→ pnpmyarn.lock→ yarnpackage-lock.json→ npm
Step 6: Handle Failures
If any verification step fails:
- Diagnose: Analyze the error output to determine root cause
- Determine fix location:
- If the fix belongs in Lisa templates (the upstream change broke something), fix it in Lisa and go to Step 6a
- If the fix belongs in the project's
*.local.*files (project-specific override needed), fix it in the project and go to Step 6b
- Report what failed and what you're fixing
Step 6a: Fix Upstream in Lisa
- Make the fix in the Lisa template files
- Run Lisa's own checks:
bun run typecheck && bun run lint && bun run test - If Lisa's checks pass, go back to Step 3 (re-apply Lisa to the project)
- If Lisa's checks fail, fix those too, then retry
Step 6b: Fix in Project Local Files
- Make the fix in the project's local override files (e.g.,
tsconfig.local.json,eslint.config.local.ts,jest.config.local.ts) - Go to Step 5 (re-verify the project)
Step 7: Commit and Push
Once all verification passes:
- Stage all changes in the project:
git -C <project-path> add <changed-files> - Commit with message:
chore: apply Lisa <version> templates - Push to the project's remote
- If upstream Lisa changes were made, commit and push those too
Step 8: Report Results
Output a summary:
## Lisa Integration Test: PASSED
**Project:** <project-path>
**Lisa version:** <version>
**Branch:** <branch>
### Changes Applied
- <list of changed files>
### Verification
- Typecheck: PASSED
- Lint: PASSED
- Tests: PASSED
### Upstream Fixes (if any)
- <list of Lisa template fixes made>
### Commits
- <project-commit-hash> chore: apply Lisa <version> templates
- <lisa-commit-hash> fix: <description> (if upstream fixes were needed)
Important Notes
- Never skip verification — the whole point is proving it works empirically
- Fix upstream when possible — if Lisa broke something, fix the template, not the project
- Use local overrides for project-specific needs —
tsconfig.local.json,eslint.config.local.ts, etc. - Retry loop is bounded — if you've tried 3 fix-and-retry cycles without success, stop and report the situation to the user
- Preserve project conventions — check the project's commit message style before committing
More from codyswanngt/lisa
claude-code-action
Knowledge base for creating and configuring Claude Code Action GitHub workflows
43lisa-review-project
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.
39lisa-learn
This skill should be used when analyzing a downstream project's git diff after Lisa was applied to identify improvements that should be upstreamed back to Lisa templates. It validates the environment, captures the diff, correlates changes with Lisa template directories, categorizes each change, and offers to upstream improvements.
35jsdoc-best-practices
Enforces JSDoc documentation standards for this TypeScript project. This skill should be used when writing or reviewing TypeScript code to ensure proper documentation with file preambles, function docs, interface docs, and the critical distinction between documenting "what" vs "why". Use this skill to understand the project's JSDoc ESLint rules and established patterns.
34plan-lower-code-complexity
This skill should be used when reducing the cognitive complexity threshold of the codebase. It lowers the threshold by 2, identifies functions that exceed the new limit, generates a brief with refactoring strategies, and creates a plan with tasks to fix all violations.
23skill-creator
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
23