@codyswann/lisa 2.173.1 → 2.173.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/agents/jira-agent.md +3 -2
- package/plugins/lisa/skills/jira-evidence/SKILL.md +3 -3
- package/plugins/lisa/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa/skills/jira-sync/SKILL.md +1 -1
- package/plugins/lisa/skills/tracker-evidence/SKILL.md +1 -1
- package/plugins/lisa-agy/agents/jira-agent.md +3 -2
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/jira-evidence/SKILL.md +3 -3
- package/plugins/lisa-agy/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-agy/skills/jira-sync/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/tracker-evidence/SKILL.md +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/agents/jira-agent.agent.md +3 -2
- package/plugins/lisa-copilot/skills/jira-evidence/SKILL.md +3 -3
- package/plugins/lisa-copilot/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-copilot/skills/jira-sync/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/tracker-evidence/SKILL.md +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/agents/jira-agent.md +3 -2
- package/plugins/lisa-cursor/skills/jira-evidence/SKILL.md +3 -3
- package/plugins/lisa-cursor/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-cursor/skills/jira-sync/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/tracker-evidence/SKILL.md +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/commands/exploratory-qa.md +2 -2
- package/plugins/lisa-expo/skills/exploratory-qa/SKILL.md +16 -7
- package/plugins/lisa-expo/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/lisa-expo/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-expo-agy/commands/exploratory-qa.md +2 -2
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-agy/skills/exploratory-qa/SKILL.md +16 -7
- package/plugins/lisa-expo-agy/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/lisa-expo-agy/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/commands/exploratory-qa.md +2 -2
- package/plugins/lisa-expo-copilot/skills/exploratory-qa/SKILL.md +16 -7
- package/plugins/lisa-expo-copilot/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/lisa-expo-copilot/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/commands/exploratory-qa.md +2 -2
- package/plugins/lisa-expo-cursor/skills/exploratory-qa/SKILL.md +16 -7
- package/plugins/lisa-expo-cursor/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/lisa-expo-cursor/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/commands/exploratory-qa.md +2 -2
- package/plugins/lisa-harper-fabric/skills/exploratory-qa/SKILL.md +16 -7
- package/plugins/lisa-harper-fabric-agy/commands/exploratory-qa.md +2 -2
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/skills/exploratory-qa/SKILL.md +16 -7
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/commands/exploratory-qa.md +2 -2
- package/plugins/lisa-harper-fabric-copilot/skills/exploratory-qa/SKILL.md +16 -7
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/commands/exploratory-qa.md +2 -2
- package/plugins/lisa-harper-fabric-cursor/skills/exploratory-qa/SKILL.md +16 -7
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/commands/exploratory-qa.md +2 -2
- package/plugins/lisa-rails/skills/exploratory-qa/SKILL.md +16 -7
- package/plugins/lisa-rails/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/lisa-rails/skills/jira-evidence/agents/openai.yaml +2 -2
- package/plugins/lisa-rails/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-rails-agy/commands/exploratory-qa.md +2 -2
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-agy/skills/exploratory-qa/SKILL.md +16 -7
- package/plugins/lisa-rails-agy/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/lisa-rails-agy/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/commands/exploratory-qa.md +2 -2
- package/plugins/lisa-rails-copilot/skills/exploratory-qa/SKILL.md +16 -7
- package/plugins/lisa-rails-copilot/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/lisa-rails-copilot/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/commands/exploratory-qa.md +2 -2
- package/plugins/lisa-rails-cursor/skills/exploratory-qa/SKILL.md +16 -7
- package/plugins/lisa-rails-cursor/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/lisa-rails-cursor/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/agents/jira-agent.md +3 -2
- package/plugins/src/base/skills/jira-evidence/SKILL.md +3 -3
- package/plugins/src/base/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/src/base/skills/jira-sync/SKILL.md +1 -1
- package/plugins/src/base/skills/tracker-evidence/SKILL.md +1 -1
- package/plugins/src/expo/commands/exploratory-qa.md +2 -2
- package/plugins/src/expo/skills/exploratory-qa/SKILL.md +16 -7
- package/plugins/src/expo/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/src/expo/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/src/harper-fabric/commands/exploratory-qa.md +2 -2
- package/plugins/src/harper-fabric/skills/exploratory-qa/SKILL.md +16 -7
- package/plugins/src/rails/commands/exploratory-qa.md +2 -2
- package/plugins/src/rails/skills/exploratory-qa/SKILL.md +16 -7
- package/plugins/src/rails/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/src/rails/skills/jira-evidence/scripts/post-evidence.sh +21 -4
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: exploratory-qa
|
|
3
|
-
description: First-time-user exploratory QA walkthrough for web apps that FEEDS THE LIFECYCLE. Use when asked to experience an app the way a brand-new human user would — landing cold on the home page and clicking through to find anything confusing, broken, or hard to understand (unclear purpose or audience, human-facing jargon, contextless extracted data, machine-style labels, raw dates/enums, sparse data with no explanation, wrong control semantics, slow or unclear loads, late meaningful content, cramped or cut-off UI, inconsistent/non-standard UX, awkward scroll behavior, unclear affordances, dead-end flows that strand a user — e.g. a login page with no way to register or recover a password, or a primary action that drops the user into an incomplete/unsatisfiable state with no way to finish) across all breakpoints. Instead of writing a report file, it files every finding as a tracked work item via lisa:tracker-write (bugs and usability/UX issues). A `ready` parameter controls whether those tickets are created build-ready (auto-picked-up by lisa:intake) or left in the backlog for human triage (default). For gaps in the automated Playwright test suite, use the e2e-coverage-gaps skill instead.
|
|
3
|
+
description: First-time-user exploratory QA walkthrough for web apps that FEEDS THE LIFECYCLE. Use when asked to experience an app the way a brand-new human user would — opening it in a real browser or browser automation session, landing cold on the home page, and clicking/typing/selecting through visible controls to find anything confusing, broken, or hard to understand (unclear purpose or audience, human-facing jargon, contextless extracted data, machine-style labels, raw dates/enums, sparse data with no explanation, wrong control semantics, slow or unclear loads, late meaningful content, cramped or cut-off UI, inconsistent/non-standard UX, awkward scroll behavior, unclear affordances, dead-end flows that strand a user — e.g. a login page with no way to register or recover a password, or a primary action that drops the user into an incomplete/unsatisfiable state with no way to finish) across all breakpoints. Static route scans, HTTP fetches, screenshots alone, or console/network checks alone are not sufficient exploratory QA evidence. Instead of writing a report file, it files every finding as a tracked work item via lisa:tracker-write (bugs and usability/UX issues). A `ready` parameter controls whether those tickets are created build-ready (auto-picked-up by lisa:intake) or left in the backlog for human triage (default). For gaps in the automated Playwright test suite, use the e2e-coverage-gaps skill instead.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Exploratory QA
|
|
7
7
|
|
|
8
8
|
## Overview
|
|
9
9
|
|
|
10
|
-
Experience the app the way a **brand-new human user** would:
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
Experience the app the way a **brand-new human user** would: open it in a real browser or browser
|
|
11
|
+
automation tool, land cold on the home page with no prior knowledge, then click through and actually
|
|
12
|
+
try to use it — just like a real person. The goal is to surface anything **confusing, broken, or hard
|
|
13
|
+
to understand**, and to do so at **every breakpoint**.
|
|
13
14
|
|
|
14
15
|
This is a usability/experience pass, **not** a test-coverage audit. It does not look at the Playwright
|
|
15
16
|
suite or hunt for coverage gaps — for that, use the `e2e-coverage-gaps` skill. Here, every finding is
|
|
16
|
-
filed as a tracked work item so it enters the Lisa lifecycle — no static report file.
|
|
17
|
+
filed as a tracked work item so it enters the Lisa lifecycle — no static report file. Static route
|
|
18
|
+
scans, HTTP fetches, screenshots alone, and console/network checks alone do not count as exploratory
|
|
19
|
+
QA evidence because they do not prove a person could use the visible UI.
|
|
17
20
|
|
|
18
21
|
## Parameters
|
|
19
22
|
|
|
@@ -29,6 +32,9 @@ filed as a tracked work item so it enters the Lisa lifecycle — no static repor
|
|
|
29
32
|
|
|
30
33
|
- Identify the target environment, account type, and browser requirement, and read the `ready` flag
|
|
31
34
|
(default `false`).
|
|
35
|
+
- Open the target in a real browser or browser automation tool before drawing conclusions. Use static
|
|
36
|
+
code inspection, route lists, network/console logs, and screenshots only as supporting evidence, not
|
|
37
|
+
as a substitute for live browser interaction.
|
|
32
38
|
- **Confirm the tracker is configured.** Findings are filed as tickets, so read `tracker` from
|
|
33
39
|
`.lisa.config.json` (local overrides global). If it is unset, stop and report that the tracker must
|
|
34
40
|
be configured (via `/lisa:setup:jira` / `:github` / `:linear`) before exploratory QA can file
|
|
@@ -49,8 +55,11 @@ filed as a tracked work item so it enters the Lisa lifecycle — no static repor
|
|
|
49
55
|
|
|
50
56
|
### 3. Use It Like a Human
|
|
51
57
|
|
|
52
|
-
Click through the visible paths and actually attempt real tasks — a first-time user
|
|
53
|
-
mistakes, and tries the obvious thing.
|
|
58
|
+
Click through the visible paths and actually attempt real tasks in the browser — a first-time user
|
|
59
|
+
explores, makes mistakes, and tries the obvious thing. When a page exposes forms, filters, menus,
|
|
60
|
+
links, buttons, selects, tabs, or other visible controls, click, type, select, submit, clear,
|
|
61
|
+
navigate, and otherwise exercise representative controls when safe; then verify the resulting UI or
|
|
62
|
+
data state in the browser. Cover at least these dimensions unless the user narrows scope:
|
|
54
63
|
|
|
55
64
|
- **Comprehension & labeling:** human-facing copy must sound like something a normal first-time user
|
|
56
65
|
would understand. Flag machine-style or developer labels shown to users (raw IDs, enum keys,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jira-evidence
|
|
3
|
-
description: "Upload screenshots to GitHub pr-assets release, update PR description with evidence, upload attachments to JIRA, post wiki markup comment, and move ticket to
|
|
3
|
+
description: "Upload screenshots to GitHub pr-assets release, update PR description with evidence, upload attachments to JIRA, post wiki markup comment, and move ticket to the configured review status only when `jira.workflow.review` is set (otherwise leave it in `claimed`). Reusable by any skill that captures screenshots and generates evidence/comment.txt + evidence/comment.md."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# JIRA Evidence Posting
|
|
@@ -44,7 +44,7 @@ bash .claude/skills/jira-evidence/scripts/post-evidence.sh PROJ-123 ./evidence 4
|
|
|
44
44
|
3. **Update PR description** — Replaces or appends the `## Evidence` section in the PR body using `gh pr edit`
|
|
45
45
|
4. **Upload JIRA attachments** — Uploads screenshots via REST API v3 so `!filename.png!` wiki markup renders inline
|
|
46
46
|
5. **Post JIRA comment** — Posts `comment.txt` as a new comment via REST API v2 (wiki markup with embedded images)
|
|
47
|
-
6. **Move ticket to
|
|
47
|
+
6. **Move ticket to the configured review status** — Resolves `jira.workflow.review` (or the `jira.workflow.code_review` alias) from `.lisa.config.json` / `.lisa.config.local.json` and transitions via `jira issue move`. `review` is optional; when unset, the ticket stays in `claimed` and this step is skipped. Never transition to a status not named in `config.jira.workflow`. If the configured status is not a valid transition from the current state, log a warning and skip.
|
|
48
48
|
|
|
49
49
|
## Screenshot Naming Convention
|
|
50
50
|
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
# 2. Updates the GitHub PR description with evidence/comment.md
|
|
15
15
|
# 3. Uploads image evidence as JIRA attachments
|
|
16
16
|
# 4. Posts/updates the JIRA comment with evidence/comment.txt
|
|
17
|
-
# 5. Moves the JIRA ticket to
|
|
17
|
+
# 5. Moves the JIRA ticket to the configured jira.workflow.review status
|
|
18
|
+
# (skipped entirely when review is unconfigured — stays in claimed)
|
|
18
19
|
|
|
19
20
|
set -euo pipefail
|
|
20
21
|
|
|
@@ -152,10 +153,26 @@ else
|
|
|
152
153
|
echo "$RESP" | grep -v "HTTP_CODE:" | head -3
|
|
153
154
|
fi
|
|
154
155
|
|
|
155
|
-
# ── Step 5: Move ticket to
|
|
156
|
+
# ── Step 5: Move ticket to the configured review status (if any) ────────────
|
|
157
|
+
# A transition may target only a status named in .lisa.config.json jira.workflow.
|
|
158
|
+
# `review` is OPTIONAL: when it is not configured, the build lifecycle stays in
|
|
159
|
+
# `claimed` until `done` — do NOT invent a transition. (See config-resolution.md.)
|
|
160
|
+
REVIEW=""
|
|
161
|
+
if [ -f .lisa.config.json ]; then
|
|
162
|
+
_cfg=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.json 2>/dev/null)
|
|
163
|
+
[ -n "$_cfg" ] && REVIEW="$_cfg"
|
|
164
|
+
fi
|
|
165
|
+
if [ -f .lisa.config.local.json ]; then
|
|
166
|
+
_local=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.local.json 2>/dev/null)
|
|
167
|
+
[ -n "$_local" ] && REVIEW="$_local"
|
|
168
|
+
fi
|
|
156
169
|
echo ""
|
|
157
|
-
|
|
158
|
-
|
|
170
|
+
if [ -n "$REVIEW" ]; then
|
|
171
|
+
echo "==> Moving $TICKET_ID to $REVIEW..."
|
|
172
|
+
jira issue move "$TICKET_ID" "$REVIEW" 2>&1 && echo " ✓ Ticket moved to $REVIEW" || echo " WARNING: Could not move ticket to $REVIEW (not a valid transition?); leaving in current status" >&2
|
|
173
|
+
else
|
|
174
|
+
echo "==> No jira.workflow.review configured; leaving $TICKET_ID in its current (claimed) status per config-resolution."
|
|
175
|
+
fi
|
|
159
176
|
|
|
160
177
|
echo ""
|
|
161
178
|
echo "==> Done!"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Run a first-time-user exploratory QA walkthrough: experience the app like a brand-new human user, clicking through to find anything confusing, broken, or hard to understand (human-facing jargon, contextless extracted data, machine-style labels, slow or unclear loads, late meaningful content, cramped or cut-off UI, inconsistent UX, awkward scroll behavior) across all breakpoints, and file each finding (bug or usability issue) as a tracked work item via lisa:tracker-write. The optional ready flag marks tickets build-ready (auto-picked-up by lisa:intake) or leaves them in the backlog for human triage (default). For gaps in the automated Playwright suite, use e2e-coverage-gaps instead."
|
|
2
|
+
description: "Run a first-time-user exploratory QA walkthrough: experience the app like a brand-new human user in a real browser or browser automation session, clicking/typing/selecting through visible controls to find anything confusing, broken, or hard to understand (human-facing jargon, contextless extracted data, machine-style labels, slow or unclear loads, late meaningful content, cramped or cut-off UI, inconsistent UX, awkward scroll behavior) across all breakpoints, and file each finding (bug or usability issue) as a tracked work item via lisa:tracker-write. Static scans, HTTP fetches, screenshots alone, or console/network checks alone are not sufficient. The optional ready flag marks tickets build-ready (auto-picked-up by lisa:intake) or leaves them in the backlog for human triage (default). For gaps in the automated Playwright suite, use e2e-coverage-gaps 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:exploratory-qa skill to experience the app like a brand-new first-time user — landing cold on the home page
|
|
7
|
+
Use the /lisa-expo:exploratory-qa skill to experience the app like a brand-new first-time user in a real browser or browser automation session — landing cold on the home page, clicking/typing/selecting through visible controls, and verifying resulting UI state across all breakpoints — and file each finding (bugs, usability/clarity issues) as a tracked work item via lisa:tracker-write, build-ready or in triage per the ready flag (default: triage). Static scans, HTTP fetches, screenshots alone, or console/network checks alone are not enough. For automated Playwright coverage gaps, use /lisa-expo:e2e-coverage-gaps. $ARGUMENTS
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: exploratory-qa
|
|
3
|
-
description: First-time-user exploratory QA walkthrough for web apps that FEEDS THE LIFECYCLE. Use when asked to experience an app the way a brand-new human user would — landing cold on the home page and clicking through to find anything confusing, broken, or hard to understand (unclear purpose or audience, human-facing jargon, contextless extracted data, machine-style labels, raw dates/enums, sparse data with no explanation, wrong control semantics, slow or unclear loads, late meaningful content, cramped or cut-off UI, inconsistent/non-standard UX, awkward scroll behavior, unclear affordances, dead-end flows that strand a user — e.g. a login page with no way to register or recover a password, or a primary action that drops the user into an incomplete/unsatisfiable state with no way to finish) across all breakpoints. Instead of writing a report file, it files every finding as a tracked work item via lisa:tracker-write (bugs and usability/UX issues). A `ready` parameter controls whether those tickets are created build-ready (auto-picked-up by lisa:intake) or left in the backlog for human triage (default). For gaps in the automated Playwright test suite, use the e2e-coverage-gaps skill instead.
|
|
3
|
+
description: First-time-user exploratory QA walkthrough for web apps that FEEDS THE LIFECYCLE. Use when asked to experience an app the way a brand-new human user would — opening it in a real browser or browser automation session, landing cold on the home page, and clicking/typing/selecting through visible controls to find anything confusing, broken, or hard to understand (unclear purpose or audience, human-facing jargon, contextless extracted data, machine-style labels, raw dates/enums, sparse data with no explanation, wrong control semantics, slow or unclear loads, late meaningful content, cramped or cut-off UI, inconsistent/non-standard UX, awkward scroll behavior, unclear affordances, dead-end flows that strand a user — e.g. a login page with no way to register or recover a password, or a primary action that drops the user into an incomplete/unsatisfiable state with no way to finish) across all breakpoints. Static route scans, HTTP fetches, screenshots alone, or console/network checks alone are not sufficient exploratory QA evidence. Instead of writing a report file, it files every finding as a tracked work item via lisa:tracker-write (bugs and usability/UX issues). A `ready` parameter controls whether those tickets are created build-ready (auto-picked-up by lisa:intake) or left in the backlog for human triage (default). For gaps in the automated Playwright test suite, use the e2e-coverage-gaps skill instead.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Exploratory QA
|
|
7
7
|
|
|
8
8
|
## Overview
|
|
9
9
|
|
|
10
|
-
Experience the app the way a **brand-new human user** would:
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
Experience the app the way a **brand-new human user** would: open it in a real browser or browser
|
|
11
|
+
automation tool, land cold on the home page with no prior knowledge, then click through and actually
|
|
12
|
+
try to use it — just like a real person. The goal is to surface anything **confusing, broken, or hard
|
|
13
|
+
to understand**, and to do so at **every breakpoint**.
|
|
13
14
|
|
|
14
15
|
This is a usability/experience pass, **not** a test-coverage audit. It does not look at the Playwright
|
|
15
16
|
suite or hunt for coverage gaps — for that, use the `e2e-coverage-gaps` skill. Here, every finding is
|
|
16
|
-
filed as a tracked work item so it enters the Lisa lifecycle — no static report file.
|
|
17
|
+
filed as a tracked work item so it enters the Lisa lifecycle — no static report file. Static route
|
|
18
|
+
scans, HTTP fetches, screenshots alone, and console/network checks alone do not count as exploratory
|
|
19
|
+
QA evidence because they do not prove a person could use the visible UI.
|
|
17
20
|
|
|
18
21
|
## Parameters
|
|
19
22
|
|
|
@@ -29,6 +32,9 @@ filed as a tracked work item so it enters the Lisa lifecycle — no static repor
|
|
|
29
32
|
|
|
30
33
|
- Identify the target environment, account type, and browser requirement, and read the `ready` flag
|
|
31
34
|
(default `false`).
|
|
35
|
+
- Open the target in a real browser or browser automation tool before drawing conclusions. Use static
|
|
36
|
+
code inspection, route lists, network/console logs, and screenshots only as supporting evidence, not
|
|
37
|
+
as a substitute for live browser interaction.
|
|
32
38
|
- **Confirm the tracker is configured.** Findings are filed as tickets, so read `tracker` from
|
|
33
39
|
`.lisa.config.json` (local overrides global). If it is unset, stop and report that the tracker must
|
|
34
40
|
be configured (via `/lisa:setup:jira` / `:github` / `:linear`) before exploratory QA can file
|
|
@@ -49,8 +55,11 @@ filed as a tracked work item so it enters the Lisa lifecycle — no static repor
|
|
|
49
55
|
|
|
50
56
|
### 3. Use It Like a Human
|
|
51
57
|
|
|
52
|
-
Click through the visible paths and actually attempt real tasks — a first-time user
|
|
53
|
-
mistakes, and tries the obvious thing.
|
|
58
|
+
Click through the visible paths and actually attempt real tasks in the browser — a first-time user
|
|
59
|
+
explores, makes mistakes, and tries the obvious thing. When a page exposes forms, filters, menus,
|
|
60
|
+
links, buttons, selects, tabs, or other visible controls, click, type, select, submit, clear,
|
|
61
|
+
navigate, and otherwise exercise representative controls when safe; then verify the resulting UI or
|
|
62
|
+
data state in the browser. Cover at least these dimensions unless the user narrows scope:
|
|
54
63
|
|
|
55
64
|
- **Comprehension & labeling:** human-facing copy must sound like something a normal first-time user
|
|
56
65
|
would understand. Flag machine-style or developer labels shown to users (raw IDs, enum keys,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jira-evidence
|
|
3
|
-
description: "Upload screenshots to GitHub pr-assets release, update PR description with evidence, upload attachments to JIRA, post wiki markup comment, and move ticket to
|
|
3
|
+
description: "Upload screenshots to GitHub pr-assets release, update PR description with evidence, upload attachments to JIRA, post wiki markup comment, and move ticket to the configured review status only when `jira.workflow.review` is set (otherwise leave it in `claimed`). Reusable by any skill that captures screenshots and generates evidence/comment.txt + evidence/comment.md."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# JIRA Evidence Posting
|
|
@@ -44,7 +44,7 @@ bash .claude/skills/jira-evidence/scripts/post-evidence.sh PROJ-123 ./evidence 4
|
|
|
44
44
|
3. **Update PR description** — Replaces or appends the `## Evidence` section in the PR body using `gh pr edit`
|
|
45
45
|
4. **Upload JIRA attachments** — Uploads screenshots via REST API v3 so `!filename.png!` wiki markup renders inline
|
|
46
46
|
5. **Post JIRA comment** — Posts `comment.txt` as a new comment via REST API v2 (wiki markup with embedded images)
|
|
47
|
-
6. **Move ticket to
|
|
47
|
+
6. **Move ticket to the configured review status** — Resolves `jira.workflow.review` (or the `jira.workflow.code_review` alias) from `.lisa.config.json` / `.lisa.config.local.json` and transitions via `jira issue move`. `review` is optional; when unset, the ticket stays in `claimed` and this step is skipped. Never transition to a status not named in `config.jira.workflow`. If the configured status is not a valid transition from the current state, log a warning and skip.
|
|
48
48
|
|
|
49
49
|
## Screenshot Naming Convention
|
|
50
50
|
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
# 2. Updates the GitHub PR description with evidence/comment.md
|
|
15
15
|
# 3. Uploads image evidence as JIRA attachments
|
|
16
16
|
# 4. Posts/updates the JIRA comment with evidence/comment.txt
|
|
17
|
-
# 5. Moves the JIRA ticket to
|
|
17
|
+
# 5. Moves the JIRA ticket to the configured jira.workflow.review status
|
|
18
|
+
# (skipped entirely when review is unconfigured — stays in claimed)
|
|
18
19
|
|
|
19
20
|
set -euo pipefail
|
|
20
21
|
|
|
@@ -152,10 +153,26 @@ else
|
|
|
152
153
|
echo "$RESP" | grep -v "HTTP_CODE:" | head -3
|
|
153
154
|
fi
|
|
154
155
|
|
|
155
|
-
# ── Step 5: Move ticket to
|
|
156
|
+
# ── Step 5: Move ticket to the configured review status (if any) ────────────
|
|
157
|
+
# A transition may target only a status named in .lisa.config.json jira.workflow.
|
|
158
|
+
# `review` is OPTIONAL: when it is not configured, the build lifecycle stays in
|
|
159
|
+
# `claimed` until `done` — do NOT invent a transition. (See config-resolution.md.)
|
|
160
|
+
REVIEW=""
|
|
161
|
+
if [ -f .lisa.config.json ]; then
|
|
162
|
+
_cfg=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.json 2>/dev/null)
|
|
163
|
+
[ -n "$_cfg" ] && REVIEW="$_cfg"
|
|
164
|
+
fi
|
|
165
|
+
if [ -f .lisa.config.local.json ]; then
|
|
166
|
+
_local=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.local.json 2>/dev/null)
|
|
167
|
+
[ -n "$_local" ] && REVIEW="$_local"
|
|
168
|
+
fi
|
|
156
169
|
echo ""
|
|
157
|
-
|
|
158
|
-
|
|
170
|
+
if [ -n "$REVIEW" ]; then
|
|
171
|
+
echo "==> Moving $TICKET_ID to $REVIEW..."
|
|
172
|
+
jira issue move "$TICKET_ID" "$REVIEW" 2>&1 && echo " ✓ Ticket moved to $REVIEW" || echo " WARNING: Could not move ticket to $REVIEW (not a valid transition?); leaving in current status" >&2
|
|
173
|
+
else
|
|
174
|
+
echo "==> No jira.workflow.review configured; leaving $TICKET_ID in its current (claimed) status per config-resolution."
|
|
175
|
+
fi
|
|
159
176
|
|
|
160
177
|
echo ""
|
|
161
178
|
echo "==> Done!"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Run a first-time-user exploratory QA walkthrough: experience the app like a brand-new human user, clicking through to find anything confusing, broken, or hard to understand (human-facing jargon, contextless extracted data, machine-style labels, slow or unclear loads, late meaningful content, cramped or cut-off UI, inconsistent UX, awkward scroll behavior) across all breakpoints, and file each finding (bug or usability issue) as a tracked work item via lisa:tracker-write. The optional ready flag marks tickets build-ready (auto-picked-up by lisa:intake) or leaves them in the backlog for human triage (default). For gaps in the automated Playwright suite, use e2e-coverage-gaps instead."
|
|
2
|
+
description: "Run a first-time-user exploratory QA walkthrough: experience the app like a brand-new human user in a real browser or browser automation session, clicking/typing/selecting through visible controls to find anything confusing, broken, or hard to understand (human-facing jargon, contextless extracted data, machine-style labels, slow or unclear loads, late meaningful content, cramped or cut-off UI, inconsistent UX, awkward scroll behavior) across all breakpoints, and file each finding (bug or usability issue) as a tracked work item via lisa:tracker-write. Static scans, HTTP fetches, screenshots alone, or console/network checks alone are not sufficient. The optional ready flag marks tickets build-ready (auto-picked-up by lisa:intake) or leaves them in the backlog for human triage (default). For gaps in the automated Playwright suite, use e2e-coverage-gaps 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:exploratory-qa skill to experience the app like a brand-new first-time user — landing cold on the home page
|
|
7
|
+
Use the /lisa-expo:exploratory-qa skill to experience the app like a brand-new first-time user in a real browser or browser automation session — landing cold on the home page, clicking/typing/selecting through visible controls, and verifying resulting UI state across all breakpoints — and file each finding (bugs, usability/clarity issues) as a tracked work item via lisa:tracker-write, build-ready or in triage per the ready flag (default: triage). Static scans, HTTP fetches, screenshots alone, or console/network checks alone are not enough. For automated Playwright coverage gaps, use /lisa-expo:e2e-coverage-gaps. $ARGUMENTS
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: exploratory-qa
|
|
3
|
-
description: First-time-user exploratory QA walkthrough for web apps that FEEDS THE LIFECYCLE. Use when asked to experience an app the way a brand-new human user would — landing cold on the home page and clicking through to find anything confusing, broken, or hard to understand (unclear purpose or audience, human-facing jargon, contextless extracted data, machine-style labels, raw dates/enums, sparse data with no explanation, wrong control semantics, slow or unclear loads, late meaningful content, cramped or cut-off UI, inconsistent/non-standard UX, awkward scroll behavior, unclear affordances, dead-end flows that strand a user — e.g. a login page with no way to register or recover a password, or a primary action that drops the user into an incomplete/unsatisfiable state with no way to finish) across all breakpoints. Instead of writing a report file, it files every finding as a tracked work item via lisa:tracker-write (bugs and usability/UX issues). A `ready` parameter controls whether those tickets are created build-ready (auto-picked-up by lisa:intake) or left in the backlog for human triage (default). For gaps in the automated Playwright test suite, use the e2e-coverage-gaps skill instead.
|
|
3
|
+
description: First-time-user exploratory QA walkthrough for web apps that FEEDS THE LIFECYCLE. Use when asked to experience an app the way a brand-new human user would — opening it in a real browser or browser automation session, landing cold on the home page, and clicking/typing/selecting through visible controls to find anything confusing, broken, or hard to understand (unclear purpose or audience, human-facing jargon, contextless extracted data, machine-style labels, raw dates/enums, sparse data with no explanation, wrong control semantics, slow or unclear loads, late meaningful content, cramped or cut-off UI, inconsistent/non-standard UX, awkward scroll behavior, unclear affordances, dead-end flows that strand a user — e.g. a login page with no way to register or recover a password, or a primary action that drops the user into an incomplete/unsatisfiable state with no way to finish) across all breakpoints. Static route scans, HTTP fetches, screenshots alone, or console/network checks alone are not sufficient exploratory QA evidence. Instead of writing a report file, it files every finding as a tracked work item via lisa:tracker-write (bugs and usability/UX issues). A `ready` parameter controls whether those tickets are created build-ready (auto-picked-up by lisa:intake) or left in the backlog for human triage (default). For gaps in the automated Playwright test suite, use the e2e-coverage-gaps skill instead.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Exploratory QA
|
|
7
7
|
|
|
8
8
|
## Overview
|
|
9
9
|
|
|
10
|
-
Experience the app the way a **brand-new human user** would:
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
Experience the app the way a **brand-new human user** would: open it in a real browser or browser
|
|
11
|
+
automation tool, land cold on the home page with no prior knowledge, then click through and actually
|
|
12
|
+
try to use it — just like a real person. The goal is to surface anything **confusing, broken, or hard
|
|
13
|
+
to understand**, and to do so at **every breakpoint**.
|
|
13
14
|
|
|
14
15
|
This is a usability/experience pass, **not** a test-coverage audit. It does not look at the Playwright
|
|
15
16
|
suite or hunt for coverage gaps — for that, use the `e2e-coverage-gaps` skill. Here, every finding is
|
|
16
|
-
filed as a tracked work item so it enters the Lisa lifecycle — no static report file.
|
|
17
|
+
filed as a tracked work item so it enters the Lisa lifecycle — no static report file. Static route
|
|
18
|
+
scans, HTTP fetches, screenshots alone, and console/network checks alone do not count as exploratory
|
|
19
|
+
QA evidence because they do not prove a person could use the visible UI.
|
|
17
20
|
|
|
18
21
|
## Parameters
|
|
19
22
|
|
|
@@ -29,6 +32,9 @@ filed as a tracked work item so it enters the Lisa lifecycle — no static repor
|
|
|
29
32
|
|
|
30
33
|
- Identify the target environment, account type, and browser requirement, and read the `ready` flag
|
|
31
34
|
(default `false`).
|
|
35
|
+
- Open the target in a real browser or browser automation tool before drawing conclusions. Use static
|
|
36
|
+
code inspection, route lists, network/console logs, and screenshots only as supporting evidence, not
|
|
37
|
+
as a substitute for live browser interaction.
|
|
32
38
|
- **Confirm the tracker is configured.** Findings are filed as tickets, so read `tracker` from
|
|
33
39
|
`.lisa.config.json` (local overrides global). If it is unset, stop and report that the tracker must
|
|
34
40
|
be configured (via `/lisa:setup:jira` / `:github` / `:linear`) before exploratory QA can file
|
|
@@ -49,8 +55,11 @@ filed as a tracked work item so it enters the Lisa lifecycle — no static repor
|
|
|
49
55
|
|
|
50
56
|
### 3. Use It Like a Human
|
|
51
57
|
|
|
52
|
-
Click through the visible paths and actually attempt real tasks — a first-time user
|
|
53
|
-
mistakes, and tries the obvious thing.
|
|
58
|
+
Click through the visible paths and actually attempt real tasks in the browser — a first-time user
|
|
59
|
+
explores, makes mistakes, and tries the obvious thing. When a page exposes forms, filters, menus,
|
|
60
|
+
links, buttons, selects, tabs, or other visible controls, click, type, select, submit, clear,
|
|
61
|
+
navigate, and otherwise exercise representative controls when safe; then verify the resulting UI or
|
|
62
|
+
data state in the browser. Cover at least these dimensions unless the user narrows scope:
|
|
54
63
|
|
|
55
64
|
- **Comprehension & labeling:** human-facing copy must sound like something a normal first-time user
|
|
56
65
|
would understand. Flag machine-style or developer labels shown to users (raw IDs, enum keys,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jira-evidence
|
|
3
|
-
description: "Upload screenshots to GitHub pr-assets release, update PR description with evidence, upload attachments to JIRA, post wiki markup comment, and move ticket to
|
|
3
|
+
description: "Upload screenshots to GitHub pr-assets release, update PR description with evidence, upload attachments to JIRA, post wiki markup comment, and move ticket to the configured review status only when `jira.workflow.review` is set (otherwise leave it in `claimed`). Reusable by any skill that captures screenshots and generates evidence/comment.txt + evidence/comment.md."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# JIRA Evidence Posting
|
|
@@ -44,7 +44,7 @@ bash .claude/skills/jira-evidence/scripts/post-evidence.sh PROJ-123 ./evidence 4
|
|
|
44
44
|
3. **Update PR description** — Replaces or appends the `## Evidence` section in the PR body using `gh pr edit`
|
|
45
45
|
4. **Upload JIRA attachments** — Uploads screenshots via REST API v3 so `!filename.png!` wiki markup renders inline
|
|
46
46
|
5. **Post JIRA comment** — Posts `comment.txt` as a new comment via REST API v2 (wiki markup with embedded images)
|
|
47
|
-
6. **Move ticket to
|
|
47
|
+
6. **Move ticket to the configured review status** — Resolves `jira.workflow.review` (or the `jira.workflow.code_review` alias) from `.lisa.config.json` / `.lisa.config.local.json` and transitions via `jira issue move`. `review` is optional; when unset, the ticket stays in `claimed` and this step is skipped. Never transition to a status not named in `config.jira.workflow`. If the configured status is not a valid transition from the current state, log a warning and skip.
|
|
48
48
|
|
|
49
49
|
## Screenshot Naming Convention
|
|
50
50
|
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
# 2. Updates the GitHub PR description with evidence/comment.md
|
|
15
15
|
# 3. Uploads image evidence as JIRA attachments
|
|
16
16
|
# 4. Posts/updates the JIRA comment with evidence/comment.txt
|
|
17
|
-
# 5. Moves the JIRA ticket to
|
|
17
|
+
# 5. Moves the JIRA ticket to the configured jira.workflow.review status
|
|
18
|
+
# (skipped entirely when review is unconfigured — stays in claimed)
|
|
18
19
|
|
|
19
20
|
set -euo pipefail
|
|
20
21
|
|
|
@@ -152,10 +153,26 @@ else
|
|
|
152
153
|
echo "$RESP" | grep -v "HTTP_CODE:" | head -3
|
|
153
154
|
fi
|
|
154
155
|
|
|
155
|
-
# ── Step 5: Move ticket to
|
|
156
|
+
# ── Step 5: Move ticket to the configured review status (if any) ────────────
|
|
157
|
+
# A transition may target only a status named in .lisa.config.json jira.workflow.
|
|
158
|
+
# `review` is OPTIONAL: when it is not configured, the build lifecycle stays in
|
|
159
|
+
# `claimed` until `done` — do NOT invent a transition. (See config-resolution.md.)
|
|
160
|
+
REVIEW=""
|
|
161
|
+
if [ -f .lisa.config.json ]; then
|
|
162
|
+
_cfg=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.json 2>/dev/null)
|
|
163
|
+
[ -n "$_cfg" ] && REVIEW="$_cfg"
|
|
164
|
+
fi
|
|
165
|
+
if [ -f .lisa.config.local.json ]; then
|
|
166
|
+
_local=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.local.json 2>/dev/null)
|
|
167
|
+
[ -n "$_local" ] && REVIEW="$_local"
|
|
168
|
+
fi
|
|
156
169
|
echo ""
|
|
157
|
-
|
|
158
|
-
|
|
170
|
+
if [ -n "$REVIEW" ]; then
|
|
171
|
+
echo "==> Moving $TICKET_ID to $REVIEW..."
|
|
172
|
+
jira issue move "$TICKET_ID" "$REVIEW" 2>&1 && echo " ✓ Ticket moved to $REVIEW" || echo " WARNING: Could not move ticket to $REVIEW (not a valid transition?); leaving in current status" >&2
|
|
173
|
+
else
|
|
174
|
+
echo "==> No jira.workflow.review configured; leaving $TICKET_ID in its current (claimed) status per config-resolution."
|
|
175
|
+
fi
|
|
159
176
|
|
|
160
177
|
echo ""
|
|
161
178
|
echo "==> Done!"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Run a first-time-user exploratory QA walkthrough: experience the app like a brand-new human user, clicking through to find anything confusing, broken, or hard to understand (human-facing jargon, contextless extracted data, machine-style labels, slow or unclear loads, late meaningful content, cramped or cut-off UI, inconsistent UX, awkward scroll behavior) across all breakpoints, and file each finding (bug or usability issue) as a tracked work item via lisa:tracker-write. The optional ready flag marks tickets build-ready (auto-picked-up by lisa:intake) or leaves them in the backlog for human triage (default). For gaps in the automated Playwright suite, use e2e-coverage-gaps instead."
|
|
2
|
+
description: "Run a first-time-user exploratory QA walkthrough: experience the app like a brand-new human user in a real browser or browser automation session, clicking/typing/selecting through visible controls to find anything confusing, broken, or hard to understand (human-facing jargon, contextless extracted data, machine-style labels, slow or unclear loads, late meaningful content, cramped or cut-off UI, inconsistent UX, awkward scroll behavior) across all breakpoints, and file each finding (bug or usability issue) as a tracked work item via lisa:tracker-write. Static scans, HTTP fetches, screenshots alone, or console/network checks alone are not sufficient. The optional ready flag marks tickets build-ready (auto-picked-up by lisa:intake) or leaves them in the backlog for human triage (default). For gaps in the automated Playwright suite, use e2e-coverage-gaps 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:exploratory-qa skill to experience the app like a brand-new first-time user — landing cold on the home page
|
|
7
|
+
Use the /lisa-expo:exploratory-qa skill to experience the app like a brand-new first-time user in a real browser or browser automation session — landing cold on the home page, clicking/typing/selecting through visible controls, and verifying resulting UI state across all breakpoints — and file each finding (bugs, usability/clarity issues) as a tracked work item via lisa:tracker-write, build-ready or in triage per the ready flag (default: triage). Static scans, HTTP fetches, screenshots alone, or console/network checks alone are not enough. For automated Playwright coverage gaps, use /lisa-expo:e2e-coverage-gaps. $ARGUMENTS
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: exploratory-qa
|
|
3
|
-
description: First-time-user exploratory QA walkthrough for web apps that FEEDS THE LIFECYCLE. Use when asked to experience an app the way a brand-new human user would — landing cold on the home page and clicking through to find anything confusing, broken, or hard to understand (unclear purpose or audience, human-facing jargon, contextless extracted data, machine-style labels, raw dates/enums, sparse data with no explanation, wrong control semantics, slow or unclear loads, late meaningful content, cramped or cut-off UI, inconsistent/non-standard UX, awkward scroll behavior, unclear affordances, dead-end flows that strand a user — e.g. a login page with no way to register or recover a password, or a primary action that drops the user into an incomplete/unsatisfiable state with no way to finish) across all breakpoints. Instead of writing a report file, it files every finding as a tracked work item via lisa:tracker-write (bugs and usability/UX issues). A `ready` parameter controls whether those tickets are created build-ready (auto-picked-up by lisa:intake) or left in the backlog for human triage (default). For gaps in the automated Playwright test suite, use the e2e-coverage-gaps skill instead.
|
|
3
|
+
description: First-time-user exploratory QA walkthrough for web apps that FEEDS THE LIFECYCLE. Use when asked to experience an app the way a brand-new human user would — opening it in a real browser or browser automation session, landing cold on the home page, and clicking/typing/selecting through visible controls to find anything confusing, broken, or hard to understand (unclear purpose or audience, human-facing jargon, contextless extracted data, machine-style labels, raw dates/enums, sparse data with no explanation, wrong control semantics, slow or unclear loads, late meaningful content, cramped or cut-off UI, inconsistent/non-standard UX, awkward scroll behavior, unclear affordances, dead-end flows that strand a user — e.g. a login page with no way to register or recover a password, or a primary action that drops the user into an incomplete/unsatisfiable state with no way to finish) across all breakpoints. Static route scans, HTTP fetches, screenshots alone, or console/network checks alone are not sufficient exploratory QA evidence. Instead of writing a report file, it files every finding as a tracked work item via lisa:tracker-write (bugs and usability/UX issues). A `ready` parameter controls whether those tickets are created build-ready (auto-picked-up by lisa:intake) or left in the backlog for human triage (default). For gaps in the automated Playwright test suite, use the e2e-coverage-gaps skill instead.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Exploratory QA
|
|
7
7
|
|
|
8
8
|
## Overview
|
|
9
9
|
|
|
10
|
-
Experience the app the way a **brand-new human user** would:
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
Experience the app the way a **brand-new human user** would: open it in a real browser or browser
|
|
11
|
+
automation tool, land cold on the home page with no prior knowledge, then click through and actually
|
|
12
|
+
try to use it — just like a real person. The goal is to surface anything **confusing, broken, or hard
|
|
13
|
+
to understand**, and to do so at **every breakpoint**.
|
|
13
14
|
|
|
14
15
|
This is a usability/experience pass, **not** a test-coverage audit. It does not look at the Playwright
|
|
15
16
|
suite or hunt for coverage gaps — for that, use the `e2e-coverage-gaps` skill. Here, every finding is
|
|
16
|
-
filed as a tracked work item so it enters the Lisa lifecycle — no static report file.
|
|
17
|
+
filed as a tracked work item so it enters the Lisa lifecycle — no static report file. Static route
|
|
18
|
+
scans, HTTP fetches, screenshots alone, and console/network checks alone do not count as exploratory
|
|
19
|
+
QA evidence because they do not prove a person could use the visible UI.
|
|
17
20
|
|
|
18
21
|
## Parameters
|
|
19
22
|
|
|
@@ -29,6 +32,9 @@ filed as a tracked work item so it enters the Lisa lifecycle — no static repor
|
|
|
29
32
|
|
|
30
33
|
- Identify the target environment, account type, and browser requirement, and read the `ready` flag
|
|
31
34
|
(default `false`).
|
|
35
|
+
- Open the target in a real browser or browser automation tool before drawing conclusions. Use static
|
|
36
|
+
code inspection, route lists, network/console logs, and screenshots only as supporting evidence, not
|
|
37
|
+
as a substitute for live browser interaction.
|
|
32
38
|
- **Confirm the tracker is configured.** Findings are filed as tickets, so read `tracker` from
|
|
33
39
|
`.lisa.config.json` (local overrides global). If it is unset, stop and report that the tracker must
|
|
34
40
|
be configured (via `/lisa:setup:jira` / `:github` / `:linear`) before exploratory QA can file
|
|
@@ -49,8 +55,11 @@ filed as a tracked work item so it enters the Lisa lifecycle — no static repor
|
|
|
49
55
|
|
|
50
56
|
### 3. Use It Like a Human
|
|
51
57
|
|
|
52
|
-
Click through the visible paths and actually attempt real tasks — a first-time user
|
|
53
|
-
mistakes, and tries the obvious thing.
|
|
58
|
+
Click through the visible paths and actually attempt real tasks in the browser — a first-time user
|
|
59
|
+
explores, makes mistakes, and tries the obvious thing. When a page exposes forms, filters, menus,
|
|
60
|
+
links, buttons, selects, tabs, or other visible controls, click, type, select, submit, clear,
|
|
61
|
+
navigate, and otherwise exercise representative controls when safe; then verify the resulting UI or
|
|
62
|
+
data state in the browser. Cover at least these dimensions unless the user narrows scope:
|
|
54
63
|
|
|
55
64
|
- **Comprehension & labeling:** human-facing copy must sound like something a normal first-time user
|
|
56
65
|
would understand. Flag machine-style or developer labels shown to users (raw IDs, enum keys,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jira-evidence
|
|
3
|
-
description: "Upload screenshots to GitHub pr-assets release, update PR description with evidence, upload attachments to JIRA, post wiki markup comment, and move ticket to
|
|
3
|
+
description: "Upload screenshots to GitHub pr-assets release, update PR description with evidence, upload attachments to JIRA, post wiki markup comment, and move ticket to the configured review status only when `jira.workflow.review` is set (otherwise leave it in `claimed`). Reusable by any skill that captures screenshots and generates evidence/comment.txt + evidence/comment.md."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# JIRA Evidence Posting
|
|
@@ -44,7 +44,7 @@ bash .claude/skills/jira-evidence/scripts/post-evidence.sh PROJ-123 ./evidence 4
|
|
|
44
44
|
3. **Update PR description** — Replaces or appends the `## Evidence` section in the PR body using `gh pr edit`
|
|
45
45
|
4. **Upload JIRA attachments** — Uploads screenshots via REST API v3 so `!filename.png!` wiki markup renders inline
|
|
46
46
|
5. **Post JIRA comment** — Posts `comment.txt` as a new comment via REST API v2 (wiki markup with embedded images)
|
|
47
|
-
6. **Move ticket to
|
|
47
|
+
6. **Move ticket to the configured review status** — Resolves `jira.workflow.review` (or the `jira.workflow.code_review` alias) from `.lisa.config.json` / `.lisa.config.local.json` and transitions via `jira issue move`. `review` is optional; when unset, the ticket stays in `claimed` and this step is skipped. Never transition to a status not named in `config.jira.workflow`. If the configured status is not a valid transition from the current state, log a warning and skip.
|
|
48
48
|
|
|
49
49
|
## Screenshot Naming Convention
|
|
50
50
|
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
# 2. Updates the GitHub PR description with evidence/comment.md
|
|
15
15
|
# 3. Uploads image evidence as JIRA attachments
|
|
16
16
|
# 4. Posts/updates the JIRA comment with evidence/comment.txt
|
|
17
|
-
# 5. Moves the JIRA ticket to
|
|
17
|
+
# 5. Moves the JIRA ticket to the configured jira.workflow.review status
|
|
18
|
+
# (skipped entirely when review is unconfigured — stays in claimed)
|
|
18
19
|
|
|
19
20
|
set -euo pipefail
|
|
20
21
|
|
|
@@ -152,10 +153,26 @@ else
|
|
|
152
153
|
echo "$RESP" | grep -v "HTTP_CODE:" | head -3
|
|
153
154
|
fi
|
|
154
155
|
|
|
155
|
-
# ── Step 5: Move ticket to
|
|
156
|
+
# ── Step 5: Move ticket to the configured review status (if any) ────────────
|
|
157
|
+
# A transition may target only a status named in .lisa.config.json jira.workflow.
|
|
158
|
+
# `review` is OPTIONAL: when it is not configured, the build lifecycle stays in
|
|
159
|
+
# `claimed` until `done` — do NOT invent a transition. (See config-resolution.md.)
|
|
160
|
+
REVIEW=""
|
|
161
|
+
if [ -f .lisa.config.json ]; then
|
|
162
|
+
_cfg=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.json 2>/dev/null)
|
|
163
|
+
[ -n "$_cfg" ] && REVIEW="$_cfg"
|
|
164
|
+
fi
|
|
165
|
+
if [ -f .lisa.config.local.json ]; then
|
|
166
|
+
_local=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.local.json 2>/dev/null)
|
|
167
|
+
[ -n "$_local" ] && REVIEW="$_local"
|
|
168
|
+
fi
|
|
156
169
|
echo ""
|
|
157
|
-
|
|
158
|
-
|
|
170
|
+
if [ -n "$REVIEW" ]; then
|
|
171
|
+
echo "==> Moving $TICKET_ID to $REVIEW..."
|
|
172
|
+
jira issue move "$TICKET_ID" "$REVIEW" 2>&1 && echo " ✓ Ticket moved to $REVIEW" || echo " WARNING: Could not move ticket to $REVIEW (not a valid transition?); leaving in current status" >&2
|
|
173
|
+
else
|
|
174
|
+
echo "==> No jira.workflow.review configured; leaving $TICKET_ID in its current (claimed) status per config-resolution."
|
|
175
|
+
fi
|
|
159
176
|
|
|
160
177
|
echo ""
|
|
161
178
|
echo "==> Done!"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Run a first-time-user exploratory QA walkthrough: experience the app like a brand-new human user, clicking through to find anything confusing, broken, or hard to understand (human-facing jargon, contextless extracted data, machine-style labels, slow or unclear loads, late meaningful content, cramped or cut-off UI, inconsistent UX, awkward scroll behavior) across all breakpoints, and file each finding (bug or usability issue) as a tracked work item via lisa:tracker-write. The optional ready flag marks tickets build-ready (auto-picked-up by lisa:intake) or leaves them in the backlog for human triage (default). For gaps in the automated Playwright suite, use e2e-coverage-gaps instead."
|
|
2
|
+
description: "Run a first-time-user exploratory QA walkthrough: experience the app like a brand-new human user in a real browser or browser automation session, clicking/typing/selecting through visible controls to find anything confusing, broken, or hard to understand (human-facing jargon, contextless extracted data, machine-style labels, slow or unclear loads, late meaningful content, cramped or cut-off UI, inconsistent UX, awkward scroll behavior) across all breakpoints, and file each finding (bug or usability issue) as a tracked work item via lisa:tracker-write. Static scans, HTTP fetches, screenshots alone, or console/network checks alone are not sufficient. The optional ready flag marks tickets build-ready (auto-picked-up by lisa:intake) or leaves them in the backlog for human triage (default). For gaps in the automated Playwright suite, use e2e-coverage-gaps 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:exploratory-qa skill to experience the app like a brand-new first-time user — landing cold on the home page
|
|
7
|
+
Use the /lisa-harper-fabric:exploratory-qa skill to experience the app like a brand-new first-time user in a real browser or browser automation session — landing cold on the home page, clicking/typing/selecting through visible controls, and verifying resulting UI state across all breakpoints — and file each finding (bugs, usability/clarity issues) as a tracked work item via lisa:tracker-write, build-ready or in triage per the ready flag (default: triage). Static scans, HTTP fetches, screenshots alone, or console/network checks alone are not enough. For automated Playwright coverage gaps, use /lisa-harper-fabric:e2e-coverage-gaps. $ARGUMENTS
|