@codyswann/lisa 2.7.0 → 2.8.1

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 (123) hide show
  1. package/dist/core/lisa.d.ts +21 -0
  2. package/dist/core/lisa.d.ts.map +1 -1
  3. package/dist/core/lisa.js +40 -1
  4. package/dist/core/lisa.js.map +1 -1
  5. package/dist/utils/postinstall-trampoline.d.ts +20 -0
  6. package/dist/utils/postinstall-trampoline.d.ts.map +1 -1
  7. package/dist/utils/postinstall-trampoline.js +37 -0
  8. package/dist/utils/postinstall-trampoline.js.map +1 -1
  9. package/package.json +1 -1
  10. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  11. package/plugins/lisa/agents/confluence-prd-intake.md +5 -5
  12. package/plugins/lisa/agents/github-agent.md +141 -0
  13. package/plugins/lisa/agents/github-build-intake.md +62 -0
  14. package/plugins/lisa/agents/github-prd-intake.md +64 -0
  15. package/plugins/lisa/agents/linear-prd-intake.md +5 -5
  16. package/plugins/lisa/agents/notion-prd-intake.md +5 -5
  17. package/plugins/lisa/commands/intake.md +2 -2
  18. package/plugins/lisa/commands/plan.md +2 -2
  19. package/plugins/lisa/rules/intent-routing.md +16 -11
  20. package/plugins/lisa/rules/tracker-resolution.md +76 -0
  21. package/plugins/lisa/skills/confluence-prd-intake/SKILL.md +11 -11
  22. package/plugins/{src/base/skills/confluence-to-jira → lisa/skills/confluence-to-tracker}/SKILL.md +31 -31
  23. package/plugins/lisa/skills/github-add-journey/SKILL.md +114 -0
  24. package/plugins/lisa/skills/github-build-intake/SKILL.md +188 -0
  25. package/plugins/lisa/skills/github-create/SKILL.md +101 -0
  26. package/plugins/lisa/skills/github-evidence/SKILL.md +116 -0
  27. package/plugins/lisa/skills/github-journey/SKILL.md +121 -0
  28. package/plugins/lisa/skills/github-prd-intake/SKILL.md +286 -0
  29. package/plugins/lisa/skills/github-read-issue/SKILL.md +248 -0
  30. package/plugins/lisa/skills/github-sync/SKILL.md +73 -0
  31. package/plugins/lisa/skills/github-to-tracker/SKILL.md +312 -0
  32. package/plugins/lisa/skills/github-validate-issue/SKILL.md +288 -0
  33. package/plugins/lisa/skills/github-verify/SKILL.md +29 -0
  34. package/plugins/lisa/skills/github-write-issue/SKILL.md +304 -0
  35. package/plugins/lisa/skills/implement/SKILL.md +4 -4
  36. package/plugins/lisa/skills/intake/SKILL.md +14 -4
  37. package/plugins/lisa/skills/jira-source-artifacts/SKILL.md +1 -1
  38. package/plugins/lisa/skills/jira-validate-ticket/SKILL.md +3 -3
  39. package/plugins/lisa/skills/jira-verify/SKILL.md +1 -1
  40. package/plugins/lisa/skills/jira-write-ticket/SKILL.md +3 -3
  41. package/plugins/lisa/skills/linear-prd-intake/SKILL.md +10 -10
  42. package/plugins/lisa/skills/{linear-to-jira → linear-to-tracker}/SKILL.md +30 -31
  43. package/plugins/lisa/skills/notion-prd-intake/SKILL.md +11 -11
  44. package/plugins/{src/base/skills/notion-to-jira → lisa/skills/notion-to-tracker}/SKILL.md +34 -34
  45. package/plugins/lisa/skills/plan/SKILL.md +8 -6
  46. package/plugins/lisa/skills/prd-ticket-coverage/SKILL.md +22 -12
  47. package/plugins/lisa/skills/product-walkthrough/SKILL.md +1 -1
  48. package/plugins/lisa/skills/spec-conformance/SKILL.md +2 -3
  49. package/plugins/lisa/skills/ticket-triage/SKILL.md +7 -7
  50. package/plugins/lisa/skills/tracker-add-journey/SKILL.md +24 -0
  51. package/plugins/lisa/skills/tracker-build-intake/SKILL.md +25 -0
  52. package/plugins/lisa/skills/tracker-create/SKILL.md +24 -0
  53. package/plugins/lisa/skills/tracker-evidence/SKILL.md +24 -0
  54. package/plugins/lisa/skills/tracker-journey/SKILL.md +24 -0
  55. package/plugins/lisa/skills/tracker-read/SKILL.md +25 -0
  56. package/plugins/lisa/skills/tracker-sync/SKILL.md +26 -0
  57. package/plugins/lisa/skills/tracker-validate/SKILL.md +35 -0
  58. package/plugins/lisa/skills/tracker-verify/SKILL.md +25 -0
  59. package/plugins/lisa/skills/tracker-write/SKILL.md +43 -0
  60. package/plugins/lisa/skills/verify/SKILL.md +1 -1
  61. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-expo/skills/jira-verify/SKILL.md +1 -1
  64. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  65. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-rails/skills/jira-verify/SKILL.md +1 -1
  67. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  68. package/plugins/src/base/agents/confluence-prd-intake.md +5 -5
  69. package/plugins/src/base/agents/github-agent.md +141 -0
  70. package/plugins/src/base/agents/github-build-intake.md +62 -0
  71. package/plugins/src/base/agents/github-prd-intake.md +64 -0
  72. package/plugins/src/base/agents/linear-prd-intake.md +5 -5
  73. package/plugins/src/base/agents/notion-prd-intake.md +5 -5
  74. package/plugins/src/base/commands/intake.md +2 -2
  75. package/plugins/src/base/commands/plan.md +2 -2
  76. package/plugins/src/base/rules/intent-routing.md +16 -11
  77. package/plugins/src/base/rules/tracker-resolution.md +76 -0
  78. package/plugins/src/base/skills/confluence-prd-intake/SKILL.md +11 -11
  79. package/plugins/{lisa/skills/confluence-to-jira → src/base/skills/confluence-to-tracker}/SKILL.md +31 -31
  80. package/plugins/src/base/skills/github-add-journey/SKILL.md +114 -0
  81. package/plugins/src/base/skills/github-build-intake/SKILL.md +188 -0
  82. package/plugins/src/base/skills/github-create/SKILL.md +101 -0
  83. package/plugins/src/base/skills/github-evidence/SKILL.md +116 -0
  84. package/plugins/src/base/skills/github-journey/SKILL.md +121 -0
  85. package/plugins/src/base/skills/github-prd-intake/SKILL.md +286 -0
  86. package/plugins/src/base/skills/github-read-issue/SKILL.md +248 -0
  87. package/plugins/src/base/skills/github-sync/SKILL.md +73 -0
  88. package/plugins/src/base/skills/github-to-tracker/SKILL.md +312 -0
  89. package/plugins/src/base/skills/github-validate-issue/SKILL.md +288 -0
  90. package/plugins/src/base/skills/github-verify/SKILL.md +29 -0
  91. package/plugins/src/base/skills/github-write-issue/SKILL.md +304 -0
  92. package/plugins/src/base/skills/implement/SKILL.md +4 -4
  93. package/plugins/src/base/skills/intake/SKILL.md +14 -4
  94. package/plugins/src/base/skills/jira-source-artifacts/SKILL.md +1 -1
  95. package/plugins/src/base/skills/jira-validate-ticket/SKILL.md +3 -3
  96. package/plugins/src/base/skills/jira-verify/SKILL.md +1 -1
  97. package/plugins/src/base/skills/jira-write-ticket/SKILL.md +3 -3
  98. package/plugins/src/base/skills/linear-prd-intake/SKILL.md +10 -10
  99. package/plugins/src/base/skills/{linear-to-jira → linear-to-tracker}/SKILL.md +30 -31
  100. package/plugins/src/base/skills/notion-prd-intake/SKILL.md +11 -11
  101. package/plugins/{lisa/skills/notion-to-jira → src/base/skills/notion-to-tracker}/SKILL.md +34 -34
  102. package/plugins/src/base/skills/plan/SKILL.md +8 -6
  103. package/plugins/src/base/skills/prd-ticket-coverage/SKILL.md +22 -12
  104. package/plugins/src/base/skills/product-walkthrough/SKILL.md +1 -1
  105. package/plugins/src/base/skills/spec-conformance/SKILL.md +2 -3
  106. package/plugins/src/base/skills/ticket-triage/SKILL.md +7 -7
  107. package/plugins/src/base/skills/tracker-add-journey/SKILL.md +24 -0
  108. package/plugins/src/base/skills/tracker-build-intake/SKILL.md +25 -0
  109. package/plugins/src/base/skills/tracker-create/SKILL.md +24 -0
  110. package/plugins/src/base/skills/tracker-evidence/SKILL.md +24 -0
  111. package/plugins/src/base/skills/tracker-journey/SKILL.md +24 -0
  112. package/plugins/src/base/skills/tracker-read/SKILL.md +25 -0
  113. package/plugins/src/base/skills/tracker-sync/SKILL.md +26 -0
  114. package/plugins/src/base/skills/tracker-validate/SKILL.md +35 -0
  115. package/plugins/src/base/skills/tracker-verify/SKILL.md +25 -0
  116. package/plugins/src/base/skills/tracker-write/SKILL.md +43 -0
  117. package/plugins/src/base/skills/verify/SKILL.md +1 -1
  118. package/plugins/src/expo/skills/jira-verify/SKILL.md +1 -1
  119. package/plugins/src/rails/skills/jira-verify/SKILL.md +1 -1
  120. /package/cdk/{copy-overwrite → merge}/.oxlintrc.json +0 -0
  121. /package/expo/{copy-overwrite → merge}/.oxlintrc.json +0 -0
  122. /package/nestjs/{copy-overwrite → merge}/.oxlintrc.json +0 -0
  123. /package/typescript/{copy-overwrite → merge}/.oxlintrc.json +0 -0
@@ -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.
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: github-evidence
3
+ description: "Upload text evidence to the GitHub `pr-assets` release, update PR description, post a GitHub Issue comment with code blocks, and relabel the issue to `status:code-review`. Reusable by any skill that captures evidence and generates evidence/comment.md (and optionally evidence/comment.txt). The GitHub counterpart of lisa:jira-evidence."
4
+ allowed-tools: ["Bash"]
5
+ ---
6
+
7
+ # GitHub Evidence Posting
8
+
9
+ Upload captured evidence and generated templates to the GitHub PR description and the originating GitHub Issue. This skill is the posting step — it assumes evidence files and a comment template already exist in the evidence directory.
10
+
11
+ ## Arguments
12
+
13
+ `$ARGUMENTS`: `<ISSUE_REF> <EVIDENCE_DIR> <PR_NUMBER>`
14
+
15
+ - `ISSUE_REF` (required): GitHub issue ref — `org/repo#<number>` or full GitHub issue URL.
16
+ - `EVIDENCE_DIR` (required): Directory containing evidence and templates (e.g., `./evidence`).
17
+ - `PR_NUMBER` (required): GitHub PR number to update description.
18
+
19
+ ## Prerequisites
20
+
21
+ - `gh` CLI authenticated (`gh auth status`).
22
+ - Evidence directory containing:
23
+ - `NN-name.txt` or `NN-name.json` text evidence files (e.g., `01-health-check.json`)
24
+ - `comment.md` — GitHub markdown body for both the issue comment and the PR description's `## Evidence` section.
25
+ - (Optional) `comment.txt` — kept for parity with the JIRA path; not used here.
26
+
27
+ ## Workflow
28
+
29
+ 1. **Resolve refs**
30
+
31
+ Parse `ISSUE_REF` into `<issue-org>/<issue-repo>#<issue-number>`. Parse the local repo (where the PR lives) via `gh repo view --json nameWithOwner --jq '.nameWithOwner'`.
32
+
33
+ 2. **Ensure the `pr-assets` release exists in the IMPLEMENTATION repo**
34
+
35
+ The `pr-assets` release is the asset CDN for evidence files. Each PR's evidence is uploaded with the PR number prefix in the asset name to keep them addressable.
36
+
37
+ ```bash
38
+ gh release view pr-assets --repo <impl-org>/<impl-repo> >/dev/null 2>&1 \
39
+ || gh release create pr-assets --repo <impl-org>/<impl-repo> --title "PR Assets" --notes "CDN for PR evidence"
40
+ ```
41
+
42
+ 3. **Upload each evidence file**
43
+
44
+ ```bash
45
+ for f in "$EVIDENCE_DIR"/[0-9][0-9]-*.txt "$EVIDENCE_DIR"/[0-9][0-9]-*.json; do
46
+ [ -f "$f" ] || continue
47
+ name="pr-${PR_NUMBER}-$(basename "$f")"
48
+ gh release upload pr-assets --repo <impl-org>/<impl-repo> --clobber "$f#$name"
49
+ done
50
+ ```
51
+
52
+ The `#$name` syntax sets the asset name. `--clobber` lets re-runs overwrite.
53
+
54
+ 4. **Update the PR description**
55
+
56
+ Replace or append the `## Evidence` section in the PR body using `comment.md`:
57
+
58
+ ```bash
59
+ current_body=$(gh pr view "$PR_NUMBER" --repo <impl-org>/<impl-repo> --json body --jq '.body')
60
+ evidence_section=$(cat "$EVIDENCE_DIR/comment.md")
61
+ # Replace existing ## Evidence ... up to next ## or EOF; otherwise append.
62
+ ```
63
+
64
+ Use a Bash heredoc / temp file to compose the new body, then:
65
+
66
+ ```bash
67
+ gh pr edit "$PR_NUMBER" --repo <impl-org>/<impl-repo> --body-file /tmp/pr-body.md
68
+ ```
69
+
70
+ 5. **Post a comment on the originating issue**
71
+
72
+ The issue may live in a different repo than the PR (cross-repo work):
73
+
74
+ ```bash
75
+ gh issue comment <issue-number> --repo <issue-org>/<issue-repo> --body-file "$EVIDENCE_DIR/comment.md"
76
+ ```
77
+
78
+ 6. **Relabel the issue to `status:code-review`**
79
+
80
+ ```bash
81
+ gh issue edit <issue-number> --repo <issue-org>/<issue-repo> \
82
+ --remove-label status:in-progress \
83
+ --add-label status:code-review
84
+ ```
85
+
86
+ If the current label is already `status:code-review`, skip. If neither `status:in-progress` nor `status:code-review` is present, log a warning and continue without changing labels — the issue may have been hand-managed.
87
+
88
+ ## Evidence Naming Convention
89
+
90
+ ```text
91
+ evidence/
92
+ 01-health-check.json uploaded
93
+ 02-schema-after-migration.txt uploaded
94
+ 03-rate-limit-response.txt uploaded
95
+ comment.md used for issue comment + PR description
96
+ ```
97
+
98
+ Asset names in the release are prefixed with `pr-<number>-` so multiple PRs' evidence coexists without collision.
99
+
100
+ ## Troubleshooting
101
+
102
+ ### Evidence not appearing in GitHub PR or issue
103
+
104
+ Check:
105
+ - `gh auth status` succeeds.
106
+ - The PR / issue refs are correct.
107
+ - The `pr-assets` release exists in the implementation repo.
108
+
109
+ ### `gh issue edit` returns 404
110
+
111
+ The issue may live in a different repo than the PR — pass `--repo <issue-org>/<issue-repo>` explicitly. The implementation repo and the destination tracker repo can differ when `tracker = "github"` is set on a project that ships from a separate codebase.
112
+
113
+ ## Notes
114
+
115
+ - This skill is symmetric with `lisa:jira-evidence` — the evidence directory layout and `comment.md` content are identical so a single template generator can serve both vendors.
116
+ - The PR's `## Evidence` section is the canonical link for reviewers; the issue comment is for the PRD/PM thread.
@@ -0,0 +1,121 @@
1
+ ---
2
+ name: github-journey
3
+ description: "Parse a GitHub Issue's Validation Journey section, execute the verification steps using appropriate tools (curl, test commands, database queries), capture evidence at each marker, and post results via lisa:github-evidence. The GitHub counterpart of lisa:jira-journey."
4
+ allowed-tools: ["Bash", "Read", "Glob", "Grep", "Skill"]
5
+ ---
6
+
7
+ # GitHub Validation Journey
8
+
9
+ Parse a GitHub Issue's Validation Journey, execute the verification steps using the appropriate tools for the change type, capture evidence at each `[EVIDENCE: <name>]` marker, and post to the issue + GitHub PR.
10
+
11
+ ## Arguments
12
+
13
+ `$ARGUMENTS`: `<ISSUE_REF> [PR_NUMBER]`
14
+
15
+ - `ISSUE_REF` (required): GitHub issue ref — `org/repo#<number>` or full GitHub issue URL.
16
+ - `PR_NUMBER` (optional): GitHub PR number for the implementation PR. If omitted, the skill auto-detects the PR from `lisa:github-read-issue`'s linked-PR list (preferring the most recent open PR).
17
+
18
+ ## Prerequisites
19
+
20
+ - `gh` CLI authenticated.
21
+ - Appropriate services running for the verification type (dev server, database, etc.).
22
+
23
+ ## Workflow
24
+
25
+ ### Step 1: Parse the Validation Journey
26
+
27
+ ```bash
28
+ gh issue view <number> --repo <org>/<repo> --json body --jq '.body'
29
+ ```
30
+
31
+ Extract the `## Validation Journey` section (plus its `### Prerequisites`, `### Steps`, and `### Assertions` sub-sections). Parse each step into a structured form: `{ index, text, evidence_marker (or null) }`.
32
+
33
+ If the issue has no Validation Journey, stop and instruct the caller to run `/github-add-journey <issue-ref>` first.
34
+
35
+ ### Step 2: Satisfy Prerequisites
36
+
37
+ Before starting the journey, verify each prerequisite:
38
+
39
+ 1. Check if required services are running (`curl localhost:<port>/health`, `pg_isready`, etc.).
40
+ 2. Verify database connectivity if the journey touches data.
41
+ 3. Ensure environment variables are set.
42
+ 4. Run any setup commands mentioned in `### Prerequisites`.
43
+
44
+ ### Step 3: Execute Steps and Capture Evidence
45
+
46
+ Execute each step sequentially. Determine the verification approach based on the step text and the issue's change type (inferred from `type:` label, `component:` labels, and the body):
47
+
48
+ - **API endpoints** → Run curl commands, capture HTTP response to `evidence/NN-name.txt` (or `.json`).
49
+ - **Database changes** → Run psql/migration commands, capture schema output.
50
+ - **Background jobs** → Trigger the job, check queue/state, capture logs.
51
+ - **Library/utility changes** → Run tests, capture output.
52
+ - **Security fixes** → Reproduce exploit attempt, verify fix, capture output.
53
+
54
+ At each `[EVIDENCE: name]` marker, capture stdout/stderr to a numbered file:
55
+
56
+ #### Evidence Naming Convention
57
+
58
+ `{NN}-{evidence-name}.txt` (or `.json` for structured data):
59
+
60
+ - `NN`: zero-padded sequential number (01, 02, 03...).
61
+ - `evidence-name`: the value from `[EVIDENCE: <name>]` (kebab-case).
62
+
63
+ Example:
64
+
65
+ ```text
66
+ evidence/
67
+ 01-health-check.json
68
+ 02-schema-after-migration.txt
69
+ 03-rate-limit-response.txt
70
+ comment.md
71
+ ```
72
+
73
+ ### Step 4: Generate Evidence Templates
74
+
75
+ Compose `evidence/comment.md` with:
76
+
77
+ - The issue ref + title.
78
+ - The PR ref.
79
+ - Each evidence marker rendered as a GitHub markdown section with a fenced code block of the captured file.
80
+ - An "Assertions verified" subsection mapping each `### Assertions` line to "PASS / FAIL".
81
+
82
+ This template generator is shared with `lisa:jira-journey` (the JIRA path renders the same content as wiki markup). When the markdown comment is the canonical artifact, both vendors stay aligned.
83
+
84
+ ### Step 5: Post Evidence
85
+
86
+ Use `lisa:github-evidence` to post everything:
87
+
88
+ ```bash
89
+ # Equivalent of: bash scripts/post-evidence.sh — but invoked via the Skill tool
90
+ ```
91
+
92
+ Invoke the skill with `<ISSUE_REF> ./evidence <PR_NUMBER>`. It uploads the files to the `pr-assets` release, edits the PR's `## Evidence` section, posts a comment on the issue, and relabels the issue to `status:code-review`.
93
+
94
+ ### Step 6: Verify
95
+
96
+ Confirm:
97
+ - Evidence files exist as release assets named `pr-<PR>-NN-name.{txt,json}`.
98
+ - The PR description contains the `## Evidence` section with code-block embeds.
99
+ - The issue has a new comment whose body matches `comment.md`.
100
+ - The issue's labels include `status:code-review` and not `status:in-progress`.
101
+
102
+ ## Verification Patterns Reference
103
+
104
+ | Change Type | Verification Method | Evidence Format |
105
+ |---|---|---|
106
+ | API endpoint | `curl -s localhost:PORT/endpoint` | JSON response |
107
+ | Database migration | `psql -c "\d table"` or migration output | Schema text |
108
+ | Background job | Trigger + check state | Log output |
109
+ | Library/utility | `bun run test -- path/to/test` | Test output |
110
+ | Security fix | Reproduce + verify fix | Request/response |
111
+ | Auth/authz | Multi-role verification | Status codes per role |
112
+
113
+ ## Troubleshooting
114
+
115
+ ### Evidence file is empty
116
+
117
+ Ensure the command succeeded and produced output. Use `2>&1` to capture both stdout and stderr.
118
+
119
+ ### Parser returns no steps
120
+
121
+ The issue may not have a Validation Journey section — run `/github-add-journey <ISSUE_REF>` first.