@codyswann/lisa 1.67.3 → 1.69.0
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 +44 -49
- package/all/copy-overwrite/.claude/rules/base-rules.md +0 -50
- package/all/copy-overwrite/.claude/rules/intent-routing.md +126 -0
- package/all/copy-overwrite/.claude/rules/security-audit-handling.md +17 -0
- package/all/copy-overwrite/.claude/rules/verification.md +27 -538
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/agents/architecture-specialist.md +4 -9
- package/plugins/lisa/agents/bug-fixer.md +40 -0
- package/plugins/lisa/agents/builder.md +41 -0
- package/plugins/lisa/agents/debug-specialist.md +4 -93
- package/plugins/lisa/agents/jira-agent.md +103 -0
- package/plugins/lisa/agents/performance-specialist.md +2 -11
- package/plugins/lisa/agents/product-specialist.md +2 -10
- package/plugins/lisa/agents/quality-specialist.md +2 -0
- package/plugins/lisa/agents/security-specialist.md +3 -9
- package/plugins/lisa/agents/test-specialist.md +2 -16
- package/plugins/lisa/agents/verification-specialist.md +38 -103
- package/plugins/lisa/commands/build.md +10 -0
- package/plugins/lisa/commands/fix.md +10 -0
- package/plugins/lisa/commands/improve.md +16 -0
- package/plugins/lisa/commands/investigate.md +10 -0
- package/plugins/lisa/commands/jira/triage.md +7 -0
- package/plugins/lisa/commands/monitor.md +10 -0
- package/plugins/lisa/commands/plan/create.md +1 -1
- package/plugins/lisa/commands/plan/execute.md +1 -2
- package/plugins/lisa/commands/plan/improve-tests.md +7 -0
- package/plugins/lisa/commands/plan.md +10 -0
- package/plugins/lisa/commands/review.md +10 -0
- package/plugins/lisa/commands/ship.md +10 -0
- package/plugins/lisa/skills/acceptance-criteria/SKILL.md +71 -0
- package/plugins/lisa/skills/bug-triage/SKILL.md +23 -0
- package/plugins/lisa/skills/codebase-research/SKILL.md +87 -0
- package/plugins/lisa/skills/epic-triage/SKILL.md +28 -0
- package/plugins/lisa/skills/nightly-add-test-coverage/SKILL.md +27 -0
- package/plugins/lisa/skills/nightly-improve-tests/SKILL.md +31 -0
- package/plugins/lisa/skills/nightly-lower-code-complexity/SKILL.md +25 -0
- package/plugins/lisa/skills/performance-review/SKILL.md +94 -0
- package/plugins/lisa/skills/plan-improve-tests/SKILL.md +47 -0
- package/plugins/lisa/skills/quality-review/SKILL.md +54 -0
- package/plugins/lisa/skills/reproduce-bug/SKILL.md +96 -0
- package/plugins/lisa/skills/root-cause-analysis/SKILL.md +155 -0
- package/plugins/lisa/skills/security-review/SKILL.md +57 -0
- package/plugins/lisa/skills/task-decomposition/SKILL.md +95 -0
- package/plugins/lisa/skills/task-triage/SKILL.md +23 -0
- package/plugins/lisa/skills/tdd-implementation/SKILL.md +83 -0
- package/plugins/lisa/skills/test-strategy/SKILL.md +63 -0
- package/plugins/lisa/skills/ticket-triage/SKILL.md +150 -0
- package/plugins/lisa/skills/verification-lifecycle/SKILL.md +292 -0
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/agents/architecture-specialist.md +4 -9
- package/plugins/src/base/agents/bug-fixer.md +40 -0
- package/plugins/src/base/agents/builder.md +41 -0
- package/plugins/src/base/agents/debug-specialist.md +4 -93
- package/plugins/src/base/agents/jira-agent.md +103 -0
- package/plugins/src/base/agents/performance-specialist.md +2 -11
- package/plugins/src/base/agents/product-specialist.md +2 -10
- package/plugins/src/base/agents/quality-specialist.md +2 -0
- package/plugins/src/base/agents/security-specialist.md +3 -9
- package/plugins/src/base/agents/test-specialist.md +2 -16
- package/plugins/src/base/agents/verification-specialist.md +38 -103
- package/plugins/src/base/commands/build.md +10 -0
- package/plugins/src/base/commands/fix.md +10 -0
- package/plugins/src/base/commands/improve.md +16 -0
- package/plugins/src/base/commands/investigate.md +10 -0
- package/plugins/src/base/commands/jira/triage.md +7 -0
- package/plugins/src/base/commands/monitor.md +10 -0
- package/plugins/src/base/commands/plan/create.md +1 -1
- package/plugins/src/base/commands/plan/execute.md +1 -2
- package/plugins/src/base/commands/plan/improve-tests.md +7 -0
- package/plugins/src/base/commands/plan.md +10 -0
- package/plugins/src/base/commands/review.md +10 -0
- package/plugins/src/base/commands/ship.md +10 -0
- package/plugins/src/base/skills/acceptance-criteria/SKILL.md +71 -0
- package/plugins/src/base/skills/bug-triage/SKILL.md +23 -0
- package/plugins/src/base/skills/codebase-research/SKILL.md +87 -0
- package/plugins/src/base/skills/epic-triage/SKILL.md +28 -0
- package/plugins/src/base/skills/nightly-add-test-coverage/SKILL.md +27 -0
- package/plugins/src/base/skills/nightly-improve-tests/SKILL.md +31 -0
- package/plugins/src/base/skills/nightly-lower-code-complexity/SKILL.md +25 -0
- package/plugins/src/base/skills/performance-review/SKILL.md +94 -0
- package/plugins/src/base/skills/plan-improve-tests/SKILL.md +47 -0
- package/plugins/src/base/skills/quality-review/SKILL.md +54 -0
- package/plugins/src/base/skills/reproduce-bug/SKILL.md +96 -0
- package/plugins/src/base/skills/root-cause-analysis/SKILL.md +155 -0
- package/plugins/src/base/skills/security-review/SKILL.md +57 -0
- package/plugins/src/base/skills/task-decomposition/SKILL.md +95 -0
- package/plugins/src/base/skills/task-triage/SKILL.md +23 -0
- package/plugins/src/base/skills/tdd-implementation/SKILL.md +83 -0
- package/plugins/src/base/skills/test-strategy/SKILL.md +63 -0
- package/plugins/src/base/skills/ticket-triage/SKILL.md +150 -0
- package/plugins/src/base/skills/verification-lifecycle/SKILL.md +292 -0
- package/expo/copy-overwrite/.claude/rules/expo-verification.md +0 -261
- package/plugins/lisa/agents/agent-architect.md +0 -310
- package/plugins/lisa/agents/hooks-expert.md +0 -74
- package/plugins/lisa/agents/implementer.md +0 -54
- package/plugins/lisa/agents/slash-command-architect.md +0 -87
- package/plugins/lisa/agents/web-search-researcher.md +0 -112
- package/plugins/lisa/commands/git/commit-and-submit-pr.md +0 -7
- package/plugins/lisa/commands/git/commit-submit-pr-and-verify.md +0 -7
- package/plugins/lisa/commands/git/commit-submit-pr-deploy-and-verify.md +0 -7
- package/plugins/lisa/commands/jira/fix.md +0 -7
- package/plugins/lisa/commands/jira/implement.md +0 -7
- package/plugins/lisa/commands/sonarqube/check.md +0 -6
- package/plugins/lisa/commands/sonarqube/fix.md +0 -6
- package/plugins/lisa/commands/tasks/load.md +0 -7
- package/plugins/lisa/commands/tasks/sync.md +0 -7
- package/plugins/lisa/skills/git-commit-and-submit-pr/SKILL.md +0 -8
- package/plugins/lisa/skills/git-commit-submit-pr-and-verify/SKILL.md +0 -7
- package/plugins/lisa/skills/git-commit-submit-pr-deploy-and-verify/SKILL.md +0 -7
- package/plugins/lisa/skills/jira-fix/SKILL.md +0 -16
- package/plugins/lisa/skills/jira-implement/SKILL.md +0 -18
- package/plugins/lisa/skills/sonarqube-check/SKILL.md +0 -11
- package/plugins/lisa/skills/sonarqube-fix/SKILL.md +0 -8
- package/plugins/lisa/skills/tasks-load/SKILL.md +0 -88
- package/plugins/lisa/skills/tasks-sync/SKILL.md +0 -108
- package/plugins/src/base/agents/agent-architect.md +0 -310
- package/plugins/src/base/agents/hooks-expert.md +0 -74
- package/plugins/src/base/agents/implementer.md +0 -54
- package/plugins/src/base/agents/slash-command-architect.md +0 -87
- package/plugins/src/base/agents/web-search-researcher.md +0 -112
- package/plugins/src/base/commands/git/commit-and-submit-pr.md +0 -7
- package/plugins/src/base/commands/git/commit-submit-pr-and-verify.md +0 -7
- package/plugins/src/base/commands/git/commit-submit-pr-deploy-and-verify.md +0 -7
- package/plugins/src/base/commands/jira/fix.md +0 -7
- package/plugins/src/base/commands/jira/implement.md +0 -7
- package/plugins/src/base/commands/sonarqube/check.md +0 -6
- package/plugins/src/base/commands/sonarqube/fix.md +0 -6
- package/plugins/src/base/commands/tasks/load.md +0 -7
- package/plugins/src/base/commands/tasks/sync.md +0 -7
- package/plugins/src/base/skills/git-commit-and-submit-pr/SKILL.md +0 -8
- package/plugins/src/base/skills/git-commit-submit-pr-and-verify/SKILL.md +0 -7
- package/plugins/src/base/skills/git-commit-submit-pr-deploy-and-verify/SKILL.md +0 -7
- package/plugins/src/base/skills/jira-fix/SKILL.md +0 -16
- package/plugins/src/base/skills/jira-implement/SKILL.md +0 -18
- package/plugins/src/base/skills/sonarqube-check/SKILL.md +0 -11
- package/plugins/src/base/skills/sonarqube-fix/SKILL.md +0 -8
- package/plugins/src/base/skills/tasks-load/SKILL.md +0 -88
- package/plugins/src/base/skills/tasks-sync/SKILL.md +0 -108
|
@@ -46,549 +46,38 @@ Agents must label every task outcome with exactly one of these:
|
|
|
46
46
|
|
|
47
47
|
---
|
|
48
48
|
|
|
49
|
-
## Verification Types
|
|
49
|
+
## Verification Types
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|------|----------|---------|
|
|
53
|
-
| `test` | Unit/integration tests | `npm test -- path/to/file.spec.ts` |
|
|
54
|
-
| `api-test` | API endpoints | `curl -s localhost:3000/api/endpoint` |
|
|
55
|
-
| `test-coverage` | Coverage thresholds | `npm run test:cov -- --collectCoverageFrom=...` |
|
|
56
|
-
| `ui-recording` | UI changes | Start local server; recorded session with Playwright/Maestro/Chrome Browser |
|
|
57
|
-
| `documentation` | Doc changes | `grep "expected" path/to/doc.md` |
|
|
58
|
-
| `manual-check` | Config/setup | `cat config.json \| jq '.setting'` |
|
|
51
|
+
Every change requires one or more verification types. Classify the change first, then verify each applicable type.
|
|
59
52
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
## Verification Surfaces
|
|
63
|
-
|
|
64
|
-
Agents may only self-verify when the required verification surfaces are available.
|
|
65
|
-
|
|
66
|
-
Verification surfaces include:
|
|
67
|
-
|
|
68
|
-
### Action Surfaces
|
|
69
|
-
|
|
70
|
-
- Build and test execution
|
|
71
|
-
- Deployment and rollback
|
|
72
|
-
- Infrastructure apply and drift detection
|
|
73
|
-
- Feature flag toggling
|
|
74
|
-
- Data seeding and state reset
|
|
75
|
-
- Load generation and fault injection
|
|
76
|
-
|
|
77
|
-
### Observation Surfaces
|
|
78
|
-
|
|
79
|
-
- Application logs (local and remote)
|
|
80
|
-
- Metrics (latency, errors, saturation, scaling)
|
|
81
|
-
- Traces and correlation IDs
|
|
82
|
-
- Database queries and schema inspection
|
|
83
|
-
- Browser and device automation
|
|
84
|
-
- Queue depth and consumer execution visibility
|
|
85
|
-
- CDN headers and edge behavior
|
|
86
|
-
- Artifact capture (video, screenshots, traces, diffs)
|
|
87
|
-
|
|
88
|
-
If a required surface is unavailable, agents must follow the Escalation Protocol.
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## Tooling Surfaces
|
|
93
|
-
|
|
94
|
-
Many verification steps require tools that may not be available by default.
|
|
95
|
-
|
|
96
|
-
Tooling surfaces include:
|
|
97
|
-
|
|
98
|
-
- Required CLIs (cloud, DB, deployment, observability)
|
|
99
|
-
- Required MCP servers and their capabilities
|
|
100
|
-
- Required internal APIs (feature flags, auth, metrics, logs, CI)
|
|
101
|
-
- Required credentials and scopes for those tools
|
|
102
|
-
|
|
103
|
-
If required tooling is missing, misconfigured, blocked, undocumented, or inaccessible, agents must treat this as a verification blocker and escalate before proceeding.
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
## Proof Artifacts Requirements
|
|
108
|
-
|
|
109
|
-
Every completed task must include proof artifacts stored in the PR description or linked output location.
|
|
110
|
-
|
|
111
|
-
Proof artifacts must be specific and re-checkable.
|
|
112
|
-
|
|
113
|
-
Examples of acceptable proof:
|
|
114
|
-
|
|
115
|
-
- Playwright video and screenshots for UI work
|
|
116
|
-
- HTTP trace and response payload for API work
|
|
117
|
-
- Before/after DB query outputs for data work
|
|
118
|
-
- Metrics snapshots for autoscaling
|
|
119
|
-
- Log excerpts with correlation IDs for behavior validation
|
|
120
|
-
- Load test results showing threshold behavior
|
|
121
|
-
|
|
122
|
-
Statements like "works" or "should work" are not acceptable.
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
## Standard Workflow
|
|
127
|
-
|
|
128
|
-
Agents must follow this sequence unless explicitly instructed otherwise:
|
|
129
|
-
|
|
130
|
-
1. Restate goal in one sentence.
|
|
131
|
-
2. Identify the end user of the change.
|
|
132
|
-
3. Choose the verification method that matches the end user.
|
|
133
|
-
4. List required verification surfaces and required tooling surfaces.
|
|
134
|
-
5. Confirm required surfaces are available.
|
|
135
|
-
6. Implement the change.
|
|
136
|
-
7. Run verification from the end-user perspective.
|
|
137
|
-
8. Collect proof artifacts.
|
|
138
|
-
9. Summarize what changed, what was verified, and remaining risk.
|
|
139
|
-
10. Label the result with a verification level.
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
## Task Completion Rules
|
|
144
|
-
|
|
145
|
-
1. **Run the proof command** before marking any task complete
|
|
146
|
-
2. **Compare output** to expected result
|
|
147
|
-
3. **If verification fails**: Fix and re-run, don't mark complete
|
|
148
|
-
4. **If verification blocked** (missing Docker, services, etc.): Mark as blocked, not complete
|
|
149
|
-
5. **Must not be dependent on CI/CD** if necessary, you may use local deploy methods found in `package.json`, but the verification methods must be listed in the pull request and therefore cannot be dependent on CI/CD completing
|
|
150
|
-
|
|
151
|
-
---
|
|
152
|
-
|
|
153
|
-
## Self-Correction Loop
|
|
154
|
-
|
|
155
|
-
Verification is not a one-shot activity. Agents operate within a three-layer self-correction architecture that catches errors at increasing scope. Each layer is enforced automatically — agents do not need to invoke them manually.
|
|
156
|
-
|
|
157
|
-
### Layer 1 — Inline Correction (PostToolUse)
|
|
158
|
-
|
|
159
|
-
**Trigger:** Every `Write` or `Edit` tool call.
|
|
160
|
-
|
|
161
|
-
**Pipeline:** prettier → ast-grep → eslint (with `--fix --quiet --cache`).
|
|
162
|
-
|
|
163
|
-
Each hook runs on the single file just written. Errors are reported immediately so the agent can fix them before writing more files. This prevents error accumulation across multiple files.
|
|
164
|
-
|
|
165
|
-
- **prettier** formats the file (non-blocking — always exits 0).
|
|
166
|
-
- **ast-grep** scans for structural anti-patterns (blocking — exits 1 on violations).
|
|
167
|
-
- **eslint** auto-fixes what it can, then blocks on unfixable errors (exits 2 on remaining errors).
|
|
168
|
-
|
|
169
|
-
**Agent responsibility:** When a PostToolUse hook blocks, fix the reported errors in the same file before proceeding to other files. Do not accumulate errors.
|
|
170
|
-
|
|
171
|
-
### Layer 2 — Commit-Time Enforcement (husky pre-commit)
|
|
172
|
-
|
|
173
|
-
**Trigger:** Every `git commit`.
|
|
174
|
-
|
|
175
|
-
**Checks:** lint-staged (eslint + prettier on staged files), gitleaks (secret detection), commitlint (conventional commit format), branch protection (no direct commits to environment branches).
|
|
176
|
-
|
|
177
|
-
This layer catches errors that span multiple files or involve staged-but-not-yet-linted changes. It runs automatically via husky and cannot be bypassed (`--no-verify` is prohibited).
|
|
178
|
-
|
|
179
|
-
### Layer 3 — Push-Time Enforcement (husky pre-push)
|
|
180
|
-
|
|
181
|
-
**Trigger:** Every `git push`.
|
|
182
|
-
|
|
183
|
-
**Checks:** Full test suite with coverage thresholds, typecheck, security audit, knip (unused exports), integration tests.
|
|
184
|
-
|
|
185
|
-
This layer validates the complete changeset against the project's quality gates. It is the last automated checkpoint before code reaches the remote.
|
|
186
|
-
|
|
187
|
-
**Handling Security Audit Failures:** If `git push` fails because the pre-push hook reports security vulnerabilities (GHSA advisories), follow these steps in order:
|
|
188
|
-
|
|
189
|
-
1. Note the GHSA ID(s), affected package(s), and advisory URL from the error output.
|
|
190
|
-
2. Check the advisory URL to determine if a patched version of the vulnerable package exists.
|
|
191
|
-
3. If a patched version exists, add a resolution/override in `package.json` to force the patched version (add to both `"resolutions"` and `"overrides"` sections), then run the package manager install command to regenerate the lockfile, commit the changes, and retry the push.
|
|
192
|
-
4. If no patched version exists and the vulnerability is safe for this project (e.g., transitive dependency with no untrusted input, devDeps only, or build tool only), add an exclusion entry to `audit.ignore.local.json` with the format: `{"id": "GHSA-xxx", "package": "pkg-name", "reason": "why this is safe for this project"}`, then commit and retry the push.
|
|
193
|
-
5. Never use `--no-verify` to bypass the security audit.
|
|
194
|
-
|
|
195
|
-
### Regeneration Over Patching
|
|
196
|
-
|
|
197
|
-
When the root cause of errors is architectural (wrong abstraction, incorrect data flow, fundamentally broken approach), delete and regenerate rather than incrementally patching. Incremental patches on a broken foundation accumulate tech debt faster than the self-correction loop can catch it.
|
|
198
|
-
|
|
199
|
-
Signs that regeneration is needed:
|
|
200
|
-
- The same file has been edited 3+ times in the same loop without converging
|
|
201
|
-
- Fixing one error introduces another in the same file
|
|
202
|
-
- The fix requires disabling a lint rule or adding a type assertion
|
|
203
|
-
|
|
204
|
-
---
|
|
205
|
-
|
|
206
|
-
## End-User Verification Patterns
|
|
207
|
-
|
|
208
|
-
Agents must choose the pattern that fits the task.
|
|
209
|
-
|
|
210
|
-
### UI and UX Feature or Bug
|
|
211
|
-
|
|
212
|
-
End user: human in browser or native device.
|
|
213
|
-
|
|
214
|
-
Required proof:
|
|
215
|
-
|
|
216
|
-
- Automated session recording (Playwright preferred)
|
|
217
|
-
- Screenshots of key states
|
|
218
|
-
- Network calls and console errors captured when relevant
|
|
219
|
-
|
|
220
|
-
#### Example: UI Feature (Playwright browser verification)
|
|
221
|
-
|
|
222
|
-
**Task**: Add logout button to the dashboard header
|
|
223
|
-
|
|
224
|
-
**Wrong verification**: "I added the button component to the header"
|
|
225
|
-
|
|
226
|
-
**Correct verification** -- use Playwright to interact with the app as a real user:
|
|
227
|
-
|
|
228
|
-
```bash
|
|
229
|
-
npx playwright test --headed -g "logout button" 2>&1 | tail -20
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
Or for ad-hoc verification without a test file, use the Playwright CLI browser tools or `browser_run_code`:
|
|
233
|
-
|
|
234
|
-
```javascript
|
|
235
|
-
async (page) => {
|
|
236
|
-
await page.goto('http://localhost:3000/dashboard');
|
|
237
|
-
const logoutButton = page.getByRole('button', { name: 'Logout' });
|
|
238
|
-
await logoutButton.waitFor({ state: 'visible' });
|
|
239
|
-
await logoutButton.click();
|
|
240
|
-
await page.waitForURL('**/login');
|
|
241
|
-
return { url: page.url(), title: await page.title() };
|
|
242
|
-
}
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
**Expected**: Browser navigates to `/login` after clicking the logout button
|
|
246
|
-
|
|
247
|
-
#### Example: UI Visual/Behavioral (Screenshot comparison)
|
|
248
|
-
|
|
249
|
-
**Task**: Fix mobile nav menu not closing after link click
|
|
250
|
-
|
|
251
|
-
**Wrong verification**: "I added an onClick handler that closes the menu"
|
|
252
|
-
|
|
253
|
-
**Correct verification** -- open a browser and perform the exact user action:
|
|
254
|
-
|
|
255
|
-
```javascript
|
|
256
|
-
async (page) => {
|
|
257
|
-
await page.setViewportSize({ width: 375, height: 812 });
|
|
258
|
-
await page.goto('http://localhost:3000');
|
|
259
|
-
await page.getByRole('button', { name: 'Menu' }).click();
|
|
260
|
-
await page.getByRole('link', { name: 'About' }).click();
|
|
261
|
-
const menu = page.locator('[data-testid="mobile-nav"]');
|
|
262
|
-
const isVisible = await menu.isVisible();
|
|
263
|
-
return { menuVisibleAfterClick: isVisible, url: page.url() };
|
|
264
|
-
}
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
**Expected**: `menuVisibleAfterClick: false`, url contains `/about`
|
|
268
|
-
|
|
269
|
-
### API, GraphQL, or RPC Change
|
|
270
|
-
|
|
271
|
-
End user: API client.
|
|
272
|
-
|
|
273
|
-
Required proof:
|
|
274
|
-
|
|
275
|
-
- Curl or a minimal script checked into the repo or attached to PR
|
|
276
|
-
- Response payload showing schema and expected data
|
|
277
|
-
- Negative case if applicable (auth failure, validation error)
|
|
278
|
-
|
|
279
|
-
#### Example: API Endpoint (E2E with curl)
|
|
280
|
-
|
|
281
|
-
**Task**: Add health check endpoint
|
|
282
|
-
|
|
283
|
-
**Wrong verification**: "I added the route handler"
|
|
284
|
-
|
|
285
|
-
**Correct verification**:
|
|
286
|
-
|
|
287
|
-
```bash
|
|
288
|
-
curl -s http://localhost:3000/health | jq '.status'
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
**Expected**: `"ok"`
|
|
292
|
-
|
|
293
|
-
#### Example: API Workflow (Multi-step E2E)
|
|
294
|
-
|
|
295
|
-
**Task**: Add user registration endpoint
|
|
296
|
-
|
|
297
|
-
**Wrong verification**: "The route handler creates a user record"
|
|
298
|
-
|
|
299
|
-
**Correct verification** -- write a small client script that exercises the full flow:
|
|
300
|
-
|
|
301
|
-
```bash
|
|
302
|
-
# Create user
|
|
303
|
-
RESPONSE=$(curl -s -w "\n%{http_code}" -X POST http://localhost:3000/api/users \
|
|
304
|
-
-H "Content-Type: application/json" \
|
|
305
|
-
-d '{"email":"test@example.com","name":"Test User"}')
|
|
306
|
-
HTTP_CODE=$(echo "$RESPONSE" | tail -1)
|
|
307
|
-
BODY=$(echo "$RESPONSE" | sed '$d')
|
|
308
|
-
echo "Create status: $HTTP_CODE"
|
|
309
|
-
echo "Create body: $BODY"
|
|
53
|
+
### Always Required
|
|
310
54
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
55
|
+
| Type | What to prove | Acceptable proof |
|
|
56
|
+
|------|---------------|------------------|
|
|
57
|
+
| **Test** | Unit and integration tests pass for all changed code paths | Test runner output showing all relevant tests green with no skips |
|
|
58
|
+
| **Type Safety** | No type errors introduced by the change | Type checker exits clean on the full project |
|
|
59
|
+
| **Lint/Format** | Code meets project style and quality rules | Linter and formatter exit clean on changed files |
|
|
315
60
|
|
|
316
|
-
|
|
61
|
+
### Conditional
|
|
317
62
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
**
|
|
331
|
-
|
|
332
|
-
**
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
```bash
|
|
337
|
-
# Fire requests until rate limited
|
|
338
|
-
for i in $(seq 1 25); do
|
|
339
|
-
CODE=$(curl -s -o /dev/null -w "%{http_code}" \
|
|
340
|
-
-H "Authorization: Bearer $TEST_TOKEN" \
|
|
341
|
-
"http://localhost:3000/api/search?q=test")
|
|
342
|
-
echo "Request $i: $CODE"
|
|
343
|
-
done | tail -5
|
|
344
|
-
```
|
|
345
|
-
|
|
346
|
-
**Expected**: First requests return `200`, later requests return `429`
|
|
347
|
-
|
|
348
|
-
### Database Migration or Backfill
|
|
349
|
-
|
|
350
|
-
End user: application and operators.
|
|
351
|
-
|
|
352
|
-
Required proof:
|
|
353
|
-
|
|
354
|
-
- Schema verification
|
|
355
|
-
- Backfill verification with before/after counts
|
|
356
|
-
- Rollback plan validated when possible
|
|
357
|
-
|
|
358
|
-
#### Example: Database Migration
|
|
359
|
-
|
|
360
|
-
**Task**: Add `last_login_at` column to users table
|
|
361
|
-
|
|
362
|
-
**Wrong verification**: "The migration file creates the column"
|
|
363
|
-
|
|
364
|
-
**Correct verification**:
|
|
365
|
-
|
|
366
|
-
```bash
|
|
367
|
-
# Run migration
|
|
368
|
-
npm run migration:run
|
|
369
|
-
|
|
370
|
-
# Verify column exists and has correct type
|
|
371
|
-
psql "$DATABASE_URL" -c "\d users" | grep last_login_at
|
|
372
|
-
```
|
|
373
|
-
|
|
374
|
-
**Expected**: `last_login_at | timestamp with time zone |`
|
|
375
|
-
|
|
376
|
-
### Background Jobs, Queues, Events
|
|
377
|
-
|
|
378
|
-
End user: system operator and downstream consumers.
|
|
379
|
-
|
|
380
|
-
Required proof:
|
|
381
|
-
|
|
382
|
-
- Evidence of enqueue, processing, and final state change
|
|
383
|
-
- Queue depth and worker logs
|
|
384
|
-
- Idempotency check when relevant
|
|
385
|
-
|
|
386
|
-
### Caching and Performance
|
|
387
|
-
|
|
388
|
-
End user: API consumer or UI user.
|
|
389
|
-
|
|
390
|
-
Required proof:
|
|
391
|
-
|
|
392
|
-
- Measured latency or throughput before and after
|
|
393
|
-
- Cache hit evidence (logs, metrics, key inspection)
|
|
394
|
-
- TTL behavior where relevant
|
|
395
|
-
|
|
396
|
-
### Infrastructure and Autoscaling
|
|
397
|
-
|
|
398
|
-
End user: operator and workload.
|
|
399
|
-
|
|
400
|
-
Required proof:
|
|
401
|
-
|
|
402
|
-
- Load simulation that triggers scaling or behavior change
|
|
403
|
-
- Metrics showing scale-out and scale-in
|
|
404
|
-
- Evidence of stability (error rates, latency) during the event
|
|
405
|
-
|
|
406
|
-
### Security Fixes
|
|
407
|
-
|
|
408
|
-
End user: attacker and defender.
|
|
409
|
-
|
|
410
|
-
Required proof:
|
|
411
|
-
|
|
412
|
-
- Reproduction of exploit pre-fix
|
|
413
|
-
- Demonstration of exploit failure post-fix
|
|
414
|
-
- Evidence of safe handling (sanitization, rejection, rate limit)
|
|
63
|
+
| Type | When it applies | What to prove | Acceptable proof |
|
|
64
|
+
|------|----------------|---------------|------------------|
|
|
65
|
+
| **UI** | Change affects user-visible interface | Feature renders correctly and interactions work as expected | Automated session recording or screenshots showing correct states; for cross-platform changes, evidence from each platform or explicit gap documentation |
|
|
66
|
+
| **API** | Change affects HTTP/GraphQL/RPC endpoints | Endpoint returns correct status, headers, and body for success and error cases | Request/response capture showing schema and data match expectations |
|
|
67
|
+
| **Database** | Change involves schema, migrations, or queries | Schema is correct after migration; data integrity is maintained | Query output showing expected schema and data state |
|
|
68
|
+
| **Auth** | Change affects authentication or authorization | Correct access for allowed roles; rejection for disallowed roles | Request traces showing enforcement across at least two roles |
|
|
69
|
+
| **Security** | Change involves input handling, secrets, or attack surfaces | Exploit is prevented; safe handling is enforced | Reproduction of attack pre-fix failing post-fix, or evidence of sanitization/rejection |
|
|
70
|
+
| **Performance** | Change claims performance improvement or affects hot paths | Measurable improvement in latency, throughput, or resource usage | Before/after benchmarks with methodology documented |
|
|
71
|
+
| **Infrastructure** | Change affects deployment, scaling, or cloud resources | Resources are created/updated correctly; system is stable | Infrastructure state output showing expected configuration; stability metrics during transition |
|
|
72
|
+
| **Observability** | Change affects logging, metrics, or tracing | Events are emitted with correct structure and correlation | Log or metric output showing expected entries with correlation IDs |
|
|
73
|
+
| **Background Jobs** | Change affects queues, workers, or scheduled tasks | Job enqueues, processes, and reaches terminal state correctly | Evidence of enqueue, processing, and final state; idempotency check when relevant |
|
|
74
|
+
| **Configuration** | Change affects config files, feature flags, or environment variables | Configuration is loaded and applied correctly at runtime | Application output showing the configuration taking effect |
|
|
75
|
+
| **Documentation** | Change affects documentation content or structure | Documentation is accurate and matches implementation | Content inspection confirming accuracy against actual behavior |
|
|
76
|
+
| **Cache** | Change affects caching behavior or invalidation | Cache hits, misses, and invalidation work as expected | Evidence of cache behavior (hit/miss logs, TTL verification, key inspection) |
|
|
77
|
+
| **Email/Notification** | Change affects outbound messages | Message is sent with correct content to correct recipient | Captured message content or delivery log showing expected output |
|
|
78
|
+
| **PR** | Shipping code (always applies when opening a PR) | PR includes goal summary, verification level, proof artifacts, and reproduction steps | PR description containing all required sections |
|
|
79
|
+
| **Deploy** | Shipping code to an environment | Deployment completes and application is healthy in the target environment | Deployment output and health check evidence from the target environment |
|
|
415
80
|
|
|
416
81
|
---
|
|
417
82
|
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
Agents must escalate when verification is blocked, ambiguous, or requires tools that are missing or inaccessible.
|
|
421
|
-
|
|
422
|
-
Common blockers:
|
|
423
|
-
|
|
424
|
-
- VPN required
|
|
425
|
-
- MFA, OTP, SMS codes
|
|
426
|
-
- Hardware token requirement
|
|
427
|
-
- Missing CLI, MCP server, or internal API required for verification
|
|
428
|
-
- Missing documentation on how to access required tooling
|
|
429
|
-
- Production-only access gates
|
|
430
|
-
- Compliance restrictions
|
|
431
|
-
|
|
432
|
-
When blocked, agents must do the following:
|
|
433
|
-
|
|
434
|
-
1. Identify the exact boundary preventing verification.
|
|
435
|
-
2. Identify which verification surfaces and tooling surfaces are missing.
|
|
436
|
-
3. Attempt safe fallback verification (local, staging, mocks) and label it clearly.
|
|
437
|
-
4. Declare verification level as PARTIALLY VERIFIED or UNVERIFIED.
|
|
438
|
-
5. Produce a Human Action Packet.
|
|
439
|
-
6. Pause until explicit human confirmation or tooling is provided.
|
|
440
|
-
|
|
441
|
-
Agents must never proceed past an unverified boundary without surfacing it to the human overseer.
|
|
442
|
-
|
|
443
|
-
### Human Action Packet Format
|
|
444
|
-
|
|
445
|
-
Agents must provide:
|
|
446
|
-
|
|
447
|
-
- What is blocked and why
|
|
448
|
-
- What tool or access is missing
|
|
449
|
-
- Exactly what the human must do
|
|
450
|
-
- How to confirm completion
|
|
451
|
-
- What the agent will do immediately after
|
|
452
|
-
- What artifacts the agent will produce after access is restored
|
|
453
|
-
|
|
454
|
-
Example:
|
|
455
|
-
|
|
456
|
-
- Blocked: Cannot reach DB, VPN required.
|
|
457
|
-
- Missing: `psql` access to `db.host` and internal logs viewer MCP.
|
|
458
|
-
- Human steps: Connect VPN "CorpVPN", confirm access by running `nc -vz db.host 5432`, provide MCP endpoint or credentials.
|
|
459
|
-
- Confirmation: Reply "VPN ACTIVE" and "MCP READY".
|
|
460
|
-
- Next: Agent runs migration verification script and captures schema diff and query outputs.
|
|
461
|
-
|
|
462
|
-
Agents must pause until explicit human confirmation.
|
|
463
|
-
|
|
464
|
-
Agents must never bypass security controls to proceed.
|
|
465
|
-
|
|
466
|
-
---
|
|
467
|
-
|
|
468
|
-
## Environments and Safety Rules
|
|
469
|
-
|
|
470
|
-
### Allowed Environments
|
|
471
|
-
|
|
472
|
-
- Local development
|
|
473
|
-
- Preview environments
|
|
474
|
-
- Staging
|
|
475
|
-
- Production read-only, only if explicitly approved and configured for safe access
|
|
476
|
-
|
|
477
|
-
### Prohibited Actions Without Human Approval
|
|
478
|
-
|
|
479
|
-
- Writing to production data stores
|
|
480
|
-
- Disabling MFA or security policies
|
|
481
|
-
- Modifying IAM roles or firewall rules beyond scoped change requests
|
|
482
|
-
- Running destructive migrations
|
|
483
|
-
- Triggering external billing or payment flows
|
|
484
|
-
|
|
485
|
-
If an operation is irreversible or risky, escalate first.
|
|
486
|
-
|
|
487
|
-
---
|
|
488
|
-
|
|
489
|
-
## Repository Conventions
|
|
490
|
-
|
|
491
|
-
### Code Style and Structure
|
|
492
|
-
|
|
493
|
-
- Follow existing patterns in the codebase.
|
|
494
|
-
- Do not introduce new frameworks or architectural patterns without justification in the PR.
|
|
495
|
-
- Prefer small, reviewable changes with clear commit messages.
|
|
496
|
-
|
|
497
|
-
### Tests
|
|
498
|
-
|
|
499
|
-
- Run the fastest relevant test suite locally.
|
|
500
|
-
- Expand to integration or end-to-end tests based on impact.
|
|
501
|
-
- If tests are flaky or slow, document it and propose a follow-up.
|
|
502
|
-
|
|
503
|
-
### Logging and Observability
|
|
504
|
-
|
|
505
|
-
- Include correlation IDs where supported.
|
|
506
|
-
- Prefer structured logs over ad hoc strings.
|
|
507
|
-
- For behavior changes, include log evidence in proof artifacts.
|
|
508
|
-
|
|
509
|
-
---
|
|
510
|
-
|
|
511
|
-
## Artifact Storage and PR Requirements
|
|
512
|
-
|
|
513
|
-
Every PR must include:
|
|
514
|
-
|
|
515
|
-
- Goal summary
|
|
516
|
-
- Verification level
|
|
517
|
-
- Proof artifacts links or embedded outputs
|
|
518
|
-
- How to reproduce verification locally
|
|
519
|
-
- Known limitations and follow-up items
|
|
520
|
-
|
|
521
|
-
Preferred artifact locations:
|
|
522
|
-
|
|
523
|
-
- PR description
|
|
524
|
-
- Repo-local scripts under `scripts/verification/`
|
|
525
|
-
- CI artifacts linked from the build
|
|
526
|
-
|
|
527
|
-
---
|
|
528
|
-
|
|
529
|
-
## Quick Commands
|
|
530
|
-
|
|
531
|
-
These commands are consistent across all Lisa-managed projects. Stack-specific commands (Expo, NestJS, CDK) are documented in their respective `.claude/rules/` files.
|
|
532
|
-
|
|
533
|
-
### Local
|
|
534
|
-
|
|
535
|
-
- Install: `bun install`
|
|
536
|
-
- Run app: `bun run start:local` (Expo: dev server; NestJS: serverless offline)
|
|
537
|
-
- Run unit tests: `bun run test:unit`
|
|
538
|
-
- Run integration tests: `bun run test:integration`
|
|
539
|
-
- Run all tests: `bun run test`
|
|
540
|
-
- Run tests with coverage: `bun run test:cov`
|
|
541
|
-
- Lint: `bun run lint`
|
|
542
|
-
- Format check: `bun run format:check`
|
|
543
|
-
- Format fix: `bun run format`
|
|
544
|
-
- Type check: `bun run typecheck`
|
|
545
|
-
|
|
546
|
-
### UI Verification (Expo)
|
|
547
|
-
|
|
548
|
-
- Playwright tests (web): `bun run playwright:test`
|
|
549
|
-
- Playwright interactive: `bun run playwright:test:ui`
|
|
550
|
-
- Maestro tests (native): `bun run maestro:test`
|
|
551
|
-
- Maestro smoke tests: `bun run maestro:test:smoke`
|
|
552
|
-
- Maestro studio: `bun run maestro:studio`
|
|
553
|
-
- Ad-hoc browser verification: Use Playwright MCP tools (`browser_snapshot`, `browser_console_messages`, `browser_network_requests`)
|
|
554
|
-
|
|
555
|
-
### API Verification (NestJS)
|
|
556
|
-
|
|
557
|
-
- Start local server: `bun run start:local`
|
|
558
|
-
- GraphQL endpoint (local): `http://localhost:3000/graphql`
|
|
559
|
-
- Health check: `curl -s http://localhost:3000/graphql -H 'Content-Type: application/json' -d '{"query":"{ healthCheck }"}'`
|
|
560
|
-
|
|
561
|
-
### Deployment
|
|
562
|
-
|
|
563
|
-
- Expo OTA update (fast, JS-only): `bun run eas:publish:<env>`
|
|
564
|
-
- Expo full build (native changes): `bun run eas:deploy:<env>`
|
|
565
|
-
- NestJS deploy: `bun run deploy:<env>`
|
|
566
|
-
- NestJS deploy single function: `FUNCTION_NAME=<name> bun run deploy:function:<env>`
|
|
567
|
-
- Environments: `dev`, `staging`, `production`
|
|
568
|
-
|
|
569
|
-
### Observability
|
|
570
|
-
|
|
571
|
-
- Sentry issues: Use `search_issues` MCP tool (Sentry plugin)
|
|
572
|
-
- Sentry issue details: Use `get_issue_details` MCP tool
|
|
573
|
-
- Sentry root cause analysis: Use `analyze_issue_with_seer` MCP tool
|
|
574
|
-
- Sentry event search: Use `search_events` MCP tool
|
|
575
|
-
- Sentry trace lookup: Use `get_trace_details` MCP tool
|
|
576
|
-
- Browser console logs: Use `browser_console_messages` MCP tool (Playwright plugin)
|
|
577
|
-
- Browser network requests: Use `browser_network_requests` MCP tool (Playwright plugin)
|
|
578
|
-
- Backend logs (local): Check terminal output from `bun run start:local`
|
|
579
|
-
- Backend logs (remote): Check companion backend repo's CLAUDE.md for CloudWatch/log commands
|
|
580
|
-
|
|
581
|
-
---
|
|
582
|
-
|
|
583
|
-
## Definition of Done
|
|
584
|
-
|
|
585
|
-
A task is done only when:
|
|
586
|
-
|
|
587
|
-
- End user is identified
|
|
588
|
-
- Verification pattern is applied
|
|
589
|
-
- Required verification surfaces and tooling surfaces are used or explicitly unavailable
|
|
590
|
-
- Proof artifacts are captured
|
|
591
|
-
- Verification level is declared
|
|
592
|
-
- Risks and gaps are documented
|
|
593
|
-
|
|
594
|
-
If any of these are missing, the work is not complete.
|
|
83
|
+
For the full verification lifecycle (classify, check tooling, plan, execute, loop), surfaces, escalation protocol, and proof artifact requirements, see the `verification-lifecycle` skill loaded by the `verification-specialist` agent.
|
package/package.json
CHANGED
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"flatted": "^3.4.2"
|
|
75
75
|
},
|
|
76
76
|
"name": "@codyswann/lisa",
|
|
77
|
-
"version": "1.
|
|
77
|
+
"version": "1.69.0",
|
|
78
78
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
79
79
|
"main": "dist/index.js",
|
|
80
80
|
"exports": {
|
|
@@ -2,21 +2,16 @@
|
|
|
2
2
|
name: architecture-specialist
|
|
3
3
|
description: Architecture specialist agent. Designs implementation approaches, traces data flow, identifies files to modify, maps dependencies, finds reusable code, evaluates design patterns, and flags breaking changes.
|
|
4
4
|
tools: Read, Grep, Glob, Bash
|
|
5
|
+
skills:
|
|
6
|
+
- codebase-research
|
|
7
|
+
- task-decomposition
|
|
8
|
+
- epic-triage
|
|
5
9
|
---
|
|
6
10
|
|
|
7
11
|
# Architecture Specialist Agent
|
|
8
12
|
|
|
9
13
|
You are a technical architecture specialist who designs implementation approaches and evaluates structural impact of code changes.
|
|
10
14
|
|
|
11
|
-
## Analysis Process
|
|
12
|
-
|
|
13
|
-
1. **Read referenced files** -- understand current architecture before proposing changes
|
|
14
|
-
2. **Trace data flow** -- follow the path from entry point to output for the affected feature
|
|
15
|
-
3. **Identify modification points** -- which files, functions, and interfaces need changes
|
|
16
|
-
4. **Map dependencies** -- what depends on the code being changed, and what it depends on
|
|
17
|
-
5. **Check for reusable code** -- existing utilities, helpers, or patterns that apply
|
|
18
|
-
6. **Evaluate design patterns** -- match the codebase's existing patterns (don't introduce new ones without reason)
|
|
19
|
-
|
|
20
15
|
## Output Format
|
|
21
16
|
|
|
22
17
|
Structure your findings as:
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bug-fixer
|
|
3
|
+
description: Bug fix agent. Reproduces bugs as failing tests, implements fixes via TDD, and verifies the fix resolves the issue without introducing regressions.
|
|
4
|
+
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
5
|
+
skills:
|
|
6
|
+
- bug-triage
|
|
7
|
+
- tdd-implementation
|
|
8
|
+
- jsdoc-best-practices
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Bug Fixer Agent
|
|
12
|
+
|
|
13
|
+
You are a bug fix specialist. Your job is to turn a diagnosed bug into a verified fix using Test-Driven Development. The reproduction scenario becomes your failing test.
|
|
14
|
+
|
|
15
|
+
## Prerequisites
|
|
16
|
+
|
|
17
|
+
You receive a diagnosed bug from the Fix flow with:
|
|
18
|
+
- **Root cause** — what is causing the bug and where (file:line)
|
|
19
|
+
- **Reproduction** — how to trigger the bug reliably
|
|
20
|
+
- **Test strategy** — what regression tests to write (from `test-specialist`)
|
|
21
|
+
|
|
22
|
+
If any of these are missing, ask the team for them before proceeding.
|
|
23
|
+
|
|
24
|
+
## Workflow
|
|
25
|
+
|
|
26
|
+
1. **Write the failing test** — translate the reproduction scenario into a test that captures the bug. This is your RED phase. The test must fail for the right reason (the bug), not for an unrelated reason.
|
|
27
|
+
2. **Implement the fix** — write the minimum code to make the test pass. This is your GREEN phase. Do not refactor yet.
|
|
28
|
+
3. **Refactor** — clean up the fix while keeping the test green. Ensure the fix follows existing patterns and coding philosophy.
|
|
29
|
+
4. **Run full verification** — run the proof command to confirm the fix. Check for regressions by running related tests.
|
|
30
|
+
5. **Update documentation** — add/update JSDoc preambles explaining the "why" behind the fix.
|
|
31
|
+
6. **Commit atomically** — use the `/git-commit` skill for a conventional commit.
|
|
32
|
+
|
|
33
|
+
## Rules
|
|
34
|
+
|
|
35
|
+
- The reproduction MUST become a test — never fix a bug without a regression test
|
|
36
|
+
- Fix the root cause, not the symptom — if the root cause is upstream, fix it there
|
|
37
|
+
- Keep the fix minimal — don't refactor surrounding code unless it's part of the bug
|
|
38
|
+
- If the fix requires changing a public API, flag it as a potential breaking change
|
|
39
|
+
- If the fix touches code you don't fully understand, read the git history first
|
|
40
|
+
- Never mark the task complete without running the proof command
|