@codyswann/lisa 2.7.0 → 2.8.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 (111) hide show
  1. package/package.json +1 -1
  2. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  3. package/plugins/lisa/agents/confluence-prd-intake.md +5 -5
  4. package/plugins/lisa/agents/github-agent.md +141 -0
  5. package/plugins/lisa/agents/github-build-intake.md +62 -0
  6. package/plugins/lisa/agents/github-prd-intake.md +64 -0
  7. package/plugins/lisa/agents/linear-prd-intake.md +5 -5
  8. package/plugins/lisa/agents/notion-prd-intake.md +5 -5
  9. package/plugins/lisa/commands/intake.md +2 -2
  10. package/plugins/lisa/commands/plan.md +2 -2
  11. package/plugins/lisa/rules/intent-routing.md +16 -11
  12. package/plugins/lisa/rules/tracker-resolution.md +76 -0
  13. package/plugins/lisa/skills/confluence-prd-intake/SKILL.md +11 -11
  14. package/plugins/lisa/skills/{confluence-to-jira → confluence-to-tracker}/SKILL.md +31 -31
  15. package/plugins/lisa/skills/github-add-journey/SKILL.md +114 -0
  16. package/plugins/lisa/skills/github-build-intake/SKILL.md +188 -0
  17. package/plugins/lisa/skills/github-create/SKILL.md +101 -0
  18. package/plugins/lisa/skills/github-evidence/SKILL.md +116 -0
  19. package/plugins/lisa/skills/github-journey/SKILL.md +121 -0
  20. package/plugins/lisa/skills/github-prd-intake/SKILL.md +286 -0
  21. package/plugins/lisa/skills/github-read-issue/SKILL.md +248 -0
  22. package/plugins/lisa/skills/github-sync/SKILL.md +73 -0
  23. package/plugins/lisa/skills/github-to-tracker/SKILL.md +312 -0
  24. package/plugins/lisa/skills/github-validate-issue/SKILL.md +288 -0
  25. package/plugins/lisa/skills/github-verify/SKILL.md +29 -0
  26. package/plugins/lisa/skills/github-write-issue/SKILL.md +304 -0
  27. package/plugins/lisa/skills/implement/SKILL.md +4 -4
  28. package/plugins/lisa/skills/intake/SKILL.md +14 -4
  29. package/plugins/lisa/skills/jira-source-artifacts/SKILL.md +1 -1
  30. package/plugins/lisa/skills/jira-validate-ticket/SKILL.md +3 -3
  31. package/plugins/lisa/skills/jira-verify/SKILL.md +1 -1
  32. package/plugins/lisa/skills/jira-write-ticket/SKILL.md +3 -3
  33. package/plugins/lisa/skills/linear-prd-intake/SKILL.md +10 -10
  34. package/plugins/lisa/skills/{linear-to-jira → linear-to-tracker}/SKILL.md +30 -31
  35. package/plugins/lisa/skills/notion-prd-intake/SKILL.md +11 -11
  36. package/plugins/{src/base/skills/notion-to-jira → lisa/skills/notion-to-tracker}/SKILL.md +34 -34
  37. package/plugins/lisa/skills/plan/SKILL.md +8 -6
  38. package/plugins/lisa/skills/prd-ticket-coverage/SKILL.md +22 -12
  39. package/plugins/lisa/skills/product-walkthrough/SKILL.md +1 -1
  40. package/plugins/lisa/skills/spec-conformance/SKILL.md +2 -3
  41. package/plugins/lisa/skills/ticket-triage/SKILL.md +7 -7
  42. package/plugins/lisa/skills/tracker-add-journey/SKILL.md +24 -0
  43. package/plugins/lisa/skills/tracker-build-intake/SKILL.md +25 -0
  44. package/plugins/lisa/skills/tracker-create/SKILL.md +24 -0
  45. package/plugins/lisa/skills/tracker-evidence/SKILL.md +24 -0
  46. package/plugins/lisa/skills/tracker-journey/SKILL.md +24 -0
  47. package/plugins/lisa/skills/tracker-read/SKILL.md +25 -0
  48. package/plugins/lisa/skills/tracker-sync/SKILL.md +26 -0
  49. package/plugins/lisa/skills/tracker-validate/SKILL.md +35 -0
  50. package/plugins/lisa/skills/tracker-verify/SKILL.md +25 -0
  51. package/plugins/lisa/skills/tracker-write/SKILL.md +43 -0
  52. package/plugins/lisa/skills/verify/SKILL.md +1 -1
  53. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-expo/skills/jira-verify/SKILL.md +1 -1
  56. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-rails/skills/jira-verify/SKILL.md +1 -1
  59. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  60. package/plugins/src/base/agents/confluence-prd-intake.md +5 -5
  61. package/plugins/src/base/agents/github-agent.md +141 -0
  62. package/plugins/src/base/agents/github-build-intake.md +62 -0
  63. package/plugins/src/base/agents/github-prd-intake.md +64 -0
  64. package/plugins/src/base/agents/linear-prd-intake.md +5 -5
  65. package/plugins/src/base/agents/notion-prd-intake.md +5 -5
  66. package/plugins/src/base/commands/intake.md +2 -2
  67. package/plugins/src/base/commands/plan.md +2 -2
  68. package/plugins/src/base/rules/intent-routing.md +16 -11
  69. package/plugins/src/base/rules/tracker-resolution.md +76 -0
  70. package/plugins/src/base/skills/confluence-prd-intake/SKILL.md +11 -11
  71. package/plugins/src/base/skills/{confluence-to-jira → confluence-to-tracker}/SKILL.md +31 -31
  72. package/plugins/src/base/skills/github-add-journey/SKILL.md +114 -0
  73. package/plugins/src/base/skills/github-build-intake/SKILL.md +188 -0
  74. package/plugins/src/base/skills/github-create/SKILL.md +101 -0
  75. package/plugins/src/base/skills/github-evidence/SKILL.md +116 -0
  76. package/plugins/src/base/skills/github-journey/SKILL.md +121 -0
  77. package/plugins/src/base/skills/github-prd-intake/SKILL.md +286 -0
  78. package/plugins/src/base/skills/github-read-issue/SKILL.md +248 -0
  79. package/plugins/src/base/skills/github-sync/SKILL.md +73 -0
  80. package/plugins/src/base/skills/github-to-tracker/SKILL.md +312 -0
  81. package/plugins/src/base/skills/github-validate-issue/SKILL.md +288 -0
  82. package/plugins/src/base/skills/github-verify/SKILL.md +29 -0
  83. package/plugins/src/base/skills/github-write-issue/SKILL.md +304 -0
  84. package/plugins/src/base/skills/implement/SKILL.md +4 -4
  85. package/plugins/src/base/skills/intake/SKILL.md +14 -4
  86. package/plugins/src/base/skills/jira-source-artifacts/SKILL.md +1 -1
  87. package/plugins/src/base/skills/jira-validate-ticket/SKILL.md +3 -3
  88. package/plugins/src/base/skills/jira-verify/SKILL.md +1 -1
  89. package/plugins/src/base/skills/jira-write-ticket/SKILL.md +3 -3
  90. package/plugins/src/base/skills/linear-prd-intake/SKILL.md +10 -10
  91. package/plugins/src/base/skills/{linear-to-jira → linear-to-tracker}/SKILL.md +30 -31
  92. package/plugins/src/base/skills/notion-prd-intake/SKILL.md +11 -11
  93. package/plugins/{lisa/skills/notion-to-jira → src/base/skills/notion-to-tracker}/SKILL.md +34 -34
  94. package/plugins/src/base/skills/plan/SKILL.md +8 -6
  95. package/plugins/src/base/skills/prd-ticket-coverage/SKILL.md +22 -12
  96. package/plugins/src/base/skills/product-walkthrough/SKILL.md +1 -1
  97. package/plugins/src/base/skills/spec-conformance/SKILL.md +2 -3
  98. package/plugins/src/base/skills/ticket-triage/SKILL.md +7 -7
  99. package/plugins/src/base/skills/tracker-add-journey/SKILL.md +24 -0
  100. package/plugins/src/base/skills/tracker-build-intake/SKILL.md +25 -0
  101. package/plugins/src/base/skills/tracker-create/SKILL.md +24 -0
  102. package/plugins/src/base/skills/tracker-evidence/SKILL.md +24 -0
  103. package/plugins/src/base/skills/tracker-journey/SKILL.md +24 -0
  104. package/plugins/src/base/skills/tracker-read/SKILL.md +25 -0
  105. package/plugins/src/base/skills/tracker-sync/SKILL.md +26 -0
  106. package/plugins/src/base/skills/tracker-validate/SKILL.md +35 -0
  107. package/plugins/src/base/skills/tracker-verify/SKILL.md +25 -0
  108. package/plugins/src/base/skills/tracker-write/SKILL.md +43 -0
  109. package/plugins/src/base/skills/verify/SKILL.md +1 -1
  110. package/plugins/src/expo/skills/jira-verify/SKILL.md +1 -1
  111. package/plugins/src/rails/skills/jira-verify/SKILL.md +1 -1
@@ -1,21 +1,21 @@
1
1
  ---
2
- name: confluence-to-jira
2
+ name: confluence-to-tracker
3
3
  description: >
4
- Break down a Confluence PRD page into JIRA epics, stories, and sub-tasks. Use this skill whenever the
5
- user shares a Confluence PRD URL and wants it converted into JIRA tickets, or asks to "break down
6
- this Confluence spec", "create tickets from a Confluence page", "turn this Confluence doc into JIRA",
7
- or similar. This skill mirrors `lisa:notion-to-jira` for projects whose PRDs live in Confluence —
4
+ Break down a Confluence PRD page into Epics, Stories, and Sub-tasks in the configured destination tracker (JIRA or GitHub Issues per .lisa.config.json). Use this skill whenever the
5
+ user shares a Confluence PRD URL and wants it converted into tracker tickets, or asks to "break down
6
+ this Confluence spec", "create tickets from a Confluence page", "turn this Confluence doc into tickets",
7
+ or similar. This skill mirrors `lisa:notion-to-tracker` for projects whose PRDs live in Confluence —
8
8
  the workflow, gates, dry-run mode, and validation rules are identical; only the source-of-truth tool
9
9
  surface differs (Confluence MCP instead of Notion MCP).
10
- allowed-tools: ["Skill", "Bash", "mcp__atlassian__getConfluencePage", "mcp__atlassian__getConfluencePageDescendants", "mcp__atlassian__getConfluencePageFooterComments", "mcp__atlassian__getConfluencePageInlineComments", "mcp__atlassian__getConfluenceCommentChildren", "mcp__atlassian__searchConfluenceUsingCql", "mcp__atlassian__getAccessibleAtlassianResources", "mcp__atlassian__getJiraIssueRemoteIssueLinks"]
10
+ allowed-tools: ["Skill", "Bash", "mcp__atlassian__getConfluencePage", "mcp__atlassian__getConfluencePageDescendants", "mcp__atlassian__getConfluencePageFooterComments", "mcp__atlassian__getConfluencePageInlineComments", "mcp__atlassian__getConfluenceCommentChildren", "mcp__atlassian__searchConfluenceUsingCql", "mcp__atlassian__getAccessibleAtlassianResources"]
11
11
  ---
12
12
 
13
- # Confluence PRD to JIRA Breakdown
13
+ # Confluence PRD to Tracker Breakdown
14
14
 
15
- Convert a Confluence PRD into a structured JIRA ticket hierarchy: Epics > Stories > Sub-tasks.
15
+ Convert a Confluence PRD into a structured ticket hierarchy in the configured destination tracker (JIRA or GitHub Issues per .lisa.config.json): Epics > Stories > Sub-tasks.
16
16
  Each sub-task is scoped to exactly one repo and includes an empirical verification plan.
17
17
 
18
- This skill is the Confluence counterpart of `lisa:notion-to-jira`. The two skills share the same
18
+ This skill is the Confluence counterpart of `lisa:notion-to-tracker`. The two skills share the same
19
19
  phases, gates, dry-run contract, and per-ticket validation logic. Only the PRD-side fetch / comment
20
20
  tools differ. When changing workflow logic, change BOTH skills together so the two source vendors
21
21
  stay behaviorally identical.
@@ -24,16 +24,16 @@ stay behaviorally identical.
24
24
 
25
25
  This skill supports two modes, controlled by a `dry_run` flag in `$ARGUMENTS`:
26
26
 
27
- - **`dry_run: false`** (default — full mode): run all phases, write tickets via `lisa:jira-write-ticket`, run the preservation gate, report.
28
- - **`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:confluence-prd-intake`) can decide whether to proceed.
27
+ - **`dry_run: false`** (default — full mode): run all phases, write tickets via `lisa:tracker-write`, run the preservation gate, report.
28
+ - **`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:tracker-validate` (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:confluence-prd-intake`) can decide whether to proceed.
29
29
 
30
- Dry-run output format is identical to `lisa:notion-to-jira`'s. Reuse the same fields, including
30
+ Dry-run output format is identical to `lisa:notion-to-tracker`'s. Reuse the same fields, including
31
31
  `prd_anchor` and `prd_section`. The only difference: `prd_anchor` is the inline-comment anchor text
32
32
  that `createConfluenceInlineComment` accepts (typically the full selected substring; truncate if it
33
33
  exceeds the tool's max anchor length and emit `null` if no resolvable anchor exists).
34
34
 
35
35
  ```text
36
- ## confluence-to-jira dry-run: <PRD title>
36
+ ## confluence-to-tracker dry-run: <PRD title>
37
37
 
38
38
  ### Planned hierarchy
39
39
  - Epic: <summary>
@@ -67,11 +67,11 @@ The dry-run mode never writes to JIRA and never calls `mcp__atlassian__createJir
67
67
  modifies the source Confluence page, never adds/removes labels, and never posts comments — that is the
68
68
  orchestrating skill's responsibility (`lisa:confluence-prd-intake`).
69
69
 
70
- ## Hard Rule: All Writes Go Through `lisa:jira-write-ticket`
70
+ ## Hard Rule: All Writes Go Through `lisa:tracker-write`
71
71
 
72
- **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.**
72
+ **Every JIRA ticket created by this skill — every epic, story, and sub-task — MUST be created by invoking the `lisa:tracker-write` 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.**
73
73
 
74
- `lisa:jira-write-ticket` enforces gates this skill does not:
74
+ `lisa:tracker-write` enforces gates this skill does not:
75
75
  - 3-audience description (Context / Technical Approach / Acceptance Criteria)
76
76
  - Gherkin acceptance criteria
77
77
  - Epic parent validation
@@ -80,7 +80,7 @@ orchestrating skill's responsibility (`lisa:confluence-prd-intake`).
80
80
  - Sign-in account and target environment recorded in description
81
81
  - Post-create verification
82
82
 
83
- Bypassing `lisa:jira-write-ticket` produces thin tickets that the rest of the lifecycle (triage, ticket-verify, journey, evidence) treats as broken. The Atlassian read tools (`getJiraIssue`, `searchJiraIssuesUsingJql`, `getJiraIssueRemoteIssueLinks`, `getAccessibleAtlassianResources`, `getJiraProjectIssueTypesMetadata`, `getVisibleJiraProjects`, and the Confluence read endpoints listed in `allowed-tools` above) ARE allowed for context gathering and the Phase 5.5 preservation gate.
83
+ Bypassing `lisa:tracker-write` produces thin tickets that the rest of the lifecycle (triage, ticket-verify, journey, evidence) treats as broken. The Atlassian read tools (`getJiraIssue`, `searchJiraIssuesUsingJql`, `getJiraIssueRemoteIssueLinks`, `getAccessibleAtlassianResources`, `getJiraProjectIssueTypesMetadata`, `getVisibleJiraProjects`, and the Confluence read endpoints listed in `allowed-tools` above) ARE allowed for context gathering and the Phase 5.5 preservation gate.
84
84
 
85
85
  ## Input
86
86
 
@@ -165,7 +165,7 @@ The existing-component reuse expectation is defined in `lisa:jira-source-artifac
165
165
 
166
166
  ### Phase 2: Codebase + Live Product Research
167
167
 
168
- Identical to `lisa:notion-to-jira` Phase 2. Two complementary inputs ground PRD analysis: the **code** (what's there to reuse / extend) and the **live product** (what users see today). Skipping either produces tickets that misjudge the change.
168
+ Identical to `lisa:notion-to-tracker` Phase 2. Two complementary inputs ground PRD analysis: the **code** (what's there to reuse / extend) and the **live product** (what users see today). Skipping either produces tickets that misjudge the change.
169
169
 
170
170
  **2a. Codebase research.** If the session doesn't already have codebase context, explore the repos to understand what exists. Use Explore agents for repos not yet examined.
171
171
 
@@ -177,9 +177,9 @@ Walkthrough findings are attached to the originating Confluence PRD as a **foote
177
177
 
178
178
  ### Phase 3: Create Epics
179
179
 
180
- > **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.
180
+ > **Mode guard**: In `dry_run: true` mode, do not invoke `lisa:tracker-write` in this phase. Instead, draft the epic spec (summary, description_body, artifacts) and validate it with `lisa:tracker-validate --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.
181
181
 
182
- 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:
182
+ For each PRD epic, **invoke the `lisa:tracker-write` skill** (do not call `createJiraIssue` directly). Pass it everything it needs to enforce its quality gates:
183
183
 
184
184
  - `project_key`: from `JIRA_PROJECT` config
185
185
  - `issue_type`: `Epic`
@@ -199,7 +199,7 @@ Capture the returned epic key — Phase 4 needs it as the parent for stories.
199
199
 
200
200
  ### Phase 4: Create Stories
201
201
 
202
- > **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.
202
+ > **Mode guard**: In `dry_run: true` mode, do not invoke `lisa:tracker-write` in this phase. Instead, draft each story spec and validate it with `lisa:tracker-validate --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.
203
203
 
204
204
  For each Epic, plan two kinds of stories:
205
205
  - **One "X.0 Setup" story** for data model and infrastructure prerequisites
@@ -207,13 +207,13 @@ For each Epic, plan two kinds of stories:
207
207
 
208
208
  **Story naming convention**: Prefix the summary with a short code derived from the PRD title (e.g., `[CU-1.1]` for "Contract Upload").
209
209
 
210
- For each story, **invoke `lisa:jira-write-ticket`** with:
210
+ For each story, **invoke `lisa:tracker-write`** with:
211
211
 
212
212
  - `project_key`: from `JIRA_PROJECT` config
213
213
  - `issue_type`: `Story`
214
214
  - `epic_parent`: the Epic key captured in Phase 3 (mandatory)
215
215
  - `summary`: prefixed per the naming convention above
216
- - `description_body`: 3-audience description as in `lisa:notion-to-jira` Phase 4
216
+ - `description_body`: 3-audience description as in `lisa:notion-to-tracker` Phase 4
217
217
  - `artifacts`: the Phase 1.5 artifacts filtered by domain per the inheritance table below
218
218
 
219
219
  | Story type | Inherits domains |
@@ -227,7 +227,7 @@ Capture each returned story key — Phase 5 needs it as the parent for sub-tasks
227
227
 
228
228
  ### Phase 5: Create Sub-tasks
229
229
 
230
- 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.**
230
+ Delegate sub-task creation to **parallel agents** (one per epic or batch of stories) for efficiency. **Every spawned agent must invoke `lisa:tracker-write` for each sub-task — no agent may call `createJiraIssue` directly.**
231
231
 
232
232
  Each sub-task MUST:
233
233
  1. **Be scoped to exactly ONE repo** — indicated in brackets in the summary: `[repo-name]`
@@ -241,9 +241,9 @@ Run the preservation gate defined in `lisa:jira-source-artifacts` §8 against th
241
241
 
242
242
  To run the gate, this skill must:
243
243
 
244
- 1. Pull the remote links of every epic and story created in this run via `mcp__atlassian__getJiraIssueRemoteIssueLinks`.
244
+ 1. Pull the remote links of every epic and story created in this run via `lisa:tracker-read (vendor-neutral; dispatches to jira-read-ticket or github-read-issue)`.
245
245
  2. Apply the §8 preservation matrix and verdict rules.
246
- 3. If the gate fails: list each dropped/misrouted artifact and either re-attach via `lisa:jira-write-ticket` (UPDATE mode) or stop and ask the human.
246
+ 3. If the gate fails: list each dropped/misrouted artifact and either re-attach via `lisa:tracker-write` (UPDATE mode) or stop and ask the human.
247
247
  4. If the gate passes: print the matrix compactly and proceed to Phase 6.
248
248
 
249
249
  This gate is not optional.
@@ -275,13 +275,13 @@ When delegating to agents, provide this context. **The "MUST invoke jira-write-t
275
275
  ```text
276
276
  Create JIRA sub-tasks in the [PROJECT] project at [CLOUD_ID].
277
277
 
278
- CRITICAL: For each sub-task, invoke the `lisa:jira-write-ticket` skill via the Skill tool.
279
- Do NOT call `mcp__atlassian__createJiraIssue` directly. The `lisa:jira-write-ticket` skill
278
+ CRITICAL: For each sub-task, invoke the `lisa:tracker-write` skill via the Skill tool.
279
+ Do NOT call `mcp__atlassian__createJiraIssue` directly. The `lisa:tracker-write` skill
280
280
  enforces required quality gates (Gherkin acceptance criteria, 3-audience description,
281
281
  single-repo scope, sign-in/environment fields, post-create verification). Bypassing it
282
282
  produces broken tickets that downstream skills (triage, journey, evidence) cannot use.
283
283
 
284
- For each sub-task, invoke `lisa:jira-write-ticket` with:
284
+ For each sub-task, invoke `lisa:tracker-write` with:
285
285
  - issue_type: "Sub-task"
286
286
  - parent: the parent story key
287
287
  - project_key: [PROJECT]
@@ -297,9 +297,9 @@ For each sub-task, invoke `lisa:jira-write-ticket` with:
297
297
  Each sub-task must:
298
298
  1. Be scoped to ONE repo only — repo named in brackets in the summary
299
299
  2. Include the Empirical Verification Plan in the description
300
- 3. Be created via `lisa:jira-write-ticket`, not via direct MCP calls
300
+ 3. Be created via `lisa:tracker-write`, not via direct MCP calls
301
301
 
302
- If `lisa:jira-write-ticket` rejects a sub-task, fix the input and re-invoke. Do NOT fall back
302
+ If `lisa:tracker-write` rejects a sub-task, fix the input and re-invoke. Do NOT fall back
303
303
  to a direct `createJiraIssue` call to bypass the gate.
304
304
 
305
305
  Test user info: [credentials from config]
@@ -0,0 +1,114 @@
1
+ ---
2
+ name: github-add-journey
3
+ description: "Add a Validation Journey section to an existing GitHub Issue by analyzing the change type and generating appropriate verification steps with evidence markers. The GitHub counterpart of lisa:jira-add-journey."
4
+ allowed-tools: ["Bash", "Skill"]
5
+ ---
6
+
7
+ # Add Validation Journey to Existing GitHub Issue
8
+
9
+ Read an existing GitHub Issue, analyze the change type, and append a `## Validation Journey` markdown section with appropriate verification steps based on the project's verification patterns.
10
+
11
+ ## Arguments
12
+
13
+ `$ARGUMENTS`: `<ISSUE_REF>`
14
+
15
+ - `ISSUE_REF` (required): GitHub issue ref — `org/repo#<number>` or full GitHub issue URL.
16
+
17
+ ## Prerequisites
18
+
19
+ - `gh` CLI authenticated (`gh auth status`).
20
+
21
+ ## Workflow
22
+
23
+ ### Step 1: Read the Issue
24
+
25
+ ```bash
26
+ gh issue view <number> --repo <org>/<repo> --json number,title,body,labels,assignees,milestone,url
27
+ ```
28
+
29
+ Extract: title, body, type (from `type:` label), components (from `component:` labels), assignees, linked PRs.
30
+
31
+ ### Step 2: Check for Existing Journey
32
+
33
+ Parse the body for an existing `## Validation Journey` heading. If present and the section contains at least one `[EVIDENCE: <name>]` marker, the issue already has a journey — report this to the user and stop.
34
+
35
+ ### Step 3: Analyze the Change Type
36
+
37
+ Examine the body, acceptance criteria, and codebase to determine the change type:
38
+
39
+ 1. **API/GraphQL changes** — New or modified endpoints, request/response schemas
40
+ 2. **Database migration** — Schema changes, new tables/columns, indexes
41
+ 3. **Background job/queue** — New job processors, queue consumers, event handlers
42
+ 4. **Library/utility** — Exported functions, shared modules, npm package changes
43
+ 5. **Security fix** — Auth, authorization, input validation, OWASP vulnerabilities
44
+ 6. **Authentication/authorization** — Role-based access, session management, tokens
45
+
46
+ Use Explore agents or read the codebase directly to understand which files are affected.
47
+
48
+ ### Step 4: Map Change Type to Verification Pattern
49
+
50
+ | Change Type | Verification Approach |
51
+ |---|---|
52
+ | API/GraphQL | curl commands verifying endpoints, status codes, response schemas |
53
+ | Database migration | Migration execution + schema verification + rollback check |
54
+ | Background job/queue | Enqueue + process + state change verification |
55
+ | Library/utility | Test execution + build verification + export check |
56
+ | Security fix | Exploit reproduction pre-fix + exploit failure post-fix |
57
+ | Auth/authz | Multi-role verification with explicit status codes |
58
+
59
+ ### Step 5: Draft the Validation Journey
60
+
61
+ Compose the journey with `[EVIDENCE: name]` markers at key verification points:
62
+
63
+ ```markdown
64
+ ## Validation Journey
65
+
66
+ ### Prerequisites
67
+ - List required services, database, env vars
68
+
69
+ ### Steps
70
+ 1. Verify current state before changes
71
+ 2. Apply the change
72
+ 3. Verify expected new state [EVIDENCE: state-name]
73
+ 4. Test error/edge cases [EVIDENCE: error-case]
74
+ 5. Verify rollback if applicable [EVIDENCE: rollback]
75
+
76
+ ### Assertions
77
+ - Describe what must be true after verification
78
+ ```
79
+
80
+ ### Guidelines for Drafting
81
+
82
+ 1. **2–5 evidence markers** — Focus on proving the change works and handles errors.
83
+ 2. **Concrete, runnable steps** — `Run \`curl -s localhost:3000/health | jq .status\`` not "Check the endpoint".
84
+ 3. **Include environment setup** — Database connection, running services, env vars.
85
+ 4. **Evidence names in kebab-case** — `api-response`, `schema-check`, `rate-limit-hit`.
86
+ 5. **Assertions are measurable** — `Returns 200 with {status: ok}` not "API works correctly".
87
+ 6. **Cover happy path AND error path** — At minimum, one success and one failure marker.
88
+
89
+ ### Step 6: Present to User for Approval
90
+
91
+ Display the drafted Validation Journey and ask for confirmation before appending it to the issue body. (If invoked from a parent skill running unattended — e.g., `lisa:github-write-issue` Phase 6 step 5 — proceed without the prompt.)
92
+
93
+ ### Step 7: Append to Issue Body
94
+
95
+ After approval:
96
+
97
+ ```bash
98
+ current_body=$(gh issue view <number> --repo <org>/<repo> --json body --jq '.body')
99
+ # Compose new body: existing + "\n\n## Validation Journey\n..." (or replace if present)
100
+ gh issue edit <number> --repo <org>/<repo> --body-file /tmp/updated-body.md
101
+ ```
102
+
103
+ Preserve every other section verbatim — never re-render the body from parsed fields, since the issue may carry `extra_sections` we don't recognize.
104
+
105
+ ### Step 8: Verify
106
+
107
+ Re-read the issue and confirm the `## Validation Journey` section is present and includes at least one `[EVIDENCE: <name>]` marker.
108
+
109
+ ## When to Use This Skill
110
+
111
+ - Issue was created before the Validation Journey convention was established.
112
+ - Issue was created manually without following `lisa:github-create` guidelines.
113
+ - Issue needs a journey added or updated based on implementation progress.
114
+ - Before starting work on an issue, to ensure verification steps are documented.
@@ -0,0 +1,188 @@
1
+ ---
2
+ name: github-build-intake
3
+ description: "GitHub counterpart to lisa:jira-build-intake. Scans a GitHub repository for issues labeled `status:ready`, claims each by relabeling to `status:in-progress`, runs the implementation/build flow via lisa:github-agent, and relabels to `status:on-dev` on completion. The `status:ready` label is the human-flipped signal that an issue is truly ready for development — mirroring how Notion PRDs work product Draft → Ready → (us) In Review → Blocked|Ticketed."
4
+ allowed-tools: ["Skill", "Bash"]
5
+ ---
6
+
7
+ # GitHub Build Intake: $ARGUMENTS
8
+
9
+ `$ARGUMENTS` is one of:
10
+
11
+ 1. A GitHub `org/repo` token (e.g., `acme/frontend-v2`).
12
+ 2. A full GitHub repo URL (e.g., `https://github.com/acme/frontend-v2`).
13
+ 3. The literal token `github` — falls back to `.lisa.config.json` (`github.org` / `github.repo`).
14
+
15
+ Run one build-intake cycle. Each `status:ready` issue is claimed, built via the `lisa:github-agent` flow, and relabeled to `status:on-dev` (or the equivalent next-label for that repo). The cycle is the symmetric mirror of `lisa:notion-prd-intake`: humans flip `status:ready`, agents pick up and progress.
16
+
17
+ ## Confirmation policy
18
+
19
+ Do NOT ask the caller whether to proceed. Once invoked with a repo, run the cycle to completion — claim, dispatch each issue through `lisa:github-agent`, relabel successful builds to `status:on-dev`, write the summary. The caller (a human or a cron) has already authorized the run by invoking the skill; re-prompting defeats the purpose of a background batch.
20
+
21
+ Specifically forbidden:
22
+
23
+ - Previewing projected scope (issue count, projected PR count, build duration) and asking whether to continue.
24
+ - Offering A/B/C-style choices like "proceed / skip a few / dry-run only".
25
+ - Pausing because the queue is large, issues look complex, or issues are likely to be `Blocked` by `lisa:github-agent`'s pre-flight gate. Pre-flight `Blocked` is a valid terminal state of the per-issue lifecycle, not a failure mode.
26
+ - Pausing because the build flow looks expensive.
27
+
28
+ The only legitimate reasons to stop early:
29
+
30
+ - Missing repo or required configuration. Surface the missing value and exit.
31
+ - Label namespace not adopted (no issue carries any of `status:ready` / `status:in-progress` / `status:code-review` / `status:on-dev` / `status:done`). Surface a label-convention error and exit (this is setup, not a normal idle cycle — see "Adoption" at the bottom).
32
+ - Empty `status:ready` set. Exit cleanly with `"No GitHub issues labeled status:ready in <org>/<repo>. Nothing to do."`
33
+
34
+ ## Lifecycle assumed
35
+
36
+ The GitHub Issues build lifecycle uses **labels** (we deliberately do NOT key off open/closed alone — closed issues aren't always the right post-build state):
37
+
38
+ ```text
39
+ status:ready → status:in-progress → status:code-review → status:on-dev → status:done
40
+ (human) (us claim) (us / PR opens) (us done; PR ready) (downstream / merge)
41
+ ```
42
+
43
+ This skill ONLY transitions:
44
+
45
+ - `status:ready` → `status:in-progress` (claim)
46
+ - `status:in-progress` → `status:on-dev` (build complete, PR ready)
47
+
48
+ It never touches `status:code-review` (set by the agent / PR open hook), `status:done` (set by merge automation or PM), or any other status.
49
+
50
+ A "transition" means: remove the old `status:*` label and add the new one, in two `gh issue edit` calls (`--remove-label` + `--add-label`) or one combined call. The skill MUST verify exactly one `status:*` label is present after the update — having two simultaneously breaks idempotency.
51
+
52
+ **Pre-flight check**: at the start of each cycle, confirm at least one of the `status:*` labels exists on the repo via `gh label list --repo <org>/<repo> --json name`. If none exist, the convention has not been adopted — surface the label-convention error and exit.
53
+
54
+ ## Phases
55
+
56
+ ### Phase 1 — Resolve the repo
57
+
58
+ 1. Parse `$ARGUMENTS`:
59
+ - `org/repo` token → use as-is.
60
+ - GitHub URL → extract `org` and `repo`.
61
+ - Literal `github` → resolve from `.lisa.config.json` (`github.org`, `github.repo`); error if not set.
62
+ 2. Confirm `gh auth status` succeeds.
63
+ 3. Confirm the repo is reachable: `gh repo view <org>/<repo> --json name --jq '.name'`.
64
+
65
+ ### Phase 2 — Find Ready issues
66
+
67
+ ```bash
68
+ gh issue list --repo <org>/<repo> --label status:ready --state open --json number,title,labels,assignees,milestone,createdAt --limit 100
69
+ ```
70
+
71
+ If empty, run a secondary check to distinguish a genuinely empty queue from an unconfigured repo:
72
+
73
+ ```bash
74
+ gh label list --repo <org>/<repo> --json name --jq '.[] | select(startswith("status:")) | .name'
75
+ ```
76
+
77
+ If no `status:*` labels exist → label namespace not adopted, surface a setup error and exit. If `status:*` labels exist but none are `status:ready` on any open issue → genuinely empty queue, exit cleanly with `"No GitHub issues labeled status:ready. Nothing to do."`
78
+
79
+ ### Phase 3 — Process each Ready issue (serial)
80
+
81
+ #### 3a. Claim
82
+
83
+ ```bash
84
+ gh issue edit <number> --repo <org>/<repo> --remove-label status:ready --add-label status:in-progress
85
+ gh issue comment <number> --repo <org>/<repo> --body "[claude-build-intake] Claimed by Claude. Starting build."
86
+ ```
87
+
88
+ This is the idempotency lock — a re-entrant cycle's `--label status:ready` filter will not see this issue again.
89
+
90
+ If the relabel fails (permission, race), log under "Errors" in the cycle summary and skip this issue. **Do not invoke the build flow on an issue you didn't successfully claim.**
91
+
92
+ #### 3b. Run the build flow
93
+
94
+ Invoke `lisa:github-agent` (the per-issue lifecycle agent) with the issue ref. `lisa:github-agent` owns:
95
+ - Reading the full issue graph (`lisa:github-read-issue`)
96
+ - Running its own pre-flight quality gate (`lisa:github-verify`)
97
+ - Running issue triage (`lisa:ticket-triage`)
98
+ - Routing to the appropriate flow (Build / Fix / Investigate / Improve based on `type:` label)
99
+ - Posting progress comments via `lisa:github-sync`
100
+ - Posting evidence via `lisa:github-evidence`
101
+
102
+ Wait for `lisa:github-agent` to return. Capture its outcome:
103
+
104
+ - **Success** — PR is ready (open or merged); evidence posted; ready for next status.
105
+ - **Blocked by github-verify pre-flight gate** — `lisa:github-agent` itself relabels the issue to `status:blocked` (or removes `status:in-progress` and reassigns to the original author). This is correct and expected — let it stand. Record and move on.
106
+ - **Blocked by ticket-triage ambiguities** — `lisa:github-agent` posts findings and stops. The issue stays in `status:in-progress`. Surface to human; do not auto-relabel. Record under "Errors".
107
+ - **Errored** — exception, missing config, etc. Leave the issue in `status:in-progress` for human investigation. Record under "Errors".
108
+
109
+ #### 3c. Transition to On Dev (only on Success)
110
+
111
+ If `lisa:github-agent` returned Success:
112
+
113
+ ```bash
114
+ gh issue edit <number> --repo <org>/<repo> --remove-label status:in-progress --add-label status:on-dev
115
+ gh issue comment <number> --repo <org>/<repo> --body "[claude-build-intake] Build complete. PR <URL>. Transitioned to status:on-dev."
116
+ ```
117
+
118
+ For any non-Success outcome, do NOT transition. The issue sits in `status:in-progress` (or wherever `lisa:github-agent` left it) — humans take it from there.
119
+
120
+ #### 3d. Continue
121
+
122
+ Move to the next Ready issue. One issue failing does not stop others.
123
+
124
+ ### Phase 4 — Summary report
125
+
126
+ ```text
127
+ ## github-build-intake summary
128
+
129
+ Repo: <org>/<repo>
130
+ Cycle started: <ISO timestamp>
131
+ Cycle completed: <ISO timestamp>
132
+
133
+ Issues processed: <n>
134
+ - status:on-dev (build complete, PR ready): <n>
135
+ - <org>/<repo>#<number> <title> → PR <URL>
136
+ - Blocked (pre-flight verify failed): <n>
137
+ - <org>/<repo>#<number> <title> — see issue comments
138
+ - Held (triage found ambiguities): <n>
139
+ - <org>/<repo>#<number> <title> — see issue comments
140
+ - Errors: <n>
141
+ - <org>/<repo>#<number> <title> — <reason>
142
+
143
+ Total PRs opened: <n>
144
+ ```
145
+
146
+ ## Idempotency & safety
147
+
148
+ - **Claim-first ordering**: `status:in-progress` set BEFORE `lisa:github-agent` invocation — no double-pickup.
149
+ - **No writes outside the lifecycle**: this skill only relabels `status:ready → status:in-progress` and `status:in-progress → status:on-dev`. Every other label change is owned by `lisa:github-agent`.
150
+ - **Failure isolation**: per-issue exceptions caught and recorded; the cycle continues.
151
+ - **Single cycle per repo**: do not run two `lisa:github-build-intake` cycles in parallel against the same repo — concurrent claims could race. The scheduling layer is responsible for serialization.
152
+ - **Single-label invariant**: after every transition, verify exactly one `status:*` label is present on the issue. If two are present (rare race), surface as an Error and skip — do NOT auto-resolve.
153
+
154
+ ## Configuration
155
+
156
+ | Variable | Default | Purpose |
157
+ |----------|---------|---------|
158
+ | `.lisa.config.json` `github.org` | (from `$ARGUMENTS`) | GitHub org for the default queue |
159
+ | `.lisa.config.json` `github.repo` | (from `$ARGUMENTS`) | GitHub repo for the default queue |
160
+ | Label: queue | `status:ready` | The label that signals "human says this is buildable" |
161
+ | Label: claim | `status:in-progress` | The label set on pickup |
162
+ | Label: done | `status:on-dev` | The label set after a successful build |
163
+
164
+ If the repo has not adopted the `status:*` label namespace, this skill cannot run. The remediation is to create the labels — `gh label create status:ready --color FBCA04 --description "Ready for build"` and similar — typically a one-time setup.
165
+
166
+ ## Rules
167
+
168
+ - Never relabel an issue the cycle didn't claim. The `status:in-progress` label is the signature of cycle ownership.
169
+ - Never bypass `lisa:github-agent` to do build work directly. `lisa:github-agent` owns the per-issue lifecycle.
170
+ - Never auto-transition past `status:on-dev`. Downstream labels (`status:done`, etc.) are owned by QA / PM / merge automation.
171
+ - If the issue has no Validation Journey or no sign-in credentials, `lisa:github-agent`'s pre-flight verify will catch it — **don't try to fix the issue from here**.
172
+ - On any unexpected response from `lisa:github-agent` (status it doesn't claim, missing PR URL on success), record as Error and surface — never assume.
173
+
174
+ ## Adoption (one-time per repo)
175
+
176
+ Before this skill can run, the repo must adopt the `status:*` label namespace:
177
+
178
+ 1. Create the labels:
179
+ ```bash
180
+ gh label create status:ready --color FBCA04 --description "Ready for build" --repo <org>/<repo>
181
+ gh label create status:in-progress --color 0E8A16 --description "Build in progress" --repo <org>/<repo>
182
+ gh label create status:code-review --color 5319E7 --description "PR open, awaiting review" --repo <org>/<repo>
183
+ gh label create status:on-dev --color 1D76DB --description "Built, deployed to dev" --repo <org>/<repo>
184
+ gh label create status:done --color 0E8A16 --description "Shipped" --repo <org>/<repo>
185
+ ```
186
+ 2. Apply `status:ready` to issues that are ready for development.
187
+ 3. Reserve `status:in-progress`, `status:on-dev` for this skill — humans should not set them manually except to recover from an error.
188
+ 4. PRD-source labels (`prd-ready`, `prd-in-review`, etc.) are a SEPARATE namespace owned by `lisa:github-prd-intake`. Don't conflate.
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: github-create
3
+ description: This skill should be used when creating GitHub Issue Epics, Stories, and Sub-tasks from code files or descriptions. It analyzes the provided input, determines the appropriate issue hierarchy, and creates issues with comprehensive quality requirements including test-first development and documentation. The GitHub counterpart of lisa:jira-create.
4
+ allowed-tools: ["Read", "Glob", "LS", "Skill", "Bash"]
5
+ ---
6
+
7
+ # Create GitHub Issues from $ARGUMENTS
8
+
9
+ Analyze the provided file(s) and plan a GitHub Issue hierarchy. **This skill plans structure only — every individual issue write is delegated to `lisa:github-write-issue` (which itself goes through the `lisa:tracker-write` shim when invoked from a vendor-neutral caller).** Do not call `gh issue create` from this skill; the necessary write invocations belong to the writer skill so the gates can never be bypassed.
10
+
11
+ ## Process
12
+
13
+ 1. **Analyze**: Read `$ARGUMENTS` to understand scope.
14
+ 2. **Extract source artifacts**: invoke the `lisa:jira-source-artifacts` skill (vendor-neutral), 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).
15
+ 3. **Walk the live product** (when applicable): if the work touches existing user-facing surfaces, invoke the `lisa:product-walkthrough` skill.
16
+ 4. **Determine structure**:
17
+ - Epic needed if: multiple features, major changes, >3 related files.
18
+ - Direct Tasks if: bug fix, single file, minor change.
19
+ 5. **Plan hierarchy**:
20
+
21
+ ```text
22
+ Epic → Story → Sub-tasks (test, implement, document, cleanup)
23
+ ```
24
+
25
+ 6. **Delegate every write to `lisa:github-write-issue`** in dependency order (Epic first, then Stories with the Epic as parent sub-issue, then Sub-tasks with their Story as parent). Pass artifacts (filtered by domain per `lisa:jira-source-artifacts` inheritance rules) and walkthrough findings (under `## Current Product`).
26
+ 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 issues. Fail loudly if anything was dropped.
27
+
28
+ ## Mandatory for Every Code Issue
29
+
30
+ **Test-First**: Write tests before implementation
31
+ **Quality Gates**: All tests/checks must pass, no SonarCloud violations
32
+ **Documentation**: Check existing, update/create new, remove obsolete
33
+ **Cleanup**: Remove temporary code, scripts, dev configs
34
+
35
+ ## Validation Journey
36
+
37
+ Issues that change runtime behavior should include a `## Validation Journey` section. This section is consumed by `lisa:github-journey` to automate verification. Use `lisa:github-add-journey` to draft + append the section after creation.
38
+
39
+ ## Source Artifacts
40
+
41
+ If `$ARGUMENTS` references any external artifact — PRD, design doc, Figma URL, Lovable prototype, Loom walkthrough, screenshot, example payload — those references MUST be preserved as `## Links` and `## Source Artifacts` sections on the created issues. Silent artifact loss is the single most common quality failure in this pipeline.
42
+
43
+ **Invoke `lisa:jira-source-artifacts`** for the canonical rules: domains, per-tool classification, source precedence, conflict handling under `## Open Questions`, inheritance from epic → story → sub-task, and the existing-component reuse expectation. This skill is vendor-neutral and used by both the JIRA and the GitHub paths.
44
+
45
+ When delegating actual writes to `lisa:github-write-issue`, pass the extracted artifact list so its Phase 4c (Remote Links / Source Artifacts) step attaches them.
46
+
47
+ ## Live Product Walkthrough
48
+
49
+ When the work touches existing user-facing surfaces, invoke `lisa:product-walkthrough` before drafting issues. The findings become inputs to the issue plan and surface under `## Current Product` on the resulting issues.
50
+
51
+ ## Issue Requirements
52
+
53
+ Each issue must clearly communicate to:
54
+
55
+ - **Coding Assistants**: Implementation requirements
56
+ - **Developers**: Technical approach
57
+ - **Stakeholders**: Business value
58
+
59
+ Default repo: from `.lisa.config.json` `github.org` / `github.repo` (override via arguments).
60
+
61
+ ## Delegation to github-write-issue
62
+
63
+ **Mandatory.** Every issue created by this skill MUST go through `lisa:github-write-issue`. This skill never calls `gh issue create` itself — that invocation belongs to the writer.
64
+
65
+ `lisa:github-write-issue` enforces:
66
+ - 3-audience description (Context / Technical Approach / Acceptance Criteria)
67
+ - Gherkin acceptance criteria
68
+ - Parent sub-issue validation (non-bug, non-epic types)
69
+ - Explicit relationship discovery (`Blocks` / `Blocked by` / `Relates to` / `Duplicates` / `Cloned from`)
70
+ - Remote links (PRs, Confluence, dashboards)
71
+ - Single-repo scope check for Bug / Task / Sub-task
72
+ - Sign-in account and target environment recorded in body
73
+ - Post-create verification
74
+
75
+ ### Invocation order
76
+
77
+ Issues must be created in parent-before-child order:
78
+
79
+ 1. Invoke `lisa:github-write-issue` for the Epic. Capture the returned issue number.
80
+ 2. For each Story, invoke `lisa:github-write-issue` with the Epic ref as `parent_ref`. Capture each Story number.
81
+ 3. For each Sub-task, invoke `lisa:github-write-issue` with the Story ref as `parent_ref`.
82
+
83
+ ### What to pass to each invocation
84
+
85
+ For every delegated write, pass:
86
+ - The summary, issue type, repo (org/repo), and priority you decided
87
+ - The body with all sections drafted (Context / Technical Approach / Acceptance Criteria / Out of Scope / etc.)
88
+ - Gherkin acceptance criteria
89
+ - `parent_ref` (Epic ref for Stories; Story ref for Sub-tasks)
90
+ - The artifact list extracted in "Source Artifacts", filtered by domain per the inheritance rules — `lisa:github-write-issue` Phase 4c attaches them
91
+ - For runtime-behavior issues: instruct the writer to call `lisa:github-add-journey` after create
92
+
93
+ ### What this skill is responsible for
94
+
95
+ - Deciding the *shape* of the hierarchy (what's an Epic vs. Story vs. Sub-task).
96
+ - Drafting the body and acceptance criteria from the input.
97
+ - Extracting and classifying source artifacts.
98
+ - Threading parent refs through subsequent writes.
99
+ - Running the preservation check after all writes complete.
100
+
101
+ It does not own the actual `gh issue create` call — that's `lisa:github-write-issue`'s job.