@codyswann/lisa 2.61.1 → 2.62.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 (125) 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/confluence-prd-intake.md +1 -1
  5. package/plugins/lisa/agents/github-prd-intake.md +1 -1
  6. package/plugins/lisa/agents/linear-prd-intake.md +1 -1
  7. package/plugins/lisa/agents/notion-prd-intake.md +1 -1
  8. package/plugins/lisa/commands/intake.md +1 -1
  9. package/plugins/lisa/commands/project-ideation.md +3 -3
  10. package/plugins/lisa/commands/repair-intake.md +6 -0
  11. package/plugins/lisa/commands/research.md +3 -3
  12. package/plugins/lisa/commands/setup-automations.md +6 -0
  13. package/plugins/lisa/commands/tear-down-automations.md +6 -0
  14. package/plugins/lisa/commands/verify-prd.md +2 -2
  15. package/plugins/lisa/rules/config-resolution.md +60 -0
  16. package/plugins/lisa/rules/intent-routing.md +4 -3
  17. package/plugins/lisa/rules/prd-lifecycle-rollup.md +10 -2
  18. package/plugins/lisa/rules/repo-scope-split.md +18 -1
  19. package/plugins/lisa/skills/confluence-prd-intake/SKILL.md +11 -1
  20. package/plugins/lisa/skills/confluence-write-prd/SKILL.md +103 -0
  21. package/plugins/lisa/skills/confluence-write-prd/agents/openai.yaml +4 -0
  22. package/plugins/lisa/skills/github-build-intake/SKILL.md +13 -0
  23. package/plugins/lisa/skills/github-prd-intake/SKILL.md +15 -1
  24. package/plugins/lisa/skills/github-write-issue/SKILL.md +13 -4
  25. package/plugins/lisa/skills/github-write-prd/SKILL.md +100 -0
  26. package/plugins/lisa/skills/github-write-prd/agents/openai.yaml +4 -0
  27. package/plugins/lisa/skills/implement/SKILL.md +13 -6
  28. package/plugins/lisa/skills/intake/SKILL.md +3 -2
  29. package/plugins/lisa/skills/jira-build-intake/SKILL.md +13 -0
  30. package/plugins/lisa/skills/jira-write-ticket/SKILL.md +8 -0
  31. package/plugins/lisa/skills/linear-build-intake/SKILL.md +13 -0
  32. package/plugins/lisa/skills/linear-prd-intake/SKILL.md +11 -1
  33. package/plugins/lisa/skills/linear-write-issue/SKILL.md +10 -2
  34. package/plugins/lisa/skills/linear-write-prd/SKILL.md +90 -0
  35. package/plugins/lisa/skills/linear-write-prd/agents/openai.yaml +4 -0
  36. package/plugins/lisa/skills/notion-access/SKILL.md +2 -0
  37. package/plugins/lisa/skills/notion-prd-intake/SKILL.md +11 -1
  38. package/plugins/lisa/skills/notion-write-prd/SKILL.md +107 -0
  39. package/plugins/lisa/skills/notion-write-prd/agents/openai.yaml +4 -0
  40. package/plugins/lisa/skills/prd-source-write/SKILL.md +80 -0
  41. package/plugins/lisa/skills/prd-source-write/agents/openai.yaml +4 -0
  42. package/plugins/lisa/skills/project-ideation/SKILL.md +183 -80
  43. package/plugins/lisa/skills/repair-intake/SKILL.md +403 -0
  44. package/plugins/lisa/skills/repair-intake/agents/openai.yaml +4 -0
  45. package/plugins/lisa/skills/research/SKILL.md +19 -3
  46. package/plugins/lisa/skills/research/agents/openai.yaml +2 -2
  47. package/plugins/lisa/skills/setup-automations/SKILL.md +78 -0
  48. package/plugins/lisa/skills/setup-automations/agents/openai.yaml +4 -0
  49. package/plugins/lisa/skills/tear-down-automations/SKILL.md +34 -0
  50. package/plugins/lisa/skills/tear-down-automations/agents/openai.yaml +4 -0
  51. package/plugins/lisa/skills/tracker-build-intake/SKILL.md +4 -0
  52. package/plugins/lisa/skills/verify-prd/SKILL.md +41 -38
  53. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  55. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  57. package/plugins/lisa-expo/commands/exploratory-qa.md +3 -3
  58. package/plugins/lisa-expo/skills/exploratory-qa/SKILL.md +48 -18
  59. package/plugins/lisa-expo/skills/exploratory-qa/agents/openai.yaml +2 -2
  60. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  62. package/plugins/lisa-harper-fabric/commands/exploratory-qa.md +3 -3
  63. package/plugins/lisa-harper-fabric/skills/exploratory-qa/SKILL.md +48 -18
  64. package/plugins/lisa-harper-fabric/skills/exploratory-qa/agents/openai.yaml +2 -2
  65. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  67. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  68. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  69. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  70. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  71. package/plugins/lisa-rails/commands/exploratory-qa.md +3 -3
  72. package/plugins/lisa-rails/skills/exploratory-qa/SKILL.md +48 -18
  73. package/plugins/lisa-rails/skills/exploratory-qa/agents/openai.yaml +2 -2
  74. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  75. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  76. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  77. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  78. package/plugins/lisa-wiki/skills/lisa-wiki-ingest/SKILL.md +30 -1
  79. package/plugins/src/base/agents/confluence-prd-intake.md +1 -1
  80. package/plugins/src/base/agents/github-prd-intake.md +1 -1
  81. package/plugins/src/base/agents/linear-prd-intake.md +1 -1
  82. package/plugins/src/base/agents/notion-prd-intake.md +1 -1
  83. package/plugins/src/base/commands/intake.md +1 -1
  84. package/plugins/src/base/commands/project-ideation.md +3 -3
  85. package/plugins/src/base/commands/repair-intake.md +6 -0
  86. package/plugins/src/base/commands/research.md +3 -3
  87. package/plugins/src/base/commands/setup-automations.md +6 -0
  88. package/plugins/src/base/commands/tear-down-automations.md +6 -0
  89. package/plugins/src/base/commands/verify-prd.md +2 -2
  90. package/plugins/src/base/rules/config-resolution.md +60 -0
  91. package/plugins/src/base/rules/intent-routing.md +4 -3
  92. package/plugins/src/base/rules/prd-lifecycle-rollup.md +10 -2
  93. package/plugins/src/base/rules/repo-scope-split.md +18 -1
  94. package/plugins/src/base/skills/confluence-prd-intake/SKILL.md +11 -1
  95. package/plugins/src/base/skills/confluence-write-prd/SKILL.md +103 -0
  96. package/plugins/src/base/skills/github-build-intake/SKILL.md +13 -0
  97. package/plugins/src/base/skills/github-prd-intake/SKILL.md +15 -1
  98. package/plugins/src/base/skills/github-write-issue/SKILL.md +13 -4
  99. package/plugins/src/base/skills/github-write-prd/SKILL.md +100 -0
  100. package/plugins/src/base/skills/implement/SKILL.md +13 -6
  101. package/plugins/src/base/skills/intake/SKILL.md +3 -2
  102. package/plugins/src/base/skills/jira-build-intake/SKILL.md +13 -0
  103. package/plugins/src/base/skills/jira-write-ticket/SKILL.md +8 -0
  104. package/plugins/src/base/skills/linear-build-intake/SKILL.md +13 -0
  105. package/plugins/src/base/skills/linear-prd-intake/SKILL.md +11 -1
  106. package/plugins/src/base/skills/linear-write-issue/SKILL.md +10 -2
  107. package/plugins/src/base/skills/linear-write-prd/SKILL.md +90 -0
  108. package/plugins/src/base/skills/notion-access/SKILL.md +2 -0
  109. package/plugins/src/base/skills/notion-prd-intake/SKILL.md +11 -1
  110. package/plugins/src/base/skills/notion-write-prd/SKILL.md +107 -0
  111. package/plugins/src/base/skills/prd-source-write/SKILL.md +80 -0
  112. package/plugins/src/base/skills/project-ideation/SKILL.md +183 -80
  113. package/plugins/src/base/skills/repair-intake/SKILL.md +403 -0
  114. package/plugins/src/base/skills/research/SKILL.md +19 -3
  115. package/plugins/src/base/skills/setup-automations/SKILL.md +78 -0
  116. package/plugins/src/base/skills/tear-down-automations/SKILL.md +34 -0
  117. package/plugins/src/base/skills/tracker-build-intake/SKILL.md +4 -0
  118. package/plugins/src/base/skills/verify-prd/SKILL.md +41 -38
  119. package/plugins/src/expo/commands/exploratory-qa.md +3 -3
  120. package/plugins/src/expo/skills/exploratory-qa/SKILL.md +48 -18
  121. package/plugins/src/harper-fabric/commands/exploratory-qa.md +3 -3
  122. package/plugins/src/harper-fabric/skills/exploratory-qa/SKILL.md +48 -18
  123. package/plugins/src/rails/commands/exploratory-qa.md +3 -3
  124. package/plugins/src/rails/skills/exploratory-qa/SKILL.md +48 -18
  125. package/plugins/src/wiki/skills/lisa-wiki-ingest/SKILL.md +30 -1
@@ -1,19 +1,30 @@
1
1
  ---
2
2
  name: exploratory-qa
3
- description: Playwright-backed exploratory QA workflow for web apps. Use when asked to audit an app or project with Playwright/e2e tests, find human-noticeable bugs, identify gaps in automated test coverage, test responsive breakpoints, observe slow or unclear load states, exercise mutable workflows with cleanup, or produce a QA gaps report.
3
+ description: Playwright-backed exploratory QA workflow for web apps that FEEDS THE LIFECYCLE. Use when asked to audit an app with Playwright/e2e tests, find human-noticeable bugs and usability issues, identify gaps in automated test coverage, test responsive breakpoints, observe slow or unclear load states, or exercise mutable workflows with cleanup. Instead of writing a report file, it files every finding as a tracked work item via lisa:tracker-write (bugs, usability suggestions, and missing Playwright tests). A `ready` parameter controls whether bug and suggestion tickets are created build-ready (auto-picked-up by lisa:intake) or in the backlog for human triage (default); missing-test tickets are always created build-ready.
4
4
  ---
5
5
 
6
6
  # Exploratory QA
7
7
 
8
8
  ## Overview
9
9
 
10
- Run a human-style exploratory QA pass informed by the existing Playwright suite. The goal is to find issues users notice and machines often miss, then translate those observations into actionable Playwright coverage gaps.
10
+ Run a human-style exploratory QA pass informed by the existing Playwright suite, then **file every finding as a tracked work item** in the project's configured tracker so it enters the Lisa lifecycle. The goal is to find issues users notice and machines often miss — bugs, usability friction, and coverage gaps — and turn each into actionable, automatable work, not a static report.
11
+
12
+ ## Parameters
13
+
14
+ - **`target-url | env`** (first positional) — what to audit.
15
+ - **`ready=true|false`** — the build-ready state for the **bug** and **usability/suggestion** tickets this pass creates.
16
+ - `ready=true` → created build-ready, so `lisa:intake` / the build-intake scanner auto-picks them up.
17
+ - `ready=false` (**default**) → created in the backlog (not build-ready) for a human to review and promote into the queue.
18
+ - **Missing Playwright test tickets are ALWAYS created build-ready, regardless of this flag** — adding missing coverage is always safe to queue.
19
+
20
+ `ready` maps directly to the `build_ready` write-control input on `lisa:tracker-write`.
11
21
 
12
22
  ## Core Workflow
13
23
 
14
24
  ### 1. Establish Scope
15
25
 
16
- - Identify the target environment, account type, browser requirement, and requested report path.
26
+ - Identify the target environment, account type, browser requirement, and the `ready` flag value (default `false`).
27
+ - **Confirm the tracker is configured.** Findings are filed as tickets, so read `tracker` from `.lisa.config.json` (local overrides global). If it is unset, stop and report that the tracker must be configured (via `/lisa:setup:jira` / `:github` / `:linear`) before exploratory QA can file findings — do not silently fall back to a report file.
17
28
  - If credentials, tenant, seed data, or mutation boundaries are missing and cannot be discovered safely, ask a concise clarifying question.
18
29
  - Treat production-like environments conservatively. Do not mutate production data unless the user explicitly approves it.
19
30
  - Prefer a test user, dev/staging environment, or isolated seeded account for mutation testing.
@@ -57,7 +68,7 @@ Exploratory QA should exercise mutable workflows when the environment is safe.
57
68
  - Prefer high-value user workflows: create/edit/delete records, lists, boards, tags, notes, comments, scenarios, uploads, messages, settings, invitations, or assignments.
58
69
  - Use unique names with a clear prefix such as `qa-`, `pw-`, or `codex-`.
59
70
  - Before mutating, identify the cleanup path. After mutating, make a best effort to clean up through the UI, then verify cleanup.
60
- - If UI cleanup is unavailable, record that as a product/test gap. Use documented API cleanup only if appropriate for the project and account.
71
+ - If UI cleanup is unavailable, file that as a product/test gap (a finding — see below). Use documented API cleanup only if appropriate for the project and account.
61
72
  - Record all mutations performed, cleanup attempts, and residue left behind.
62
73
  - Avoid destructive bulk actions unless the user explicitly asks or the test account is clearly disposable.
63
74
 
@@ -83,26 +94,45 @@ Measure perceived latency, not just eventual success.
83
94
  - Treat long waits without clear progress, error, retry, or cancellation as bugs or test gaps.
84
95
  - Do not overfit exact milliseconds unless the project has defined budgets. Use practical labels such as noticeable, slow, or unacceptable and include observed durations when available.
85
96
 
86
- ## Report Structure
97
+ ## Filing findings as tracked work
98
+
99
+ This skill does **not** write a report file. Every finding becomes a **leaf work item** created via `lisa:tracker-write` (the vendor-neutral writer — it dispatches to the configured tracker and runs the validation gate; never call a vendor `*-write-*` skill directly). Map each finding to a type and a build-ready state:
100
+
101
+ | Finding | `issue_type` | `build_ready` |
102
+ |---------|--------------|---------------|
103
+ | User-visible **bug** | `Bug` | the `ready` flag (default `false`) |
104
+ | **Usability / UX issue** (suggestion) | `Improvement` | the `ready` flag (default `false`) |
105
+ | **Missing Playwright test** (coverage gap) | `Task` | **`true` (always)** |
106
+
107
+ Each finding is a flat leaf (no children), so `build_ready` applies directly. Pass it explicitly on every create — `build_ready: <ready flag>` for bugs and suggestions, `build_ready: true` for missing tests.
108
+
109
+ Each ticket MUST be a complete spec (`lisa:tracker-write` runs the validator and rejects thin tickets):
110
+
111
+ - **Three-audience description** (context / business value, technical approach, stakeholder impact).
112
+ - **For a bug:** exact reproduction steps, observed-vs-expected, the env / account / breakpoint it occurred at, and console/network evidence.
113
+ - **For a usability issue:** the observed friction, who it affects, and the proposed improvement.
114
+ - **For a missing test:** the user behavior the test must assert and the stable selector/flow to use — concrete and automatable.
115
+ - **Gherkin acceptance criteria** describing the fixed (bug / usability) or added (test) behavior.
116
+
117
+ ### Idempotency — don't spam duplicates
118
+
119
+ Re-running a QA pass must not refile the same finding. Before creating a ticket, search the tracker for an **open** ticket carrying a stable marker `[lisa-exploratory-qa] <finding-key>` in its body (the `<finding-key>` is a stable slug of surface + symptom, e.g. `settings-modal/horizontal-overflow@tablet`). If one exists, reference/update it instead of creating a duplicate; only create when none exists. **Match by the marker, never by title** (titles get edited). A *closed* prior ticket does not suppress a new one — a recurrence after a fix is a genuine regression.
87
120
 
88
- Write the report to the user's requested path. If none is specified, use a clear local name such as `PLAYWRIGHT_GAPS.md` or `EXPLORATORY_QA_REPORT.md`.
121
+ ## Output
89
122
 
90
- Include:
123
+ No report file. Emit a concise in-session summary:
91
124
 
92
- - Scope: target URL/env, browser/tool, account type, build/version if visible, date.
93
- - Existing Playwright coverage: strengths, thin areas, skipped tests, viewport/browser matrix, mutation coverage.
94
- - Exploratory findings: steps, observed behavior, impact, why existing tests miss it, recommended test.
95
- - Breakpoint findings: exact viewports tested and boundary behavior.
96
- - Load-state findings: observed delays, blank/spinner/connecting states, suggested budgets/tests.
97
- - Mutation findings: data created, behavior observed, cleanup attempt, cleanup result, residue.
98
- - Missing Playwright tests to add: prioritized, concrete, and automatable.
99
- - Maintenance notes: selector scoping, fixture cleanup, flaky/stale-state risks.
125
+ - **Scope:** target URL/env, browser/tool, account type, build/version if visible, date.
126
+ - **Existing Playwright coverage:** strengths and thin areas observed during research.
127
+ - **Findings filed**, bucketed by type — bugs, usability suggestions, missing tests each with its **created or referenced ticket ref** and its **build-ready state** (`ready` vs `triage/backlog`).
128
+ - **Observed but not filed:** anything noticed but intentionally not ticketed, with why.
100
129
 
101
130
  ## Quality Bar
102
131
 
103
132
  - Be honest about what was and was not tested.
104
- - Distinguish user-visible bugs from missing automated coverage.
105
- - Prefer concrete examples over vague recommendations.
133
+ - Distinguish user-visible bugs from missing automated coverage — they map to different issue types (`Bug` vs `Task`).
134
+ - Prefer concrete, reproducible findings. Every ticket must stand alone for an implementer who was not in the session.
106
135
  - Do not claim cleanup succeeded unless verified.
107
136
  - Do not let broad locators pass against hidden/inactive content.
108
- - Preserve unrelated repo changes and keep report edits scoped.
137
+ - File missing-test tickets build-ready; file bug and usability tickets per the `ready` flag (default: backlog for human triage).
138
+ - Preserve unrelated repo changes.
@@ -19,6 +19,24 @@ performs the shared, ordered pipeline.
19
19
  run includes explicit external-write intent**.
20
20
  - **Dry run:** `/ingest --dry-run` — list the sources a full ingest would run; perform no writes.
21
21
 
22
+ ## Before ingesting — sync the branch (once per run)
23
+
24
+ Run this **once per ingest invocation, before any source is processed** (skip for `--dry-run`, which
25
+ writes nothing). The point is to ingest on top of fresh state, never stale state.
26
+
27
+ 1. **Resolve the default remote branch** — `gh repo view --json defaultBranchRef -q .defaultBranchRef.name`,
28
+ or `git remote show origin | sed -n 's/.*HEAD branch: //p'`, or the `origin/HEAD` symbolic ref. If
29
+ the repo has no remote, note "no remote — skipping branch sync" and proceed.
30
+ 2. **Fetch** — `git fetch <remote>` to update remote-tracking refs.
31
+ 3. **Bring the working branch up to date with the default remote branch** so the ingest lands on
32
+ current state:
33
+ - On the default branch → fast-forward to `<remote>/<default>` (`git pull --ff-only`).
34
+ - On a non-default branch → merge or rebase `<remote>/<default>` in (per the project's convention)
35
+ so the branch is not behind the default.
36
+ 4. If the sync cannot complete cleanly (merge conflict, diverged history, or a dirty tree that would
37
+ conflict), **stop and surface it** rather than ingesting on top of stale or conflicted state — the
38
+ human resolves and re-runs. **Never discard unrelated working-tree changes** to force a sync.
39
+
22
40
  ## The ordered pipeline (per source) — never reorder
23
41
  1. **Connector** validates (tenant guard + auth), reads its state cursor (first-run vs incremental),
24
42
  fetches read-only, and writes a sanitized **source note** under `wiki/sources/<system>/` plus run
@@ -29,9 +47,20 @@ performs the shared, ordered pipeline.
29
47
  4. **Log**: append a `wiki/log.md` entry (fixed operation vocabulary).
30
48
  5. **Verify**: `git diff --check`, secret/tenant/contamination scans, touched-file guard.
31
49
  6. **State**: advance the connector's `wiki/state/<system>/*.json` cursor — only now, after 1–5 pass.
32
- 7. **Commit/PR**: per `config.git` policy. `external-write` runs and sensitive content never auto-merge.
50
+ 7. **Commit/PR**: commit only the ingestion changes per `config.git` policy. If the ingest started on
51
+ the default branch, create a dedicated ingestion branch first — never commit ingestion straight to
52
+ the default. Push the branch and **open a PR targeting the default remote branch** (via the host's
53
+ PR mechanism — e.g. `gh pr create --base <default>`), then **enable auto-merge when possible**
54
+ (`gh pr merge --auto`, or the host's equivalent). `external-write` runs and sensitive content are
55
+ the exception — open the PR **without** auto-merge so a human reviews them before it lands. If
56
+ auto-merge cannot be enabled (the host doesn't support it, or branch protection forbids it), leave
57
+ the PR open and note that a human must merge.
33
58
 
34
59
  ## Rules
60
+ - **Bookend every ingest with git hygiene:** sync the branch with the default remote branch *before*
61
+ writing (see "Before ingesting"), and *after* a successful ingest open a PR to the default remote
62
+ branch with auto-merge enabled when possible — never auto-merging `external-write`/sensitive runs.
63
+ `--dry-run` does neither (it writes nothing).
35
64
  - Source-note-before-synthesis; state advanced **only** after verification.
36
65
  - Project-scoped only; memory ingestion never touches global/Codex-global stores.
37
66
  - Respect `sourceRetention` and `sensitivity`; do not invent facts.