@codyswann/lisa 1.96.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.
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/commands/{plan/fix-linter-error.md → fix/linter-error.md} +1 -1
- package/plugins/lisa/commands/implement.md +6 -0
- package/plugins/{src/base/commands/plan/lower-code-complexity.md → lisa/commands/improve/code-complexity.md} +1 -1
- package/plugins/lisa/commands/{plan/reduce-max-lines-per-function.md → improve/max-lines-per-function.md} +1 -1
- package/plugins/lisa/commands/{plan/reduce-max-lines.md → improve/max-lines.md} +1 -1
- package/plugins/lisa/commands/{plan/add-test-coverage.md → improve/test-coverage.md} +1 -1
- package/plugins/lisa/commands/{plan/improve-tests.md → improve/tests.md} +1 -1
- package/plugins/lisa/commands/intake.md +6 -0
- package/plugins/lisa/commands/monitor.md +2 -6
- package/plugins/lisa/commands/plan.md +3 -11
- package/plugins/lisa/commands/research.md +2 -6
- package/plugins/{src/base/commands/plan/local-code-review.md → lisa/commands/review/local.md} +1 -1
- package/plugins/lisa/commands/verify.md +2 -6
- package/plugins/lisa/rules/intent-routing.md +14 -13
- package/plugins/{src/base/skills/plan-fix-linter-error → lisa/skills/fix-linter-error}/SKILL.md +2 -2
- package/plugins/lisa/skills/{plan-execute → implement}/SKILL.md +21 -12
- package/plugins/lisa/skills/{plan-lower-code-complexity → improve-code-complexity}/SKILL.md +2 -2
- package/plugins/lisa/skills/{plan-reduce-max-lines → improve-max-lines}/SKILL.md +2 -2
- package/plugins/{src/base/skills/plan-reduce-max-lines-per-function → lisa/skills/improve-max-lines-per-function}/SKILL.md +2 -2
- package/plugins/lisa/skills/{plan-add-test-coverage → improve-test-coverage}/SKILL.md +2 -2
- package/plugins/{src/base/skills/plan-improve-tests → lisa/skills/improve-tests}/SKILL.md +2 -2
- package/plugins/lisa/skills/intake/SKILL.md +56 -0
- package/plugins/lisa/skills/jira-add-journey/SKILL.md +1 -1
- package/plugins/lisa/skills/jira-build-intake/SKILL.md +18 -18
- package/plugins/lisa/skills/jira-create/SKILL.md +17 -17
- package/plugins/lisa/skills/jira-source-artifacts/SKILL.md +1 -1
- package/plugins/lisa/skills/jira-validate-ticket/SKILL.md +4 -4
- package/plugins/lisa/skills/jira-verify/SKILL.md +5 -5
- package/plugins/lisa/skills/jira-write-ticket/SKILL.md +12 -12
- package/plugins/lisa/skills/monitor/SKILL.md +33 -0
- package/plugins/lisa/skills/notion-prd-intake/SKILL.md +11 -11
- package/plugins/lisa/skills/notion-to-jira/SKILL.md +32 -32
- package/plugins/lisa/skills/plan/SKILL.md +38 -0
- package/plugins/lisa/skills/prd-ticket-coverage/SKILL.md +4 -4
- package/plugins/lisa/skills/product-walkthrough/SKILL.md +3 -3
- package/plugins/lisa/skills/research/SKILL.md +23 -0
- package/plugins/lisa/skills/{plan-local-code-review → review-local}/SKILL.md +1 -1
- package/plugins/lisa/skills/ticket-triage/SKILL.md +3 -3
- package/plugins/lisa/skills/verify/SKILL.md +32 -0
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/skills/jira-add-journey/SKILL.md +1 -1
- package/plugins/lisa-expo/skills/jira-create/SKILL.md +17 -17
- package/plugins/lisa-expo/skills/jira-verify/SKILL.md +5 -5
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/{src/rails/commands/plan/fix-linter-error.md → lisa-rails/commands/fix/linter-error.md} +1 -1
- package/plugins/{src/rails/commands/plan/lower-code-complexity.md → lisa-rails/commands/improve/code-complexity.md} +1 -1
- package/plugins/lisa-rails/commands/{plan/reduce-max-lines-per-function.md → improve/max-lines-per-function.md} +1 -1
- package/plugins/lisa-rails/commands/{plan/reduce-max-lines.md → improve/max-lines.md} +1 -1
- package/plugins/lisa-rails/commands/{plan/add-test-coverage.md → improve/test-coverage.md} +1 -1
- package/plugins/lisa-rails/skills/{plan-fix-linter-error → fix-linter-error}/SKILL.md +2 -2
- package/plugins/lisa-rails/skills/{plan-lower-code-complexity → improve-code-complexity}/SKILL.md +2 -2
- package/plugins/{src/rails/skills/plan-reduce-max-lines → lisa-rails/skills/improve-max-lines}/SKILL.md +2 -2
- package/plugins/{src/rails/skills/plan-reduce-max-lines-per-function → lisa-rails/skills/improve-max-lines-per-function}/SKILL.md +2 -2
- package/plugins/lisa-rails/skills/{plan-add-test-coverage → improve-test-coverage}/SKILL.md +2 -2
- package/plugins/lisa-rails/skills/jira-create/SKILL.md +16 -16
- package/plugins/lisa-rails/skills/jira-verify/SKILL.md +4 -4
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/commands/{plan/fix-linter-error.md → fix/linter-error.md} +1 -1
- package/plugins/src/base/commands/implement.md +6 -0
- package/plugins/{lisa/commands/plan/lower-code-complexity.md → src/base/commands/improve/code-complexity.md} +1 -1
- package/plugins/src/base/commands/{plan/reduce-max-lines-per-function.md → improve/max-lines-per-function.md} +1 -1
- package/plugins/src/base/commands/{plan/reduce-max-lines.md → improve/max-lines.md} +1 -1
- package/plugins/src/base/commands/{plan/add-test-coverage.md → improve/test-coverage.md} +1 -1
- package/plugins/src/base/commands/{plan/improve-tests.md → improve/tests.md} +1 -1
- package/plugins/src/base/commands/intake.md +6 -0
- package/plugins/src/base/commands/monitor.md +2 -6
- package/plugins/src/base/commands/plan.md +3 -11
- package/plugins/src/base/commands/research.md +2 -6
- package/plugins/{lisa/commands/plan/local-code-review.md → src/base/commands/review/local.md} +1 -1
- package/plugins/src/base/commands/verify.md +2 -6
- package/plugins/src/base/rules/intent-routing.md +14 -13
- package/plugins/{lisa/skills/plan-fix-linter-error → src/base/skills/fix-linter-error}/SKILL.md +2 -2
- package/plugins/src/base/skills/{plan-execute → implement}/SKILL.md +21 -12
- package/plugins/src/base/skills/{plan-lower-code-complexity → improve-code-complexity}/SKILL.md +2 -2
- package/plugins/src/base/skills/{plan-reduce-max-lines → improve-max-lines}/SKILL.md +2 -2
- package/plugins/{lisa/skills/plan-reduce-max-lines-per-function → src/base/skills/improve-max-lines-per-function}/SKILL.md +2 -2
- package/plugins/src/base/skills/{plan-add-test-coverage → improve-test-coverage}/SKILL.md +2 -2
- package/plugins/{lisa/skills/plan-improve-tests → src/base/skills/improve-tests}/SKILL.md +2 -2
- package/plugins/src/base/skills/intake/SKILL.md +56 -0
- package/plugins/src/base/skills/jira-add-journey/SKILL.md +1 -1
- package/plugins/src/base/skills/jira-build-intake/SKILL.md +18 -18
- package/plugins/src/base/skills/jira-create/SKILL.md +17 -17
- package/plugins/src/base/skills/jira-source-artifacts/SKILL.md +1 -1
- package/plugins/src/base/skills/jira-validate-ticket/SKILL.md +4 -4
- package/plugins/src/base/skills/jira-verify/SKILL.md +5 -5
- package/plugins/src/base/skills/jira-write-ticket/SKILL.md +12 -12
- package/plugins/src/base/skills/monitor/SKILL.md +33 -0
- package/plugins/src/base/skills/notion-prd-intake/SKILL.md +11 -11
- package/plugins/src/base/skills/notion-to-jira/SKILL.md +32 -32
- package/plugins/src/base/skills/plan/SKILL.md +38 -0
- package/plugins/src/base/skills/prd-ticket-coverage/SKILL.md +4 -4
- package/plugins/src/base/skills/product-walkthrough/SKILL.md +3 -3
- package/plugins/src/base/skills/research/SKILL.md +23 -0
- package/plugins/src/base/skills/{plan-local-code-review → review-local}/SKILL.md +1 -1
- package/plugins/src/base/skills/ticket-triage/SKILL.md +3 -3
- package/plugins/src/base/skills/verify/SKILL.md +32 -0
- package/plugins/src/expo/skills/jira-add-journey/SKILL.md +1 -1
- package/plugins/src/expo/skills/jira-create/SKILL.md +17 -17
- package/plugins/src/expo/skills/jira-verify/SKILL.md +5 -5
- package/plugins/{lisa-rails/commands/plan/fix-linter-error.md → src/rails/commands/fix/linter-error.md} +1 -1
- package/plugins/{lisa-rails/commands/plan/lower-code-complexity.md → src/rails/commands/improve/code-complexity.md} +1 -1
- package/plugins/src/rails/commands/{plan/reduce-max-lines-per-function.md → improve/max-lines-per-function.md} +1 -1
- package/plugins/src/rails/commands/{plan/reduce-max-lines.md → improve/max-lines.md} +1 -1
- package/plugins/src/rails/commands/{plan/add-test-coverage.md → improve/test-coverage.md} +1 -1
- package/plugins/src/rails/skills/{plan-fix-linter-error → fix-linter-error}/SKILL.md +2 -2
- package/plugins/src/rails/skills/{plan-lower-code-complexity → improve-code-complexity}/SKILL.md +2 -2
- package/plugins/{lisa-rails/skills/plan-reduce-max-lines → src/rails/skills/improve-max-lines}/SKILL.md +2 -2
- package/plugins/{lisa-rails/skills/plan-reduce-max-lines-per-function → src/rails/skills/improve-max-lines-per-function}/SKILL.md +2 -2
- package/plugins/src/rails/skills/{plan-add-test-coverage → improve-test-coverage}/SKILL.md +2 -2
- package/plugins/src/rails/skills/jira-create/SKILL.md +16 -16
- package/plugins/src/rails/skills/jira-verify/SKILL.md +4 -4
- package/plugins/lisa/commands/build.md +0 -12
- package/plugins/lisa/commands/fix.md +0 -12
- package/plugins/lisa/commands/improve.md +0 -18
- package/plugins/lisa/commands/investigate.md +0 -10
- package/plugins/lisa/commands/jira/add-journey.md +0 -7
- package/plugins/lisa/commands/jira/build-intake.md +0 -7
- package/plugins/lisa/commands/jira/create.md +0 -7
- package/plugins/lisa/commands/jira/evidence.md +0 -7
- package/plugins/lisa/commands/jira/journey.md +0 -7
- package/plugins/lisa/commands/jira/read-ticket.md +0 -7
- package/plugins/lisa/commands/jira/source-artifacts.md +0 -6
- package/plugins/lisa/commands/jira/sync.md +0 -7
- package/plugins/lisa/commands/jira/triage.md +0 -7
- package/plugins/lisa/commands/jira/validate-ticket.md +0 -7
- package/plugins/lisa/commands/jira/verify.md +0 -7
- package/plugins/lisa/commands/jira/write-ticket.md +0 -7
- package/plugins/lisa/commands/notion-prd-intake.md +0 -7
- package/plugins/lisa/commands/plan/create.md +0 -8
- package/plugins/lisa/commands/plan/execute.md +0 -6
- package/plugins/lisa/commands/prd-ticket-coverage.md +0 -7
- package/plugins/lisa/commands/review/implementation.md +0 -7
- package/plugins/lisa/commands/review.md +0 -10
- package/plugins/lisa/commands/ship.md +0 -8
- package/plugins/lisa/commands/spec-conformance.md +0 -7
- package/plugins/lisa-expo/commands/jira/add-journey.md +0 -7
- package/plugins/lisa-expo/commands/jira/create.md +0 -7
- package/plugins/lisa-expo/commands/jira/evidence.md +0 -7
- package/plugins/lisa-expo/commands/jira/journey.md +0 -7
- package/plugins/lisa-expo/commands/jira/verify.md +0 -7
- package/plugins/lisa-rails/commands/jira/add-journey.md +0 -7
- package/plugins/lisa-rails/commands/jira/create.md +0 -7
- package/plugins/lisa-rails/commands/jira/evidence.md +0 -7
- package/plugins/lisa-rails/commands/jira/journey.md +0 -7
- package/plugins/lisa-rails/commands/jira/verify.md +0 -7
- package/plugins/src/base/commands/build.md +0 -12
- package/plugins/src/base/commands/fix.md +0 -12
- package/plugins/src/base/commands/improve.md +0 -18
- package/plugins/src/base/commands/investigate.md +0 -10
- package/plugins/src/base/commands/jira/add-journey.md +0 -7
- package/plugins/src/base/commands/jira/build-intake.md +0 -7
- package/plugins/src/base/commands/jira/create.md +0 -7
- package/plugins/src/base/commands/jira/evidence.md +0 -7
- package/plugins/src/base/commands/jira/journey.md +0 -7
- package/plugins/src/base/commands/jira/read-ticket.md +0 -7
- package/plugins/src/base/commands/jira/source-artifacts.md +0 -6
- package/plugins/src/base/commands/jira/sync.md +0 -7
- package/plugins/src/base/commands/jira/triage.md +0 -7
- package/plugins/src/base/commands/jira/validate-ticket.md +0 -7
- package/plugins/src/base/commands/jira/verify.md +0 -7
- package/plugins/src/base/commands/jira/write-ticket.md +0 -7
- package/plugins/src/base/commands/notion-prd-intake.md +0 -7
- package/plugins/src/base/commands/plan/create.md +0 -8
- package/plugins/src/base/commands/plan/execute.md +0 -6
- package/plugins/src/base/commands/prd-ticket-coverage.md +0 -7
- package/plugins/src/base/commands/review/implementation.md +0 -7
- package/plugins/src/base/commands/review.md +0 -10
- package/plugins/src/base/commands/ship.md +0 -8
- package/plugins/src/base/commands/spec-conformance.md +0 -7
- package/plugins/src/expo/commands/jira/add-journey.md +0 -7
- package/plugins/src/expo/commands/jira/create.md +0 -7
- package/plugins/src/expo/commands/jira/evidence.md +0 -7
- package/plugins/src/expo/commands/jira/journey.md +0 -7
- package/plugins/src/expo/commands/jira/verify.md +0 -7
- package/plugins/src/rails/commands/jira/add-journey.md +0 -7
- package/plugins/src/rails/commands/jira/create.md +0 -7
- package/plugins/src/rails/commands/jira/evidence.md +0 -7
- package/plugins/src/rails/commands/jira/journey.md +0 -7
- package/plugins/src/rails/commands/jira/verify.md +0 -7
|
@@ -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.
|
|
@@ -18,8 +18,8 @@ Each sub-task is scoped to exactly one repo and includes an empirical verificati
|
|
|
18
18
|
|
|
19
19
|
This skill supports two modes, controlled by a `dry_run` flag in `$ARGUMENTS`:
|
|
20
20
|
|
|
21
|
-
- **`dry_run: false`** (default — full mode): run all phases, write tickets via `jira-write-ticket`, run the preservation gate, report.
|
|
22
|
-
- **`dry_run: true`** (planning + validation only — no writes): run Phases 1, 1.5, 1.6, 2, 3, 4 to plan the hierarchy and draft each ticket spec, then call `jira-validate-ticket` (with `--spec-only`) on every drafted ticket. Aggregate the per-ticket validator reports into a single dry-run report. **Skip Phase 5 (sub-task creation), Phase 5.5 (preservation gate), and Phase 6 (results report)** — none of those make sense without writes. Return the dry-run report so the caller (e.g. `notion-prd-intake`) can decide whether to proceed.
|
|
21
|
+
- **`dry_run: false`** (default — full mode): run all phases, write tickets via `lisa:jira-write-ticket`, run the preservation gate, report.
|
|
22
|
+
- **`dry_run: true`** (planning + validation only — no writes): run Phases 1, 1.5, 1.6, 2, 3, 4 to plan the hierarchy and draft each ticket spec, then call `lisa:jira-validate-ticket` (with `--spec-only`) on every drafted ticket. Aggregate the per-ticket validator reports into a single dry-run report. **Skip Phase 5 (sub-task creation), Phase 5.5 (preservation gate), and Phase 6 (results report)** — none of those make sense without writes. Return the dry-run report so the caller (e.g. `lisa:notion-prd-intake`) can decide whether to proceed.
|
|
23
23
|
|
|
24
24
|
Dry-run output format:
|
|
25
25
|
|
|
@@ -43,11 +43,11 @@ Dry-run output format:
|
|
|
43
43
|
|
|
44
44
|
The dry-run mode never writes to JIRA and never calls `mcp__atlassian__createJiraIssue`. It also never sets a Notion status — that is the orchestrating skill's responsibility.
|
|
45
45
|
|
|
46
|
-
## Hard Rule: All Writes Go Through `jira-write-ticket`
|
|
46
|
+
## Hard Rule: All Writes Go Through `lisa:jira-write-ticket`
|
|
47
47
|
|
|
48
|
-
**Every JIRA ticket created by this skill — every epic, story, and sub-task — MUST be created by invoking the `jira-write-ticket` skill. Never call `mcp__atlassian__createJiraIssue`, `mcp__atlassian__editJiraIssue`, `mcp__atlassian__createIssueLink`, or any other Atlassian write tool directly from this skill or from any sub-agent it spawns.**
|
|
48
|
+
**Every JIRA ticket created by this skill — every epic, story, and sub-task — MUST be created by invoking the `lisa:jira-write-ticket` skill. Never call `mcp__atlassian__createJiraIssue`, `mcp__atlassian__editJiraIssue`, `mcp__atlassian__createIssueLink`, or any other Atlassian write tool directly from this skill or from any sub-agent it spawns.**
|
|
49
49
|
|
|
50
|
-
`jira-write-ticket` enforces gates this skill does not:
|
|
50
|
+
`lisa:jira-write-ticket` enforces gates this skill does not:
|
|
51
51
|
- 3-audience description (Context / Technical Approach / Acceptance Criteria)
|
|
52
52
|
- Gherkin acceptance criteria
|
|
53
53
|
- Epic parent validation
|
|
@@ -56,7 +56,7 @@ The dry-run mode never writes to JIRA and never calls `mcp__atlassian__createJir
|
|
|
56
56
|
- Sign-in account and target environment recorded in description
|
|
57
57
|
- Post-create verification
|
|
58
58
|
|
|
59
|
-
Bypassing `jira-write-ticket` produces thin tickets that the rest of the lifecycle (triage, ticket-verify, journey, evidence) treats as broken. This is the most common failure mode this skill has had — calling `createJiraIssue` directly is a regression, not an optimization. The Atlassian read tools (`getJiraIssue`, `searchJiraIssuesUsingJql`, `getJiraIssueRemoteIssueLinks`, `getAccessibleAtlassianResources`, `getJiraProjectIssueTypesMetadata`, `getVisibleJiraProjects`) ARE allowed for context gathering and the Phase 5.5 preservation gate.
|
|
59
|
+
Bypassing `lisa:jira-write-ticket` produces thin tickets that the rest of the lifecycle (triage, ticket-verify, journey, evidence) treats as broken. This is the most common failure mode this skill has had — calling `createJiraIssue` directly is a regression, not an optimization. The Atlassian read tools (`getJiraIssue`, `searchJiraIssuesUsingJql`, `getJiraIssueRemoteIssueLinks`, `getAccessibleAtlassianResources`, `getJiraProjectIssueTypesMetadata`, `getVisibleJiraProjects`) ARE allowed for context gathering and the Phase 5.5 preservation gate.
|
|
60
60
|
|
|
61
61
|
## Input
|
|
62
62
|
|
|
@@ -111,17 +111,17 @@ PRDs typically reference external design, UX, and data artifacts (Figma files, L
|
|
|
111
111
|
- Embedded images and file attachments on the page itself
|
|
112
112
|
- Fenced code blocks with example data (JSON, SQL, GraphQL, cURL request/response)
|
|
113
113
|
|
|
114
|
-
2. **Classify each artifact and apply taxonomy rules** by invoking the `jira-source-artifacts` skill. That skill is the single source of truth for: domains (`ui-design` / `ux-flow` / `data` / `ops` / `reference`), per-tool classification rules (Figma `/proto/` vs design, Lovable as `ux-flow`, Loom, screenshots), and coverage smells. Do not restate the rules here — invoke the skill so any drift in the rules propagates uniformly.
|
|
114
|
+
2. **Classify each artifact and apply taxonomy rules** by invoking the `lisa:jira-source-artifacts` skill. That skill is the single source of truth for: domains (`ui-design` / `ux-flow` / `data` / `ops` / `reference`), per-tool classification rules (Figma `/proto/` vs design, Lovable as `ux-flow`, Loom, screenshots), and coverage smells. Do not restate the rules here — invoke the skill so any drift in the rules propagates uniformly.
|
|
115
115
|
|
|
116
116
|
3. **Build an `artifacts` map** keyed by domain. Each entry: `{ url, title, domain, source_page, source_page_url, classification_reason }`. The `classification_reason` makes disambiguation auditable ("Figma URL contains `/proto/` → ux-flow"). The `source_page` lets you trace each reference back to where it appeared in the PRD.
|
|
117
117
|
|
|
118
|
-
4. **Surface coverage smells** as defined in `jira-source-artifacts` §5 (zero artifacts, prototype-without-mock, mock-without-prototype, Lovable-without-business-rules). Record any detected smells on the epic.
|
|
118
|
+
4. **Surface coverage smells** as defined in `lisa:jira-source-artifacts` §5 (zero artifacts, prototype-without-mock, mock-without-prototype, Lovable-without-business-rules). Record any detected smells on the epic.
|
|
119
119
|
|
|
120
120
|
### Phase 1.6: Source Precedence & Conflict Resolution
|
|
121
121
|
|
|
122
|
-
Source precedence rules and cross-axis conflict handling are defined in `jira-source-artifacts` §3 and §4. Apply them during ticket synthesis: every conflict between artifacts must be recorded under `## Open Questions` on the affected ticket, never silently reconciled.
|
|
122
|
+
Source precedence rules and cross-axis conflict handling are defined in `lisa:jira-source-artifacts` §3 and §4. Apply them during ticket synthesis: every conflict between artifacts must be recorded under `## Open Questions` on the affected ticket, never silently reconciled.
|
|
123
123
|
|
|
124
|
-
The existing-component reuse expectation (mocks define visual intent, not implementation shortcut) is defined in `jira-source-artifacts` §7. Encode it on every UI-touching story.
|
|
124
|
+
The existing-component reuse expectation (mocks define visual intent, not implementation shortcut) is defined in `lisa:jira-source-artifacts` §7. Encode it on every UI-touching story.
|
|
125
125
|
|
|
126
126
|
### Phase 2: Codebase + Live Product Research
|
|
127
127
|
|
|
@@ -135,7 +135,7 @@ Key things to look for:
|
|
|
135
135
|
- Data model gaps the PRD requires (new fields, new entities)
|
|
136
136
|
- The tech stack per repo (framework, ORM, UI library, deployment)
|
|
137
137
|
|
|
138
|
-
**2b. Live product walkthrough.** If the PRD touches existing user-facing surfaces (modifies a screen, adds something next to existing functionality, fixes current behavior, re-styles an existing flow), invoke the `product-walkthrough` skill against `E2E_BASE_URL` using the test user from config. This grounds the ticket plan in what's actually shipped — design-vs-current-product divergence, reuse candidates, and behavioral surprises that the PRD didn't anticipate become inputs to ticket creation rather than discoveries during implementation.
|
|
138
|
+
**2b. Live product walkthrough.** If the PRD touches existing user-facing surfaces (modifies a screen, adds something next to existing functionality, fixes current behavior, re-styles an existing flow), invoke the `lisa:product-walkthrough` skill against `E2E_BASE_URL` using the test user from config. This grounds the ticket plan in what's actually shipped — design-vs-current-product divergence, reuse candidates, and behavioral surprises that the PRD didn't anticipate become inputs to ticket creation rather than discoveries during implementation.
|
|
139
139
|
|
|
140
140
|
Skip 2b only when the work is purely backend with no user-visible surface, or affects a screen that does not yet exist in dev/prod.
|
|
141
141
|
|
|
@@ -143,9 +143,9 @@ Walkthrough findings are attached to the originating Notion PRD as a comment ("C
|
|
|
143
143
|
|
|
144
144
|
### Phase 3: Create Epics
|
|
145
145
|
|
|
146
|
-
> **Mode guard**: In `dry_run: true` mode, do not invoke `jira-write-ticket` in this phase. Instead, draft the epic spec (summary, description_body, artifacts) and validate it with `jira-validate-ticket --spec-only`. Record the drafted spec (including a placeholder epic key like `DRY-RUN-EPIC-1`) for Phase 4 to use as parent references. In `dry_run: false` mode (default), proceed as described below.
|
|
146
|
+
> **Mode guard**: In `dry_run: true` mode, do not invoke `lisa:jira-write-ticket` in this phase. Instead, draft the epic spec (summary, description_body, artifacts) and validate it with `lisa:jira-validate-ticket --spec-only`. Record the drafted spec (including a placeholder epic key like `DRY-RUN-EPIC-1`) for Phase 4 to use as parent references. In `dry_run: false` mode (default), proceed as described below.
|
|
147
147
|
|
|
148
|
-
For each PRD epic, **invoke the `jira-write-ticket` skill** (do not call `createJiraIssue` directly). Pass it everything it needs to enforce its quality gates:
|
|
148
|
+
For each PRD epic, **invoke the `lisa:jira-write-ticket` skill** (do not call `createJiraIssue` directly). Pass it everything it needs to enforce its quality gates:
|
|
149
149
|
|
|
150
150
|
- `project_key`: from `JIRA_PROJECT` config
|
|
151
151
|
- `issue_type`: `Epic`
|
|
@@ -158,14 +158,14 @@ For each PRD epic, **invoke the `jira-write-ticket` skill** (do not call `create
|
|
|
158
158
|
- Blockers and open questions
|
|
159
159
|
- Dependencies on other epics or PRDs
|
|
160
160
|
- A **Source Artifacts** section listing every artifact extracted in Phase 1.5 (grouped by domain)
|
|
161
|
-
- `artifacts`: the full Phase 1.5 artifact list — every artifact, regardless of domain. The epic is the canonical hub, and anyone working on the epic or its descendants must be able to reach the full set from one place. No filtering at the epic level. `jira-write-ticket` Phase 4c attaches them as remote links.
|
|
161
|
+
- `artifacts`: the full Phase 1.5 artifact list — every artifact, regardless of domain. The epic is the canonical hub, and anyone working on the epic or its descendants must be able to reach the full set from one place. No filtering at the epic level. `lisa:jira-write-ticket` Phase 4c attaches them as remote links.
|
|
162
162
|
- `priority`, `labels`, `components`, `fix_version`: as appropriate
|
|
163
163
|
|
|
164
164
|
Capture the returned epic key — Phase 4 needs it as the parent for stories.
|
|
165
165
|
|
|
166
166
|
### Phase 4: Create Stories
|
|
167
167
|
|
|
168
|
-
> **Mode guard**: In `dry_run: true` mode, do not invoke `jira-write-ticket` in this phase. Instead, draft each story spec and validate it with `jira-validate-ticket --spec-only`. Use placeholder keys (e.g. `DRY-RUN-STORY-1.1`) for any downstream references. In `dry_run: false` mode (default), proceed as described below.
|
|
168
|
+
> **Mode guard**: In `dry_run: true` mode, do not invoke `lisa:jira-write-ticket` in this phase. Instead, draft each story spec and validate it with `lisa:jira-validate-ticket --spec-only`. Use placeholder keys (e.g. `DRY-RUN-STORY-1.1`) for any downstream references. In `dry_run: false` mode (default), proceed as described below.
|
|
169
169
|
|
|
170
170
|
For each Epic, plan two kinds of stories:
|
|
171
171
|
- **One "X.0 Setup" story** for data model and infrastructure prerequisites (new entities, migrations, new fields, infrastructure like S3 buckets or SQS queues)
|
|
@@ -176,24 +176,24 @@ For each Epic, plan two kinds of stories:
|
|
|
176
176
|
- "Squad Planning" -> `[SP-1.1]`
|
|
177
177
|
- Use your judgment for other PRDs
|
|
178
178
|
|
|
179
|
-
For each story, **invoke `jira-write-ticket`** with:
|
|
179
|
+
For each story, **invoke `lisa:jira-write-ticket`** with:
|
|
180
180
|
|
|
181
181
|
- `project_key`: from `JIRA_PROJECT` config
|
|
182
182
|
- `issue_type`: `Story`
|
|
183
|
-
- `epic_parent`: the Epic key captured in Phase 3 (mandatory — `jira-write-ticket` rejects non-bug, non-epic tickets without an epic parent)
|
|
183
|
+
- `epic_parent`: the Epic key captured in Phase 3 (mandatory — `lisa:jira-write-ticket` rejects non-bug, non-epic tickets without an epic parent)
|
|
184
184
|
- `summary`: prefixed per the naming convention above
|
|
185
185
|
- `description_body`: a draft of the 3-audience description containing:
|
|
186
186
|
- **Context / Business Value**: the user story statement from the PRD
|
|
187
187
|
- **Technical Approach**: notes from engineering comments and Phase 2 codebase research
|
|
188
|
-
- **Acceptance Criteria** (Gherkin) derived from the functional requirements — `jira-write-ticket` will reject prose-only acceptance criteria
|
|
188
|
+
- **Acceptance Criteria** (Gherkin) derived from the functional requirements — `lisa:jira-write-ticket` will reject prose-only acceptance criteria
|
|
189
189
|
- Blockers with recommendation + alternatives (if any), under `## Open Questions`
|
|
190
190
|
- A **Source Artifacts** section listing the artifacts inherited from the epic that match this story's scope (see propagation rules below)
|
|
191
|
-
- `artifacts`: the Phase 1.5 artifacts filtered by domain per the inheritance table below — `jira-write-ticket` Phase 4c attaches them as remote links
|
|
191
|
+
- `artifacts`: the Phase 1.5 artifacts filtered by domain per the inheritance table below — `lisa:jira-write-ticket` Phase 4c attaches them as remote links
|
|
192
192
|
- `priority`, `labels`, `components`, `fix_version`: as appropriate
|
|
193
193
|
|
|
194
194
|
Capture each returned story key — Phase 5 needs it as the parent for sub-tasks.
|
|
195
195
|
|
|
196
|
-
**Inherit domain-matching artifacts as story remote links**. For each story, the artifact set passed to `jira-write-ticket` should be the Phase 1.5 artifacts whose domain matches the story's scope:
|
|
196
|
+
**Inherit domain-matching artifacts as story remote links**. For each story, the artifact set passed to `lisa:jira-write-ticket` should be the Phase 1.5 artifacts whose domain matches the story's scope:
|
|
197
197
|
|
|
198
198
|
| Story type | Inherits domains |
|
|
199
199
|
|------------|------------------|
|
|
@@ -206,10 +206,10 @@ When classification is ambiguous, err on the side of inclusion — a developer c
|
|
|
206
206
|
|
|
207
207
|
### Phase 5: Create Sub-tasks
|
|
208
208
|
|
|
209
|
-
Delegate sub-task creation to **parallel agents** (one per epic or batch of stories) for efficiency. **Every spawned agent must invoke `jira-write-ticket` for each sub-task — no agent may call `createJiraIssue` directly.** This is non-negotiable; see the Agent Prompt Template at the bottom of this skill for the exact instructions to pass.
|
|
209
|
+
Delegate sub-task creation to **parallel agents** (one per epic or batch of stories) for efficiency. **Every spawned agent must invoke `lisa:jira-write-ticket` for each sub-task — no agent may call `createJiraIssue` directly.** This is non-negotiable; see the Agent Prompt Template at the bottom of this skill for the exact instructions to pass.
|
|
210
210
|
|
|
211
211
|
Each sub-task MUST:
|
|
212
|
-
1. **Be scoped to exactly ONE repo** — indicated in brackets in the summary: `[repo-name]`. `jira-write-ticket` enforces single-repo scope on Sub-task; cross-repo sub-tasks will be rejected and must be split before delegation.
|
|
212
|
+
1. **Be scoped to exactly ONE repo** — indicated in brackets in the summary: `[repo-name]`. `lisa:jira-write-ticket` enforces single-repo scope on Sub-task; cross-repo sub-tasks will be rejected and must be split before delegation.
|
|
213
213
|
2. **Include an Empirical Verification Plan** — real user-like verification, NOT unit tests, linting, or typechecking
|
|
214
214
|
|
|
215
215
|
**Verification plan examples by stack:**
|
|
@@ -217,21 +217,21 @@ Each sub-task MUST:
|
|
|
217
217
|
- **Frontend web**: Playwright browser tests (login with test user, navigate, interact, screenshot)
|
|
218
218
|
- **Infrastructure**: `cdk synth` / `terraform plan` verification, CLI checks after deploy
|
|
219
219
|
|
|
220
|
-
Use the test user credentials from config for all verification plans. The credentials are passed to `jira-write-ticket` as the sign-in account so it can record them in the description per its own rules.
|
|
220
|
+
Use the test user credentials from config for all verification plans. The credentials are passed to `lisa:jira-write-ticket` as the sign-in account so it can record them in the description per its own rules.
|
|
221
221
|
|
|
222
|
-
For each sub-task, the spawned agent invokes `jira-write-ticket` with `issue_type: "Sub-task"` and `parent` set to the Story key. The Story key is the parent — the epic relationship is inherited transitively.
|
|
222
|
+
For each sub-task, the spawned agent invokes `lisa:jira-write-ticket` with `issue_type: "Sub-task"` and `parent` set to the Story key. The Story key is the parent — the epic relationship is inherited transitively.
|
|
223
223
|
|
|
224
|
-
Sub-tasks inherit their parent story's artifacts by reference (the parent link). Do not pass the same artifact list to every sub-task — that creates noise. The only exception is when a sub-task depends on an artifact that the parent story doesn't (e.g., a sub-task spec'd from a specific Figma frame that the broader story doesn't cite) — in that case, pass the specific artifact in the `artifacts` parameter to `jira-write-ticket`.
|
|
224
|
+
Sub-tasks inherit their parent story's artifacts by reference (the parent link). Do not pass the same artifact list to every sub-task — that creates noise. The only exception is when a sub-task depends on an artifact that the parent story doesn't (e.g., a sub-task spec'd from a specific Figma frame that the broader story doesn't cite) — in that case, pass the specific artifact in the `artifacts` parameter to `lisa:jira-write-ticket`.
|
|
225
225
|
|
|
226
226
|
### Phase 5.5: Artifact Preservation Gate (mandatory)
|
|
227
227
|
|
|
228
|
-
Run the preservation gate defined in `jira-source-artifacts` §8 against the artifacts extracted in Phase 1.5 and the tickets just created. Do NOT restate or modify the gate logic here — invoke the rules from `jira-source-artifacts` so any rule change propagates uniformly.
|
|
228
|
+
Run the preservation gate defined in `lisa:jira-source-artifacts` §8 against the artifacts extracted in Phase 1.5 and the tickets just created. Do NOT restate or modify the gate logic here — invoke the rules from `lisa:jira-source-artifacts` so any rule change propagates uniformly.
|
|
229
229
|
|
|
230
230
|
To run the gate, this skill must:
|
|
231
231
|
|
|
232
232
|
1. Pull the remote links of every epic and story created in this run via `mcp__atlassian__getJiraIssueRemoteIssueLinks`.
|
|
233
233
|
2. Apply the §8 preservation matrix and verdict rules.
|
|
234
|
-
3. If the gate fails: list each dropped/misrouted artifact (domain, title, source page, why it was dropped) and either re-attach via `jira-write-ticket` (UPDATE mode) or stop and ask the human. Never silently proceed past a gate failure.
|
|
234
|
+
3. If the gate fails: list each dropped/misrouted artifact (domain, title, source page, why it was dropped) and either re-attach via `lisa:jira-write-ticket` (UPDATE mode) or stop and ask the human. Never silently proceed past a gate failure.
|
|
235
235
|
4. If the gate passes: print the matrix compactly and proceed to Phase 6.
|
|
236
236
|
|
|
237
237
|
This gate is not optional. Skipping it is the failure mode the architecture exists to prevent.
|
|
@@ -270,13 +270,13 @@ When delegating to agents, provide this context. **The "MUST invoke jira-write-t
|
|
|
270
270
|
```text
|
|
271
271
|
Create JIRA sub-tasks in the [PROJECT] project at [CLOUD_ID].
|
|
272
272
|
|
|
273
|
-
CRITICAL: For each sub-task, invoke the `jira-write-ticket` skill via the Skill tool.
|
|
274
|
-
Do NOT call `mcp__atlassian__createJiraIssue` directly. The `jira-write-ticket` skill
|
|
273
|
+
CRITICAL: For each sub-task, invoke the `lisa:jira-write-ticket` skill via the Skill tool.
|
|
274
|
+
Do NOT call `mcp__atlassian__createJiraIssue` directly. The `lisa:jira-write-ticket` skill
|
|
275
275
|
enforces required quality gates (Gherkin acceptance criteria, 3-audience description,
|
|
276
276
|
single-repo scope, sign-in/environment fields, post-create verification). Bypassing it
|
|
277
277
|
produces broken tickets that downstream skills (triage, journey, evidence) cannot use.
|
|
278
278
|
|
|
279
|
-
For each sub-task, invoke `jira-write-ticket` with:
|
|
279
|
+
For each sub-task, invoke `lisa:jira-write-ticket` with:
|
|
280
280
|
- issue_type: "Sub-task"
|
|
281
281
|
- parent: the parent story key
|
|
282
282
|
- project_key: [PROJECT]
|
|
@@ -292,9 +292,9 @@ For each sub-task, invoke `jira-write-ticket` with:
|
|
|
292
292
|
Each sub-task must:
|
|
293
293
|
1. Be scoped to ONE repo only — repo named in brackets in the summary
|
|
294
294
|
2. Include the Empirical Verification Plan in the description
|
|
295
|
-
3. Be created via `jira-write-ticket`, not via direct MCP calls
|
|
295
|
+
3. Be created via `lisa:jira-write-ticket`, not via direct MCP calls
|
|
296
296
|
|
|
297
|
-
If `jira-write-ticket` rejects a sub-task (cross-repo scope, missing Gherkin, missing
|
|
297
|
+
If `lisa:jira-write-ticket` rejects a sub-task (cross-repo scope, missing Gherkin, missing
|
|
298
298
|
sign-in, etc.), fix the input and re-invoke. Do NOT fall back to a direct
|
|
299
299
|
`createJiraIssue` call to bypass the gate.
|
|
300
300
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan
|
|
3
|
+
description: "Decompose a single PRD or specification into ordered work items in the configured tracker. Vendor-agnostic — the source can be a Notion PRD URL, an existing JIRA epic key, a markdown file, or a free-form description; the destination tracker is whatever the project is configured to use (JIRA today; Linear/GitHub Issues are pluggable). Single-PRD mode only — for batch scanning of all Status=Ready PRDs in a queue, use the lisa:intake skill."
|
|
4
|
+
allowed-tools: ["Skill", "Bash", "Read", "Glob", "Grep"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Plan: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
Decompose the PRD/spec at `$ARGUMENTS` into ordered work items with acceptance criteria, dependencies, and recommended skills/agents.
|
|
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
|
+
## Source dispatch
|
|
18
|
+
|
|
19
|
+
Detect the input type from `$ARGUMENTS` and route to the appropriate source skill:
|
|
20
|
+
|
|
21
|
+
| If `$ARGUMENTS` is... | Hand off to |
|
|
22
|
+
|------------------------|-------------|
|
|
23
|
+
| A Notion **page** URL or page ID (single PRD) | `lisa:notion-to-jira` (with the PRD URL; runs the full pipeline: extract artifacts → walk live product → validate → write tickets → coverage audit) |
|
|
24
|
+
| A Notion **database** URL or database ID | Stop and report — single-PRD mode only. Direct the caller to `lisa:intake` for batch scanning of a database. |
|
|
25
|
+
| A JIRA ticket ID/URL of an Epic (existing epic *is* the spec) | `lisa:jira-agent` (read epic, decompose into stories/sub-tasks) |
|
|
26
|
+
| A Linear / GitHub Issues URL or key | Not yet implemented. Stop and tell the user the adapter doesn't exist yet — the architecture supports it, but no `linear-prd-source` / `github-prd-source` skill has been built. Don't fall back. |
|
|
27
|
+
| A file path (`@plan.md`, `./spec.md`) | Read the file as the spec; run the Plan flow's core decomposition with the file content as input. |
|
|
28
|
+
| A plain-text description | Use the description as the spec; run the Plan flow's core decomposition. |
|
|
29
|
+
|
|
30
|
+
If no PRD or specification exists, suggest running the `lisa:research` skill first to produce one.
|
|
31
|
+
|
|
32
|
+
## Flow
|
|
33
|
+
|
|
34
|
+
Execute the **Plan** flow as defined in the `intent-routing` rule (loaded via the lisa plugin). The rule contains the canonical step sequence (gates, sub-flows, output structure). This skill does NOT restate flow steps — change them in the rule, propagate everywhere.
|
|
35
|
+
|
|
36
|
+
## Output
|
|
37
|
+
|
|
38
|
+
Work items in the configured tracker (JIRA today; Linear/GitHub Issues when adapters exist) with acceptance criteria, dependencies, and recommended skills/agents per item. Ordered by dependency. If the specification cannot be decomposed without further clarification, stop and report what is missing.
|