@codyswann/lisa 2.0.0 → 2.1.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 (79) hide show
  1. package/package.json +1 -1
  2. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  3. package/plugins/lisa/commands/implement.md +3 -3
  4. package/plugins/lisa/commands/improve/max-lines.md +1 -1
  5. package/plugins/lisa/commands/intake.md +6 -0
  6. package/plugins/lisa/commands/monitor.md +2 -6
  7. package/plugins/lisa/commands/plan.md +3 -23
  8. package/plugins/lisa/commands/research.md +2 -6
  9. package/plugins/lisa/commands/verify.md +2 -6
  10. package/plugins/lisa/rules/intent-routing.md +14 -13
  11. package/plugins/lisa/skills/implement/SKILL.md +20 -11
  12. package/plugins/lisa/skills/intake/SKILL.md +56 -0
  13. package/plugins/lisa/skills/jira-add-journey/SKILL.md +1 -1
  14. package/plugins/lisa/skills/jira-build-intake/SKILL.md +18 -18
  15. package/plugins/lisa/skills/jira-create/SKILL.md +17 -17
  16. package/plugins/lisa/skills/jira-source-artifacts/SKILL.md +1 -1
  17. package/plugins/lisa/skills/jira-validate-ticket/SKILL.md +4 -4
  18. package/plugins/lisa/skills/jira-verify/SKILL.md +5 -5
  19. package/plugins/lisa/skills/jira-write-ticket/SKILL.md +12 -12
  20. package/plugins/lisa/skills/monitor/SKILL.md +33 -0
  21. package/plugins/lisa/skills/notion-prd-intake/SKILL.md +11 -11
  22. package/plugins/lisa/skills/notion-to-jira/SKILL.md +32 -32
  23. package/plugins/lisa/skills/plan/SKILL.md +38 -0
  24. package/plugins/lisa/skills/prd-ticket-coverage/SKILL.md +4 -4
  25. package/plugins/lisa/skills/product-walkthrough/SKILL.md +3 -3
  26. package/plugins/lisa/skills/research/SKILL.md +23 -0
  27. package/plugins/lisa/skills/ticket-triage/SKILL.md +3 -3
  28. package/plugins/lisa/skills/verify/SKILL.md +32 -0
  29. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  30. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-expo/skills/jira-add-journey/SKILL.md +1 -1
  32. package/plugins/lisa-expo/skills/jira-create/SKILL.md +17 -17
  33. package/plugins/lisa-expo/skills/jira-verify/SKILL.md +5 -5
  34. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-rails/commands/fix/linter-error.md +1 -1
  37. package/plugins/lisa-rails/commands/improve/code-complexity.md +1 -1
  38. package/plugins/lisa-rails/commands/improve/max-lines-per-function.md +1 -1
  39. package/plugins/lisa-rails/commands/improve/max-lines.md +1 -1
  40. package/plugins/lisa-rails/commands/improve/test-coverage.md +1 -1
  41. package/plugins/lisa-rails/skills/jira-create/SKILL.md +16 -16
  42. package/plugins/lisa-rails/skills/jira-verify/SKILL.md +4 -4
  43. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  44. package/plugins/src/base/commands/implement.md +3 -3
  45. package/plugins/src/base/commands/improve/max-lines.md +1 -1
  46. package/plugins/src/base/commands/intake.md +6 -0
  47. package/plugins/src/base/commands/monitor.md +2 -6
  48. package/plugins/src/base/commands/plan.md +3 -23
  49. package/plugins/src/base/commands/research.md +2 -6
  50. package/plugins/src/base/commands/verify.md +2 -6
  51. package/plugins/src/base/rules/intent-routing.md +14 -13
  52. package/plugins/src/base/skills/implement/SKILL.md +20 -11
  53. package/plugins/src/base/skills/intake/SKILL.md +56 -0
  54. package/plugins/src/base/skills/jira-add-journey/SKILL.md +1 -1
  55. package/plugins/src/base/skills/jira-build-intake/SKILL.md +18 -18
  56. package/plugins/src/base/skills/jira-create/SKILL.md +17 -17
  57. package/plugins/src/base/skills/jira-source-artifacts/SKILL.md +1 -1
  58. package/plugins/src/base/skills/jira-validate-ticket/SKILL.md +4 -4
  59. package/plugins/src/base/skills/jira-verify/SKILL.md +5 -5
  60. package/plugins/src/base/skills/jira-write-ticket/SKILL.md +12 -12
  61. package/plugins/src/base/skills/monitor/SKILL.md +33 -0
  62. package/plugins/src/base/skills/notion-prd-intake/SKILL.md +11 -11
  63. package/plugins/src/base/skills/notion-to-jira/SKILL.md +32 -32
  64. package/plugins/src/base/skills/plan/SKILL.md +38 -0
  65. package/plugins/src/base/skills/prd-ticket-coverage/SKILL.md +4 -4
  66. package/plugins/src/base/skills/product-walkthrough/SKILL.md +3 -3
  67. package/plugins/src/base/skills/research/SKILL.md +23 -0
  68. package/plugins/src/base/skills/ticket-triage/SKILL.md +3 -3
  69. package/plugins/src/base/skills/verify/SKILL.md +32 -0
  70. package/plugins/src/expo/skills/jira-add-journey/SKILL.md +1 -1
  71. package/plugins/src/expo/skills/jira-create/SKILL.md +17 -17
  72. package/plugins/src/expo/skills/jira-verify/SKILL.md +5 -5
  73. package/plugins/src/rails/commands/fix/linter-error.md +1 -1
  74. package/plugins/src/rails/commands/improve/code-complexity.md +1 -1
  75. package/plugins/src/rails/commands/improve/max-lines-per-function.md +1 -1
  76. package/plugins/src/rails/commands/improve/max-lines.md +1 -1
  77. package/plugins/src/rails/commands/improve/test-coverage.md +1 -1
  78. package/plugins/src/rails/skills/jira-create/SKILL.md +16 -16
  79. package/plugins/src/rails/skills/jira-verify/SKILL.md +4 -4
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: intake
3
+ description: "Vendor-agnostic batch scanner for Status=Ready queues. Given a Notion PRD database URL → finds Ready PRDs and runs lisa:plan per item. Given a JIRA project key or JQL filter → finds Ready tickets and runs lisa:implement per item. Designed as the cron target for /schedule — one cycle per invocation, processes everything currently Ready, exits cleanly on empty. Symmetric counterpart to the single-item lisa:plan and lisa:implement skills."
4
+ allowed-tools: ["Skill", "Bash", "mcp__claude_ai_Notion__notion-fetch", "mcp__claude_ai_Notion__notion-search", "mcp__atlassian__getAccessibleAtlassianResources", "mcp__atlassian__searchJiraIssuesUsingJql", "mcp__atlassian__getJiraIssue"]
5
+ ---
6
+
7
+ # Intake: $ARGUMENTS
8
+
9
+ Run one batch-intake cycle against the queue identified by `$ARGUMENTS`. Scans for `Status = Ready`, claims each item, and dispatches to the appropriate single-item lifecycle skill.
10
+
11
+ ## Orchestration: agent team
12
+
13
+ If you are NOT already operating inside an agent team (no prior `TeamCreate` in this session, not spawned via `Agent` with `team_name`), your FIRST tool call MUST be `TeamCreate`. Do not call `TaskCreate`, `Agent`, or implementation tools before the team exists.
14
+
15
+ If you ARE already inside an agent team (e.g., a teammate invoked this skill via the Skill tool), do NOT call `TeamCreate` — the harness rejects double-creates. Continue within the existing team. The team lead created the team; teammates inherit it.
16
+
17
+ The cycle's outer team is created by Intake. Each item it processes (a PRD via `lisa:plan`, a ticket via `lisa:implement`) executes within the same team — those skills' orchestration preambles detect the existing team and skip TeamCreate. One team per cron cycle, processes everything currently Ready.
18
+
19
+ ## Source dispatch
20
+
21
+ Detect the queue type from `$ARGUMENTS` and route:
22
+
23
+ | If `$ARGUMENTS` is... | Queue type | Per-item dispatch |
24
+ |------------------------|------------|---------------------|
25
+ | A Notion **database** URL or database ID | PRD queue (Notion) | Invoke `lisa:notion-prd-intake` (which scans the DB for Status=Ready, claims each, runs `lisa:plan` per PRD via the dry-run validate → branch → write pipeline) |
26
+ | A JIRA project key (e.g. `SE`) | Work queue (JIRA) | Invoke `lisa:jira-build-intake` (which scans the project for Status=Ready, claims each via In Progress, runs `lisa:implement` per ticket, transitions to On Dev on success) |
27
+ | A full JQL filter (e.g. `project = SE AND component = "frontend"`) | Work queue (JIRA, narrowed) | Invoke `lisa:jira-build-intake` with the JQL |
28
+ | A Linear / GitHub Issues queue | Not yet implemented | Stop and report — no `linear-tracker` or `github-tracker` adapter has been built. Don't fall back. |
29
+
30
+ The single-item skills (`lisa:plan`, `lisa:implement`) and the per-vendor batch skills (`lisa:notion-prd-intake`, `lisa:jira-build-intake`) are internal — Intake is the public entry point. Developers schedule `/lisa:intake <queue>`; the rest is composition.
31
+
32
+ ## Cycle behavior
33
+
34
+ 1. **Resolve the queue** — fetch the database/project metadata, confirm the Status property/workflow has the expected `Ready` value.
35
+ 2. **Pre-flight check** — for JIRA, confirm `In Progress` and `On Dev` are reachable transitions before doing any per-ticket work. Stop with a clear error if the workflow is misconfigured.
36
+ 3. **Find Ready items** — query the queue. Empty → exit cleanly with `"No items with Status=Ready. Nothing to do."` This is the common idle case for a scheduled run.
37
+ 4. **Process each Ready item serially** (claim-first ordering for idempotency):
38
+ - Notion PRDs → `lisa:notion-prd-intake` handles per-item: claim, dry-run validate, branch to Blocked or Ticketed, coverage audit
39
+ - JIRA tickets → `lisa:jira-build-intake` handles per-item: claim, dispatch to `lisa:jira-agent`, transition to On Dev on success
40
+ 5. **Failure isolation** — one item failing does not stop the cycle; record under "Errors" and continue.
41
+ 6. **Summary report** — per-item outcomes, total processed, total errors.
42
+
43
+ ## Schedule examples
44
+
45
+ ```text
46
+ /schedule "every 30 minutes" /lisa:intake https://www.notion.so/<workspace>/<database-id>
47
+ /schedule "every 30 minutes" /lisa:intake SE
48
+ /schedule "every hour" /lisa:intake "project = SE AND component = 'frontend'"
49
+ ```
50
+
51
+ ## Rules
52
+
53
+ - Never run a cycle without an explicit queue. Side effects too high to default.
54
+ - Never modify the source/destination lifecycles directly — Intake delegates per-item to the vendor adapter, which owns status transitions.
55
+ - Never run two Intake cycles concurrently against overlapping queues — concurrent claims could race. The scheduling layer is responsible for serialization.
56
+ - Stop and surface failures rather than retry-loop.
@@ -115,6 +115,6 @@ python3 .claude/skills/jira-journey/scripts/parse-plan.py <TICKET_ID>
115
115
  ## When to Use This Skill
116
116
 
117
117
  - Ticket was created before the Validation Journey convention was established
118
- - Ticket was created manually without following `jira-create` guidelines
118
+ - Ticket was created manually without following `lisa:jira-create` guidelines
119
119
  - Ticket needs a journey added or updated based on implementation progress
120
120
  - Before starting work on a ticket, to ensure verification steps are documented
@@ -11,7 +11,7 @@ allowed-tools: ["Skill", "Bash", "mcp__atlassian__getAccessibleAtlassianResource
11
11
  1. A JIRA project key (e.g. `SE`) — scans that project for `Status = Ready` tickets.
12
12
  2. A full JQL filter (e.g. `project = SE AND component = "frontend" AND Status = Ready`) — used as-is. The skill will not append a `Status = Ready` clause if the JQL already names a status, so callers can intentionally widen.
13
13
 
14
- Run one build-intake cycle. Each Ready ticket is claimed, built via the `jira-agent` flow, and transitioned to `On Dev` (or the equivalent next-status for that project). The cycle is the symmetric mirror of `notion-prd-intake`: humans flip `Ready`, agents pick up and progress.
14
+ Run one build-intake cycle. Each Ready ticket is claimed, built via the `lisa:jira-agent` flow, and transitioned to `On Dev` (or the equivalent next-status for that project). The cycle is the symmetric mirror of `lisa:notion-prd-intake`: humans flip `Ready`, agents pick up and progress.
15
15
 
16
16
  ## Lifecycle assumed
17
17
 
@@ -55,28 +55,28 @@ If the transition fails (permission, missing transition, race), log under "Error
55
55
 
56
56
  #### 3b. Run the build flow
57
57
 
58
- Invoke the `jira-agent` (existing per-ticket lifecycle agent) with the ticket key. `jira-agent` owns:
59
- - Reading the full ticket graph (`jira-read-ticket`)
60
- - Running its own pre-flight quality gate (`jira-verify`)
61
- - Running ticket triage (`ticket-triage`)
58
+ Invoke the `lisa:jira-agent` (existing per-ticket lifecycle agent) with the ticket key. `lisa:jira-agent` owns:
59
+ - Reading the full ticket graph (`lisa:jira-read-ticket`)
60
+ - Running its own pre-flight quality gate (`lisa:jira-verify`)
61
+ - Running ticket triage (`lisa:ticket-triage`)
62
62
  - Routing to the appropriate flow (Build / Fix / Investigate / Improve based on type)
63
- - Posting progress comments via `jira-sync`
64
- - Posting evidence via `jira-evidence`
63
+ - Posting progress comments via `lisa:jira-sync`
64
+ - Posting evidence via `lisa:jira-evidence`
65
65
 
66
- Wait for `jira-agent` to return. Capture its outcome:
66
+ Wait for `lisa:jira-agent` to return. Capture its outcome:
67
67
  - **Success** — PR is ready (open or merged); evidence posted; ready for next status.
68
- - **Blocked by jira-verify pre-flight gate** — `jira-agent` itself transitions the ticket to `Blocked` and reassigns to Reporter. This is correct and expected — let it stand. Record the outcome and move on.
69
- - **Blocked by ticket-triage ambiguities** — `jira-agent` posts findings and stops. The ticket stays in `In Progress`. Surface to human; do not auto-transition. Record under "Errors" with reason `"Triage found ambiguities — see comments on <ticket-key>"`.
68
+ - **Blocked by jira-verify pre-flight gate** — `lisa:jira-agent` itself transitions the ticket to `Blocked` and reassigns to Reporter. This is correct and expected — let it stand. Record the outcome and move on.
69
+ - **Blocked by ticket-triage ambiguities** — `lisa:jira-agent` posts findings and stops. The ticket stays in `In Progress`. Surface to human; do not auto-transition. Record under "Errors" with reason `"Triage found ambiguities — see comments on <ticket-key>"`.
70
70
  - **Errored** — exception, missing config, etc. Leave the ticket in `In Progress` for human investigation. Record under "Errors" with the exception summary.
71
71
 
72
72
  #### 3c. Transition to On Dev (only on Success)
73
73
 
74
- If `jira-agent` returned Success:
74
+ If `lisa:jira-agent` returned Success:
75
75
  1. Use `getTransitionsForJiraIssue` to find the transition ID for `On Dev` (or the configured next-after-build status).
76
76
  2. Transition via `transitionJiraIssue`.
77
77
  3. Post a `[claude-build-intake]` comment: `"Build complete. PR <URL>. Transitioned to On Dev."`
78
78
 
79
- For any non-Success outcome, do NOT transition. The ticket sits in `In Progress` (or wherever `jira-agent` left it for the Blocked case) — the cycle's job is done; humans take it from there.
79
+ For any non-Success outcome, do NOT transition. The ticket sits in `In Progress` (or wherever `lisa:jira-agent` left it for the Blocked case) — the cycle's job is done; humans take it from there.
80
80
 
81
81
  #### 3d. Continue
82
82
 
@@ -106,10 +106,10 @@ Total PRs opened: <n>
106
106
 
107
107
  ## Idempotency & safety
108
108
 
109
- - **Claim-first ordering**: `In Progress` set BEFORE `jira-agent` invocation — no double-pickup.
110
- - **No writes outside the lifecycle**: this skill only transitions `Ready → In Progress` and `In Progress → On Dev`. Every other status change is owned by `jira-agent` (which suggests transitions but only auto-transitions on the verify-FAIL path).
109
+ - **Claim-first ordering**: `In Progress` set BEFORE `lisa:jira-agent` invocation — no double-pickup.
110
+ - **No writes outside the lifecycle**: this skill only transitions `Ready → In Progress` and `In Progress → On Dev`. Every other status change is owned by `lisa:jira-agent` (which suggests transitions but only auto-transitions on the verify-FAIL path).
111
111
  - **Failure isolation**: per-ticket exceptions caught and recorded; the cycle continues.
112
- - **Single cycle per query**: do not run two `jira-build-intake` cycles in parallel against overlapping queries — concurrent claims could race. The scheduling layer (when added) is responsible for serialization.
112
+ - **Single cycle per query**: do not run two `lisa:jira-build-intake` cycles in parallel against overlapping queries — concurrent claims could race. The scheduling layer (when added) is responsible for serialization.
113
113
  - **Never invent a transition**: if `In Progress` or `On Dev` aren't valid transitions in the project's workflow, stop and report rather than guessing alternative names.
114
114
 
115
115
  ## Configuration
@@ -128,7 +128,7 @@ If a `Ready` status does not exist in the JIRA project's workflow, this skill ca
128
128
  ## Rules
129
129
 
130
130
  - Never transition a ticket the cycle didn't claim. The `In Progress` transition is the signature of cycle ownership.
131
- - Never bypass `jira-agent` to do build work directly. `jira-agent` owns the per-ticket lifecycle (read, verify, triage, route, sync, evidence). This skill is the dispatcher, not the builder.
131
+ - Never bypass `lisa:jira-agent` to do build work directly. `lisa:jira-agent` owns the per-ticket lifecycle (read, verify, triage, route, sync, evidence). This skill is the dispatcher, not the builder.
132
132
  - Never auto-transition past `On Dev`. Downstream statuses (`On QA`, `Done`) are owned by QA / product / a future verification-intake skill — not this one.
133
- - If the ticket has no Validation Journey or no sign-in credentials in its description, `jira-agent`'s pre-flight verify will catch it and transition to `Blocked` — **don't try to fix the ticket from here**. Pre-flight gating is `jira-agent`'s job; running build work on a thin ticket produces broken work.
134
- - On any unexpected response from `jira-agent` (status it doesn't claim, missing PR URL on success, etc.), record as Error and surface — never assume.
133
+ - If the ticket has no Validation Journey or no sign-in credentials in its description, `lisa:jira-agent`'s pre-flight verify will catch it and transition to `Blocked` — **don't try to fix the ticket from here**. Pre-flight gating is `lisa:jira-agent`'s job; running build work on a thin ticket produces broken work.
134
+ - On any unexpected response from `lisa:jira-agent` (status it doesn't claim, missing PR URL on success, etc.), record as Error and surface — never assume.
@@ -6,13 +6,13 @@ allowed-tools: ["Read", "Glob", "LS", "Skill", "mcp__atlassian__getVisibleJiraPr
6
6
 
7
7
  # Create JIRA Issues from $ARGUMENTS
8
8
 
9
- Analyze the provided file(s) and plan a JIRA hierarchy. **This skill plans structure only — every individual ticket write is delegated to `jira-write-ticket`.** Do not call `mcp__atlassian__createJiraIssue` from this skill; the necessary write tools are intentionally not in `allowed-tools`.
9
+ Analyze the provided file(s) and plan a JIRA hierarchy. **This skill plans structure only — every individual ticket write is delegated to `lisa:jira-write-ticket`.** Do not call `mcp__atlassian__createJiraIssue` from this skill; the necessary write tools are intentionally not in `allowed-tools`.
10
10
 
11
11
  ## Process
12
12
 
13
13
  1. **Analyze**: Read $ARGUMENTS to understand scope.
14
- 2. **Extract source artifacts**: invoke the `jira-source-artifacts` skill, then enumerate every external URL, embed, attachment, or example payload in the input and classify each by domain per its rules. Build the `artifacts` map (one entry per artifact: url, title, domain, source page, classification reason). See "Source Artifacts" below.
15
- 3. **Walk the live product** (when applicable): if the work touches existing user-facing surfaces, invoke the `product-walkthrough` skill to capture current behavior, design-vs-product divergence, and reuse candidates. Skip when the work is purely backend or affects a screen that does not yet exist. See "Live Product Walkthrough" below.
14
+ 2. **Extract source artifacts**: invoke the `lisa:jira-source-artifacts` skill, then enumerate every external URL, embed, attachment, or example payload in the input and classify each by domain per its rules. Build the `artifacts` map (one entry per artifact: url, title, domain, source page, classification reason). See "Source Artifacts" below.
15
+ 3. **Walk the live product** (when applicable): if the work touches existing user-facing surfaces, invoke the `lisa:product-walkthrough` skill to capture current behavior, design-vs-product divergence, and reuse candidates. Skip when the work is purely backend or affects a screen that does not yet exist. See "Live Product Walkthrough" below.
16
16
  4. **Determine structure**:
17
17
  - Epic needed if: multiple features, major changes, >3 related files
18
18
  - Direct tasks if: bug fix, single file, minor change
@@ -20,8 +20,8 @@ Analyze the provided file(s) and plan a JIRA hierarchy. **This skill plans struc
20
20
  ```text
21
21
  Epic → User Story → Tasks (test, implement, document, cleanup)
22
22
  ```
23
- 6. **Delegate every write to `jira-write-ticket`** in dependency order (epic first, then stories with the epic as parent, then sub-tasks with their story as parent). Pass the artifacts (filtered by domain per `jira-source-artifacts` inheritance rules) and the walkthrough findings (under `## Current Product`). See "Delegation to jira-write-ticket" below.
24
- 7. **Run the artifact preservation gate** (`jira-source-artifacts` §8): after all writes complete, build the preservation matrix and verify every extracted artifact is reachable from the created tickets. Fail loudly if anything was dropped.
23
+ 6. **Delegate every write to `lisa:jira-write-ticket`** in dependency order (epic first, then stories with the epic as parent, then sub-tasks with their story as parent). Pass the artifacts (filtered by domain per `lisa:jira-source-artifacts` inheritance rules) and the walkthrough findings (under `## Current Product`). See "Delegation to jira-write-ticket" below.
24
+ 7. **Run the artifact preservation gate** (`lisa:jira-source-artifacts` §8): after all writes complete, build the preservation matrix and verify every extracted artifact is reachable from the created tickets. Fail loudly if anything was dropped.
25
25
 
26
26
  ## Mandatory for Every Code Issue
27
27
 
@@ -32,7 +32,7 @@ Analyze the provided file(s) and plan a JIRA hierarchy. **This skill plans struc
32
32
 
33
33
  ## Validation Journey
34
34
 
35
- Tickets that change runtime behavior should include a `Validation Journey` section in the description. This section is consumed by the `jira-journey` skill to automate verification.
35
+ Tickets that change runtime behavior should include a `Validation Journey` section in the description. This section is consumed by the `lisa:jira-journey` skill to automate verification.
36
36
 
37
37
  ### When to Include
38
38
 
@@ -89,13 +89,13 @@ h3. Assertions
89
89
 
90
90
  If $ARGUMENTS includes (or references) any external artifact — PRD, design doc, Figma URL, Lovable prototype, Loom walkthrough, screenshot, example payload — those references MUST be preserved as remote links on the created tickets. Silent artifact loss is the single most common quality failure in this pipeline.
91
91
 
92
- **Invoke the `jira-source-artifacts` skill** for the canonical rules: domains, per-tool classification (Figma `/proto/` vs design, Lovable, Loom, screenshots), source precedence, conflict handling under `## Open Questions`, inheritance from epic → story → sub-task, and the existing-component reuse expectation. Do not restate the rules here — invoke the skill so any rule change propagates uniformly.
92
+ **Invoke the `lisa:jira-source-artifacts` skill** for the canonical rules: domains, per-tool classification (Figma `/proto/` vs design, Lovable, Loom, screenshots), source precedence, conflict handling under `## Open Questions`, inheritance from epic → story → sub-task, and the existing-component reuse expectation. Do not restate the rules here — invoke the skill so any rule change propagates uniformly.
93
93
 
94
- When delegating actual writes to `jira-write-ticket`, pass the extracted artifact list so its Phase 4c (Remote Links) step can attach them.
94
+ When delegating actual writes to `lisa:jira-write-ticket`, pass the extracted artifact list so its Phase 4c (Remote Links) step can attach them.
95
95
 
96
96
  ## Live Product Walkthrough
97
97
 
98
- When the work touches existing user-facing surfaces, invoke the `product-walkthrough` skill before drafting tickets. The walkthrough findings (current behavior, design-vs-product divergence, reuse candidates, behavioral surprises) become inputs to the ticket plan and surface under `## Current Product` on the resulting tickets. Skip only when the work is purely backend or affects a screen that does not yet exist.
98
+ When the work touches existing user-facing surfaces, invoke the `lisa:product-walkthrough` skill before drafting tickets. The walkthrough findings (current behavior, design-vs-product divergence, reuse candidates, behavioral surprises) become inputs to the ticket plan and surface under `## Current Product` on the resulting tickets. Skip only when the work is purely backend or affects a screen that does not yet exist.
99
99
 
100
100
  ## Issue Requirements
101
101
 
@@ -110,9 +110,9 @@ Exclude unless requested: migration plans, performance tests
110
110
 
111
111
  ## Delegation to jira-write-ticket
112
112
 
113
- **Mandatory.** Every ticket created by this skill MUST go through `jira-write-ticket`. This skill never calls `mcp__atlassian__createJiraIssue` itself — that tool is intentionally excluded from `allowed-tools` so the gate cannot be bypassed.
113
+ **Mandatory.** Every ticket created by this skill MUST go through `lisa:jira-write-ticket`. This skill never calls `mcp__atlassian__createJiraIssue` itself — that tool is intentionally excluded from `allowed-tools` so the gate cannot be bypassed.
114
114
 
115
- `jira-write-ticket` enforces things this skill does not, and which determine ticket quality:
115
+ `lisa:jira-write-ticket` enforces things this skill does not, and which determine ticket quality:
116
116
  - 3-audience description (Context / Technical Approach / Acceptance Criteria)
117
117
  - Gherkin acceptance criteria
118
118
  - Epic parent validation (non-bug, non-epic types)
@@ -126,9 +126,9 @@ Exclude unless requested: migration plans, performance tests
126
126
 
127
127
  Tickets must be created in parent-before-child order so each child can be passed its parent key:
128
128
 
129
- 1. Invoke `jira-write-ticket` for the epic. Capture the returned key.
130
- 2. For each story, invoke `jira-write-ticket` with the epic key as the epic parent. Capture each story key.
131
- 3. For each sub-task, invoke `jira-write-ticket` with the parent story key.
129
+ 1. Invoke `lisa:jira-write-ticket` for the epic. Capture the returned key.
130
+ 2. For each story, invoke `lisa:jira-write-ticket` with the epic key as the epic parent. Capture each story key.
131
+ 3. For each sub-task, invoke `lisa:jira-write-ticket` with the parent story key.
132
132
 
133
133
  ### What to pass to each invocation
134
134
 
@@ -137,8 +137,8 @@ For every delegated write, pass:
137
137
  - The 3-section description body you drafted (Context / Technical Approach / Acceptance Criteria)
138
138
  - Gherkin acceptance criteria
139
139
  - Parent key (epic key for stories; story key for sub-tasks)
140
- - The artifact list extracted in "Source Artifacts", filtered by domain per the inheritance rules — `jira-write-ticket` Phase 4c attaches them as remote links
141
- - For tickets that change runtime behavior: the Validation Journey draft (or instruct it to call `jira-add-journey` after create)
140
+ - The artifact list extracted in "Source Artifacts", filtered by domain per the inheritance rules — `lisa:jira-write-ticket` Phase 4c attaches them as remote links
141
+ - For tickets that change runtime behavior: the Validation Journey draft (or instruct it to call `lisa:jira-add-journey` after create)
142
142
 
143
143
  ### What this skill is responsible for
144
144
 
@@ -149,4 +149,4 @@ This skill owns:
149
149
  - Threading parent keys through subsequent writes
150
150
  - Running the Phase 5.5-style preservation check after all writes complete
151
151
 
152
- It does not own the actual JIRA write — that's `jira-write-ticket`'s job.
152
+ It does not own the actual JIRA write — that's `lisa:jira-write-ticket`'s job.
@@ -8,7 +8,7 @@ allowed-tools: []
8
8
 
9
9
  This skill is doctrine, not action — it defines the rules. Skills that need to extract, classify, attach, or reason about external artifacts (design files, prototypes, recordings, data samples) invoke this skill to load the taxonomy and apply it.
10
10
 
11
- The reason this lives in one place: silent drift across skills is the failure mode this body of rules exists to prevent. If the rules differ between `notion-to-jira`, `jira-create`, and `jira-write-ticket`, agents will silently route artifacts wrong and developers will lose source of truth. Edit here, propagate everywhere.
11
+ The reason this lives in one place: silent drift across skills is the failure mode this body of rules exists to prevent. If the rules differ between `lisa:notion-to-jira`, `lisa:jira-create`, and `lisa:jira-write-ticket`, agents will silently route artifacts wrong and developers will lose source of truth. Edit here, propagate everywhere.
12
12
 
13
13
  ## 1. Domains
14
14
 
@@ -6,7 +6,7 @@ allowed-tools: ["Bash", "mcp__atlassian__getJiraIssue", "mcp__atlassian__searchJ
6
6
 
7
7
  # Validate JIRA Ticket: $ARGUMENTS
8
8
 
9
- Run all organizational quality gates against a ticket spec OR an existing ticket. **This skill is read-only — it never writes to JIRA.** The output is a structured report consumed by callers (`jira-write-ticket` for pre-write gating, `notion-to-jira` for PRD dry-run, `jira-verify` for post-write checks).
9
+ Run all organizational quality gates against a ticket spec OR an existing ticket. **This skill is read-only — it never writes to JIRA.** The output is a structured report consumed by callers (`lisa:jira-write-ticket` for pre-write gating, `lisa:notion-to-jira` for PRD dry-run, `lisa:jira-verify` for post-write checks).
10
10
 
11
11
  ## Input
12
12
 
@@ -132,8 +132,8 @@ Story / Epic / Spike / Improvement: skipped (may span repos).
132
132
  When `runtime_behavior_change = true`, description must contain `h2. Validation Journey`. Skipped for doc-only / config-only / type-only / Epic.
133
133
 
134
134
  The caller controls the strictness by passing `journey_followup: "auto"` or `journey_followup: "none"` in the spec:
135
- - `auto` (default): if the section is absent, return `FAIL` with remediation `"Invoke jira-add-journey to append the section after create"`. Callers like `jira-write-ticket` know to chain `jira-add-journey` automatically, so this counts as a fixable failure they can resolve in-line — they re-run validation after appending.
136
- - `none`: missing section is a `FAIL` that the caller will not auto-fix, so the verdict gates progress (used by dry-run paths like `notion-to-jira` PRD intake, where there's no agent standing by to add the journey).
135
+ - `auto` (default): if the section is absent, return `FAIL` with remediation `"Invoke lisa:jira-add-journey to append the section after create"`. Callers like `lisa:jira-write-ticket` know to chain `lisa:jira-add-journey` automatically, so this counts as a fixable failure they can resolve in-line — they re-run validation after appending.
136
+ - `none`: missing section is a `FAIL` that the caller will not auto-fix, so the verdict gates progress (used by dry-run paths like `lisa:notion-to-jira` PRD intake, where there's no agent standing by to add the journey).
137
137
 
138
138
  Either way the gate emits `FAIL`, not a third state. Strictness is the caller's policy, not the validator's.
139
139
 
@@ -141,7 +141,7 @@ Either way the gate emits `FAIL`, not a third state. Strictness is the caller's
141
141
 
142
142
  When `artifacts_attached = true`, description must include source-precedence guidance covering: business rules → PRD body, visual treatment → mocks, flow → prototypes, API/data → data artifacts. Cross-axis conflicts surfaced under `## Open Questions`.
143
143
 
144
- Accept either placement — both are valid per `jira-source-artifacts`:
144
+ Accept either placement — both are valid per `lisa:jira-source-artifacts`:
145
145
  - A dedicated `## Source Precedence` (or `h2. Source Precedence`) subsection, OR
146
146
  - A "Source Precedence" / "source precedence" / "authoritative source" paragraph under `Technical Approach` that covers the four axes above.
147
147
 
@@ -6,23 +6,23 @@ allowed-tools: ["Skill", "mcp__atlassian__getJiraIssue", "mcp__atlassian__getAcc
6
6
 
7
7
  # Verify JIRA Ticket: $ARGUMENTS
8
8
 
9
- Verify that the existing JIRA ticket `$ARGUMENTS` meets organizational standards. This skill is a thin post-write wrapper around `jira-validate-ticket`: it fetches the live ticket and asks `jira-validate-ticket` to run the gates against the fetched state.
9
+ Verify that the existing JIRA ticket `$ARGUMENTS` meets organizational standards. This skill is a thin post-write wrapper around `lisa:jira-validate-ticket`: it fetches the live ticket and asks `lisa:jira-validate-ticket` to run the gates against the fetched state.
10
10
 
11
- This indirection exists so the gate definitions live in exactly one place (`jira-validate-ticket`). When the bar changes, change it there — `jira-verify`, `jira-write-ticket` (Phase 5.5 pre-write), and `notion-to-jira` (PRD dry-run) all pick it up.
11
+ This indirection exists so the gate definitions live in exactly one place (`lisa:jira-validate-ticket`). When the bar changes, change it there — `lisa:jira-verify`, `lisa:jira-write-ticket` (Phase 5.5 pre-write), and `lisa:notion-to-jira` (PRD dry-run) all pick it up.
12
12
 
13
13
  ## Process
14
14
 
15
15
  1. Resolve cloud ID via `mcp__atlassian__getAccessibleAtlassianResources`.
16
16
  2. Fetch the ticket via `mcp__atlassian__getJiraIssue` for `$ARGUMENTS`. Pull issue type, summary, description, parent, links, labels, components, and any custom fields needed.
17
- 3. Invoke `jira-validate-ticket` and pass the ticket key. The validator fetches its own copy if needed and runs every gate (Specification + Feasibility) against the live state.
17
+ 3. Invoke `lisa:jira-validate-ticket` and pass the ticket key. The validator fetches its own copy if needed and runs every gate (Specification + Feasibility) against the live state.
18
18
  4. Surface the validator's report verbatim to the caller.
19
19
 
20
20
  ## Output
21
21
 
22
- Pass through `jira-validate-ticket`'s structured output unchanged. Do not summarize or paraphrase — downstream callers (e.g. `jira-agent`'s pre-flight gate) parse the gate lines.
22
+ Pass through `lisa:jira-validate-ticket`'s structured output unchanged. Do not summarize or paraphrase — downstream callers (e.g. `lisa:jira-agent`'s pre-flight gate) parse the gate lines.
23
23
 
24
24
  ## Notes
25
25
 
26
26
  - This skill is read-only. It never edits the ticket, posts comments, or changes status.
27
27
  - If a gate fails, the recommendation is part of the validator's report; surface it as-is.
28
- - Validation Journey checks (S11) historically required a parser script (`parse-plan.py`); the parser logic now lives inside `jira-validate-ticket` so this skill no longer shells out to it.
28
+ - Validation Journey checks (S11) historically required a parser script (`parse-plan.py`); the parser logic now lives inside `lisa:jira-validate-ticket` so this skill no longer shells out to it.
@@ -29,7 +29,7 @@ Required fields (stop and ask if missing — do not invent values):
29
29
  | Issue type | CREATE | Story, Task, Bug, Epic, Spike, Sub-task, Improvement |
30
30
  | Summary | CREATE, UPDATE | One line, imperative voice, under 100 chars |
31
31
  | Description | CREATE, UPDATE | Multi-section — see Phase 3 |
32
- | Epic parent | Non-bug, non-epic | Enforced by `jira-verify` |
32
+ | Epic parent | Non-bug, non-epic | Enforced by `lisa:jira-verify` |
33
33
  | Priority | CREATE | Default to project default if unstated |
34
34
  | Acceptance criteria | Story, Task, Bug, Sub-task, Improvement | Gherkin — see Phase 3 |
35
35
  | Validation Journey | Runtime-behavior changes | Delegate to `/jira-add-journey` |
@@ -170,19 +170,19 @@ Identify and attach:
170
170
  - Confluence pages (design docs, RFCs, runbooks)
171
171
  - Dashboards (Grafana, Datadog, Sentry issue)
172
172
  - Incident tickets (PagerDuty, Statuspage)
173
- - **Source artifacts from the originating PRD / parent epic**: classify and inherit per the rules in `jira-source-artifacts` (invoke that skill if you haven't loaded the rules in this session). The short version: enumerate the parent epic's remote links and inherit the ones whose domain matches this ticket's scope (UI → `ui-design` + `ux-flow`; backend → `data`; infra → `ops`; always inherit `reference`). Never assume a developer will walk up to the epic to find design context — attach it here.
173
+ - **Source artifacts from the originating PRD / parent epic**: classify and inherit per the rules in `lisa:jira-source-artifacts` (invoke that skill if you haven't loaded the rules in this session). The short version: enumerate the parent epic's remote links and inherit the ones whose domain matches this ticket's scope (UI → `ui-design` + `ux-flow`; backend → `data`; infra → `ops`; always inherit `reference`). Never assume a developer will walk up to the epic to find design context — attach it here.
174
174
 
175
- If the ticket was generated from a PRD (by `notion-to-jira` or similar) and the parent epic has no source artifacts, surface that as a smell and ask whether artifacts were missed during extraction before proceeding.
175
+ If the ticket was generated from a PRD (by `lisa:notion-to-jira` or similar) and the parent epic has no source artifacts, surface that as a smell and ask whether artifacts were missed during extraction before proceeding.
176
176
 
177
177
  ### 4d. Source Precedence (must appear on the ticket)
178
178
 
179
- Source precedence rules and cross-axis conflict handling are defined in `jira-source-artifacts` §3 and §4. When a ticket carries both design artifacts and a description, record the precedence explicitly in the ticket description (under Technical Approach or a dedicated `## Source Precedence` subsection) so the implementer doesn't silently reconcile conflicts. Cross-axis conflicts go under `## Open Questions` as BLOCKER items.
179
+ Source precedence rules and cross-axis conflict handling are defined in `lisa:jira-source-artifacts` §3 and §4. When a ticket carries both design artifacts and a description, record the precedence explicitly in the ticket description (under Technical Approach or a dedicated `## Source Precedence` subsection) so the implementer doesn't silently reconcile conflicts. Cross-axis conflicts go under `## Open Questions` as BLOCKER items.
180
180
 
181
- For UI-touching tickets, include the existing-component reuse expectation per `jira-source-artifacts` §7.
181
+ For UI-touching tickets, include the existing-component reuse expectation per `lisa:jira-source-artifacts` §7.
182
182
 
183
183
  ### 4e. Live Product Walkthrough Findings (UI-touching tickets)
184
184
 
185
- If the ticket modifies an existing user-facing surface, a `product-walkthrough` should already have been run upstream (by `notion-to-jira` Phase 2b or `jira-create`). Inherit its findings under a `## Current Product` subsection in the ticket description so the implementer sees what's shipped today before changing it. If the upstream skill skipped the walkthrough but this ticket clearly modifies an existing surface, invoke `product-walkthrough` here before proceeding.
185
+ If the ticket modifies an existing user-facing surface, a `lisa:product-walkthrough` should already have been run upstream (by `lisa:notion-to-jira` Phase 2b or `lisa:jira-create`). Inherit its findings under a `## Current Product` subsection in the ticket description so the implementer sees what's shipped today before changing it. If the upstream skill skipped the walkthrough but this ticket clearly modifies an existing surface, invoke `lisa:product-walkthrough` here before proceeding.
186
186
 
187
187
  Use Jira's web UI or `mcp__atlassian__editJiraIssue` to set the `Development` field / remote links where supported.
188
188
 
@@ -200,9 +200,9 @@ Before create/update, verify each field is populated where applicable:
200
200
 
201
201
  ## Phase 5.5 — Validate (Pre-write Gate)
202
202
 
203
- Before any write, invoke `jira-validate-ticket` with the full proposed spec assembled from Phases 2 / 3 / 4 / 5. Pass it as a YAML block per the `jira-validate-ticket` schema, including `runtime_behavior_change`, `authenticated_surface`, and `artifacts_attached` flags so the right gates run.
203
+ Before any write, invoke `lisa:jira-validate-ticket` with the full proposed spec assembled from Phases 2 / 3 / 4 / 5. Pass it as a YAML block per the `lisa:jira-validate-ticket` schema, including `runtime_behavior_change`, `authenticated_surface`, and `artifacts_attached` flags so the right gates run.
204
204
 
205
- The validator is the **single source of truth** for what makes a valid ticket. The same gates are used by `notion-to-jira` dry-run, by `jira-verify` post-write, and here. Do not re-implement gate logic in this skill — if a gate needs to change, change `jira-validate-ticket` so every caller benefits.
205
+ The validator is the **single source of truth** for what makes a valid ticket. The same gates are used by `lisa:notion-to-jira` dry-run, by `lisa:jira-verify` post-write, and here. Do not re-implement gate logic in this skill — if a gate needs to change, change `lisa:jira-validate-ticket` so every caller benefits.
206
206
 
207
207
  If the validator reports `FAIL`:
208
208
  - Surface the failure list and the per-gate remediation to the user.
@@ -219,7 +219,7 @@ If the validator reports `PASS`, continue to Phase 6.
219
219
  2. Capture the returned ticket key.
220
220
  3. For each relationship from Phase 4b, call `mcp__atlassian__createIssueLink` with the correct link type (verify names via `mcp__atlassian__getIssueLinkTypes` if unsure).
221
221
  4. Attach remote links from Phase 4c.
222
- 5. If the ticket changes runtime behavior, invoke the `jira-add-journey` skill to append the Validation Journey section.
222
+ 5. If the ticket changes runtime behavior, invoke the `lisa:jira-add-journey` skill to append the Validation Journey section.
223
223
 
224
224
  ### UPDATE
225
225
 
@@ -229,7 +229,7 @@ If the validator reports `PASS`, continue to Phase 6.
229
229
 
230
230
  ## Phase 7 — Verify
231
231
 
232
- Call the `jira-verify` skill on the resulting ticket. `jira-verify` fetches the live ticket and runs `jira-validate-ticket` against it — same gates as Phase 5.5, but applied to what JIRA actually stored (catches anything dropped or reformatted on write). If it reports failures, fix them before returning. Do not report success on a ticket that fails verify.
232
+ Call the `lisa:jira-verify` skill on the resulting ticket. `lisa:jira-verify` fetches the live ticket and runs `lisa:jira-validate-ticket` against it — same gates as Phase 5.5, but applied to what JIRA actually stored (catches anything dropped or reformatted on write). If it reports failures, fix them before returning. Do not report success on a ticket that fails verify.
233
233
 
234
234
  ## Phase 8 — Announce
235
235
 
@@ -249,5 +249,5 @@ Skip this step only on UPDATE when no material change was made.
249
249
  - Never include a runtime-behavior ticket without a target backend environment, and never include an authenticated-surface ticket without sign-in credentials in the description.
250
250
  - Never invent custom field values. If the project requires a field you don't have, stop and ask.
251
251
  - Never overwrite a description without reading the current version first.
252
- - All writes go through this skill so best practices are enforced uniformly. Downstream skills (e.g. `jira-create`) should delegate here rather than calling the MCP write tools directly.
253
- - The gate logic (what makes a valid ticket) lives in `jira-validate-ticket`, NOT in this skill. This skill calls the validator at Phase 5.5 (pre-write) and Phase 7 (via `jira-verify` post-write). When a gate needs to change, change it in `jira-validate-ticket` — every caller (write path, dry-run path, post-write verify) picks it up automatically.
252
+ - All writes go through this skill so best practices are enforced uniformly. Downstream skills (e.g. `lisa:jira-create`) should delegate here rather than calling the MCP write tools directly.
253
+ - The gate logic (what makes a valid ticket) lives in `lisa:jira-validate-ticket`, NOT in this skill. This skill calls the validator at Phase 5.5 (pre-write) and Phase 7 (via `lisa:jira-verify` post-write). When a gate needs to change, change it in `lisa:jira-validate-ticket` — every caller (write path, dry-run path, post-write verify) picks it up automatically.
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: monitor
3
+ description: "Monitor application health across environments. Checks health endpoints, recent logs (CloudWatch / Sentry / browser console), error-rate spikes, performance hotspots, pending migrations, and runs Playwright smoke flows when relevant. Routes to the stack-specific ops-specialist agent (Expo, Rails, etc.). Also invoked as the post-deploy step of the lisa:verify skill."
4
+ allowed-tools: ["Skill", "Bash", "Read", "Grep"]
5
+ ---
6
+
7
+ # Monitor: $ARGUMENTS
8
+
9
+ Spot-check application health in the named environment (`dev` / `staging` / `prod`). Useful both reactively (after a deploy, after a Sentry alert, before pushing a hot change) and as the post-deploy verification step inside `lisa:verify`.
10
+
11
+ ## Orchestration: agent team
12
+
13
+ If you are NOT already operating inside an agent team (no prior `TeamCreate` in this session, not spawned via `Agent` with `team_name`), your FIRST tool call MUST be `TeamCreate`. Do not call `TaskCreate`, `Agent`, or implementation tools before the team exists.
14
+
15
+ If you ARE already inside an agent team (e.g., a teammate invoked this skill via the Skill tool), do NOT call `TeamCreate` — the harness rejects double-creates. Continue within the existing team. The team lead created the team; teammates inherit it.
16
+
17
+ ## Flow
18
+
19
+ Execute the **Monitor** sub-flow as defined in the `intent-routing` rule (loaded via the lisa plugin). The Monitor sub-flow delegates to a stack-specific `ops-specialist` agent (Expo, Rails, etc.), which composes the underlying ops skills:
20
+
21
+ - `ops-verify-health` — health endpoints
22
+ - `ops-check-logs` — CloudWatch / browser console / device / Serverless logs
23
+ - `ops-monitor-errors` — Sentry issues, error-rate spikes, regressions
24
+ - `ops-performance` — slow queries, p99 latency, hotspots
25
+ - `ops-browser-uat` — Playwright smoke flows against the deployed env
26
+ - `ops-db-ops` — pending migrations, replication lag
27
+ - `ops-deploy` — deploy status / rollback readiness
28
+
29
+ The agent decides which subset to run based on the env, the situation, and any extra context provided. The rule contains the canonical decision logic.
30
+
31
+ ## Output
32
+
33
+ A health summary with the relevant findings (failures, warnings, no-issue confirmations). For post-deploy verification (when called from `lisa:verify`), the summary becomes evidence on the originating work item.
@@ -55,19 +55,19 @@ If the update fails (permission error, race), log it and skip this PRD. Do not p
55
55
 
56
56
  #### 3b. Dry-run validation
57
57
 
58
- Invoke the `notion-to-jira` skill with `dry_run: true` and the PRD's URL. The skill returns a structured report containing:
58
+ Invoke the `lisa:notion-to-jira` skill with `dry_run: true` and the PRD's URL. The skill returns a structured report containing:
59
59
  - The planned ticket hierarchy
60
60
  - Per-ticket validation verdicts and remediation
61
61
  - An overall PASS / FAIL verdict
62
62
  - A failure count
63
63
 
64
- This call also indirectly invokes `jira-source-artifacts` (artifact extraction + classification) and `product-walkthrough` (when the PRD touches existing user-facing surfaces). All gate logic lives in `jira-validate-ticket`, which `notion-to-jira` calls per ticket.
64
+ This call also indirectly invokes `lisa:jira-source-artifacts` (artifact extraction + classification) and `lisa:product-walkthrough` (when the PRD touches existing user-facing surfaces). All gate logic lives in `lisa:jira-validate-ticket`, which `lisa:notion-to-jira` calls per ticket.
65
65
 
66
66
  #### 3c. Branch on the verdict
67
67
 
68
68
  **If `PASS`** (every planned ticket passed every applicable gate):
69
69
 
70
- 1. Re-invoke `notion-to-jira` with `dry_run: false` to actually write the tickets. This re-runs Phases 1-5 and runs the preservation gate (Phase 5.5).
70
+ 1. Re-invoke `lisa:notion-to-jira` with `dry_run: false` to actually write the tickets. This re-runs Phases 1-5 and runs the preservation gate (Phase 5.5).
71
71
  2. Capture the created ticket keys from the skill's output.
72
72
  3. Post a Notion comment on the PRD via `mcp__claude_ai_Notion__notion-create-comment` listing the created tickets (epic, stories, sub-tasks) with their JIRA URLs. Lead with: `"Ticketed by Claude. Created N JIRA issues — see below. Move Status to Shipped after the work is delivered."`
73
73
  4. Set `Status = Ticketed` via `notion-update-page`.
@@ -75,9 +75,9 @@ This call also indirectly invokes `jira-source-artifacts` (artifact extraction +
75
75
 
76
76
  #### 3e. Coverage audit (mandatory after Ticketed)
77
77
 
78
- Per-ticket gates prove each ticket is well-formed; they do NOT prove the *set* of created tickets covers the *whole* PRD. Silent drops happen — invoke the `prd-ticket-coverage` skill to catch them.
78
+ Per-ticket gates prove each ticket is well-formed; they do NOT prove the *set* of created tickets covers the *whole* PRD. Silent drops happen — invoke the `lisa:prd-ticket-coverage` skill to catch them.
79
79
 
80
- 1. Invoke `prd-ticket-coverage` with `<PRD URL> tickets=[<created ticket keys from step 2 above>]`.
80
+ 1. Invoke `lisa:prd-ticket-coverage` with `<PRD URL> tickets=[<created ticket keys from step 2 above>]`.
81
81
  2. Read the verdict:
82
82
 
83
83
  | Verdict | Action |
@@ -87,7 +87,7 @@ Per-ticket gates prove each ticket is well-formed; they do NOT prove the *set* o
87
87
  | `GAPS_FOUND` | The created ticket set is incomplete. (a) For each gap, post a Notion comment naming the missing PRD item and where it appears in the PRD, with the suggested fix from the audit report. (b) Post one summary comment listing the tickets that *were* successfully created (so product knows what to keep vs. what to extend). (c) Transition `Status` from `Ticketed` back to `Blocked` via `notion-update-page`. |
88
88
  | `NO_TICKETS_FOUND` | Should not happen if step 2 succeeded. If it does, log it as an Error in the cycle summary and leave `Status = Ticketed` with a comment flagging the audit failure for human review. |
89
89
 
90
- 3. The created tickets remain in JIRA regardless of the verdict — they are valid in their own right (they passed `jira-validate-ticket`). The audit only tells us whether *more* are needed.
90
+ 3. The created tickets remain in JIRA regardless of the verdict — they are valid in their own right (they passed `lisa:jira-validate-ticket`). The audit only tells us whether *more* are needed.
91
91
 
92
92
  The audit's report should be summarized in the cycle summary alongside the per-PRD outcome (e.g., `Ticketed (coverage: COMPLETE)` or `Blocked (coverage gaps: 3)`).
93
93
 
@@ -144,7 +144,7 @@ Print to the agent's output. Do not write this summary to Notion or JIRA — it'
144
144
  ## Idempotency & safety
145
145
 
146
146
  - **Single-cycle scope**: this skill processes the Ready set as it exists at the start of Phase 2. New `Ready` PRDs added mid-cycle are picked up next run.
147
- - **No writes outside the lifecycle**: this skill only ever writes to JIRA via `notion-to-jira` (which delegates to `jira-write-ticket`), and only ever changes Notion `Status` to `In Review`, `Blocked`, or `Ticketed`. It never edits PRD content, never touches `Draft` or `Shipped`, never deletes pages.
147
+ - **No writes outside the lifecycle**: this skill only ever writes to JIRA via `lisa:notion-to-jira` (which delegates to `lisa:jira-write-ticket`), and only ever changes Notion `Status` to `In Review`, `Blocked`, or `Ticketed`. It never edits PRD content, never touches `Draft` or `Shipped`, never deletes pages.
148
148
  - **Claim-first ordering**: `Status = In Review` is set BEFORE validation runs, so a re-entrant call won't double-process.
149
149
  - **Failure isolation**: an exception processing one PRD must not stop the cycle. Catch, record under "Errors" in the summary, continue to the next PRD. The PRD that errored is left in `In Review` — the human investigates from there.
150
150
 
@@ -154,16 +154,16 @@ This skill reads project configuration from environment variables (or `$ARGUMENT
154
154
 
155
155
  | Variable | Purpose |
156
156
  |----------|---------|
157
- | `JIRA_PROJECT` | JIRA project key for ticket creation (passed to `notion-to-jira`) |
157
+ | `JIRA_PROJECT` | JIRA project key for ticket creation (passed to `lisa:notion-to-jira`) |
158
158
  | `JIRA_SERVER` | Atlassian instance host |
159
- | `E2E_BASE_URL` | Frontend URL for `product-walkthrough` |
159
+ | `E2E_BASE_URL` | Frontend URL for `lisa:product-walkthrough` |
160
160
  | `E2E_TEST_PHONE` / `E2E_TEST_OTP` / `E2E_TEST_ORG` | Test user creds for walkthrough + verification plans |
161
161
  | `E2E_GRAPHQL_URL` | API URL for verification plans |
162
162
 
163
163
  ## Rules
164
164
 
165
- - Never write to JIRA outside of `notion-to-jira` → `jira-write-ticket`. The validator's verdict gates progress; bypassing it produces broken tickets.
165
+ - Never write to JIRA outside of `lisa:notion-to-jira` → `lisa:jira-write-ticket`. The validator's verdict gates progress; bypassing it produces broken tickets.
166
166
  - Never set Notion `Status` to a value this skill doesn't own (`In Review`, `Blocked`, `Ticketed`). Product owns `Draft`, `Ready`, `Shipped`.
167
167
  - Never edit the PRD's body. Communication with product happens only through Notion comments.
168
168
  - Never run more than one intake cycle concurrently against the same database. This skill assumes serial execution. (Scheduling is a separate concern; the runtime should not start a new cycle if a previous one is still in flight.)
169
- - If `notion-to-jira` returns errors (e.g. unreachable artifact, malformed PRD structure), treat them as gate failures: comment + Blocked. Don't silently fail.
169
+ - If `lisa:notion-to-jira` returns errors (e.g. unreachable artifact, malformed PRD structure), treat them as gate failures: comment + Blocked. Don't silently fail.