@codyswann/lisa 4.55.4 → 4.55.6

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 (246) hide show
  1. package/cdk/copy-overwrite/tsconfig.eslint.json +1 -1
  2. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  3. package/dist/core/lisa-owned-hash-ledger.js +6 -0
  4. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  5. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  6. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  7. package/dist/core/upstream-evidence-manifest.js +42 -40
  8. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  9. package/expo/copy-overwrite/scripts/bdd/validate.mjs +84 -8
  10. package/expo/copy-overwrite/scripts/check-bdd-coverage.mjs +1 -1
  11. package/expo/copy-overwrite/tsconfig.eslint.json +1 -1
  12. package/nestjs/copy-overwrite/tsconfig.eslint.json +1 -1
  13. package/package.json +4 -4
  14. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  15. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  16. package/plugins/lisa/.codex-plugin/skills/lisa-exploratory-qa/SKILL.md +8 -6
  17. package/plugins/lisa/.codex-plugin/skills/lisa-github-build-intake/SKILL.md +3 -0
  18. package/plugins/lisa/.codex-plugin/skills/lisa-github-write-issue/SKILL.md +6 -0
  19. package/plugins/lisa/.codex-plugin/skills/lisa-jira-build-intake/SKILL.md +3 -0
  20. package/plugins/lisa/.codex-plugin/skills/lisa-jira-write-ticket/SKILL.md +6 -0
  21. package/plugins/lisa/.codex-plugin/skills/lisa-learnings-audit/SKILL.md +2 -2
  22. package/plugins/lisa/.codex-plugin/skills/lisa-linear-build-intake/SKILL.md +3 -0
  23. package/plugins/lisa/.codex-plugin/skills/lisa-linear-write-issue/SKILL.md +6 -0
  24. package/plugins/lisa/.codex-plugin/skills/lisa-monitor/SKILL.md +1 -1
  25. package/plugins/lisa/.codex-plugin/skills/lisa-persist-learning/SKILL.md +5 -1
  26. package/plugins/lisa/.codex-plugin/skills/lisa-prd-source-write/SKILL.md +1 -0
  27. package/plugins/lisa/.codex-plugin/skills/lisa-project-ideation/SKILL.md +7 -5
  28. package/plugins/lisa/.codex-plugin/skills/lisa-repair-intake/SKILL.md +2 -3
  29. package/plugins/lisa/.codex-plugin/skills/lisa-research/SKILL.md +6 -2
  30. package/plugins/lisa/.codex-plugin/skills/lisa-rework-triage/SKILL.md +16 -13
  31. package/plugins/lisa/.codex-plugin/skills/lisa-track/SKILL.md +24 -6
  32. package/plugins/lisa/commands/exploratory-qa.md +2 -2
  33. package/plugins/lisa/rules/eager/do-it-now.md +5 -5
  34. package/plugins/lisa/rules/eager/tracked-work.md +2 -0
  35. package/plugins/lisa/rules/eager/upstream-to-lisa.md +7 -18
  36. package/plugins/lisa/rules/reference/claim-time-guards.md +4 -0
  37. package/plugins/lisa/rules/reference/do-it-now.md +9 -27
  38. package/plugins/lisa/rules/reference/observability-audit.md +2 -2
  39. package/plugins/lisa/rules/reference/ready-role-filing.md +6 -2
  40. package/plugins/lisa/rules/reference/rejection-detection.md +8 -2
  41. package/plugins/lisa/rules/reference/tracked-work.md +2 -0
  42. package/plugins/lisa/rules/reference/upstream-to-lisa.md +14 -43
  43. package/plugins/lisa/skills/lisa-exploratory-qa/SKILL.md +9 -7
  44. package/plugins/lisa/skills/lisa-github-build-intake/SKILL.md +3 -0
  45. package/plugins/lisa/skills/lisa-github-write-issue/SKILL.md +6 -0
  46. package/plugins/lisa/skills/lisa-jira-build-intake/SKILL.md +3 -0
  47. package/plugins/lisa/skills/lisa-jira-write-ticket/SKILL.md +6 -0
  48. package/plugins/lisa/skills/lisa-learnings-audit/SKILL.md +2 -2
  49. package/plugins/lisa/skills/lisa-linear-build-intake/SKILL.md +3 -0
  50. package/plugins/lisa/skills/lisa-linear-write-issue/SKILL.md +6 -0
  51. package/plugins/lisa/skills/lisa-monitor/SKILL.md +1 -1
  52. package/plugins/lisa/skills/lisa-persist-learning/SKILL.md +5 -1
  53. package/plugins/lisa/skills/lisa-prd-source-write/SKILL.md +1 -0
  54. package/plugins/lisa/skills/lisa-project-ideation/SKILL.md +7 -5
  55. package/plugins/lisa/skills/lisa-repair-intake/SKILL.md +2 -3
  56. package/plugins/lisa/skills/lisa-research/SKILL.md +6 -2
  57. package/plugins/lisa/skills/lisa-rework-triage/SKILL.md +16 -13
  58. package/plugins/lisa/skills/lisa-track/SKILL.md +24 -6
  59. package/plugins/lisa-agy/commands/lisa/exploratory-qa.md +2 -2
  60. package/plugins/lisa-agy/plugin.json +1 -1
  61. package/plugins/lisa-agy/skills/lisa-exploratory-qa/SKILL.md +9 -7
  62. package/plugins/lisa-agy/skills/lisa-github-build-intake/SKILL.md +3 -0
  63. package/plugins/lisa-agy/skills/lisa-github-write-issue/SKILL.md +6 -0
  64. package/plugins/lisa-agy/skills/lisa-jira-build-intake/SKILL.md +3 -0
  65. package/plugins/lisa-agy/skills/lisa-jira-write-ticket/SKILL.md +6 -0
  66. package/plugins/lisa-agy/skills/lisa-learnings-audit/SKILL.md +2 -2
  67. package/plugins/lisa-agy/skills/lisa-linear-build-intake/SKILL.md +3 -0
  68. package/plugins/lisa-agy/skills/lisa-linear-write-issue/SKILL.md +6 -0
  69. package/plugins/lisa-agy/skills/lisa-monitor/SKILL.md +1 -1
  70. package/plugins/lisa-agy/skills/lisa-persist-learning/SKILL.md +5 -1
  71. package/plugins/lisa-agy/skills/lisa-prd-source-write/SKILL.md +1 -0
  72. package/plugins/lisa-agy/skills/lisa-project-ideation/SKILL.md +7 -5
  73. package/plugins/lisa-agy/skills/lisa-repair-intake/SKILL.md +2 -3
  74. package/plugins/lisa-agy/skills/lisa-research/SKILL.md +6 -2
  75. package/plugins/lisa-agy/skills/lisa-rework-triage/SKILL.md +16 -13
  76. package/plugins/lisa-agy/skills/lisa-track/SKILL.md +24 -6
  77. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  79. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  80. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  82. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  83. package/plugins/lisa-copilot/commands/lisa/exploratory-qa.md +2 -2
  84. package/plugins/lisa-copilot/rules/eager/do-it-now.md +5 -5
  85. package/plugins/lisa-copilot/rules/eager/tracked-work.md +2 -0
  86. package/plugins/lisa-copilot/rules/eager/upstream-to-lisa.md +7 -18
  87. package/plugins/lisa-copilot/rules/reference/claim-time-guards.md +4 -0
  88. package/plugins/lisa-copilot/rules/reference/do-it-now.md +9 -27
  89. package/plugins/lisa-copilot/rules/reference/observability-audit.md +2 -2
  90. package/plugins/lisa-copilot/rules/reference/ready-role-filing.md +6 -2
  91. package/plugins/lisa-copilot/rules/reference/rejection-detection.md +8 -2
  92. package/plugins/lisa-copilot/rules/reference/tracked-work.md +2 -0
  93. package/plugins/lisa-copilot/rules/reference/upstream-to-lisa.md +14 -43
  94. package/plugins/lisa-copilot/skills/lisa-exploratory-qa/SKILL.md +9 -7
  95. package/plugins/lisa-copilot/skills/lisa-github-build-intake/SKILL.md +3 -0
  96. package/plugins/lisa-copilot/skills/lisa-github-write-issue/SKILL.md +6 -0
  97. package/plugins/lisa-copilot/skills/lisa-jira-build-intake/SKILL.md +3 -0
  98. package/plugins/lisa-copilot/skills/lisa-jira-write-ticket/SKILL.md +6 -0
  99. package/plugins/lisa-copilot/skills/lisa-learnings-audit/SKILL.md +2 -2
  100. package/plugins/lisa-copilot/skills/lisa-linear-build-intake/SKILL.md +3 -0
  101. package/plugins/lisa-copilot/skills/lisa-linear-write-issue/SKILL.md +6 -0
  102. package/plugins/lisa-copilot/skills/lisa-monitor/SKILL.md +1 -1
  103. package/plugins/lisa-copilot/skills/lisa-persist-learning/SKILL.md +5 -1
  104. package/plugins/lisa-copilot/skills/lisa-prd-source-write/SKILL.md +1 -0
  105. package/plugins/lisa-copilot/skills/lisa-project-ideation/SKILL.md +7 -5
  106. package/plugins/lisa-copilot/skills/lisa-repair-intake/SKILL.md +2 -3
  107. package/plugins/lisa-copilot/skills/lisa-research/SKILL.md +6 -2
  108. package/plugins/lisa-copilot/skills/lisa-rework-triage/SKILL.md +16 -13
  109. package/plugins/lisa-copilot/skills/lisa-track/SKILL.md +24 -6
  110. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  111. package/plugins/lisa-cursor/commands/lisa/exploratory-qa.md +2 -2
  112. package/plugins/lisa-cursor/rules/claim-time-guards-reference.mdc +4 -0
  113. package/plugins/lisa-cursor/rules/do-it-now-reference.mdc +9 -27
  114. package/plugins/lisa-cursor/rules/do-it-now.mdc +5 -5
  115. package/plugins/lisa-cursor/rules/observability-audit-reference.mdc +2 -2
  116. package/plugins/lisa-cursor/rules/ready-role-filing-reference.mdc +6 -2
  117. package/plugins/lisa-cursor/rules/rejection-detection-reference.mdc +8 -2
  118. package/plugins/lisa-cursor/rules/tracked-work-reference.mdc +2 -0
  119. package/plugins/lisa-cursor/rules/tracked-work.mdc +2 -0
  120. package/plugins/lisa-cursor/rules/upstream-to-lisa-reference.mdc +14 -43
  121. package/plugins/lisa-cursor/rules/upstream-to-lisa.mdc +7 -18
  122. package/plugins/lisa-cursor/skills/lisa-exploratory-qa/SKILL.md +9 -7
  123. package/plugins/lisa-cursor/skills/lisa-github-build-intake/SKILL.md +3 -0
  124. package/plugins/lisa-cursor/skills/lisa-github-write-issue/SKILL.md +6 -0
  125. package/plugins/lisa-cursor/skills/lisa-jira-build-intake/SKILL.md +3 -0
  126. package/plugins/lisa-cursor/skills/lisa-jira-write-ticket/SKILL.md +6 -0
  127. package/plugins/lisa-cursor/skills/lisa-learnings-audit/SKILL.md +2 -2
  128. package/plugins/lisa-cursor/skills/lisa-linear-build-intake/SKILL.md +3 -0
  129. package/plugins/lisa-cursor/skills/lisa-linear-write-issue/SKILL.md +6 -0
  130. package/plugins/lisa-cursor/skills/lisa-monitor/SKILL.md +1 -1
  131. package/plugins/lisa-cursor/skills/lisa-persist-learning/SKILL.md +5 -1
  132. package/plugins/lisa-cursor/skills/lisa-prd-source-write/SKILL.md +1 -0
  133. package/plugins/lisa-cursor/skills/lisa-project-ideation/SKILL.md +7 -5
  134. package/plugins/lisa-cursor/skills/lisa-repair-intake/SKILL.md +2 -3
  135. package/plugins/lisa-cursor/skills/lisa-research/SKILL.md +6 -2
  136. package/plugins/lisa-cursor/skills/lisa-rework-triage/SKILL.md +16 -13
  137. package/plugins/lisa-cursor/skills/lisa-track/SKILL.md +24 -6
  138. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  139. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  140. package/plugins/lisa-expo/.codex-plugin/skills/e2e-coverage-gaps/SKILL.md +21 -9
  141. package/plugins/lisa-expo/.codex-plugin/skills/lisa-e2e-coverage-gaps/SKILL.md +1 -1
  142. package/plugins/lisa-expo/commands/e2e-coverage-gaps.md +2 -2
  143. package/plugins/lisa-expo/skills/e2e-coverage-gaps/SKILL.md +22 -10
  144. package/plugins/lisa-expo-agy/commands/lisa/e2e-coverage-gaps.md +2 -2
  145. package/plugins/lisa-expo-agy/plugin.json +1 -1
  146. package/plugins/lisa-expo-agy/skills/e2e-coverage-gaps/SKILL.md +22 -10
  147. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  148. package/plugins/lisa-expo-copilot/commands/lisa/e2e-coverage-gaps.md +2 -2
  149. package/plugins/lisa-expo-copilot/skills/e2e-coverage-gaps/SKILL.md +22 -10
  150. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  151. package/plugins/lisa-expo-cursor/commands/lisa/e2e-coverage-gaps.md +2 -2
  152. package/plugins/lisa-expo-cursor/skills/e2e-coverage-gaps/SKILL.md +22 -10
  153. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  154. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  155. package/plugins/lisa-harper-fabric/.codex-plugin/skills/e2e-coverage-gaps/SKILL.md +21 -9
  156. package/plugins/lisa-harper-fabric/.codex-plugin/skills/lisa-e2e-coverage-gaps/SKILL.md +1 -1
  157. package/plugins/lisa-harper-fabric/commands/e2e-coverage-gaps.md +2 -2
  158. package/plugins/lisa-harper-fabric/skills/e2e-coverage-gaps/SKILL.md +22 -10
  159. package/plugins/lisa-harper-fabric-agy/commands/lisa/e2e-coverage-gaps.md +2 -2
  160. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  161. package/plugins/lisa-harper-fabric-agy/skills/e2e-coverage-gaps/SKILL.md +22 -10
  162. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  163. package/plugins/lisa-harper-fabric-copilot/commands/lisa/e2e-coverage-gaps.md +2 -2
  164. package/plugins/lisa-harper-fabric-copilot/skills/e2e-coverage-gaps/SKILL.md +22 -10
  165. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  166. package/plugins/lisa-harper-fabric-cursor/commands/lisa/e2e-coverage-gaps.md +2 -2
  167. package/plugins/lisa-harper-fabric-cursor/skills/e2e-coverage-gaps/SKILL.md +22 -10
  168. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  169. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  170. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  171. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  172. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  173. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  174. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  175. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  176. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  177. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  178. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  179. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  180. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  181. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  182. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  183. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  184. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  185. package/plugins/lisa-rails/.codex-plugin/skills/e2e-coverage-gaps/SKILL.md +21 -9
  186. package/plugins/lisa-rails/.codex-plugin/skills/lisa-e2e-coverage-gaps/SKILL.md +1 -1
  187. package/plugins/lisa-rails/commands/e2e-coverage-gaps.md +2 -2
  188. package/plugins/lisa-rails/skills/e2e-coverage-gaps/SKILL.md +22 -10
  189. package/plugins/lisa-rails-agy/commands/lisa/e2e-coverage-gaps.md +2 -2
  190. package/plugins/lisa-rails-agy/plugin.json +1 -1
  191. package/plugins/lisa-rails-agy/skills/e2e-coverage-gaps/SKILL.md +22 -10
  192. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  193. package/plugins/lisa-rails-copilot/commands/lisa/e2e-coverage-gaps.md +2 -2
  194. package/plugins/lisa-rails-copilot/skills/e2e-coverage-gaps/SKILL.md +22 -10
  195. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  196. package/plugins/lisa-rails-cursor/commands/lisa/e2e-coverage-gaps.md +2 -2
  197. package/plugins/lisa-rails-cursor/skills/e2e-coverage-gaps/SKILL.md +22 -10
  198. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  199. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  200. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  201. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  202. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  203. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  204. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  205. package/plugins/lisa-wiki/scripts/_wiki-lib.mjs +2 -2
  206. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  207. package/plugins/lisa-wiki-agy/scripts/_wiki-lib.mjs +2 -2
  208. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  209. package/plugins/lisa-wiki-copilot/scripts/_wiki-lib.mjs +2 -2
  210. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  211. package/plugins/lisa-wiki-cursor/scripts/_wiki-lib.mjs +2 -2
  212. package/plugins/src/base/commands/exploratory-qa.md +2 -2
  213. package/plugins/src/base/rules/eager/do-it-now.md +5 -5
  214. package/plugins/src/base/rules/eager/tracked-work.md +2 -0
  215. package/plugins/src/base/rules/eager/upstream-to-lisa.md +7 -18
  216. package/plugins/src/base/rules/reference/claim-time-guards.md +4 -0
  217. package/plugins/src/base/rules/reference/do-it-now.md +9 -27
  218. package/plugins/src/base/rules/reference/observability-audit.md +2 -2
  219. package/plugins/src/base/rules/reference/ready-role-filing.md +6 -2
  220. package/plugins/src/base/rules/reference/rejection-detection.md +8 -2
  221. package/plugins/src/base/rules/reference/tracked-work.md +2 -0
  222. package/plugins/src/base/rules/reference/upstream-to-lisa.md +14 -43
  223. package/plugins/src/base/skills/lisa-exploratory-qa/SKILL.md +9 -7
  224. package/plugins/src/base/skills/lisa-github-build-intake/SKILL.md +3 -0
  225. package/plugins/src/base/skills/lisa-github-write-issue/SKILL.md +6 -0
  226. package/plugins/src/base/skills/lisa-jira-build-intake/SKILL.md +3 -0
  227. package/plugins/src/base/skills/lisa-jira-write-ticket/SKILL.md +6 -0
  228. package/plugins/src/base/skills/lisa-learnings-audit/SKILL.md +2 -2
  229. package/plugins/src/base/skills/lisa-linear-build-intake/SKILL.md +3 -0
  230. package/plugins/src/base/skills/lisa-linear-write-issue/SKILL.md +6 -0
  231. package/plugins/src/base/skills/lisa-monitor/SKILL.md +1 -1
  232. package/plugins/src/base/skills/lisa-persist-learning/SKILL.md +5 -1
  233. package/plugins/src/base/skills/lisa-prd-source-write/SKILL.md +1 -0
  234. package/plugins/src/base/skills/lisa-project-ideation/SKILL.md +7 -5
  235. package/plugins/src/base/skills/lisa-repair-intake/SKILL.md +2 -3
  236. package/plugins/src/base/skills/lisa-research/SKILL.md +6 -2
  237. package/plugins/src/base/skills/lisa-rework-triage/SKILL.md +16 -13
  238. package/plugins/src/base/skills/lisa-track/SKILL.md +24 -6
  239. package/plugins/src/expo/commands/e2e-coverage-gaps.md +2 -2
  240. package/plugins/src/expo/skills/e2e-coverage-gaps/SKILL.md +22 -10
  241. package/plugins/src/harper-fabric/commands/e2e-coverage-gaps.md +2 -2
  242. package/plugins/src/harper-fabric/skills/e2e-coverage-gaps/SKILL.md +22 -10
  243. package/plugins/src/rails/commands/e2e-coverage-gaps.md +2 -2
  244. package/plugins/src/rails/skills/e2e-coverage-gaps/SKILL.md +22 -10
  245. package/plugins/src/wiki/scripts/_wiki-lib.mjs +2 -2
  246. package/typescript/copy-overwrite/tsconfig.eslint.json +1 -1
@@ -1,16 +1,18 @@
1
1
  ---
2
2
  name: e2e-coverage-gaps
3
- description: Playwright/e2e coverage-gap explorer that FEEDS THE LIFECYCLE. Use when asked to find paths the automated end-to-end suite does NOT cover — routes with no test at all, or flows that are only happy-path tested (missing error, validation, permission, empty, loading, and edge states). It inventories the app's routes and the existing Playwright tests, explores the running app to confirm each uncovered or under-covered path is real and reachable, and files one build-ready missing-test ticket per gap via lisa-tracker-write. For human usability/experience issues (confusing, cramped, or broken UI), use the lisa-exploratory-qa skill instead.
3
+ description: Playwright/e2e coverage-gap explorer that FEEDS THE LIFECYCLE. Use when asked to find paths the automated end-to-end suite does NOT cover — routes with no test at all, or flows that are only happy-path tested (missing error, validation, permission, empty, loading, and edge states). It inventories the app's routes and the existing Playwright tests, explores the running app to confirm each uncovered or under-covered path is real and reachable, and files bounded build-ready work for worthwhile test gaps via lisa-tracker-write. For human usability/experience issues (confusing, cramped, or broken UI), use the lisa-exploratory-qa skill instead.
4
4
  ---
5
5
 
6
6
  # E2E Coverage Gaps
7
7
 
8
+ On runtimes without the rule tree (Antigravity), read **Worth doing** in `lisa-track` for the same value and decline policy.
9
+
8
10
  ## Overview
9
11
 
10
12
  Find where the automated end-to-end (Playwright) suite is **blind**: routes with no test at all, and
11
13
  flows that only assert the **happy path** while ignoring error, permission, empty, loading, and edge
12
14
  cases. Inventory the app's routes and the existing tests, explore the running app to confirm each gap
13
- is real and reachable, then file each gap as a **build-ready missing-test work item** so it enters the
15
+ is real and reachable, then group worthwhile gaps into **bounded build-ready missing-test work items** so it enters the
14
16
  Lisa lifecycle.
15
17
 
16
18
  This skill is purely about **automated-coverage gaps**. It does not judge whether the UI is confusing
@@ -62,15 +64,18 @@ Map routes/flows against existing coverage and classify each gap:
62
64
 
63
65
  ### 5. Explore to Confirm
64
66
 
67
+ - Apply `do-it-now`'s **Worth doing** guidance: missing coverage alone is not a defect. Identify a required behavior or credible material risk; decline low-value gaps without filing and group related accepted gaps.
65
68
  - Navigate each candidate gap in the running app to confirm it is real, reachable, and worth a test.
66
69
  Discard gaps that aren't actually reachable or are intentionally out of scope.
67
70
 
68
- ### 6. File One Ticket Per Gap
71
+ ### 6. File Bounded Work for Accepted Gaps
69
72
 
70
- Each confirmed gap becomes a leaf **missing-test** work item created via `lisa-tracker-write` (the
73
+ Each accepted gap or coherent group becomes a leaf **missing-test** work item created via `lisa-tracker-write` (the
71
74
  vendor-neutral writer — it dispatches to the configured tracker and runs the validation gate; never
72
75
  call a vendor `*-write-*` skill directly), `issue_type: Task`, **build-ready per the `ready` flag
73
- (default `true`)**. Pass `build_ready` explicitly on every create. Each ticket MUST specify:
76
+ (default `true`)**. For `ready=true`, pass `build_ready: true`. For `ready=false`,
77
+ pass `human_gate: "Coverage work explicitly held for operator prioritization"` instead.
78
+ Each ticket MUST specify:
74
79
 
75
80
  - The **route/flow** and the exact **user behavior the test must assert**.
76
81
  - **Which scenario is missing** (uncovered vs which non-happy path: error / validation / permission /
@@ -80,11 +85,18 @@ call a vendor `*-write-*` skill directly), `issue_type: Task`, **build-ready per
80
85
 
81
86
  ### Idempotency — don't spam duplicates
82
87
 
83
- Before creating a ticket, search the tracker for an **open** ticket carrying a stable marker
84
- `[lisa-e2e-coverage-gaps] <gap-key>` in its body (the `<gap-key>` is a stable slug of route + missing
85
- scenario, e.g. `checkout/payment-declined` or `dashboard/empty-state@mobile`). If one exists, reference
86
- it instead of duplicating. **Match by the marker, never by title.** A *closed* prior ticket does not
87
- suppress a genuine new gap.
88
+ Before creating a ticket, follow `rejection-detection` — **Proposal rejection memory**:
89
+ use `<!-- [lisa-e2e-coverage-gaps] key=<candidate-key> -->` with the normalized route +
90
+ missing scenario hashed deterministically by that rule's existing formula. Search open AND
91
+ closed tickets, including its body-enumeration fallback for search-index lag. Match by the
92
+ marker for any constituent gap, never by title alone. Reuse open matches. For legacy issues
93
+ without a marker or with the older `[lisa-e2e-coverage-gaps] <gap-key>` slug marker, read
94
+ bodies and closing discussions to establish a semantic match; title similarity
95
+ alone is insufficient. A **Not planned** decision suppresses the same accepted
96
+ limitation, even when seen again later. Re-propose only for a materially changed
97
+ consequence, requirement, or risk that addresses the decline. A completed fix may
98
+ have a real regression, which must be verified before filing. Grouped work retains
99
+ the constituent gap markers so a later pass can find it.
88
100
 
89
101
  ## Output
90
102
 
@@ -1,7 +1,7 @@
1
1
  ---
2
- description: "Explore gaps in the automated Playwright/e2e suite: inventory the app's routes and existing tests, find routes with no coverage or flows tested only on the happy path (missing error, permission, empty, loading, and edge cases), confirm each in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write. The optional ready flag (default true) controls build-ready vs backlog. For human usability issues, use exploratory-qa instead."
2
+ description: "Explore gaps in the automated Playwright/e2e suite: inventory the app's routes and existing tests, find routes with no coverage or flows tested only on the happy path (missing error, permission, empty, loading, and edge cases), confirm each in the running app, and file bounded build-ready work for worthwhile test gaps via lisa:tracker-write. The optional ready flag (default true) controls build-ready vs backlog. For human usability issues, use exploratory-qa instead."
3
3
  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: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 bounded build-ready work for worthwhile test gaps 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": "4.55.4",
3
+ "version": "4.55.6",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,16 +1,18 @@
1
1
  ---
2
2
  name: e2e-coverage-gaps
3
- description: Playwright/e2e coverage-gap explorer that FEEDS THE LIFECYCLE. Use when asked to find paths the automated end-to-end suite does NOT cover — routes with no test at all, or flows that are only happy-path tested (missing error, validation, permission, empty, loading, and edge states). It inventories the app's routes and the existing Playwright tests, explores the running app to confirm each uncovered or under-covered path is real and reachable, and files one build-ready missing-test ticket per gap via lisa-tracker-write. For human usability/experience issues (confusing, cramped, or broken UI), use the lisa-exploratory-qa skill instead.
3
+ description: Playwright/e2e coverage-gap explorer that FEEDS THE LIFECYCLE. Use when asked to find paths the automated end-to-end suite does NOT cover — routes with no test at all, or flows that are only happy-path tested (missing error, validation, permission, empty, loading, and edge states). It inventories the app's routes and the existing Playwright tests, explores the running app to confirm each uncovered or under-covered path is real and reachable, and files bounded build-ready work for worthwhile test gaps via lisa-tracker-write. For human usability/experience issues (confusing, cramped, or broken UI), use the lisa-exploratory-qa skill instead.
4
4
  ---
5
5
 
6
6
  # E2E Coverage Gaps
7
7
 
8
+ On runtimes without the rule tree (Antigravity), read **Worth doing** in `lisa-track` for the same value and decline policy.
9
+
8
10
  ## Overview
9
11
 
10
12
  Find where the automated end-to-end (Playwright) suite is **blind**: routes with no test at all, and
11
13
  flows that only assert the **happy path** while ignoring error, permission, empty, loading, and edge
12
14
  cases. Inventory the app's routes and the existing tests, explore the running app to confirm each gap
13
- is real and reachable, then file each gap as a **build-ready missing-test work item** so it enters the
15
+ is real and reachable, then group worthwhile gaps into **bounded build-ready missing-test work items** so it enters the
14
16
  Lisa lifecycle.
15
17
 
16
18
  This skill is purely about **automated-coverage gaps**. It does not judge whether the UI is confusing
@@ -62,15 +64,18 @@ Map routes/flows against existing coverage and classify each gap:
62
64
 
63
65
  ### 5. Explore to Confirm
64
66
 
67
+ - Apply `do-it-now`'s **Worth doing** guidance: missing coverage alone is not a defect. Identify a required behavior or credible material risk; decline low-value gaps without filing and group related accepted gaps.
65
68
  - Navigate each candidate gap in the running app to confirm it is real, reachable, and worth a test.
66
69
  Discard gaps that aren't actually reachable or are intentionally out of scope.
67
70
 
68
- ### 6. File One Ticket Per Gap
71
+ ### 6. File Bounded Work for Accepted Gaps
69
72
 
70
- Each confirmed gap becomes a leaf **missing-test** work item created via `lisa-tracker-write` (the
73
+ Each accepted gap or coherent group becomes a leaf **missing-test** work item created via `lisa-tracker-write` (the
71
74
  vendor-neutral writer — it dispatches to the configured tracker and runs the validation gate; never
72
75
  call a vendor `*-write-*` skill directly), `issue_type: Task`, **build-ready per the `ready` flag
73
- (default `true`)**. Pass `build_ready` explicitly on every create. Each ticket MUST specify:
76
+ (default `true`)**. For `ready=true`, pass `build_ready: true`. For `ready=false`,
77
+ pass `human_gate: "Coverage work explicitly held for operator prioritization"` instead.
78
+ Each ticket MUST specify:
74
79
 
75
80
  - The **route/flow** and the exact **user behavior the test must assert**.
76
81
  - **Which scenario is missing** (uncovered vs which non-happy path: error / validation / permission /
@@ -80,11 +85,18 @@ call a vendor `*-write-*` skill directly), `issue_type: Task`, **build-ready per
80
85
 
81
86
  ### Idempotency — don't spam duplicates
82
87
 
83
- Before creating a ticket, search the tracker for an **open** ticket carrying a stable marker
84
- `[lisa-e2e-coverage-gaps] <gap-key>` in its body (the `<gap-key>` is a stable slug of route + missing
85
- scenario, e.g. `checkout/payment-declined` or `dashboard/empty-state@mobile`). If one exists, reference
86
- it instead of duplicating. **Match by the marker, never by title.** A *closed* prior ticket does not
87
- suppress a genuine new gap.
88
+ Before creating a ticket, follow `rejection-detection` — **Proposal rejection memory**:
89
+ use `<!-- [lisa-e2e-coverage-gaps] key=<candidate-key> -->` with the normalized route +
90
+ missing scenario hashed deterministically by that rule's existing formula. Search open AND
91
+ closed tickets, including its body-enumeration fallback for search-index lag. Match by the
92
+ marker for any constituent gap, never by title alone. Reuse open matches. For legacy issues
93
+ without a marker or with the older `[lisa-e2e-coverage-gaps] <gap-key>` slug marker, read
94
+ bodies and closing discussions to establish a semantic match; title similarity
95
+ alone is insufficient. A **Not planned** decision suppresses the same accepted
96
+ limitation, even when seen again later. Re-propose only for a materially changed
97
+ consequence, requirement, or risk that addresses the decline. A completed fix may
98
+ have a real regression, which must be verified before filing. Grouped work retains
99
+ the constituent gap markers so a later pass can find it.
88
100
 
89
101
  ## Output
90
102
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.55.4",
3
+ "version": "4.55.6",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,7 +1,7 @@
1
1
  ---
2
- description: "Explore gaps in the automated Playwright/e2e suite: inventory the app's routes and existing tests, find routes with no coverage or flows tested only on the happy path (missing error, permission, empty, loading, and edge cases), confirm each in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write. The optional ready flag (default true) controls build-ready vs backlog. For human usability issues, use exploratory-qa instead."
2
+ description: "Explore gaps in the automated Playwright/e2e suite: inventory the app's routes and existing tests, find routes with no coverage or flows tested only on the happy path (missing error, permission, empty, loading, and edge cases), confirm each in the running app, and file bounded build-ready work for worthwhile test gaps via lisa:tracker-write. The optional ready flag (default true) controls build-ready vs backlog. For human usability issues, use exploratory-qa instead."
3
3
  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: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 bounded build-ready work for worthwhile test gaps via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa:exploratory-qa. $ARGUMENTS
@@ -1,16 +1,18 @@
1
1
  ---
2
2
  name: e2e-coverage-gaps
3
- description: Playwright/e2e coverage-gap explorer that FEEDS THE LIFECYCLE. Use when asked to find paths the automated end-to-end suite does NOT cover — routes with no test at all, or flows that are only happy-path tested (missing error, validation, permission, empty, loading, and edge states). It inventories the app's routes and the existing Playwright tests, explores the running app to confirm each uncovered or under-covered path is real and reachable, and files one build-ready missing-test ticket per gap via lisa-tracker-write. For human usability/experience issues (confusing, cramped, or broken UI), use the lisa-exploratory-qa skill instead.
3
+ description: Playwright/e2e coverage-gap explorer that FEEDS THE LIFECYCLE. Use when asked to find paths the automated end-to-end suite does NOT cover — routes with no test at all, or flows that are only happy-path tested (missing error, validation, permission, empty, loading, and edge states). It inventories the app's routes and the existing Playwright tests, explores the running app to confirm each uncovered or under-covered path is real and reachable, and files bounded build-ready work for worthwhile test gaps via lisa-tracker-write. For human usability/experience issues (confusing, cramped, or broken UI), use the lisa-exploratory-qa skill instead.
4
4
  ---
5
5
 
6
6
  # E2E Coverage Gaps
7
7
 
8
+ On runtimes without the rule tree (Antigravity), read **Worth doing** in `lisa-track` for the same value and decline policy.
9
+
8
10
  ## Overview
9
11
 
10
12
  Find where the automated end-to-end (Playwright) suite is **blind**: routes with no test at all, and
11
13
  flows that only assert the **happy path** while ignoring error, permission, empty, loading, and edge
12
14
  cases. Inventory the app's routes and the existing tests, explore the running app to confirm each gap
13
- is real and reachable, then file each gap as a **build-ready missing-test work item** so it enters the
15
+ is real and reachable, then group worthwhile gaps into **bounded build-ready missing-test work items** so it enters the
14
16
  Lisa lifecycle.
15
17
 
16
18
  This skill is purely about **automated-coverage gaps**. It does not judge whether the UI is confusing
@@ -62,15 +64,18 @@ Map routes/flows against existing coverage and classify each gap:
62
64
 
63
65
  ### 5. Explore to Confirm
64
66
 
67
+ - Apply `do-it-now`'s **Worth doing** guidance: missing coverage alone is not a defect. Identify a required behavior or credible material risk; decline low-value gaps without filing and group related accepted gaps.
65
68
  - Navigate each candidate gap in the running app to confirm it is real, reachable, and worth a test.
66
69
  Discard gaps that aren't actually reachable or are intentionally out of scope.
67
70
 
68
- ### 6. File One Ticket Per Gap
71
+ ### 6. File Bounded Work for Accepted Gaps
69
72
 
70
- Each confirmed gap becomes a leaf **missing-test** work item created via `lisa-tracker-write` (the
73
+ Each accepted gap or coherent group becomes a leaf **missing-test** work item created via `lisa-tracker-write` (the
71
74
  vendor-neutral writer — it dispatches to the configured tracker and runs the validation gate; never
72
75
  call a vendor `*-write-*` skill directly), `issue_type: Task`, **build-ready per the `ready` flag
73
- (default `true`)**. Pass `build_ready` explicitly on every create. Each ticket MUST specify:
76
+ (default `true`)**. For `ready=true`, pass `build_ready: true`. For `ready=false`,
77
+ pass `human_gate: "Coverage work explicitly held for operator prioritization"` instead.
78
+ Each ticket MUST specify:
74
79
 
75
80
  - The **route/flow** and the exact **user behavior the test must assert**.
76
81
  - **Which scenario is missing** (uncovered vs which non-happy path: error / validation / permission /
@@ -80,11 +85,18 @@ call a vendor `*-write-*` skill directly), `issue_type: Task`, **build-ready per
80
85
 
81
86
  ### Idempotency — don't spam duplicates
82
87
 
83
- Before creating a ticket, search the tracker for an **open** ticket carrying a stable marker
84
- `[lisa-e2e-coverage-gaps] <gap-key>` in its body (the `<gap-key>` is a stable slug of route + missing
85
- scenario, e.g. `checkout/payment-declined` or `dashboard/empty-state@mobile`). If one exists, reference
86
- it instead of duplicating. **Match by the marker, never by title.** A *closed* prior ticket does not
87
- suppress a genuine new gap.
88
+ Before creating a ticket, follow `rejection-detection` — **Proposal rejection memory**:
89
+ use `<!-- [lisa-e2e-coverage-gaps] key=<candidate-key> -->` with the normalized route +
90
+ missing scenario hashed deterministically by that rule's existing formula. Search open AND
91
+ closed tickets, including its body-enumeration fallback for search-index lag. Match by the
92
+ marker for any constituent gap, never by title alone. Reuse open matches. For legacy issues
93
+ without a marker or with the older `[lisa-e2e-coverage-gaps] <gap-key>` slug marker, read
94
+ bodies and closing discussions to establish a semantic match; title similarity
95
+ alone is insufficient. A **Not planned** decision suppresses the same accepted
96
+ limitation, even when seen again later. Re-propose only for a materially changed
97
+ consequence, requirement, or risk that addresses the decline. A completed fix may
98
+ have a real regression, which must be verified before filing. Grouped work retains
99
+ the constituent gap markers so a later pass can find it.
88
100
 
89
101
  ## Output
90
102
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.55.4",
3
+ "version": "4.55.6",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,7 +1,7 @@
1
1
  ---
2
- description: "Explore gaps in the automated Playwright/e2e suite: inventory the app's routes and existing tests, find routes with no coverage or flows tested only on the happy path (missing error, permission, empty, loading, and edge cases), confirm each in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write. The optional ready flag (default true) controls build-ready vs backlog. For human usability issues, use exploratory-qa instead."
2
+ description: "Explore gaps in the automated Playwright/e2e suite: inventory the app's routes and existing tests, find routes with no coverage or flows tested only on the happy path (missing error, permission, empty, loading, and edge cases), confirm each in the running app, and file bounded build-ready work for worthwhile test gaps via lisa:tracker-write. The optional ready flag (default true) controls build-ready vs backlog. For human usability issues, use exploratory-qa instead."
3
3
  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: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 bounded build-ready work for worthwhile test gaps via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa:exploratory-qa. $ARGUMENTS
@@ -1,16 +1,18 @@
1
1
  ---
2
2
  name: e2e-coverage-gaps
3
- description: Playwright/e2e coverage-gap explorer that FEEDS THE LIFECYCLE. Use when asked to find paths the automated end-to-end suite does NOT cover — routes with no test at all, or flows that are only happy-path tested (missing error, validation, permission, empty, loading, and edge states). It inventories the app's routes and the existing Playwright tests, explores the running app to confirm each uncovered or under-covered path is real and reachable, and files one build-ready missing-test ticket per gap via lisa-tracker-write. For human usability/experience issues (confusing, cramped, or broken UI), use the lisa-exploratory-qa skill instead.
3
+ description: Playwright/e2e coverage-gap explorer that FEEDS THE LIFECYCLE. Use when asked to find paths the automated end-to-end suite does NOT cover — routes with no test at all, or flows that are only happy-path tested (missing error, validation, permission, empty, loading, and edge states). It inventories the app's routes and the existing Playwright tests, explores the running app to confirm each uncovered or under-covered path is real and reachable, and files bounded build-ready work for worthwhile test gaps via lisa-tracker-write. For human usability/experience issues (confusing, cramped, or broken UI), use the lisa-exploratory-qa skill instead.
4
4
  ---
5
5
 
6
6
  # E2E Coverage Gaps
7
7
 
8
+ On runtimes without the rule tree (Antigravity), read **Worth doing** in `lisa-track` for the same value and decline policy.
9
+
8
10
  ## Overview
9
11
 
10
12
  Find where the automated end-to-end (Playwright) suite is **blind**: routes with no test at all, and
11
13
  flows that only assert the **happy path** while ignoring error, permission, empty, loading, and edge
12
14
  cases. Inventory the app's routes and the existing tests, explore the running app to confirm each gap
13
- is real and reachable, then file each gap as a **build-ready missing-test work item** so it enters the
15
+ is real and reachable, then group worthwhile gaps into **bounded build-ready missing-test work items** so it enters the
14
16
  Lisa lifecycle.
15
17
 
16
18
  This skill is purely about **automated-coverage gaps**. It does not judge whether the UI is confusing
@@ -62,15 +64,18 @@ Map routes/flows against existing coverage and classify each gap:
62
64
 
63
65
  ### 5. Explore to Confirm
64
66
 
67
+ - Apply `do-it-now`'s **Worth doing** guidance: missing coverage alone is not a defect. Identify a required behavior or credible material risk; decline low-value gaps without filing and group related accepted gaps.
65
68
  - Navigate each candidate gap in the running app to confirm it is real, reachable, and worth a test.
66
69
  Discard gaps that aren't actually reachable or are intentionally out of scope.
67
70
 
68
- ### 6. File One Ticket Per Gap
71
+ ### 6. File Bounded Work for Accepted Gaps
69
72
 
70
- Each confirmed gap becomes a leaf **missing-test** work item created via `lisa-tracker-write` (the
73
+ Each accepted gap or coherent group becomes a leaf **missing-test** work item created via `lisa-tracker-write` (the
71
74
  vendor-neutral writer — it dispatches to the configured tracker and runs the validation gate; never
72
75
  call a vendor `*-write-*` skill directly), `issue_type: Task`, **build-ready per the `ready` flag
73
- (default `true`)**. Pass `build_ready` explicitly on every create. Each ticket MUST specify:
76
+ (default `true`)**. For `ready=true`, pass `build_ready: true`. For `ready=false`,
77
+ pass `human_gate: "Coverage work explicitly held for operator prioritization"` instead.
78
+ Each ticket MUST specify:
74
79
 
75
80
  - The **route/flow** and the exact **user behavior the test must assert**.
76
81
  - **Which scenario is missing** (uncovered vs which non-happy path: error / validation / permission /
@@ -80,11 +85,18 @@ call a vendor `*-write-*` skill directly), `issue_type: Task`, **build-ready per
80
85
 
81
86
  ### Idempotency — don't spam duplicates
82
87
 
83
- Before creating a ticket, search the tracker for an **open** ticket carrying a stable marker
84
- `[lisa-e2e-coverage-gaps] <gap-key>` in its body (the `<gap-key>` is a stable slug of route + missing
85
- scenario, e.g. `checkout/payment-declined` or `dashboard/empty-state@mobile`). If one exists, reference
86
- it instead of duplicating. **Match by the marker, never by title.** A *closed* prior ticket does not
87
- suppress a genuine new gap.
88
+ Before creating a ticket, follow `rejection-detection` — **Proposal rejection memory**:
89
+ use `<!-- [lisa-e2e-coverage-gaps] key=<candidate-key> -->` with the normalized route +
90
+ missing scenario hashed deterministically by that rule's existing formula. Search open AND
91
+ closed tickets, including its body-enumeration fallback for search-index lag. Match by the
92
+ marker for any constituent gap, never by title alone. Reuse open matches. For legacy issues
93
+ without a marker or with the older `[lisa-e2e-coverage-gaps] <gap-key>` slug marker, read
94
+ bodies and closing discussions to establish a semantic match; title similarity
95
+ alone is insufficient. A **Not planned** decision suppresses the same accepted
96
+ limitation, even when seen again later. Re-propose only for a materially changed
97
+ consequence, requirement, or risk that addresses the decline. A completed fix may
98
+ have a real regression, which must be verified before filing. Grouped work retains
99
+ the constituent gap markers so a later pass can find it.
88
100
 
89
101
  ## Output
90
102
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.55.4",
3
+ "version": "4.55.6",
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": "4.55.4",
3
+ "version": "4.55.6",
4
4
  "description": "Harper/Fabric-specific Lisa rules for TypeScript component apps.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -5,12 +5,14 @@ description: "Playwright/e2e coverage-gap…"
5
5
 
6
6
  # E2E Coverage Gaps
7
7
 
8
+ On runtimes without the rule tree (Antigravity), read **Worth doing** in `lisa-track` for the same value and decline policy.
9
+
8
10
  ## Overview
9
11
 
10
12
  Find where the automated end-to-end (Playwright) suite is **blind**: routes with no test at all, and
11
13
  flows that only assert the **happy path** while ignoring error, permission, empty, loading, and edge
12
14
  cases. Inventory the app's routes and the existing tests, explore the running app to confirm each gap
13
- is real and reachable, then file each gap as a **build-ready missing-test work item** so it enters the
15
+ is real and reachable, then group worthwhile gaps into **bounded build-ready missing-test work items** so it enters the
14
16
  Lisa lifecycle.
15
17
 
16
18
  This skill is purely about **automated-coverage gaps**. It does not judge whether the UI is confusing
@@ -62,15 +64,18 @@ Map routes/flows against existing coverage and classify each gap:
62
64
 
63
65
  ### 5. Explore to Confirm
64
66
 
67
+ - Apply `do-it-now`'s **Worth doing** guidance: missing coverage alone is not a defect. Identify a required behavior or credible material risk; decline low-value gaps without filing and group related accepted gaps.
65
68
  - Navigate each candidate gap in the running app to confirm it is real, reachable, and worth a test.
66
69
  Discard gaps that aren't actually reachable or are intentionally out of scope.
67
70
 
68
- ### 6. File One Ticket Per Gap
71
+ ### 6. File Bounded Work for Accepted Gaps
69
72
 
70
- Each confirmed gap becomes a leaf **missing-test** work item created via `lisa-tracker-write` (the
73
+ Each accepted gap or coherent group becomes a leaf **missing-test** work item created via `lisa-tracker-write` (the
71
74
  vendor-neutral writer — it dispatches to the configured tracker and runs the validation gate; never
72
75
  call a vendor `*-write-*` skill directly), `issue_type: Task`, **build-ready per the `ready` flag
73
- (default `true`)**. Pass `build_ready` explicitly on every create. Each ticket MUST specify:
76
+ (default `true`)**. For `ready=true`, pass `build_ready: true`. For `ready=false`,
77
+ pass `human_gate: "Coverage work explicitly held for operator prioritization"` instead.
78
+ Each ticket MUST specify:
74
79
 
75
80
  - The **route/flow** and the exact **user behavior the test must assert**.
76
81
  - **Which scenario is missing** (uncovered vs which non-happy path: error / validation / permission /
@@ -80,11 +85,18 @@ call a vendor `*-write-*` skill directly), `issue_type: Task`, **build-ready per
80
85
 
81
86
  ### Idempotency — don't spam duplicates
82
87
 
83
- Before creating a ticket, search the tracker for an **open** ticket carrying a stable marker
84
- `[lisa-e2e-coverage-gaps] <gap-key>` in its body (the `<gap-key>` is a stable slug of route + missing
85
- scenario, e.g. `checkout/payment-declined` or `dashboard/empty-state@mobile`). If one exists, reference
86
- it instead of duplicating. **Match by the marker, never by title.** A *closed* prior ticket does not
87
- suppress a genuine new gap.
88
+ Before creating a ticket, follow `rejection-detection` — **Proposal rejection memory**:
89
+ use `<!-- [lisa-e2e-coverage-gaps] key=<candidate-key> -->` with the normalized route +
90
+ missing scenario hashed deterministically by that rule's existing formula. Search open AND
91
+ closed tickets, including its body-enumeration fallback for search-index lag. Match by the
92
+ marker for any constituent gap, never by title alone. Reuse open matches. For legacy issues
93
+ without a marker or with the older `[lisa-e2e-coverage-gaps] <gap-key>` slug marker, read
94
+ bodies and closing discussions to establish a semantic match; title similarity
95
+ alone is insufficient. A **Not planned** decision suppresses the same accepted
96
+ limitation, even when seen again later. Re-propose only for a materially changed
97
+ consequence, requirement, or risk that addresses the decline. A completed fix may
98
+ have a real regression, which must be verified before filing. Grouped work retains
99
+ the constituent gap markers so a later pass can find it.
88
100
 
89
101
  ## Output
90
102
 
@@ -10,4 +10,4 @@ description: "Explore gaps in the automated…"
10
10
  - Claude argument hint: `[target-url | env] [ready=true|false]`
11
11
  - Claude allowed tools: `Skill`. Codex tool access is governed by the active Codex runtime and project policy.
12
12
 
13
- 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. Use the user's surrounding request as this command's arguments.
13
+ 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 bounded build-ready work for worthwhile test gaps via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa:exploratory-qa. Use the user's surrounding request as this command's arguments.
@@ -1,7 +1,7 @@
1
1
  ---
2
- description: "Explore gaps in the automated Playwright/e2e suite: inventory the app's routes and existing tests, find routes with no coverage or flows tested only on the happy path (missing error, permission, empty, loading, and edge cases), confirm each in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write. The optional ready flag (default true) controls build-ready vs backlog. For human usability issues, use exploratory-qa instead."
2
+ description: "Explore gaps in the automated Playwright/e2e suite: inventory the app's routes and existing tests, find routes with no coverage or flows tested only on the happy path (missing error, permission, empty, loading, and edge cases), confirm each in the running app, and file bounded build-ready work for worthwhile test gaps via lisa:tracker-write. The optional ready flag (default true) controls build-ready vs backlog. For human usability issues, use exploratory-qa instead."
3
3
  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: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 bounded build-ready work for worthwhile test gaps via lisa:tracker-write (build-ready per the ready flag, default true). For human usability/experience findings, use /lisa:exploratory-qa. $ARGUMENTS
@@ -1,16 +1,18 @@
1
1
  ---
2
2
  name: e2e-coverage-gaps
3
- description: Playwright/e2e coverage-gap explorer that FEEDS THE LIFECYCLE. Use when asked to find paths the automated end-to-end suite does NOT cover — routes with no test at all, or flows that are only happy-path tested (missing error, validation, permission, empty, loading, and edge states). It inventories the app's routes and the existing Playwright tests, explores the running app to confirm each uncovered or under-covered path is real and reachable, and files one build-ready missing-test ticket per gap via lisa-tracker-write. For human usability/experience issues (confusing, cramped, or broken UI), use the lisa-exploratory-qa skill instead.
3
+ description: Playwright/e2e coverage-gap explorer that FEEDS THE LIFECYCLE. Use when asked to find paths the automated end-to-end suite does NOT cover — routes with no test at all, or flows that are only happy-path tested (missing error, validation, permission, empty, loading, and edge states). It inventories the app's routes and the existing Playwright tests, explores the running app to confirm each uncovered or under-covered path is real and reachable, and files bounded build-ready work for worthwhile test gaps via lisa-tracker-write. For human usability/experience issues (confusing, cramped, or broken UI), use the lisa-exploratory-qa skill instead.
4
4
  ---
5
5
 
6
6
  # E2E Coverage Gaps
7
7
 
8
+ On runtimes without the rule tree (Antigravity), read **Worth doing** in `lisa-track` for the same value and decline policy.
9
+
8
10
  ## Overview
9
11
 
10
12
  Find where the automated end-to-end (Playwright) suite is **blind**: routes with no test at all, and
11
13
  flows that only assert the **happy path** while ignoring error, permission, empty, loading, and edge
12
14
  cases. Inventory the app's routes and the existing tests, explore the running app to confirm each gap
13
- is real and reachable, then file each gap as a **build-ready missing-test work item** so it enters the
15
+ is real and reachable, then group worthwhile gaps into **bounded build-ready missing-test work items** so it enters the
14
16
  Lisa lifecycle.
15
17
 
16
18
  This skill is purely about **automated-coverage gaps**. It does not judge whether the UI is confusing
@@ -62,15 +64,18 @@ Map routes/flows against existing coverage and classify each gap:
62
64
 
63
65
  ### 5. Explore to Confirm
64
66
 
67
+ - Apply `do-it-now`'s **Worth doing** guidance: missing coverage alone is not a defect. Identify a required behavior or credible material risk; decline low-value gaps without filing and group related accepted gaps.
65
68
  - Navigate each candidate gap in the running app to confirm it is real, reachable, and worth a test.
66
69
  Discard gaps that aren't actually reachable or are intentionally out of scope.
67
70
 
68
- ### 6. File One Ticket Per Gap
71
+ ### 6. File Bounded Work for Accepted Gaps
69
72
 
70
- Each confirmed gap becomes a leaf **missing-test** work item created via `lisa-tracker-write` (the
73
+ Each accepted gap or coherent group becomes a leaf **missing-test** work item created via `lisa-tracker-write` (the
71
74
  vendor-neutral writer — it dispatches to the configured tracker and runs the validation gate; never
72
75
  call a vendor `*-write-*` skill directly), `issue_type: Task`, **build-ready per the `ready` flag
73
- (default `true`)**. Pass `build_ready` explicitly on every create. Each ticket MUST specify:
76
+ (default `true`)**. For `ready=true`, pass `build_ready: true`. For `ready=false`,
77
+ pass `human_gate: "Coverage work explicitly held for operator prioritization"` instead.
78
+ Each ticket MUST specify:
74
79
 
75
80
  - The **route/flow** and the exact **user behavior the test must assert**.
76
81
  - **Which scenario is missing** (uncovered vs which non-happy path: error / validation / permission /
@@ -80,11 +85,18 @@ call a vendor `*-write-*` skill directly), `issue_type: Task`, **build-ready per
80
85
 
81
86
  ### Idempotency — don't spam duplicates
82
87
 
83
- Before creating a ticket, search the tracker for an **open** ticket carrying a stable marker
84
- `[lisa-e2e-coverage-gaps] <gap-key>` in its body (the `<gap-key>` is a stable slug of route + missing
85
- scenario, e.g. `checkout/payment-declined` or `dashboard/empty-state@mobile`). If one exists, reference
86
- it instead of duplicating. **Match by the marker, never by title.** A *closed* prior ticket does not
87
- suppress a genuine new gap.
88
+ Before creating a ticket, follow `rejection-detection` — **Proposal rejection memory**:
89
+ use `<!-- [lisa-e2e-coverage-gaps] key=<candidate-key> -->` with the normalized route +
90
+ missing scenario hashed deterministically by that rule's existing formula. Search open AND
91
+ closed tickets, including its body-enumeration fallback for search-index lag. Match by the
92
+ marker for any constituent gap, never by title alone. Reuse open matches. For legacy issues
93
+ without a marker or with the older `[lisa-e2e-coverage-gaps] <gap-key>` slug marker, read
94
+ bodies and closing discussions to establish a semantic match; title similarity
95
+ alone is insufficient. A **Not planned** decision suppresses the same accepted
96
+ limitation, even when seen again later. Re-propose only for a materially changed
97
+ consequence, requirement, or risk that addresses the decline. A completed fix may
98
+ have a real regression, which must be verified before filing. Grouped work retains
99
+ the constituent gap markers so a later pass can find it.
88
100
 
89
101
  ## Output
90
102
 
@@ -1,7 +1,7 @@
1
1
  ---
2
- description: "Explore gaps in the automated Playwright/e2e suite: inventory the app's routes and existing tests, find routes with no coverage or flows tested only on the happy path (missing error, permission, empty, loading, and edge cases), confirm each in the running app, and file one build-ready missing-test ticket per gap via lisa:tracker-write. The optional ready flag (default true) controls build-ready vs backlog. For human usability issues, use exploratory-qa instead."
2
+ description: "Explore gaps in the automated Playwright/e2e suite: inventory the app's routes and existing tests, find routes with no coverage or flows tested only on the happy path (missing error, permission, empty, loading, and edge cases), confirm each in the running app, and file bounded build-ready work for worthwhile test gaps via lisa:tracker-write. The optional ready flag (default true) controls build-ready vs backlog. For human usability issues, use exploratory-qa instead."
3
3
  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: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 bounded build-ready work for worthwhile test gaps 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": "4.55.4",
3
+ "version": "4.55.6",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"