@codyswann/lisa 2.187.3 → 2.188.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.
Files changed (154) hide show
  1. package/package.json +1 -1
  2. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  3. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  4. package/plugins/lisa/agents/github-agent.md +1 -1
  5. package/plugins/lisa/agents/jira-agent.md +1 -1
  6. package/plugins/lisa/agents/linear-agent.md +1 -1
  7. package/plugins/lisa/commands/exploratory-qa.md +7 -0
  8. package/plugins/lisa/rules/eager/pre-flight-autofill.md +1 -1
  9. package/plugins/lisa/rules/reference/config-resolution.md +4 -3
  10. package/plugins/lisa/rules/reference/pre-flight-autofill.md +3 -3
  11. package/plugins/lisa/skills/exploratory-qa/SKILL.md +91 -0
  12. package/plugins/lisa/skills/exploratory-qa/agents/openai.yaml +4 -0
  13. package/plugins/lisa/skills/implement/SKILL.md +1 -1
  14. package/plugins/lisa/skills/product-walkthrough/SKILL.md +36 -61
  15. package/plugins/lisa/skills/product-walkthrough/agents/openai.yaml +2 -2
  16. package/plugins/lisa/skills/use-the-product/SKILL.md +86 -0
  17. package/plugins/lisa/skills/use-the-product/agents/openai.yaml +4 -0
  18. package/plugins/lisa-agy/agents/github-agent.md +1 -1
  19. package/plugins/lisa-agy/agents/jira-agent.md +1 -1
  20. package/plugins/lisa-agy/agents/linear-agent.md +1 -1
  21. package/plugins/lisa-agy/commands/exploratory-qa.md +7 -0
  22. package/plugins/lisa-agy/plugin.json +1 -1
  23. package/plugins/lisa-agy/skills/exploratory-qa/SKILL.md +91 -0
  24. package/plugins/lisa-agy/skills/implement/SKILL.md +1 -1
  25. package/plugins/lisa-agy/skills/product-walkthrough/SKILL.md +36 -61
  26. package/plugins/lisa-agy/skills/use-the-product/SKILL.md +86 -0
  27. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  29. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  30. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-copilot/agents/github-agent.agent.md +1 -1
  34. package/plugins/lisa-copilot/agents/jira-agent.agent.md +1 -1
  35. package/plugins/lisa-copilot/agents/linear-agent.agent.md +1 -1
  36. package/plugins/lisa-copilot/commands/exploratory-qa.md +7 -0
  37. package/plugins/lisa-copilot/rules/eager/pre-flight-autofill.md +1 -1
  38. package/plugins/lisa-copilot/rules/reference/config-resolution.md +4 -3
  39. package/plugins/lisa-copilot/rules/reference/pre-flight-autofill.md +3 -3
  40. package/plugins/lisa-copilot/skills/exploratory-qa/SKILL.md +91 -0
  41. package/plugins/lisa-copilot/skills/implement/SKILL.md +1 -1
  42. package/plugins/lisa-copilot/skills/product-walkthrough/SKILL.md +36 -61
  43. package/plugins/lisa-copilot/skills/use-the-product/SKILL.md +86 -0
  44. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-cursor/agents/github-agent.md +1 -1
  46. package/plugins/lisa-cursor/agents/jira-agent.md +1 -1
  47. package/plugins/lisa-cursor/agents/linear-agent.md +1 -1
  48. package/plugins/lisa-cursor/commands/exploratory-qa.md +7 -0
  49. package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +4 -3
  50. package/plugins/lisa-cursor/rules/pre-flight-autofill-reference.mdc +3 -3
  51. package/plugins/lisa-cursor/rules/pre-flight-autofill.mdc +1 -1
  52. package/plugins/lisa-cursor/skills/exploratory-qa/SKILL.md +91 -0
  53. package/plugins/lisa-cursor/skills/implement/SKILL.md +1 -1
  54. package/plugins/lisa-cursor/skills/product-walkthrough/SKILL.md +36 -61
  55. package/plugins/lisa-cursor/skills/use-the-product/SKILL.md +86 -0
  56. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  58. package/plugins/lisa-expo/commands/e2e-coverage-gaps.md +1 -1
  59. package/plugins/lisa-expo-agy/commands/e2e-coverage-gaps.md +1 -1
  60. package/plugins/lisa-expo-agy/plugin.json +1 -1
  61. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-expo-copilot/commands/e2e-coverage-gaps.md +1 -1
  63. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  64. package/plugins/lisa-expo-cursor/commands/e2e-coverage-gaps.md +1 -1
  65. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  67. package/plugins/lisa-harper-fabric/commands/e2e-coverage-gaps.md +1 -1
  68. package/plugins/lisa-harper-fabric-agy/commands/e2e-coverage-gaps.md +1 -1
  69. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  70. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-harper-fabric-copilot/commands/e2e-coverage-gaps.md +1 -1
  72. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  73. package/plugins/lisa-harper-fabric-cursor/commands/e2e-coverage-gaps.md +1 -1
  74. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  75. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  76. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  77. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  79. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  80. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  81. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  82. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  83. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  84. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  85. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  86. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  87. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  88. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  89. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  90. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  91. package/plugins/lisa-rails/commands/e2e-coverage-gaps.md +1 -1
  92. package/plugins/lisa-rails-agy/commands/e2e-coverage-gaps.md +1 -1
  93. package/plugins/lisa-rails-agy/plugin.json +1 -1
  94. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  95. package/plugins/lisa-rails-copilot/commands/e2e-coverage-gaps.md +1 -1
  96. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  97. package/plugins/lisa-rails-cursor/commands/e2e-coverage-gaps.md +1 -1
  98. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  99. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  100. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  101. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  102. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  103. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  104. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  105. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  106. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  107. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  108. package/plugins/src/base/agents/github-agent.md +1 -1
  109. package/plugins/src/base/agents/jira-agent.md +1 -1
  110. package/plugins/src/base/agents/linear-agent.md +1 -1
  111. package/plugins/src/base/commands/exploratory-qa.md +7 -0
  112. package/plugins/src/base/rules/eager/pre-flight-autofill.md +1 -1
  113. package/plugins/src/base/rules/reference/config-resolution.md +4 -3
  114. package/plugins/src/base/rules/reference/pre-flight-autofill.md +3 -3
  115. package/plugins/src/base/skills/exploratory-qa/SKILL.md +91 -0
  116. package/plugins/src/base/skills/implement/SKILL.md +1 -1
  117. package/plugins/src/base/skills/product-walkthrough/SKILL.md +36 -61
  118. package/plugins/src/base/skills/use-the-product/SKILL.md +86 -0
  119. package/plugins/src/expo/commands/e2e-coverage-gaps.md +1 -1
  120. package/plugins/src/harper-fabric/commands/e2e-coverage-gaps.md +1 -1
  121. package/plugins/src/rails/commands/e2e-coverage-gaps.md +1 -1
  122. package/plugins/lisa-expo/commands/exploratory-qa.md +0 -7
  123. package/plugins/lisa-expo/skills/exploratory-qa/SKILL.md +0 -264
  124. package/plugins/lisa-expo/skills/exploratory-qa/agents/openai.yaml +0 -4
  125. package/plugins/lisa-expo-agy/commands/exploratory-qa.md +0 -7
  126. package/plugins/lisa-expo-agy/skills/exploratory-qa/SKILL.md +0 -264
  127. package/plugins/lisa-expo-copilot/commands/exploratory-qa.md +0 -7
  128. package/plugins/lisa-expo-copilot/skills/exploratory-qa/SKILL.md +0 -264
  129. package/plugins/lisa-expo-cursor/commands/exploratory-qa.md +0 -7
  130. package/plugins/lisa-expo-cursor/skills/exploratory-qa/SKILL.md +0 -264
  131. package/plugins/lisa-harper-fabric/commands/exploratory-qa.md +0 -7
  132. package/plugins/lisa-harper-fabric/skills/exploratory-qa/SKILL.md +0 -264
  133. package/plugins/lisa-harper-fabric/skills/exploratory-qa/agents/openai.yaml +0 -4
  134. package/plugins/lisa-harper-fabric-agy/commands/exploratory-qa.md +0 -7
  135. package/plugins/lisa-harper-fabric-agy/skills/exploratory-qa/SKILL.md +0 -264
  136. package/plugins/lisa-harper-fabric-copilot/commands/exploratory-qa.md +0 -7
  137. package/plugins/lisa-harper-fabric-copilot/skills/exploratory-qa/SKILL.md +0 -264
  138. package/plugins/lisa-harper-fabric-cursor/commands/exploratory-qa.md +0 -7
  139. package/plugins/lisa-harper-fabric-cursor/skills/exploratory-qa/SKILL.md +0 -264
  140. package/plugins/lisa-rails/commands/exploratory-qa.md +0 -7
  141. package/plugins/lisa-rails/skills/exploratory-qa/SKILL.md +0 -264
  142. package/plugins/lisa-rails/skills/exploratory-qa/agents/openai.yaml +0 -4
  143. package/plugins/lisa-rails-agy/commands/exploratory-qa.md +0 -7
  144. package/plugins/lisa-rails-agy/skills/exploratory-qa/SKILL.md +0 -264
  145. package/plugins/lisa-rails-copilot/commands/exploratory-qa.md +0 -7
  146. package/plugins/lisa-rails-copilot/skills/exploratory-qa/SKILL.md +0 -264
  147. package/plugins/lisa-rails-cursor/commands/exploratory-qa.md +0 -7
  148. package/plugins/lisa-rails-cursor/skills/exploratory-qa/SKILL.md +0 -264
  149. package/plugins/src/expo/commands/exploratory-qa.md +0 -7
  150. package/plugins/src/expo/skills/exploratory-qa/SKILL.md +0 -264
  151. package/plugins/src/harper-fabric/commands/exploratory-qa.md +0 -7
  152. package/plugins/src/harper-fabric/skills/exploratory-qa/SKILL.md +0 -264
  153. package/plugins/src/rails/commands/exploratory-qa.md +0 -7
  154. package/plugins/src/rails/skills/exploratory-qa/SKILL.md +0 -264
@@ -1,88 +1,62 @@
1
1
  ---
2
2
  name: product-walkthrough
3
- description: "Methodology for evaluating the live product via a real browser (Playwright MCP) when planning work or evaluating a PRD. Reading a PRD or a mock without seeing the current product produces tickets that misjudge the change — this skill grounds the analysis in what actually exists today. Invoke this skill from notion-to-tracker (Phase 2b live-product walkthrough), jira-create, and any PRD intake flow whose work touches existing user-facing surfaces."
3
+ description: "Methodology for evaluating the live product when planning work or evaluating a PRD. Reading a PRD or a mock without seeing the current product produces tickets that misjudge the change — this skill grounds the analysis in what actually exists today. Driving the product is owned by the `use-the-product` core (which detects the product type — DOM web, HTTP/API, canvas game, CLI, IaC — resolves the per-environment mutation policy from .lisa.config.json so production is never mutated by accident, and explores through the project's personas when defined); this skill adds the planning lens. Invoke from notion-to-tracker (Phase 2b live-product walkthrough), jira-create, and any PRD intake flow whose work touches existing user-facing surfaces."
4
4
  allowed-tools: ["Skill", "Bash", "Read", "mcp__plugin_playwright_playwright__browser_navigate", "mcp__plugin_playwright_playwright__browser_snapshot", "mcp__plugin_playwright_playwright__browser_take_screenshot", "mcp__plugin_playwright_playwright__browser_click", "mcp__plugin_playwright_playwright__browser_type", "mcp__plugin_playwright_playwright__browser_select_option", "mcp__plugin_playwright_playwright__browser_fill_form", "mcp__plugin_playwright_playwright__browser_press_key", "mcp__plugin_playwright_playwright__browser_hover", "mcp__plugin_playwright_playwright__browser_navigate_back", "mcp__plugin_playwright_playwright__browser_resize", "mcp__plugin_playwright_playwright__browser_tabs", "mcp__plugin_playwright_playwright__browser_console_messages", "mcp__plugin_playwright_playwright__browser_network_requests", "mcp__plugin_playwright_playwright__browser_wait_for", "mcp__plugin_playwright_playwright__browser_close"]
5
5
  ---
6
6
 
7
7
  # Live Product Walkthrough
8
8
 
9
- Reading a PRD or a mock without seeing the current product produces tickets that misjudge the change. This skill defines how to use a real browser (via Playwright MCP) to evaluate the live product *before* planning tickets, so the work is grounded in what actually exists today.
9
+ Reading a PRD or a mock without seeing the current product produces tickets that misjudge the change. This skill defines how to evaluate the live product *before* planning tickets, so the work is grounded in what actually exists today.
10
+
11
+ **How you drive the product is owned by the `use-the-product` core skill** — it detects the product type (web / API / game / CLI / IaC), resolves the target environment and its **mutation policy** from `.lisa.config.json`, and discovers the project's **personas**. A walkthrough is read-leaning: prefer the policy's **read-only** actions, and only mutate when both the policy allows it (`full`) and a flow genuinely can't be understood without it. This skill adds the **planning lens** below.
10
12
 
11
13
  ## When to invoke
12
14
 
13
15
  Always run a walkthrough when the work touches user-facing surfaces:
14
16
 
15
17
  - The PRD describes a change to an existing screen, flow, or interaction
16
- - The PRD adds something *next to* existing functionality (entry points, navigation, related screens)
18
+ - The PRD adds something *next to* existing functionality (entry points, navigation, related surfaces)
17
19
  - A mock or prototype implies a re-style or re-flow of something currently shipped
18
20
  - The change is a "bug" framed as a fix to current behavior — you must see the current behavior before reasoning about the fix
19
21
 
20
- Skip when the work is purely backend with no user-visible surface, type-only, doc-only, or affects a screen that does not yet exist in production / dev.
21
-
22
- ## Configuration
23
-
24
- Required inputs (ask if not set):
25
-
26
- | Variable | Purpose | Example |
27
- |----------|---------|---------|
28
- | `E2E_BASE_URL` | Frontend base URL to walk through | `https://dev.example.io/` |
29
- | Sign-in account | Test user to sign in as for the affected flows | from PRD config / 1Password / env |
30
- | Sign-in credentials | How to obtain (1Password item, env vars) | `E2E_TEST_PHONE`, `E2E_TEST_OTP` |
31
-
32
- Walk through `dev` (or the env named in the PRD) — never `prod` for exploratory walkthroughs unless explicitly asked.
22
+ Skip when the work is purely internal (type-only, doc-only) or affects a surface that does not yet exist in production / dev.
33
23
 
34
- ## Process
24
+ ## 1. Plan the walkthrough
35
25
 
36
- ### 1. Plan the walkthrough
26
+ Before driving anything, list the surfaces the change will touch:
37
27
 
38
- Before opening the browser, list the surfaces the change will touch:
39
-
40
- - Which screens/routes are involved (current and new)?
28
+ - Which screens/routes/endpoints are involved (current and new)?
41
29
  - Which user roles need to be exercised (admin / customer / etc.)?
42
30
  - Which states matter (signed-out, signed-in, empty, populated, error, loading)?
43
- - Which viewports matter (desktop always; mobile when responsive; tablet rarely)?
44
-
45
- Write this list down. If you can't, the PRD is too vague — note this as a coverage smell and surface it as an Open Question on the resulting ticket.
46
-
47
- ### 2. Open the browser and sign in
31
+ - For a DOM web app, which viewports matter (desktop always; mobile when responsive)?
48
32
 
49
- 1. `browser_navigate` to `E2E_BASE_URL`.
50
- 2. `browser_resize` to the primary viewport (default desktop 1512×768).
51
- 3. Sign in via the test account. Use `browser_fill_form` and `browser_click`. Capture the post-login screen with `browser_snapshot` or `browser_take_screenshot`.
33
+ Write this list down. If you can't, the PRD is too vague — note it as a coverage smell and surface it as an Open Question on the resulting ticket.
52
34
 
53
- ### 3. Walk the affected surfaces
35
+ ## 2. Drive the current product
54
36
 
55
- For each surface from step 1:
37
+ **Invoke `use-the-product`** to detect the type, resolve the environment + mutation policy, and discover personas — then drive the surfaces from step 1 through its per-type playbook (browser for DOM, `curl` for an API, canvas+input for a game, `cdk synth`/`diff` for IaC). Capture evidence as you go: for a DOM app, a `browser_snapshot` (accessibility tree — best for reasoning) and a `browser_take_screenshot` (visual) per surface and per state, plus `browser_console_messages` / `browser_network_requests` after interactions; for an API, representative request/response pairs; for a game, screenshots of each state. If the project defines personas, walk the surfaces as the relevant archetype(s).
56
38
 
57
- 1. Navigate to it. Capture a `browser_snapshot` (accessibility tree better for reasoning) and a `browser_take_screenshot` (visual evidence).
58
- 2. Exercise the relevant interactions. Capture state transitions.
59
- 3. Capture each state that matters (empty, populated, error, loading) — explicitly trigger them where possible.
60
- 4. For responsive changes, `browser_resize` to the secondary viewport (mobile 375×812) and re-capture.
61
- 5. `browser_console_messages` and `browser_network_requests` after each interaction — surface any errors, 4xx/5xx, or unexpected calls.
39
+ Honor the mutation gate: on a `read-only` env, observe without submitting; never walk a `forbidden` env (production defaults to forbidden). Treat console errors, 4xx/5xx, and unexpected calls as findings.
62
40
 
63
- ### 4. Record findings
41
+ ## 3. Record findings
64
42
 
65
43
  For every walkthrough, record:
66
44
 
67
- - **What exists today**: a short prose description of the current flow, the components in use (if you can identify them from the DOM via `browser_snapshot`), and the states observed.
68
- - **What the PRD changes**: explicit delta — added screens, removed screens, modified components, new states, removed states.
69
- - **Existing-component reuse candidates**: components in the current product that could absorb the new behavior. The PRD-vs-current-product comparison drives which existing components a developer should reuse instead of building new (see `lisa:tracker-source-artifacts` §7).
70
- - **Design-vs-current-product divergence**: places where the mock/prototype materially diverges from what's shipped. Each divergence is a discussion item, not an automatic "rebuild from scratch" — see `lisa:tracker-source-artifacts` §3 (mocks define visual intent, not implementation shortcut).
71
- - **Coverage smells**: states the PRD doesn't address that exist today (e.g., the mock shows the empty state but ignores the populated state that has 90% of users).
72
- - **Behavioral surprises**: anything that doesn't match the PRD's assumptions about current behavior — these are usually the most valuable findings, because they invalidate parts of the PRD.
45
+ - **What exists today**: a short prose description of the current flow, the components/endpoints in use (identify them from the snapshot/routes where you can), and the states observed.
46
+ - **What the PRD changes**: explicit delta — added / removed / modified surfaces, new/removed states.
47
+ - **Existing-component reuse candidates**: components or endpoints in the current product that could absorb the new behavior (see `lisa:tracker-source-artifacts` §7).
48
+ - **Design-vs-current-product divergence**: where the mock/prototype materially diverges from what's shipped. Each divergence is a discussion item, not an automatic rebuild (see `lisa:tracker-source-artifacts` §3).
49
+ - **Coverage smells**: states the PRD doesn't address that exist today (e.g. the mock shows the empty state but ignores the populated state 90% of users see).
50
+ - **Behavioral surprises**: anything that doesn't match the PRD's assumptions about current behavior — usually the most valuable findings, because they invalidate parts of the PRD.
73
51
 
74
- ### 5. Attach evidence to the originating context
52
+ ## 4. Attach evidence and close
75
53
 
76
- Capture screenshots/snapshots in a way that the originating ticket / Notion comment / PRD review can reference them.
54
+ Capture evidence so the originating ticket / Notion comment / PRD review can reference it. Close the session when done (`browser_close` for a browser) — walkthroughs are short, focused, and one-shot.
77
55
 
78
- - For **PRD intake**: include a "Current Product" comment on the Notion PRD with the findings prose and inline screenshots of the current state alongside each affected screen mentioned in the PRD.
79
- - For **ticket creation**: include the findings under `## Current Product` in the ticket description (Story or Epic). Reference the screenshots as remote links if hosted, or inline them as attachments.
56
+ - For **PRD intake**: include a "Current Product" comment on the Notion PRD with the findings prose and inline screenshots alongside each affected surface.
57
+ - For **ticket creation**: include the findings under `## Current Product` in the ticket description (Story or Epic). Reference screenshots as remote links or attachments.
80
58
  - For **change-impact analysis**: produce a short report; the consuming skill decides where it lands.
81
59
 
82
- ### 6. Close the browser
83
-
84
- `browser_close` when done. Walkthroughs are short, focused, and one-shot — do not leave a session open across phases.
85
-
86
60
  ## Findings format
87
61
 
88
62
  Use this structure when emitting walkthrough findings, so consuming skills can splice them into tickets / comments unchanged. The `## Current Product` heading matches what `lisa:jira-write-ticket` Phase 4e expects to inherit — keep the heading exact.
@@ -90,15 +64,16 @@ Use this structure when emitting walkthrough findings, so consuming skills can s
90
64
  ```text
91
65
  ## Current Product
92
66
 
93
- **Environment**: <E2E_BASE_URL> as <account/role>
94
- **Viewports exercised**: Desktop 1512×768, Mobile 375×812
67
+ **Environment**: <target> as <account/role> (<mutation level>)
68
+ **Explored as**: <persona(s) or "generic representative user">
69
+ **Viewports exercised**: Desktop 1512×768, Mobile 375×812 (DOM web only)
95
70
 
96
71
  ### Surfaces walked
97
- 1. <route> — <one-line current behavior>
98
- 2. <route> — <one-line current behavior>
72
+ 1. <route/endpoint/screen> — <one-line current behavior>
73
+ 2. <route/endpoint/screen> — <one-line current behavior>
99
74
 
100
75
  ### What exists today
101
- <2-4 sentence prose summary of the current flow and components in use>
76
+ <2-4 sentence prose summary of the current flow and components/endpoints in use>
102
77
 
103
78
  ### Delta vs. PRD
104
79
  - ADDED: <new surface/state from PRD>
@@ -107,23 +82,23 @@ Use this structure when emitting walkthrough findings, so consuming skills can s
107
82
  - UNCHANGED-BUT-IMPACTED: <existing surface PRD doesn't mention but will be affected>
108
83
 
109
84
  ### Existing-component reuse candidates
110
- - <component or screen> — could absorb <new behavior>
85
+ - <component / endpoint / screen> — could absorb <new behavior>
111
86
 
112
87
  ### Design-vs-current-product divergence
113
- - <mock or prototype reference> diverges from <current screen> in: <specific dimension>
88
+ - <mock or prototype reference> diverges from <current surface> in: <specific dimension>
114
89
  - Recommendation: <reuse / new build / discussion>
115
90
 
116
91
  ### Coverage smells & behavioral surprises
117
92
  - <smell or surprise>
118
93
 
119
94
  ### Evidence
120
- - <list of screenshots/snapshots, with captions>
95
+ - <list of screenshots/snapshots/request-response pairs, with captions>
121
96
  ```
122
97
 
123
98
  ## Rules
124
99
 
125
100
  - Walk before you write. If the work touches existing user-facing surfaces and the walkthrough wasn't done, the resulting ticket is missing context — don't ship it.
126
- - Never walk `prod` for exploratory analysis. `dev` (or the env named in the PRD) only.
101
+ - Never walk a `forbidden` environment (production is forbidden by default). Use `dev`/`staging` per the `exploration` config, and default to read-only for a planning walkthrough.
127
102
  - Treat console errors and unexpected network calls as findings — they often reveal undocumented behavior the PRD assumes is fine.
128
103
  - Findings drive `## Open Questions` on tickets, not silent assumptions. If the current product contradicts the PRD, surface it as a BLOCKER.
129
- - This skill captures observations; it does not edit JIRA or the PRD. Consuming skills decide where findings land (ticket description, Notion comment, validator input).
104
+ - This skill captures observations; it does not edit the tracker or the PRD. Consuming skills decide where findings land.
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: use-the-product
3
+ description: Shared methodology for actually USING a project's product the way its real end user would — across product types (DOM web app, HTTP/API backend, canvas game, CLI/library, IaC/CDK). Detects the product's consumer-facing interface, drives it as that consumer, gated by a per-environment mutation policy read from .lisa.config.json (so the agent never mutates production data by accident), and lensed through the project's personas/subagents when it defines them. Invoked by exploratory-qa (files defect/UX tickets) and product-walkthrough (grounds planning in the live product); rarely run standalone.
4
+ ---
5
+
6
+ # Use the Product
7
+
8
+ ## The one idea
9
+
10
+ Every product has a **consumer-facing interface**. To evaluate a product you (1) **detect** that interface, (2) **resolve where you're allowed to drive it and how much you may change**, and (3) **drive it as the real consumer would** — through the project's personas when it has them. This skill owns steps 1–4 below; the **caller** decides what to *do* with what you find (`exploratory-qa` files tickets, `product-walkthrough` grounds planning).
11
+
12
+ Driving the product means **interacting** with it. Static route scans, HTTP fetches, screenshots-alone, and reading the code are *supporting evidence only* — never a substitute for actually using it.
13
+
14
+ ## 1. Detect the product type & interface
15
+
16
+ Infer from the repo; if genuinely ambiguous, ask one concise question.
17
+
18
+ | Signals | Type | Consumer-facing interface |
19
+ |---|---|---|
20
+ | `vite`/`next`/`angular`/`svelte` + `index.html`, DOM UI | **DOM web app** | the rendered UI in a real browser |
21
+ | API server (`nest`/`express`/`fastify`/serverless handlers), OpenAPI, no frontend | **HTTP / API backend** | the API endpoints |
22
+ | `phaser`/`pixi`/canvas game | **Canvas game** | the canvas + input (keyboard/pointer), read visually |
23
+ | `cdk.json` / Terraform / IaC | **IaC / CDK** | the resources it provisions (+ synth output) |
24
+ | `bin/` CLI or published library, no server | **CLI / library** | the commands / public API |
25
+
26
+ ## 2. Resolve the environment & mutation policy — the gate
27
+
28
+ Read the `exploration` block from `.lisa.config.json` (a repo-local config overrides a global one):
29
+
30
+ ```jsonc
31
+ "exploration": {
32
+ "default": "<env-name>", // which env to use when none is passed
33
+ "environments": {
34
+ "<name>": {
35
+ "url": "https://dev.example.io", // web/API target (omit for local CLI/game)
36
+ "provision": true, // IaC/ephemeral: stand up, then tear down
37
+ "mutation": "forbidden | read-only | full",
38
+ "identity": "<test-account ref>", // which login to use (env var / 1Password ref)
39
+ "prodMutationAck": "<one sentence>" // REQUIRED to allow `full` on a production-named env
40
+ }
41
+ }
42
+ }
43
+ ```
44
+
45
+ Resolve the target env: explicit argument → `default` → infer. Then the **mutation level governs everything**:
46
+
47
+ - **`read-only`** — only non-mutating interactions: read endpoints (`GET`), view UI without submitting, `cdk synth`/`diff`, `--help`/dry-run. Never create / edit / delete.
48
+ - **`full`** — create / edit / delete allowed, but **only as the `identity` test account** and under Mutation Discipline (§5).
49
+ - **`forbidden`** — do not exercise this environment at all.
50
+
51
+ **Safety rules — enforced regardless of config:**
52
+
53
+ - **No `exploration` block, or an unconfigured env → treat as `read-only`.** Never mutate without an explicit policy.
54
+ - **A production-named env (`prod` / `production`) defaults to `forbidden`.** It may be raised to `full` **only** when a written `prodMutationAck` justification is present (this is how a single-environment app — e.g. a local-only game whose only "env" is production and whose mutations are the user's own local save — deliberately opts in). A bare `production: { "mutation": "full" }` with **no** `prodMutationAck` is downgraded to `forbidden`, and you warn.
55
+ - **Never sign in as a real user or an admin** — only the `identity` test account.
56
+ - If evaluating something *requires* a mutation the policy forbids, stop at that boundary and report it — never escalate your own permissions.
57
+
58
+ ## 3. Discover personas & subagents — soft-detect
59
+
60
+ Look for the project's personas: `wiki/personas/**` (target-player archetypes, stakeholders) and persona subagents (e.g. the `lisa-phaser` `target-player` / `player-advocate` agents).
61
+
62
+ - **Present** → drive the product **through each relevant persona**: adopt the archetype's constraints (device, session length, goals, patience, genre-literacy) and evaluate as them; run each archetype for breadth.
63
+ - **Absent** → drive as a single **generic representative end user** of the app's stated audience, and say so.
64
+
65
+ ## 4. Drive the product — per type
66
+
67
+ Apply the interface's *read-only* actions always; the *mutate* actions only when the policy is `full`.
68
+
69
+ - **DOM web app** — a real browser (Playwright MCP). Land cold on the entry page, then click / type / select / submit visible controls and attempt real tasks; sweep viewport widths. *(The caller's lens supplies the specific things to look for.)*
70
+ - **HTTP / API backend** — the consumer is a client, not a browser. Read-only: read the OpenAPI/routes and call safe `GET`s (`curl`/`httpie`). Mutate: exercise representative `POST`/`PUT`/`DELETE` flows with test data as the `identity`; check status codes, payload shapes, and error responses.
71
+ - **Canvas game** — a real browser, but the UI is **drawn to a canvas, not the DOM**. Boot it (e.g. `bun run dev` + Playwright), drive via **keyboard/pointer into the canvas**, and read state **visually via screenshots** (not the accessibility tree). Mutation is usually local save state. Judge readability, game-feel, and input responsiveness — not DOM breakpoints.
72
+ - **CLI / library** — the interface is the command / public API. Read-only: `--help`, read-only commands, dry-runs. Mutate: run state-changing commands with disposable inputs.
73
+ - **IaC / CDK** — the "user" is whoever **consumes the resources the stack provisions** (plus the operator). **Read-only (default):** `cdk synth` → read the generated template; `cdk diff` vs. the deployed env; verify the resources, IAM, and outputs express what a consumer would expect. Flag over-broad IAM, missing/opaque outputs, resources that don't serve their stated purpose, and drift. **Mutate (only when `mutation: "full"` *and* `provision: true` on an ephemeral/sandbox env):** `cdk deploy` to the sandbox → recurse into the API/web playbook against the provisioned resources → `cdk destroy`. Never deploy to a real account without explicit sandbox-provisioning config.
74
+
75
+ ## 5. Mutation Discipline — only when the policy is `full`
76
+
77
+ A real user creates, edits, and deletes things — exercise those flows when, and only when, the policy allows and always as the `identity` account.
78
+
79
+ - Use unique names with a clear prefix such as `qa-` or `codex-`.
80
+ - Before mutating, identify the cleanup path. After mutating, make a best effort to clean up, then verify it. If cleanup is unavailable, that itself is a finding.
81
+ - Avoid destructive bulk actions unless the account/data is clearly disposable.
82
+ - Record every mutation performed, cleanup attempts, and any residue left behind.
83
+
84
+ ## What you return
85
+
86
+ Structured, raw observations for the caller — **what** you did, **as whom** (which persona / generic user), **where** (env + mutation level), **what you saw**, and **what you could not reach and why** (especially policy boundaries you stopped at). You do **not** file tickets or write plans; the caller does.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Expo and React Native-specific skills, agents, rules, and MCP servers.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -4,4 +4,4 @@ allowed-tools: ["Skill"]
4
4
  argument-hint: "[target-url | env] [ready=true|false]"
5
5
  ---
6
6
 
7
- Use the /lisa-expo:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa-expo:exploratory-qa. $ARGUMENTS
7
+ Use the /lisa-expo:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa:exploratory-qa. $ARGUMENTS
@@ -4,4 +4,4 @@ allowed-tools: ["Skill"]
4
4
  argument-hint: "[target-url | env] [ready=true|false]"
5
5
  ---
6
6
 
7
- Use the /lisa-expo:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa-expo:exploratory-qa. $ARGUMENTS
7
+ Use the /lisa-expo:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa:exploratory-qa. $ARGUMENTS
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -4,4 +4,4 @@ allowed-tools: ["Skill"]
4
4
  argument-hint: "[target-url | env] [ready=true|false]"
5
5
  ---
6
6
 
7
- Use the /lisa-expo:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa-expo:exploratory-qa. $ARGUMENTS
7
+ Use the /lisa-expo:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa:exploratory-qa. $ARGUMENTS
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -4,4 +4,4 @@ allowed-tools: ["Skill"]
4
4
  argument-hint: "[target-url | env] [ready=true|false]"
5
5
  ---
6
6
 
7
- Use the /lisa-expo:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa-expo:exploratory-qa. $ARGUMENTS
7
+ Use the /lisa-expo:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa:exploratory-qa. $ARGUMENTS
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Harper/Fabric-specific Lisa rules for TypeScript component apps.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -4,4 +4,4 @@ allowed-tools: ["Skill"]
4
4
  argument-hint: "[target-url | env] [ready=true|false]"
5
5
  ---
6
6
 
7
- Use the /lisa-harper-fabric:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa-harper-fabric:exploratory-qa. $ARGUMENTS
7
+ Use the /lisa-harper-fabric:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa:exploratory-qa. $ARGUMENTS
@@ -4,4 +4,4 @@ allowed-tools: ["Skill"]
4
4
  argument-hint: "[target-url | env] [ready=true|false]"
5
5
  ---
6
6
 
7
- Use the /lisa-harper-fabric:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa-harper-fabric:exploratory-qa. $ARGUMENTS
7
+ Use the /lisa-harper-fabric:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa:exploratory-qa. $ARGUMENTS
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -4,4 +4,4 @@ allowed-tools: ["Skill"]
4
4
  argument-hint: "[target-url | env] [ready=true|false]"
5
5
  ---
6
6
 
7
- Use the /lisa-harper-fabric:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa-harper-fabric:exploratory-qa. $ARGUMENTS
7
+ Use the /lisa-harper-fabric:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa:exploratory-qa. $ARGUMENTS
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -4,4 +4,4 @@ allowed-tools: ["Skill"]
4
4
  argument-hint: "[target-url | env] [ready=true|false]"
5
5
  ---
6
6
 
7
- Use the /lisa-harper-fabric:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa-harper-fabric:exploratory-qa. $ARGUMENTS
7
+ Use the /lisa-harper-fabric:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa:exploratory-qa. $ARGUMENTS
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "NestJS-specific skills and migration write-protection hooks.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, across Claude and Codex.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Ruby on Rails-specific skills and hooks for RuboCop and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -4,4 +4,4 @@ allowed-tools: ["Skill"]
4
4
  argument-hint: "[target-url | env] [ready=true|false]"
5
5
  ---
6
6
 
7
- Use the /lisa-rails:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa-rails:exploratory-qa. $ARGUMENTS
7
+ Use the /lisa-rails:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa:exploratory-qa. $ARGUMENTS
@@ -4,4 +4,4 @@ allowed-tools: ["Skill"]
4
4
  argument-hint: "[target-url | env] [ready=true|false]"
5
5
  ---
6
6
 
7
- Use the /lisa-rails:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa-rails:exploratory-qa. $ARGUMENTS
7
+ Use the /lisa-rails:e2e-coverage-gaps skill to inventory the app's routes and the existing Playwright suite, find uncovered and happy-path-only paths, confirm each gap in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa:exploratory-qa. $ARGUMENTS
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "2.187.3",
3
+ "version": "2.188.0",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"