@codyswann/lisa 1.67.2 → 1.68.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/all/copy-overwrite/.claude/rules/base-rules.md +0 -50
- package/all/copy-overwrite/.claude/rules/intent-routing.md +115 -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 +85 -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 +15 -0
- package/plugins/lisa/commands/investigate.md +10 -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.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/performance-review/SKILL.md +94 -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/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 +85 -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 +15 -0
- package/plugins/src/base/commands/investigate.md +10 -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.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/performance-review/SKILL.md +94 -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/verification-lifecycle/SKILL.md +292 -0
- package/typescript/copy-overwrite/eslint.ignore.config.json +1 -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
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: verification-lifecycle
|
|
3
|
+
description: "Verification lifecycle: classify types, discover tools, fail fast, plan, execute, loop. Includes verification surfaces, proof artifacts, self-correction loop, escalation protocol, and definition of done."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Verification Lifecycle
|
|
7
|
+
|
|
8
|
+
This skill defines the complete verification lifecycle that agents must follow for every change: classify, check tooling, fail fast, plan, execute, and loop.
|
|
9
|
+
|
|
10
|
+
## Verification Lifecycle
|
|
11
|
+
|
|
12
|
+
Agents must follow this mandatory sequence for every change:
|
|
13
|
+
|
|
14
|
+
### 1. Classify
|
|
15
|
+
|
|
16
|
+
Determine which verification types apply based on the change. Start with the three always-required types (Test, Type Safety, Lint/Format), then check each conditional type against the change scope.
|
|
17
|
+
|
|
18
|
+
### 2. Check Tooling
|
|
19
|
+
|
|
20
|
+
For each required verification type, discover what tools are available in the project. Use the Tool Discovery Process below.
|
|
21
|
+
|
|
22
|
+
Report what is available for each required type. If a required type has no available tool, proceed to step 3.
|
|
23
|
+
|
|
24
|
+
### 3. Fail Fast
|
|
25
|
+
|
|
26
|
+
If a required verification type has no available tool and no reasonable alternative, escalate immediately using the Escalation Protocol. Do not begin implementation without a verification plan for every required type.
|
|
27
|
+
|
|
28
|
+
### 4. Plan
|
|
29
|
+
|
|
30
|
+
For each verification type, state:
|
|
31
|
+
- The specific tool or command that will be used
|
|
32
|
+
- The expected outcome that constitutes a pass
|
|
33
|
+
- Any prerequisites (running server, seeded database, auth token)
|
|
34
|
+
|
|
35
|
+
### 5. Execute
|
|
36
|
+
|
|
37
|
+
After implementation, run the verification plan. Execute each verification type in order.
|
|
38
|
+
|
|
39
|
+
### 6. Loop
|
|
40
|
+
|
|
41
|
+
If any verification fails, fix the issue and re-verify. Do not declare done until all required types pass. If a verification is stuck after 3 attempts, escalate.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Tool Discovery Process
|
|
46
|
+
|
|
47
|
+
Agents must discover available tools at runtime rather than assuming what exists. Check these locations in order:
|
|
48
|
+
|
|
49
|
+
1. **Project manifest** — Read the project manifest file for available scripts (build, test, lint, deploy, start, etc.) and their variants
|
|
50
|
+
2. **Script directories** — Search for shell scripts, automation files, and task runners in common locations (`scripts/`, `bin/`, project root)
|
|
51
|
+
3. **Configuration files** — Look for test framework configs, linter configs, formatter configs, deployment configs, and infrastructure-as-code definitions
|
|
52
|
+
4. **MCP tools** — Check available MCP server tools for browser automation, observability, issue tracking, and other capabilities
|
|
53
|
+
5. **CLI tools** — Check for available command-line tools relevant to the verification type (database clients, HTTP clients, cloud CLIs, container runtimes)
|
|
54
|
+
6. **Environment files** — Read environment configuration for service URLs, connection strings, and feature flags that indicate available services
|
|
55
|
+
7. **Documentation** — Check project README, CLAUDE.md, and rules files for documented verification procedures
|
|
56
|
+
|
|
57
|
+
If a tool is expected but not found, report the gap rather than assuming it doesn't exist — it may need to be installed or configured.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Verification Surfaces
|
|
62
|
+
|
|
63
|
+
Agents may only self-verify when the required verification surfaces are available.
|
|
64
|
+
|
|
65
|
+
Verification surfaces include:
|
|
66
|
+
|
|
67
|
+
### Action Surfaces
|
|
68
|
+
|
|
69
|
+
- Build and test execution
|
|
70
|
+
- Deployment and rollback
|
|
71
|
+
- Infrastructure apply and drift detection
|
|
72
|
+
- Feature flag toggling
|
|
73
|
+
- Data seeding and state reset
|
|
74
|
+
- Load generation and fault injection
|
|
75
|
+
|
|
76
|
+
### Observation Surfaces
|
|
77
|
+
|
|
78
|
+
- Application logs (local and remote)
|
|
79
|
+
- Metrics (latency, errors, saturation, scaling)
|
|
80
|
+
- Traces and correlation IDs
|
|
81
|
+
- Database queries and schema inspection
|
|
82
|
+
- Browser and device automation
|
|
83
|
+
- Queue depth and consumer execution visibility
|
|
84
|
+
- CDN headers and edge behavior
|
|
85
|
+
- Artifact capture (video, screenshots, traces, diffs)
|
|
86
|
+
|
|
87
|
+
If a required surface is unavailable, agents must follow the Escalation Protocol.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Tooling Surfaces
|
|
92
|
+
|
|
93
|
+
Many verification steps require tools that may not be available by default.
|
|
94
|
+
|
|
95
|
+
Tooling surfaces include:
|
|
96
|
+
|
|
97
|
+
- Required CLIs (cloud, DB, deployment, observability)
|
|
98
|
+
- Required MCP servers and their capabilities
|
|
99
|
+
- Required internal APIs (feature flags, auth, metrics, logs, CI)
|
|
100
|
+
- Required credentials and scopes for those tools
|
|
101
|
+
|
|
102
|
+
If required tooling is missing, misconfigured, blocked, undocumented, or inaccessible, agents must treat this as a verification blocker and escalate before proceeding.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Proof Artifacts Requirements
|
|
107
|
+
|
|
108
|
+
Every completed task must include proof artifacts stored in the PR description or linked output location.
|
|
109
|
+
|
|
110
|
+
Proof artifacts must be specific and re-checkable. A proof artifact should contain enough detail that another agent or human can reproduce the verification independently.
|
|
111
|
+
|
|
112
|
+
Acceptable proof includes:
|
|
113
|
+
- Automated session recordings and screenshots for UI work
|
|
114
|
+
- Request/response captures for API work
|
|
115
|
+
- Before/after query outputs for data work
|
|
116
|
+
- Metrics snapshots for performance and scaling work
|
|
117
|
+
- Log excerpts with correlation IDs for behavior validation
|
|
118
|
+
- Benchmark results with methodology for performance work
|
|
119
|
+
|
|
120
|
+
Statements like "works" or "should work" are not acceptable.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Self-Correction Loop
|
|
125
|
+
|
|
126
|
+
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.
|
|
127
|
+
|
|
128
|
+
### Layer 1 — Inline Correction
|
|
129
|
+
|
|
130
|
+
**Trigger:** Every file write or edit.
|
|
131
|
+
|
|
132
|
+
Hooks run formatting, structural analysis, and linting 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.
|
|
133
|
+
|
|
134
|
+
**Agent responsibility:** When a hook blocks, fix the reported errors in the same file before proceeding to other files. Do not accumulate errors.
|
|
135
|
+
|
|
136
|
+
### Layer 2 — Commit-Time Enforcement
|
|
137
|
+
|
|
138
|
+
**Trigger:** Every commit.
|
|
139
|
+
|
|
140
|
+
Checks run on staged files: linting, formatting, secret detection, commit message validation, and branch protection. This layer catches errors that span multiple files or involve staged-but-not-yet-checked changes.
|
|
141
|
+
|
|
142
|
+
Commit-time checks cannot be bypassed. Agents must discover what specific checks are enforced by reading the project's hook configuration.
|
|
143
|
+
|
|
144
|
+
### Layer 3 — Push-Time Enforcement
|
|
145
|
+
|
|
146
|
+
**Trigger:** Every push.
|
|
147
|
+
|
|
148
|
+
The full project quality gate runs: test suites with coverage thresholds, type checking, security audits, unused export detection, and integration tests. This is the last automated checkpoint before code reaches the remote.
|
|
149
|
+
|
|
150
|
+
**Handling failures:** When a push fails, read the error output to determine which check failed. Fix the root cause rather than working around it. Agents must discover what specific checks are enforced by reading the project's hook configuration.
|
|
151
|
+
|
|
152
|
+
### Regeneration Over Patching
|
|
153
|
+
|
|
154
|
+
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.
|
|
155
|
+
|
|
156
|
+
Signs that regeneration is needed:
|
|
157
|
+
- The same file has been edited 3+ times in the same loop without converging
|
|
158
|
+
- Fixing one error introduces another in the same file
|
|
159
|
+
- The fix requires disabling a lint rule or adding a type assertion
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Standard Workflow
|
|
164
|
+
|
|
165
|
+
Agents must follow this sequence unless explicitly instructed otherwise:
|
|
166
|
+
|
|
167
|
+
1. Restate goal in one sentence.
|
|
168
|
+
2. Identify the end user of the change.
|
|
169
|
+
3. Classify verification types that apply to the change.
|
|
170
|
+
4. Discover available tools for each verification type.
|
|
171
|
+
5. Confirm required surfaces are available, escalate if not.
|
|
172
|
+
6. Plan verification: state tool, command, and expected outcome for each type.
|
|
173
|
+
7. Implement the change.
|
|
174
|
+
8. Execute verification plan.
|
|
175
|
+
9. Collect proof artifacts.
|
|
176
|
+
10. Summarize what changed, what was verified, and remaining risk.
|
|
177
|
+
11. Label the result with a verification level.
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Task Completion Rules
|
|
182
|
+
|
|
183
|
+
1. **Run the proof command** before marking any task complete
|
|
184
|
+
2. **Compare output** to expected result
|
|
185
|
+
3. **If verification fails**: Fix and re-run, don't mark complete
|
|
186
|
+
4. **If verification blocked** (missing tools, services, etc.): Mark as blocked, not complete
|
|
187
|
+
5. **Must not be dependent on CI/CD** if necessary, you may use local deploy methods found in the project manifest, but the verification methods must be listed in the pull request and therefore cannot be dependent on CI/CD completing
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Escalation Protocol
|
|
192
|
+
|
|
193
|
+
Agents must escalate when verification is blocked, ambiguous, or requires tools that are missing or inaccessible.
|
|
194
|
+
|
|
195
|
+
Common blockers:
|
|
196
|
+
|
|
197
|
+
- VPN required
|
|
198
|
+
- MFA, OTP, SMS codes
|
|
199
|
+
- Hardware token requirement
|
|
200
|
+
- Missing CLI, MCP server, or internal API required for verification
|
|
201
|
+
- Missing documentation on how to access required tooling
|
|
202
|
+
- Production-only access gates
|
|
203
|
+
- Compliance restrictions
|
|
204
|
+
|
|
205
|
+
When blocked, agents must do the following:
|
|
206
|
+
|
|
207
|
+
1. Identify the exact boundary preventing verification.
|
|
208
|
+
2. Identify which verification surfaces and tooling surfaces are missing.
|
|
209
|
+
3. Attempt safe fallback verification (local, staging, mocks) and label it clearly.
|
|
210
|
+
4. Declare verification level as PARTIALLY VERIFIED or UNVERIFIED.
|
|
211
|
+
5. Produce a Human Action Packet.
|
|
212
|
+
6. Pause until explicit human confirmation or tooling is provided.
|
|
213
|
+
|
|
214
|
+
Agents must never proceed past an unverified boundary without surfacing it to the human overseer.
|
|
215
|
+
|
|
216
|
+
### Human Action Packet Format
|
|
217
|
+
|
|
218
|
+
Agents must provide:
|
|
219
|
+
|
|
220
|
+
- What is blocked and why
|
|
221
|
+
- What tool or access is missing
|
|
222
|
+
- Exactly what the human must do
|
|
223
|
+
- How to confirm completion
|
|
224
|
+
- What the agent will do immediately after
|
|
225
|
+
- What artifacts the agent will produce after access is restored
|
|
226
|
+
|
|
227
|
+
Example:
|
|
228
|
+
|
|
229
|
+
- Blocked: Cannot reach DB, VPN required.
|
|
230
|
+
- Missing: Database client access to `db.host` and internal logs viewer.
|
|
231
|
+
- Human steps: Connect VPN "CorpVPN", confirm access by running connectivity check to `db.host`, provide credentials or endpoint.
|
|
232
|
+
- Confirmation: Reply "VPN ACTIVE" and "ACCESS READY".
|
|
233
|
+
- Next: Agent runs migration verification script and captures schema diff and query outputs.
|
|
234
|
+
|
|
235
|
+
Agents must pause until explicit human confirmation.
|
|
236
|
+
|
|
237
|
+
Agents must never bypass security controls to proceed.
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Environments and Safety Rules
|
|
242
|
+
|
|
243
|
+
### Allowed Environments
|
|
244
|
+
|
|
245
|
+
- Local development
|
|
246
|
+
- Preview environments
|
|
247
|
+
- Staging
|
|
248
|
+
- Production read-only, only if explicitly approved and configured for safe access
|
|
249
|
+
|
|
250
|
+
### Prohibited Actions Without Human Approval
|
|
251
|
+
|
|
252
|
+
- Writing to production data stores
|
|
253
|
+
- Disabling MFA or security policies
|
|
254
|
+
- Modifying IAM roles or firewall rules beyond scoped change requests
|
|
255
|
+
- Running destructive migrations
|
|
256
|
+
- Triggering external billing or payment flows
|
|
257
|
+
|
|
258
|
+
If an operation is irreversible or risky, escalate first.
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Artifact Storage and PR Requirements
|
|
263
|
+
|
|
264
|
+
Every PR must include:
|
|
265
|
+
|
|
266
|
+
- Goal summary
|
|
267
|
+
- Verification level
|
|
268
|
+
- Proof artifacts links or embedded outputs
|
|
269
|
+
- How to reproduce verification locally
|
|
270
|
+
- Known limitations and follow-up items
|
|
271
|
+
|
|
272
|
+
Preferred artifact locations:
|
|
273
|
+
|
|
274
|
+
- PR description
|
|
275
|
+
- Repo-local scripts under `scripts/verification/`
|
|
276
|
+
- CI artifacts linked from the build
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## Definition of Done
|
|
281
|
+
|
|
282
|
+
A task is done only when:
|
|
283
|
+
|
|
284
|
+
- End user is identified
|
|
285
|
+
- All applicable verification types are classified and executed
|
|
286
|
+
- Verification lifecycle is completed (classify, check tooling, plan, execute, loop)
|
|
287
|
+
- Required verification surfaces and tooling surfaces are used or explicitly unavailable
|
|
288
|
+
- Proof artifacts are captured
|
|
289
|
+
- Verification level is declared
|
|
290
|
+
- Risks and gaps are documented
|
|
291
|
+
|
|
292
|
+
If any of these are missing, the work is not complete.
|
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
# Expo Verification Capabilities
|
|
2
|
-
|
|
3
|
-
This rule documents the native and web verification surfaces available in Expo projects. Agents must use these tools when verifying UI changes, features, and bugs.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Environment Strategy
|
|
8
|
-
|
|
9
|
-
Frontend changes are typically verified against the **remote dev backend**, not a local backend. The backend is generally deployed before the frontend, so the dev environment is the default target for verification.
|
|
10
|
-
|
|
11
|
-
Use `:local` variants only when explicitly running the companion backend repo locally. Use `:dev` for most verification work.
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Native Simulator Testing
|
|
16
|
-
|
|
17
|
-
Expo manages simulator and emulator lifecycle directly. Never use `xcrun simctl` or manual emulator commands.
|
|
18
|
-
|
|
19
|
-
### Start Dev Server with Simulator
|
|
20
|
-
|
|
21
|
-
These commands copy the target environment file, launch the Expo dev server, and open the app in the simulator automatically:
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
# iOS Simulator
|
|
25
|
-
bun run start:simulator:ios:local # Against local backend
|
|
26
|
-
bun run start:simulator:ios:dev # Against dev backend (default for verification)
|
|
27
|
-
bun run start:simulator:ios:staging # Against staging backend
|
|
28
|
-
bun run start:simulator:ios:production # Against production backend
|
|
29
|
-
|
|
30
|
-
# Android Emulator
|
|
31
|
-
bun run start:simulator:android:local # Against local backend
|
|
32
|
-
bun run start:simulator:android:dev # Against dev backend (default for verification)
|
|
33
|
-
bun run start:simulator:android:staging # Against staging backend
|
|
34
|
-
bun run start:simulator:android:production # Against production backend
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### Build Native Binary and Run on Simulator
|
|
38
|
-
|
|
39
|
-
These commands compile a full native binary and install it on the simulator. Slower than dev server but closer to production:
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
# iOS Simulator
|
|
43
|
-
bun run build-and-run:simulator:ios:local # Against local backend
|
|
44
|
-
bun run build-and-run:simulator:ios:dev # Against dev backend
|
|
45
|
-
bun run build-and-run:simulator:ios:staging # Against staging backend
|
|
46
|
-
bun run build-and-run:simulator:ios:production # Against production backend
|
|
47
|
-
|
|
48
|
-
# Android Emulator
|
|
49
|
-
bun run build-and-run:simulator:android:local # Against local backend
|
|
50
|
-
bun run build-and-run:simulator:android:dev # Against dev backend
|
|
51
|
-
bun run build-and-run:simulator:android:staging # Against staging backend
|
|
52
|
-
bun run build-and-run:simulator:android:production # Against production backend
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Use `build-and-run` when testing native modules, push notifications, deep linking, or any feature that requires a full native build.
|
|
56
|
-
|
|
57
|
-
### Dev Server Only (Manual Simulator Selection)
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
bun run start:local # Start dev server, then press 'i' for iOS or 'a' for Android
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## Native E2E Testing with Maestro
|
|
66
|
-
|
|
67
|
-
Maestro provides automated native UI testing on simulators and emulators.
|
|
68
|
-
|
|
69
|
-
### Run All Flows
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
bun run maestro:test
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### Run Smoke Tests Only
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
bun run maestro:test:smoke
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Interactive Flow Development
|
|
82
|
-
|
|
83
|
-
```bash
|
|
84
|
-
bun run maestro:studio
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
Maestro flows live in `.maestro/flows/`. Tag flows with `smoke` for the smoke test subset.
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## Web Testing with Playwright
|
|
92
|
-
|
|
93
|
-
### Run Playwright Tests
|
|
94
|
-
|
|
95
|
-
```bash
|
|
96
|
-
bun run playwright:test # Build and run all tests
|
|
97
|
-
bun run playwright:test:ui # Build and run with interactive UI
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
### Ad-Hoc Browser Verification
|
|
101
|
-
|
|
102
|
-
Use the Playwright MCP tools (`browser_snapshot`, `browser_click`, `browser_take_screenshot`, `browser_navigate`, `browser_console_messages`, `browser_network_requests`) for interactive browser verification without writing test files.
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## Cross-Repo Log Correlation
|
|
107
|
-
|
|
108
|
-
When debugging frontend issues, errors often originate on the server side. Agents must check both client and server logs to diagnose problems.
|
|
109
|
-
|
|
110
|
-
### Client-Side Logs
|
|
111
|
-
|
|
112
|
-
Use the Playwright MCP tools to capture browser logs during verification:
|
|
113
|
-
|
|
114
|
-
- `browser_console_messages` — Console output (errors, warnings, info, debug)
|
|
115
|
-
- `browser_network_requests` — Failed API calls, status codes, response payloads
|
|
116
|
-
|
|
117
|
-
For native simulators, check the Expo dev server terminal output for Metro bundler errors and React Native logs.
|
|
118
|
-
|
|
119
|
-
### Server-Side Logs
|
|
120
|
-
|
|
121
|
-
When the frontend is configured as an additional working directory alongside a companion backend repo (or vice versa), agents have access to both codebases. Use this to:
|
|
122
|
-
|
|
123
|
-
1. **Read the backend's CLAUDE.md and verification rules** to understand how to check server logs
|
|
124
|
-
2. **Check backend logs locally** if the backend is running via `bun run start:local` in the companion repo
|
|
125
|
-
3. **Check remote logs** using whatever observability tools the backend documents (CloudWatch, Sentry, etc.)
|
|
126
|
-
|
|
127
|
-
### Debugging Workflow
|
|
128
|
-
|
|
129
|
-
When a frontend action produces an error:
|
|
130
|
-
|
|
131
|
-
1. **Capture the client error** — Use `browser_console_messages` and `browser_network_requests` to identify the failing request (URL, status code, error body)
|
|
132
|
-
2. **Correlate with server logs** — Use the companion backend repo's documented log-checking tools to find the corresponding server-side error
|
|
133
|
-
3. **Identify the root cause** — Determine whether the issue is a frontend bug (bad request, missing field, wrong query) or a backend bug (server error, schema mismatch, auth failure)
|
|
134
|
-
4. **Document both sides** — Include client and server log excerpts in proof artifacts
|
|
135
|
-
|
|
136
|
-
This cross-repo correlation is especially valuable for:
|
|
137
|
-
|
|
138
|
-
- GraphQL query errors (client sends bad query vs. server resolver failure)
|
|
139
|
-
- Authentication failures (expired token vs. misconfigured auth)
|
|
140
|
-
- Data inconsistencies (frontend cache staleness vs. backend data issue)
|
|
141
|
-
- Network errors (frontend timeout vs. backend performance)
|
|
142
|
-
|
|
143
|
-
---
|
|
144
|
-
|
|
145
|
-
## Deployment
|
|
146
|
-
|
|
147
|
-
### Authentication
|
|
148
|
-
|
|
149
|
-
Before deploying, ensure you are logged into EAS:
|
|
150
|
-
|
|
151
|
-
```bash
|
|
152
|
-
bun run eas:whoami # Check current login status
|
|
153
|
-
bun run eas:login # Log in to Expo account (interactive)
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
### EAS Build (Full Native Deploy)
|
|
157
|
-
|
|
158
|
-
`eas:deploy` triggers a full native build in the EAS cloud. Use this when native code has changed (new native modules, SDK upgrades, native config changes). Builds take several minutes.
|
|
159
|
-
|
|
160
|
-
```bash
|
|
161
|
-
bun run eas:deploy:dev # Build for dev environment
|
|
162
|
-
bun run eas:deploy:staging # Build for staging environment
|
|
163
|
-
bun run eas:deploy:production # Build for production environment
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
Build profiles are defined in `eas.json`. Each profile specifies its channel, environment variables, and distribution settings.
|
|
167
|
-
|
|
168
|
-
### EAS Update (OTA Publish)
|
|
169
|
-
|
|
170
|
-
`eas:publish` pushes an over-the-air JavaScript bundle update. Use this for JS-only changes (bug fixes, UI tweaks, logic changes) that don't require a new native build. Updates are fast (seconds, not minutes).
|
|
171
|
-
|
|
172
|
-
```bash
|
|
173
|
-
bun run eas:publish:dev # Publish OTA update to dev channel
|
|
174
|
-
bun run eas:publish:staging # Publish OTA update to staging channel
|
|
175
|
-
bun run eas:publish:production # Publish OTA update to production channel
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
### When to Use Build vs Update
|
|
179
|
-
|
|
180
|
-
| Scenario | Command |
|
|
181
|
-
|----------|---------|
|
|
182
|
-
| New native module added | `eas:deploy` (full build required) |
|
|
183
|
-
| SDK version upgrade | `eas:deploy` (full build required) |
|
|
184
|
-
| Native config change (`app.json`, `eas.json`) | `eas:deploy` (full build required) |
|
|
185
|
-
| JS bug fix | `eas:publish` (OTA update) |
|
|
186
|
-
| UI change (styles, layout, text) | `eas:publish` (OTA update) |
|
|
187
|
-
| New screen or feature (JS-only) | `eas:publish` (OTA update) |
|
|
188
|
-
|
|
189
|
-
### Deployment Verification
|
|
190
|
-
|
|
191
|
-
After deploying, verify the deployment landed:
|
|
192
|
-
|
|
193
|
-
1. **For OTA updates**: Check the EAS dashboard or run `eas update:list` to confirm the update was published to the correct channel
|
|
194
|
-
2. **For full builds**: Check the EAS dashboard or run `eas build:list` to confirm the build completed successfully
|
|
195
|
-
3. **End-to-end**: Open the app on a device/simulator pointed at the target environment and verify the changes are present
|
|
196
|
-
|
|
197
|
-
---
|
|
198
|
-
|
|
199
|
-
## Verification Quick Reference
|
|
200
|
-
|
|
201
|
-
| Change Type | Verification Method | Command |
|
|
202
|
-
|-------------|-------------------|---------|
|
|
203
|
-
| UI feature (web) | Playwright MCP tools or tests | `bun run playwright:test` |
|
|
204
|
-
| UI feature (native) | Maestro flows | `bun run maestro:test` |
|
|
205
|
-
| Unit/integration logic | Jest | `bun run test -- path/to/file` |
|
|
206
|
-
| Type safety | TypeScript compiler | `bun run typecheck` |
|
|
207
|
-
| Code quality | ESLint | `bun run lint` |
|
|
208
|
-
| Native module integration | Build and run on simulator | `bun run build-and-run:simulator:ios:dev` |
|
|
209
|
-
| Full native E2E | Maestro smoke suite | `bun run maestro:test:smoke` |
|
|
210
|
-
| Client-side errors | Playwright browser logs | `browser_console_messages` MCP tool |
|
|
211
|
-
| Server-side errors | Companion backend repo logs | Check backend CLAUDE.md for log commands |
|
|
212
|
-
| Deploy (native change) | EAS Build | `bun run eas:deploy:dev` |
|
|
213
|
-
| Deploy (JS-only change) | EAS Update (OTA) | `bun run eas:publish:dev` |
|
|
214
|
-
| Check EAS auth | EAS CLI | `bun run eas:whoami` |
|
|
215
|
-
|
|
216
|
-
---
|
|
217
|
-
|
|
218
|
-
## Verification Patterns for Native Changes
|
|
219
|
-
|
|
220
|
-
### UI Feature on Native
|
|
221
|
-
|
|
222
|
-
End user: human on iOS or Android device.
|
|
223
|
-
|
|
224
|
-
Required proof:
|
|
225
|
-
|
|
226
|
-
- Maestro flow recording or screenshots from simulator
|
|
227
|
-
- Console output showing flow passed
|
|
228
|
-
|
|
229
|
-
```bash
|
|
230
|
-
# Start the app on iOS simulator against dev backend
|
|
231
|
-
bun run start:simulator:ios:dev
|
|
232
|
-
|
|
233
|
-
# Run Maestro verification
|
|
234
|
-
bun run maestro:test
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
### Native Module or Platform-Specific Code
|
|
238
|
-
|
|
239
|
-
End user: application on device.
|
|
240
|
-
|
|
241
|
-
Required proof:
|
|
242
|
-
|
|
243
|
-
- Successful native build (no build errors)
|
|
244
|
-
- App launches and target feature is functional
|
|
245
|
-
|
|
246
|
-
```bash
|
|
247
|
-
# Build and install native binary against dev backend
|
|
248
|
-
bun run build-and-run:simulator:ios:dev
|
|
249
|
-
|
|
250
|
-
# Verify with Maestro
|
|
251
|
-
bun run maestro:test:smoke
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
### Cross-Platform Verification
|
|
255
|
-
|
|
256
|
-
For changes that affect both web and native, agents must verify on both surfaces:
|
|
257
|
-
|
|
258
|
-
1. **Web**: Playwright MCP tools or `bun run playwright:test`
|
|
259
|
-
2. **Native**: `bun run start:simulator:ios:dev` + `bun run maestro:test`
|
|
260
|
-
|
|
261
|
-
If only one surface is available, label the result as **PARTIALLY VERIFIED** with explicit gap documentation.
|