@codyswann/lisa 2.232.0 → 2.233.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 (109) 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/.codex-plugin/skills/lisa-qa-checklist/SKILL.md +70 -0
  5. package/plugins/lisa/.codex-plugin/skills/lisa-qa-checklist/agents/openai.yaml +4 -0
  6. package/plugins/lisa/.codex-plugin/skills/lisa-qa-clear/SKILL.md +74 -0
  7. package/plugins/lisa/.codex-plugin/skills/lisa-qa-clear/agents/openai.yaml +4 -0
  8. package/plugins/lisa/.codex-plugin/skills/lisa-qa-fail/SKILL.md +92 -0
  9. package/plugins/lisa/.codex-plugin/skills/lisa-qa-fail/agents/openai.yaml +4 -0
  10. package/plugins/lisa/.codex-plugin/skills/lisa-qa-queue/SKILL.md +69 -0
  11. package/plugins/lisa/.codex-plugin/skills/lisa-qa-queue/agents/openai.yaml +4 -0
  12. package/plugins/lisa/.codex-plugin/skills/lisa-rework-triage/SKILL.md +3 -3
  13. package/plugins/lisa/commands/qa-checklist.md +6 -0
  14. package/plugins/lisa/commands/qa-clear.md +6 -0
  15. package/plugins/lisa/commands/qa-fail.md +6 -0
  16. package/plugins/lisa/commands/qa-queue.md +6 -0
  17. package/plugins/lisa/skills/lisa-qa-checklist/SKILL.md +70 -0
  18. package/plugins/lisa/skills/lisa-qa-checklist/agents/openai.yaml +4 -0
  19. package/plugins/lisa/skills/lisa-qa-clear/SKILL.md +74 -0
  20. package/plugins/lisa/skills/lisa-qa-clear/agents/openai.yaml +4 -0
  21. package/plugins/lisa/skills/lisa-qa-fail/SKILL.md +92 -0
  22. package/plugins/lisa/skills/lisa-qa-fail/agents/openai.yaml +4 -0
  23. package/plugins/lisa/skills/lisa-qa-queue/SKILL.md +69 -0
  24. package/plugins/lisa/skills/lisa-qa-queue/agents/openai.yaml +4 -0
  25. package/plugins/lisa/skills/lisa-rework-triage/SKILL.md +3 -3
  26. package/plugins/lisa-agy/commands/lisa/qa-checklist.md +6 -0
  27. package/plugins/lisa-agy/commands/lisa/qa-clear.md +6 -0
  28. package/plugins/lisa-agy/commands/lisa/qa-fail.md +6 -0
  29. package/plugins/lisa-agy/commands/lisa/qa-queue.md +6 -0
  30. package/plugins/lisa-agy/plugin.json +1 -1
  31. package/plugins/lisa-agy/skills/lisa-qa-checklist/SKILL.md +70 -0
  32. package/plugins/lisa-agy/skills/lisa-qa-clear/SKILL.md +74 -0
  33. package/plugins/lisa-agy/skills/lisa-qa-fail/SKILL.md +92 -0
  34. package/plugins/lisa-agy/skills/lisa-qa-queue/SKILL.md +69 -0
  35. package/plugins/lisa-agy/skills/lisa-rework-triage/SKILL.md +3 -3
  36. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  38. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  39. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-copilot/commands/lisa/qa-checklist.md +6 -0
  43. package/plugins/lisa-copilot/commands/lisa/qa-clear.md +6 -0
  44. package/plugins/lisa-copilot/commands/lisa/qa-fail.md +6 -0
  45. package/plugins/lisa-copilot/commands/lisa/qa-queue.md +6 -0
  46. package/plugins/lisa-copilot/skills/lisa-qa-checklist/SKILL.md +70 -0
  47. package/plugins/lisa-copilot/skills/lisa-qa-clear/SKILL.md +74 -0
  48. package/plugins/lisa-copilot/skills/lisa-qa-fail/SKILL.md +92 -0
  49. package/plugins/lisa-copilot/skills/lisa-qa-queue/SKILL.md +69 -0
  50. package/plugins/lisa-copilot/skills/lisa-rework-triage/SKILL.md +3 -3
  51. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-cursor/commands/lisa/qa-checklist.md +6 -0
  53. package/plugins/lisa-cursor/commands/lisa/qa-clear.md +6 -0
  54. package/plugins/lisa-cursor/commands/lisa/qa-fail.md +6 -0
  55. package/plugins/lisa-cursor/commands/lisa/qa-queue.md +6 -0
  56. package/plugins/lisa-cursor/skills/lisa-qa-checklist/SKILL.md +70 -0
  57. package/plugins/lisa-cursor/skills/lisa-qa-clear/SKILL.md +74 -0
  58. package/plugins/lisa-cursor/skills/lisa-qa-fail/SKILL.md +92 -0
  59. package/plugins/lisa-cursor/skills/lisa-qa-queue/SKILL.md +69 -0
  60. package/plugins/lisa-cursor/skills/lisa-rework-triage/SKILL.md +3 -3
  61. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  63. package/plugins/lisa-expo-agy/plugin.json +1 -1
  64. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  65. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  68. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  69. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  70. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  73. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  74. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  75. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  76. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  77. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  78. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  79. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  80. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  82. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  83. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  84. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  85. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  86. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  87. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  88. package/plugins/lisa-rails-agy/plugin.json +1 -1
  89. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  90. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  91. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  92. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  93. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  94. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  95. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  96. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  97. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  98. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  99. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  100. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  101. package/plugins/src/base/commands/qa-checklist.md +6 -0
  102. package/plugins/src/base/commands/qa-clear.md +6 -0
  103. package/plugins/src/base/commands/qa-fail.md +6 -0
  104. package/plugins/src/base/commands/qa-queue.md +6 -0
  105. package/plugins/src/base/skills/lisa-qa-checklist/SKILL.md +70 -0
  106. package/plugins/src/base/skills/lisa-qa-clear/SKILL.md +74 -0
  107. package/plugins/src/base/skills/lisa-qa-fail/SKILL.md +92 -0
  108. package/plugins/src/base/skills/lisa-qa-queue/SKILL.md +69 -0
  109. package/plugins/src/base/skills/lisa-rework-triage/SKILL.md +3 -3
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: lisa-qa-queue
3
+ description: "QA acceptance queue for human testers. Serves the next ticket awaiting QA verdict from the configured QA queue status as a plain-language acceptance brief — what the ticket promises, how to exercise it on the QA environment, in words a non-technical tester can follow. On 'pass', transitions the ticket to the configured certified status. On 'fail', delegates to lisa-qa-fail for the structured failure report, expectation-gap diagnosis, and return to the build-ready status. The conversational front door for human QA acceptance on any coding agent: testers say 'what's the next item?' / 'pass' / 'fail — here's what I saw'."
4
+ allowed-tools: ["Skill", "Bash", "Read", "Glob", "Grep"]
5
+ ---
6
+
7
+ # QA Queue: $ARGUMENTS
8
+
9
+ Serve one ticket at a time to a human QA tester and record their verdict. The tester is
10
+ assumed **non-technical**: everything you present must be readable by an intern on their
11
+ first day — no stack traces, no jargon, no internal identifiers without explanation.
12
+
13
+ ## Config resolution
14
+
15
+ Read `.lisa.config.json`:
16
+
17
+ - **QA queue status** — `jira.workflow.qa.queue`, falling back to `jira.workflow.done.staging`
18
+ (whatever status the project uses for "deployed to the environment QA tests against").
19
+ If neither exists, stop and report the missing config.
20
+ - **Certified status** — `jira.workflow.qa.certified` (the project's "passed QA, ships
21
+ with the next release" status). Required for the pass path; if missing, stop and
22
+ instruct the operator to add it — never guess a terminal status.
23
+ - **Build-ready status** — `jira.workflow.ready` (fail path, via `lisa-qa-fail`).
24
+ - **Tracker dispatch** — as everywhere: `tracker` decides JIRA / GitHub / Linear surfaces;
25
+ status names above map to labels/states on non-JIRA trackers.
26
+
27
+ ## Serving the next item
28
+
29
+ 1. Query the QA queue: tickets in the queue status, oldest first, excluding tickets
30
+ already carrying an unresolved `[lisa-qa-fail]` verdict from this sweep. Skip tickets
31
+ whose repo is listed in `qa.nonUserFacingRepos` — those belong to `lisa-qa-clear`,
32
+ not a human tester; note any encountered so the operator knows to run the clear.
33
+ 2. Fetch the full context bundle via `lisa-tracker-read` (never serve from a bare summary).
34
+ 3. Present ONE ticket as an **acceptance brief**:
35
+ - **What changed, in user terms** — one or two sentences, translated from the ticket's
36
+ stakeholder section.
37
+ - **How to try it** — concrete steps on the QA environment (the `exploration` /
38
+ Validation Journey config supplies the URL and test credentials): where to go, what
39
+ to click or type, which account to use.
40
+ - **What success looks like** — each acceptance criterion rewritten as an observable
41
+ check ("you should see …"), numbered so the tester can cite one on failure.
42
+ - **Worth poking at** — up to three edge probes drawn from the ticket's edge-case
43
+ triage findings, phrased as actions ("try it with an empty search box").
44
+ 4. End with: "Say **pass**, or describe what you saw if it failed."
45
+
46
+ ## Recording the verdict
47
+
48
+ - **Pass** — transition the ticket to the certified status via the tracker access layer,
49
+ post a brief `[lisa-qa-queue] QA pass` comment naming who verified and when, and offer
50
+ the next item.
51
+ - **Fail** — invoke `lisa-qa-fail` with the ticket key and the tester's own words
52
+ (verbatim — do not paraphrase away detail; attach any screenshots they provided). That
53
+ skill owns the failure report, the expectation-gap diagnosis, the `qa-fail` label, and
54
+ the transition back to build-ready. When it completes, confirm to the tester in one
55
+ plain sentence what was recorded and offer the next item.
56
+ - **Unclear / can't test** — if the tester cannot exercise the ticket (missing access,
57
+ feature flag off, no test data), do NOT guess a verdict. Post a
58
+ `[lisa-qa-queue] QA blocked: <reason>` comment, leave the status untouched, flag it in
59
+ the session summary for the operator, and serve the next item.
60
+
61
+ ## Rules
62
+
63
+ - One ticket at a time — never dump the queue on the tester.
64
+ - The tester's verbatim description is evidence; preserve it exactly in whatever is posted.
65
+ - Never transition to certified without an explicit "pass" from the tester.
66
+ - All tracker writes go through the access layer / `lisa-qa-fail` — this skill never
67
+ hand-crafts tracker mutations beyond the pass transition and its comment.
68
+ - Session summary on request ("how did we do?"): counts of passed / failed / blocked /
69
+ remaining in queue.
@@ -24,9 +24,9 @@ If none confirm, output `## Verdict: NOT_REWORK` and stop — this skill takes n
24
24
  first-attempt work.
25
25
 
26
26
  1. **Status history shows a post-implementation regression transition.** The ticket's
27
- changelog contains a transition from a post-build state (the configured `claimed`, any
28
- `done.*` environment state — e.g. `On Dev`, `On Stg` — or a review state) back to the
29
- configured `ready` state.
27
+ changelog contains a transition from a post-build state (the configured `claimed`,
28
+ any configured `done.*` environment state, or a review state) back to the configured
29
+ `ready` state.
30
30
  - JIRA: fetch the changelog via the `lisa-atlassian-access` REST substrate —
31
31
  `GET /rest/api/3/issue/<KEY>/changelog` — and scan `items[].field == "status"` entries.
32
32
  - GitHub: `gh issue view <n> --json timelineItems` (or the timeline API) — scan for the
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Expo and React Native-specific skills, agents, rules, and MCP servers.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Harper/Fabric-specific Lisa rules for TypeScript component apps.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "NestJS-specific skills and migration write-protection hooks.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, across Claude and Codex.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Ruby on Rails-specific skills and hooks for RuboCop and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "TypeScript-specific hooks for formatting, linting, and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "Distributable LLM Wiki kernel — ingest, query, lint, and maintain a git-native markdown knowledge base across Claude and Codex.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "2.232.0",
3
+ "version": "2.233.0",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: "Serve the current manual regression checklist: curated journeys minus live automated E2E coverage, in plain language."
3
+ argument-hint: ""
4
+ ---
5
+
6
+ Use the /lisa-qa-checklist skill to serve the manual regression checklist. $ARGUMENTS
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: "Bulk-move QA-queue tickets scoped entirely to non-user-facing repos to the configured certified status, with an auditable moved-list report."
3
+ argument-hint: ""
4
+ ---
5
+
6
+ Use the /lisa-qa-clear skill to clear non-human-verifiable tickets from the QA queue. $ARGUMENTS
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: "File a QA failure: find the right ticket (never a duplicate), write the structured failure report, diagnose the expectation gap, label qa-fail, and return the ticket to build-ready."
3
+ argument-hint: "[ticket-key] <what you saw, in your own words>"
4
+ ---
5
+
6
+ Use the /lisa-qa-fail skill to file this QA failure. $ARGUMENTS
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: "Serve the next ticket awaiting QA verdict as a plain-language acceptance brief; record pass (→ certified) or fail (→ structured report via lisa-qa-fail)."
3
+ argument-hint: "[pass | fail <description> | next]"
4
+ ---
5
+
6
+ Use the /lisa-qa-queue skill to serve the QA acceptance queue. $ARGUMENTS
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: lisa-qa-checklist
3
+ description: "Serve the current manual regression checklist to a human QA tester. Reads the project's curated journey list, cross-references it against what the automated suites (Playwright web E2E, Maestro native E2E) actually cover by scanning the spec files, and serves only the journeys that still need human eyes — each as plain-language steps. Keeps a single source of truth so testers never work from a stale personal copy, and shrinks automatically as automated coverage grows."
4
+ allowed-tools: ["Bash", "Read", "Glob", "Grep", "Write", "Edit"]
5
+ ---
6
+
7
+ # QA Checklist: $ARGUMENTS
8
+
9
+ The manual regression sweep exists to catch what automation does not. Its checklist must
10
+ therefore be computed, not remembered: curated journeys minus automated coverage, at the
11
+ moment the tester asks.
12
+
13
+ ## Sources
14
+
15
+ 1. **Curated journey list** — `qa.checklistFile` in `.lisa.config.json`, default
16
+ `.lisa/qa-checklist.md`. Format: one `## Journey: <name>` section per user journey,
17
+ with plain-language steps and an optional `automation:` line naming the covering spec
18
+ file(s) once one exists. If the file does not exist, offer to bootstrap it: derive
19
+ candidate journeys from the app's route map and the existing E2E suites' describe
20
+ blocks, write the draft, and ask the operator to curate it once. Never invent
21
+ journeys silently.
22
+ 2. **Automated coverage** — scan the repo's E2E suites (Playwright specs, Maestro flows;
23
+ locate via the project's e2e/test directories). An `automation:` line must name BOTH
24
+ the spec file and the specific test within it (the Playwright `describe`/`test` title
25
+ or Maestro flow name): `automation: <spec-path> :: <test-or-flow-name>`. A journey
26
+ counts as covered only when that spec file exists, the named test/flow is present in
27
+ it, and it is not skipped (`test.skip`, commented-out flow, or excluded from CI). A
28
+ file-only line, a named test that no longer matches, or any ambiguous mapping is
29
+ treated as **uncovered** — a live filename proves nothing about what the spec
30
+ exercises. A deleted, renamed, or skipped test silently un-covers its journey — the
31
+ very regression this check exists to catch; call it out loudly.
32
+
33
+ ## Serving the sweep
34
+
35
+ Present two lists, human-first:
36
+
37
+ ```text
38
+ ## Manual sweep — <n> journeys need your eyes
39
+ 1. <Journey name> — <plain-language steps>
40
+ Why manual: <no automation | automation skipped/stale: <spec>>
41
+ ...
42
+
43
+ ## Covered by automation — <n> journeys (skim, don't re-test)
44
+ - <Journey name> — <spec file> (<playwright|maestro>)
45
+ ```
46
+
47
+ Rules for the served text: steps an intern can follow, no spec-file jargon in the manual
48
+ section beyond the "why manual" line, and stable journey ordering (file order) so testers
49
+ can resume mid-sweep.
50
+
51
+ ## Maintaining the list
52
+
53
+ - Tester or operator adds/edits journeys in plain language → edit the checklist file
54
+ (this skill may apply the edit on request; it is a repo file, so changes ride normal
55
+ review).
56
+ - When a journey gains automation (e.g. `lisa-codify-verification` lands a spec), add its
57
+ `automation: <spec-path> :: <test-or-flow-name>` line — on request this skill locates
58
+ the covering spec and test, confirms the named test actually drives the journey's
59
+ steps, and writes the line itself.
60
+ - Never maintain per-tester copies; the file is the single source of truth and the
61
+ computed view is always derived fresh.
62
+
63
+ ## Rules
64
+
65
+ - Coverage claims must point at an existing, non-skipped spec — "there's a test somewhere"
66
+ does not count.
67
+ - Serving is read-only by default; file edits happen only on explicit request.
68
+ - If the automated-coverage scan finds specs exercising a journey that is missing from
69
+ the curated list entirely, surface it as a suggested addition — the human curates, the
70
+ skill proposes.