@codyswann/lisa 2.6.4 → 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 (124) hide show
  1. package/package.json +1 -1
  2. package/plugins/lisa/.claude-plugin/plugin.json +10 -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/agents/verification-specialist.md +8 -2
  10. package/plugins/lisa/commands/codify-verification.md +6 -0
  11. package/plugins/lisa/commands/intake.md +2 -2
  12. package/plugins/lisa/commands/plan.md +2 -2
  13. package/plugins/lisa/hooks/block-no-verify.sh +37 -0
  14. package/plugins/lisa/rules/intent-routing.md +21 -15
  15. package/plugins/lisa/rules/tracker-resolution.md +76 -0
  16. package/plugins/lisa/rules/verification.md +2 -2
  17. package/plugins/lisa/skills/codify-verification/SKILL.md +152 -0
  18. package/plugins/lisa/skills/confluence-prd-intake/SKILL.md +11 -11
  19. package/plugins/lisa/skills/{confluence-to-jira → confluence-to-tracker}/SKILL.md +31 -31
  20. package/plugins/lisa/skills/github-add-journey/SKILL.md +114 -0
  21. package/plugins/lisa/skills/github-build-intake/SKILL.md +188 -0
  22. package/plugins/lisa/skills/github-create/SKILL.md +101 -0
  23. package/plugins/lisa/skills/github-evidence/SKILL.md +116 -0
  24. package/plugins/lisa/skills/github-journey/SKILL.md +121 -0
  25. package/plugins/lisa/skills/github-prd-intake/SKILL.md +286 -0
  26. package/plugins/lisa/skills/github-read-issue/SKILL.md +248 -0
  27. package/plugins/lisa/skills/github-sync/SKILL.md +73 -0
  28. package/plugins/lisa/skills/github-to-tracker/SKILL.md +312 -0
  29. package/plugins/lisa/skills/github-validate-issue/SKILL.md +288 -0
  30. package/plugins/lisa/skills/github-verify/SKILL.md +29 -0
  31. package/plugins/lisa/skills/github-write-issue/SKILL.md +304 -0
  32. package/plugins/lisa/skills/implement/SKILL.md +4 -4
  33. package/plugins/lisa/skills/intake/SKILL.md +14 -4
  34. package/plugins/lisa/skills/jira-source-artifacts/SKILL.md +1 -1
  35. package/plugins/lisa/skills/jira-validate-ticket/SKILL.md +3 -3
  36. package/plugins/lisa/skills/jira-verify/SKILL.md +1 -1
  37. package/plugins/lisa/skills/jira-write-ticket/SKILL.md +3 -3
  38. package/plugins/lisa/skills/linear-prd-intake/SKILL.md +10 -10
  39. package/plugins/lisa/skills/{linear-to-jira → linear-to-tracker}/SKILL.md +30 -31
  40. package/plugins/lisa/skills/notion-prd-intake/SKILL.md +11 -11
  41. package/plugins/{src/base/skills/notion-to-jira → lisa/skills/notion-to-tracker}/SKILL.md +34 -34
  42. package/plugins/lisa/skills/plan/SKILL.md +8 -6
  43. package/plugins/lisa/skills/prd-ticket-coverage/SKILL.md +22 -12
  44. package/plugins/lisa/skills/product-walkthrough/SKILL.md +1 -1
  45. package/plugins/lisa/skills/spec-conformance/SKILL.md +2 -3
  46. package/plugins/lisa/skills/ticket-triage/SKILL.md +7 -7
  47. package/plugins/lisa/skills/tracker-add-journey/SKILL.md +24 -0
  48. package/plugins/lisa/skills/tracker-build-intake/SKILL.md +25 -0
  49. package/plugins/lisa/skills/tracker-create/SKILL.md +24 -0
  50. package/plugins/lisa/skills/tracker-evidence/SKILL.md +24 -0
  51. package/plugins/lisa/skills/tracker-journey/SKILL.md +24 -0
  52. package/plugins/lisa/skills/tracker-read/SKILL.md +25 -0
  53. package/plugins/lisa/skills/tracker-sync/SKILL.md +26 -0
  54. package/plugins/lisa/skills/tracker-validate/SKILL.md +35 -0
  55. package/plugins/lisa/skills/tracker-verify/SKILL.md +25 -0
  56. package/plugins/lisa/skills/tracker-write/SKILL.md +43 -0
  57. package/plugins/lisa/skills/verification-lifecycle/SKILL.md +31 -9
  58. package/plugins/lisa/skills/verify/SKILL.md +7 -6
  59. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-expo/skills/jira-verify/SKILL.md +1 -1
  62. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  64. package/plugins/lisa-rails/skills/jira-verify/SKILL.md +1 -1
  65. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  66. package/plugins/src/base/.claude-plugin/plugin.json +6 -0
  67. package/plugins/src/base/agents/confluence-prd-intake.md +5 -5
  68. package/plugins/src/base/agents/github-agent.md +141 -0
  69. package/plugins/src/base/agents/github-build-intake.md +62 -0
  70. package/plugins/src/base/agents/github-prd-intake.md +64 -0
  71. package/plugins/src/base/agents/linear-prd-intake.md +5 -5
  72. package/plugins/src/base/agents/notion-prd-intake.md +5 -5
  73. package/plugins/src/base/agents/verification-specialist.md +8 -2
  74. package/plugins/src/base/commands/codify-verification.md +6 -0
  75. package/plugins/src/base/commands/intake.md +2 -2
  76. package/plugins/src/base/commands/plan.md +2 -2
  77. package/plugins/src/base/hooks/block-no-verify.sh +37 -0
  78. package/plugins/src/base/rules/intent-routing.md +21 -15
  79. package/plugins/src/base/rules/tracker-resolution.md +76 -0
  80. package/plugins/src/base/rules/verification.md +2 -2
  81. package/plugins/src/base/skills/codify-verification/SKILL.md +152 -0
  82. package/plugins/src/base/skills/confluence-prd-intake/SKILL.md +11 -11
  83. package/plugins/src/base/skills/{confluence-to-jira → confluence-to-tracker}/SKILL.md +31 -31
  84. package/plugins/src/base/skills/github-add-journey/SKILL.md +114 -0
  85. package/plugins/src/base/skills/github-build-intake/SKILL.md +188 -0
  86. package/plugins/src/base/skills/github-create/SKILL.md +101 -0
  87. package/plugins/src/base/skills/github-evidence/SKILL.md +116 -0
  88. package/plugins/src/base/skills/github-journey/SKILL.md +121 -0
  89. package/plugins/src/base/skills/github-prd-intake/SKILL.md +286 -0
  90. package/plugins/src/base/skills/github-read-issue/SKILL.md +248 -0
  91. package/plugins/src/base/skills/github-sync/SKILL.md +73 -0
  92. package/plugins/src/base/skills/github-to-tracker/SKILL.md +312 -0
  93. package/plugins/src/base/skills/github-validate-issue/SKILL.md +288 -0
  94. package/plugins/src/base/skills/github-verify/SKILL.md +29 -0
  95. package/plugins/src/base/skills/github-write-issue/SKILL.md +304 -0
  96. package/plugins/src/base/skills/implement/SKILL.md +4 -4
  97. package/plugins/src/base/skills/intake/SKILL.md +14 -4
  98. package/plugins/src/base/skills/jira-source-artifacts/SKILL.md +1 -1
  99. package/plugins/src/base/skills/jira-validate-ticket/SKILL.md +3 -3
  100. package/plugins/src/base/skills/jira-verify/SKILL.md +1 -1
  101. package/plugins/src/base/skills/jira-write-ticket/SKILL.md +3 -3
  102. package/plugins/src/base/skills/linear-prd-intake/SKILL.md +10 -10
  103. package/plugins/src/base/skills/{linear-to-jira → linear-to-tracker}/SKILL.md +30 -31
  104. package/plugins/src/base/skills/notion-prd-intake/SKILL.md +11 -11
  105. package/plugins/{lisa/skills/notion-to-jira → src/base/skills/notion-to-tracker}/SKILL.md +34 -34
  106. package/plugins/src/base/skills/plan/SKILL.md +8 -6
  107. package/plugins/src/base/skills/prd-ticket-coverage/SKILL.md +22 -12
  108. package/plugins/src/base/skills/product-walkthrough/SKILL.md +1 -1
  109. package/plugins/src/base/skills/spec-conformance/SKILL.md +2 -3
  110. package/plugins/src/base/skills/ticket-triage/SKILL.md +7 -7
  111. package/plugins/src/base/skills/tracker-add-journey/SKILL.md +24 -0
  112. package/plugins/src/base/skills/tracker-build-intake/SKILL.md +25 -0
  113. package/plugins/src/base/skills/tracker-create/SKILL.md +24 -0
  114. package/plugins/src/base/skills/tracker-evidence/SKILL.md +24 -0
  115. package/plugins/src/base/skills/tracker-journey/SKILL.md +24 -0
  116. package/plugins/src/base/skills/tracker-read/SKILL.md +25 -0
  117. package/plugins/src/base/skills/tracker-sync/SKILL.md +26 -0
  118. package/plugins/src/base/skills/tracker-validate/SKILL.md +35 -0
  119. package/plugins/src/base/skills/tracker-verify/SKILL.md +25 -0
  120. package/plugins/src/base/skills/tracker-write/SKILL.md +43 -0
  121. package/plugins/src/base/skills/verification-lifecycle/SKILL.md +31 -9
  122. package/plugins/src/base/skills/verify/SKILL.md +7 -6
  123. package/plugins/src/expo/skills/jira-verify/SKILL.md +1 -1
  124. package/plugins/src/rails/skills/jira-verify/SKILL.md +1 -1
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: product-walkthrough
3
- description: "Methodology for evaluating the live product via a real browser (Playwright MCP) when planning work or evaluating a PRD. Reading a PRD or a mock without seeing the current product produces tickets that misjudge the change — this skill grounds the analysis in what actually exists today. Invoke this skill from notion-to-jira (Phase 2b live-product walkthrough), jira-create, and any PRD intake flow whose work touches existing user-facing surfaces."
3
+ description: "Methodology for evaluating the live product via a real browser (Playwright MCP) when planning work or evaluating a PRD. Reading a PRD or a mock without seeing the current product produces tickets that misjudge the change — this skill grounds the analysis in what actually exists today. Invoke this skill from notion-to-tracker (Phase 2b live-product walkthrough), jira-create, and any PRD intake flow whose work touches existing user-facing surfaces."
4
4
  allowed-tools: ["Skill", "Bash", "Read", "mcp__plugin_playwright_playwright__browser_navigate", "mcp__plugin_playwright_playwright__browser_snapshot", "mcp__plugin_playwright_playwright__browser_take_screenshot", "mcp__plugin_playwright_playwright__browser_click", "mcp__plugin_playwright_playwright__browser_type", "mcp__plugin_playwright_playwright__browser_select_option", "mcp__plugin_playwright_playwright__browser_fill_form", "mcp__plugin_playwright_playwright__browser_press_key", "mcp__plugin_playwright_playwright__browser_hover", "mcp__plugin_playwright_playwright__browser_navigate_back", "mcp__plugin_playwright_playwright__browser_resize", "mcp__plugin_playwright_playwright__browser_tabs", "mcp__plugin_playwright_playwright__browser_console_messages", "mcp__plugin_playwright_playwright__browser_network_requests", "mcp__plugin_playwright_playwright__browser_wait_for", "mcp__plugin_playwright_playwright__browser_close"]
5
5
  ---
6
6
 
@@ -24,10 +24,9 @@ Based on the source, load the full spec:
24
24
  | Source | How to Load |
25
25
  |--------|-------------|
26
26
  | Plan file (`.md`) | `Read` the file |
27
- | JIRA key | Invoke `/jira-read-ticket <KEY>` to get the full context bundle (primary ticket + epic + linked tickets) |
27
+ | JIRA key or GitHub issue ref | Invoke `/tracker-read <ref>` (vendor-neutral; dispatches to `/jira-read-ticket` or `/github-read-issue` per `.lisa.config.json` `tracker`) to get the full context bundle (primary ticket + epic / parent + linked tickets) |
28
28
  | Linear key | Fetch via Linear MCP if available; else `Bash` with Linear CLI; else report "Linear reader unavailable" |
29
- | GitHub issue | `gh issue view <number> --json title,body,comments,labels,milestone` |
30
- | PRD | `Read` the file or fetch via Notion MCP if it's a Notion URL |
29
+ | PRD | `Read` the file or fetch via Notion / Confluence MCP, or `gh issue view` for a GitHub PRD |
31
30
 
32
31
  ## Phase 2 — Extract Requirements
33
32
 
@@ -1,30 +1,30 @@
1
1
  ---
2
2
  name: ticket-triage
3
- description: "Analytical triage gate for JIRA tickets. Detects requirement ambiguities, identifies edge cases from codebase analysis, and plans verification methodology. Posts findings to the ticket and produces a verdict (BLOCKED/PASSED_WITH_FINDINGS/PASSED) that gates whether implementation can proceed."
3
+ description: "Analytical triage gate for tickets in the configured destination tracker (JIRA or GitHub Issues). Detects requirement ambiguities, identifies edge cases from codebase analysis, and plans verification methodology. Posts findings to the ticket and produces a verdict (BLOCKED/PASSED_WITH_FINDINGS/PASSED) that gates whether implementation can proceed. Vendor-neutral: the caller (jira-agent or github-agent) is responsible for fetching the ticket via lisa:tracker-read, running the pre-flight gate via lisa:tracker-verify, and posting findings via the matching vendor comment tool."
4
4
  allowed-tools: ["Read", "Glob", "Grep", "Bash"]
5
5
  ---
6
6
 
7
7
  # Ticket Triage: $ARGUMENTS
8
8
 
9
- Perform analytical triage on the JIRA ticket. The caller MUST have run `lisa:jira-read-ticket` first and provided the resulting context bundle — which includes the primary ticket, all linked tickets (blocks / is blocked by / relates to / duplicates), epic parent, epic siblings, subtasks, and remote PR state. Do not triage from a bare ticket summary — if the bundle is missing link or epic context, stop and instruct the caller to run `/lisa:jira-read-ticket` first.
9
+ Perform analytical triage on the ticket. The caller MUST have run `lisa:tracker-read` (or its vendor-specific underlying skill — `lisa:jira-read-ticket` for JIRA, `lisa:github-read-issue` for GitHub) first and provided the resulting context bundle — which includes the primary ticket, all linked tickets (blocks / is blocked by / relates to / duplicates), parent (Epic in JIRA, parent sub-issue in GitHub), siblings, sub-tasks / sub-issues, and remote PR state. Do not triage from a bare ticket summary — if the bundle is missing link or parent context, stop and instruct the caller to run `/tracker-read` first.
10
10
 
11
11
  Repository name for scoped labels and comment headers: determine via `basename $(git rev-parse --show-toplevel)`.
12
12
 
13
13
  ## Phase 0 -- Pre-flight Description Gate
14
14
 
15
- Before any analytical work, confirm the ticket carries the content an implementer needs to start. The caller should already have run `lisa:jira-verify`; this phase consumes its output. If `lisa:jira-verify` returned `FAIL` for any of the following, emit `BLOCKED` immediately with the missing-requirements list and skip to Phase 6:
15
+ Before any analytical work, confirm the ticket carries the content an implementer needs to start. The caller should already have run `lisa:tracker-verify`; this phase consumes its output. If `lisa:tracker-verify` returned `FAIL` for any of the following, emit `BLOCKED` immediately with the missing-requirements list and skip to Phase 6:
16
16
 
17
- - Epic parent missing (non-bug, non-epic)
17
+ - Parent missing (Epic parent for JIRA non-bug-non-epic; parent sub-issue for GitHub non-bug-non-epic)
18
18
  - Description quality failures (no Gherkin acceptance criteria, missing audience sections)
19
19
  - Validation Journey missing on a runtime-behavior ticket
20
20
  - Target backend environment missing on a runtime-behavior ticket
21
21
  - Sign-in credentials missing on a ticket that touches authenticated surfaces
22
22
  - Single-repo scope violated (Bug / Task / Sub-task spanning repos)
23
- - Relationship discovery missing (no links AND no documented git+JQL search)
23
+ - Relationship discovery missing (no links AND no documented git + tracker-search outcome)
24
24
 
25
- The caller (jira-agent) is responsible for transitioning the ticket to `Blocked`, reassigning to the **Reporter**, and posting a comment listing the missing requirements. This skill only emits the verdict and the missing-requirements list.
25
+ The caller (jira-agent or github-agent) is responsible for transitioning the ticket to `Blocked` (JIRA status) or relabeling to `status:blocked` (GitHub), reassigning to the **Reporter / original author**, and posting a comment listing the missing requirements. This skill only emits the verdict and the missing-requirements list.
26
26
 
27
- If `lisa:jira-verify` returned `PASS` for all the above, proceed to Phase 1.
27
+ If `lisa:tracker-verify` returned `PASS` for all the above, proceed to Phase 1.
28
28
 
29
29
  ## Phase 1 -- Relevance Check
30
30
 
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: tracker-add-journey
3
+ description: "Vendor-neutral wrapper for appending a Validation Journey section to an existing ticket/issue. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-add-journey or lisa:github-add-journey."
4
+ allowed-tools: ["Skill", "Bash", "Read"]
5
+ ---
6
+
7
+ # Tracker Add Journey: $ARGUMENTS
8
+
9
+ Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor skill.
10
+
11
+ See the `tracker-resolution` rule for configuration and dispatch table.
12
+
13
+ ## Workflow
14
+
15
+ 1. Resolve tracker config (same logic as `lisa:tracker-write`).
16
+ 2. Dispatch:
17
+ - `jira` → invoke `lisa:jira-add-journey` with `$ARGUMENTS` verbatim. Arg: a JIRA ticket key.
18
+ - `github` → invoke `lisa:github-add-journey` with `$ARGUMENTS` verbatim. Arg: `org/repo#<number>` or a GitHub issue URL.
19
+ 3. Pass through the output.
20
+
21
+ ## Rules
22
+
23
+ - The Validation Journey content format is identical across both vendors (markdown sections with `[EVIDENCE: name]` markers). The only difference is how the section is appended — JIRA via `editJiraIssue`, GitHub via `gh issue edit --body-file`.
24
+ - If the ticket already has a Validation Journey, the vendor skill reports it and stops. This shim does not retry.
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: tracker-build-intake
3
+ description: "Vendor-neutral wrapper for the build-queue batch scanner. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-build-intake (JQL/project-key queue) or lisa:github-build-intake (GitHub repo queue keyed off the `status:ready` label). Counterpart to lisa:intake's PRD-side dispatchers."
4
+ allowed-tools: ["Skill", "Bash", "Read"]
5
+ ---
6
+
7
+ # Tracker Build Intake: $ARGUMENTS
8
+
9
+ Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor build-queue scanner.
10
+
11
+ See the `tracker-resolution` rule for configuration and dispatch table.
12
+
13
+ ## Workflow
14
+
15
+ 1. Resolve tracker config (same logic as `lisa:tracker-write`).
16
+ 2. Dispatch:
17
+ - `jira` → invoke `lisa:jira-build-intake` with `$ARGUMENTS` verbatim. Arg shape: a JIRA project key (e.g., `SE`) or a JQL filter.
18
+ - `github` → invoke `lisa:github-build-intake` with `$ARGUMENTS` verbatim. Arg shape: a GitHub `org/repo` token or a full GitHub repo URL.
19
+ 3. Pass through the cycle summary verbatim.
20
+
21
+ ## Rules
22
+
23
+ - Single cycle per invocation — the vendor skill processes the current `Ready` set and exits.
24
+ - The vendor skills run their own pre-flight checks (JIRA workflow transitions for the JIRA path; label namespace adoption for the GitHub path) before processing items. Never bypass.
25
+ - Never run two intake cycles concurrently against overlapping queues — the scheduling layer is responsible for serialization.
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: tracker-create
3
+ description: "Vendor-neutral wrapper for creating tickets/issues from code files or descriptions. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-create or lisa:github-create. Plans hierarchy structure (epic / story / sub-task), then delegates each individual write through the tracker-write shim."
4
+ allowed-tools: ["Skill", "Bash", "Read"]
5
+ ---
6
+
7
+ # Tracker Create: $ARGUMENTS
8
+
9
+ Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor planning skill.
10
+
11
+ See the `tracker-resolution` rule for configuration and dispatch table.
12
+
13
+ ## Workflow
14
+
15
+ 1. Resolve tracker config (same logic as `lisa:tracker-write`).
16
+ 2. Dispatch:
17
+ - `jira` → invoke `lisa:jira-create` with `$ARGUMENTS` verbatim.
18
+ - `github` → invoke `lisa:github-create` with `$ARGUMENTS` verbatim.
19
+ 3. Pass through the output.
20
+
21
+ ## Rules
22
+
23
+ - Both vendor skills delegate every individual ticket write through `lisa:tracker-write`. They never call vendor-specific write tools directly.
24
+ - This shim is for ad-hoc creation from code files / descriptions. PRD-driven creation goes through the `*-to-tracker` skills (notion / confluence / linear / github).
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: tracker-evidence
3
+ description: "Vendor-neutral wrapper for posting verification evidence. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-evidence or lisa:github-evidence. Uploads evidence to the GitHub `pr-assets` release, updates the PR description, posts a comment on the originating ticket/issue, and transitions the ticket/issue to its post-build review state."
4
+ allowed-tools: ["Skill", "Bash", "Read"]
5
+ ---
6
+
7
+ # Tracker Evidence: $ARGUMENTS
8
+
9
+ Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor evidence skill.
10
+
11
+ See the `tracker-resolution` rule for configuration and dispatch table.
12
+
13
+ ## Workflow
14
+
15
+ 1. Resolve tracker config (same logic as `lisa:tracker-write`).
16
+ 2. Dispatch:
17
+ - `jira` → invoke `lisa:jira-evidence` with `$ARGUMENTS` verbatim. Arg shape: `<TICKET_ID> <EVIDENCE_DIR> <PR_NUMBER>`.
18
+ - `github` → invoke `lisa:github-evidence` with `$ARGUMENTS` verbatim. Arg shape: `<ISSUE_REF> <EVIDENCE_DIR> <PR_NUMBER>` where `ISSUE_REF` is `org/repo#<number>` or a GitHub issue URL.
19
+ 3. Pass through the vendor skill's output.
20
+
21
+ ## Rules
22
+
23
+ - The GitHub `pr-assets` release lives on the implementation repo (the one with the PR), regardless of which tracker hosts the ticket/issue. Both vendor skills upload there.
24
+ - Never post evidence to a different ticket than the one named — `$ARGUMENTS` is the source of truth.
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: tracker-journey
3
+ description: "Vendor-neutral wrapper for executing a ticket/issue's Validation Journey end-to-end. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-journey or lisa:github-journey. Parses the journey, satisfies prerequisites, executes the steps, captures evidence at each marker, and posts results via tracker-evidence."
4
+ allowed-tools: ["Skill", "Bash", "Read"]
5
+ ---
6
+
7
+ # Tracker Journey: $ARGUMENTS
8
+
9
+ Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor journey skill.
10
+
11
+ See the `tracker-resolution` rule for configuration and dispatch table.
12
+
13
+ ## Workflow
14
+
15
+ 1. Resolve tracker config (same logic as `lisa:tracker-write`).
16
+ 2. Dispatch:
17
+ - `jira` → invoke `lisa:jira-journey` with `$ARGUMENTS` verbatim. Arg shape: `<TICKET_ID> [PR_NUMBER]`.
18
+ - `github` → invoke `lisa:github-journey` with `$ARGUMENTS` verbatim. Arg shape: `<ISSUE_REF> [PR_NUMBER]`.
19
+ 3. Pass through the output.
20
+
21
+ ## Rules
22
+
23
+ - The journey content is identical across vendors; only the parser source differs (the JIRA vendor reads description via Atlassian MCP; the GitHub vendor reads body via `gh issue view --json body`).
24
+ - Evidence posting always goes through `lisa:tracker-evidence` — never bypass.
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: tracker-read
3
+ description: "Vendor-neutral wrapper for fetching the full scope of a ticket/issue and its related graph. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-read-ticket or lisa:github-read-issue. Returns a consolidated context bundle so downstream agents never act on a single ticket in isolation."
4
+ allowed-tools: ["Skill", "Bash", "Read"]
5
+ ---
6
+
7
+ # Tracker Read: $ARGUMENTS
8
+
9
+ Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor read skill.
10
+
11
+ See the `tracker-resolution` rule for configuration and dispatch table.
12
+
13
+ ## Workflow
14
+
15
+ 1. Resolve tracker config (same logic as `lisa:tracker-write`).
16
+ 2. Dispatch:
17
+ - `jira` → invoke `lisa:jira-read-ticket` with `$ARGUMENTS` verbatim. The argument is a JIRA key (e.g., `PROJ-123`).
18
+ - `github` → invoke `lisa:github-read-issue` with `$ARGUMENTS` verbatim. The argument is `org/repo#<number>` or a full GitHub issue URL.
19
+ 3. Return the vendor skill's context bundle verbatim.
20
+
21
+ ## Rules
22
+
23
+ - Read-only — never modify the ticket/issue.
24
+ - The two vendors emit different context-bundle formats (because their data models differ). Callers must be tolerant of both — or, more precisely, agents at the next layer (e.g. `tracker-agent`-equivalent) parse the per-vendor bundle.
25
+ - If the input format doesn't match the configured tracker (e.g. tracker is jira but `$ARGUMENTS` looks like a GitHub URL), stop and report — never auto-translate.
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: tracker-sync
3
+ description: "Vendor-neutral wrapper for posting milestone updates to the linked ticket/issue. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-sync or lisa:github-sync. Posts at: plan created, implementation in progress, PR ready, PR merged. Suggests (never auto-transitions) the next status."
4
+ allowed-tools: ["Skill", "Bash", "Read"]
5
+ ---
6
+
7
+ # Tracker Sync: $ARGUMENTS
8
+
9
+ Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor sync skill.
10
+
11
+ See the `tracker-resolution` rule for configuration and dispatch table.
12
+
13
+ ## Workflow
14
+
15
+ 1. Resolve tracker config (same logic as `lisa:tracker-write`).
16
+ 2. Dispatch:
17
+ - `jira` → invoke `lisa:jira-sync` with `$ARGUMENTS` verbatim.
18
+ - `github` → invoke `lisa:github-sync` with `$ARGUMENTS` verbatim.
19
+ 3. Pass through the output.
20
+
21
+ If `$ARGUMENTS` is empty, both vendor skills auto-detect a ticket reference from the active plan file (most recently modified `.md` in `plans/`).
22
+
23
+ ## Rules
24
+
25
+ - Idempotent updates — running sync at the same milestone twice should not produce duplicate comments. Vendor skills enforce this.
26
+ - Never auto-transition status. Suggestions only.
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: tracker-validate
3
+ description: "Vendor-neutral wrapper for the pre-write quality gate. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-validate-ticket or lisa:github-validate-issue. Read-only — never writes to either tracker. Used by tracker-write Phase 5.5 (pre-write gate), tracker-verify (post-write checks), and the *-to-tracker dry-run paths. Output is structured PASS/FAIL per gate so callers can parse it."
4
+ allowed-tools: ["Skill", "Bash", "Read"]
5
+ ---
6
+
7
+ # Tracker Validate: $ARGUMENTS
8
+
9
+ Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor validator.
10
+
11
+ See the `tracker-resolution` rule for the full configuration schema and skill-mapping table.
12
+
13
+ ## Workflow
14
+
15
+ 1. **Resolve tracker config** (same logic as `lisa:tracker-write` Step 1):
16
+
17
+ ```bash
18
+ tracker=$(jq -r '.tracker // "jira"' .lisa.config.local.json 2>/dev/null \
19
+ || jq -r '.tracker // "jira"' .lisa.config.json 2>/dev/null \
20
+ || echo "jira")
21
+ ```
22
+
23
+ 2. **Dispatch**
24
+
25
+ - `jira` → invoke `lisa:jira-validate-ticket` with `$ARGUMENTS` verbatim.
26
+ - `github` → invoke `lisa:github-validate-issue` with `$ARGUMENTS` verbatim.
27
+ - Anything else → stop and report `"Unknown tracker '<value>' in .lisa.config.json."`
28
+
29
+ 3. **Pass through the validator's structured report unchanged.** Callers (e.g. `lisa:jira-write-ticket` Phase 5.5) parse the gate lines; do not paraphrase.
30
+
31
+ ## Rules
32
+
33
+ - Read-only — never write to either tracker.
34
+ - Never re-implement gate logic here. The gate definitions are the vendor validator's responsibility.
35
+ - Never silently transform the input — pass `$ARGUMENTS` through verbatim.
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: tracker-verify
3
+ description: "Vendor-neutral wrapper for the post-write verification gate. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-verify or lisa:github-verify. Fetches the live ticket/issue and runs the validator gates against the stored state — catches anything dropped or reformatted on write. Read-only."
4
+ allowed-tools: ["Skill", "Bash", "Read"]
5
+ ---
6
+
7
+ # Tracker Verify: $ARGUMENTS
8
+
9
+ Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor post-write verifier.
10
+
11
+ See the `tracker-resolution` rule for configuration and dispatch table.
12
+
13
+ ## Workflow
14
+
15
+ 1. Resolve tracker config (same logic as `lisa:tracker-write`).
16
+ 2. Dispatch:
17
+ - `jira` → invoke `lisa:jira-verify` with `$ARGUMENTS` verbatim.
18
+ - `github` → invoke `lisa:github-verify` with `$ARGUMENTS` verbatim.
19
+ 3. Pass through the verifier's structured report unchanged.
20
+
21
+ ## Rules
22
+
23
+ - Read-only.
24
+ - The same gates run pre-write and post-write — this shim simply chooses the vendor implementation.
25
+ - If the vendor verify reports `FAIL`, callers must NOT auto-fix from this layer. Surface the failures to the caller and let the higher-level skill decide.
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: tracker-write
3
+ description: "Vendor-neutral wrapper for ticket creation and updates. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-write-ticket or lisa:github-write-issue. Callers in vendor-neutral skills (notion-to-tracker, linear-to-tracker, confluence-to-tracker, github-to-tracker, implement, verify) MUST invoke this skill instead of the vendor-specific ones — that is what makes the tracker switchable per project. The Phase-5.5 validate-pre-write gate, post-write verify, and Phase-8 announce-comment behavior live in the vendor skills; this shim is dispatch only."
4
+ allowed-tools: ["Skill", "Bash", "Read"]
5
+ ---
6
+
7
+ # Tracker Write: $ARGUMENTS
8
+
9
+ Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor write skill.
10
+
11
+ See the `tracker-resolution` rule for the full configuration schema and skill-mapping table.
12
+
13
+ ## Workflow
14
+
15
+ 1. **Resolve tracker config**
16
+
17
+ Read `.lisa.config.local.json` first (if present), then `.lisa.config.json`. Local overrides global on a per-key basis. Use `jq` — never hand-parse JSON.
18
+
19
+ ```bash
20
+ tracker=$(jq -r '.tracker // "jira"' .lisa.config.local.json 2>/dev/null \
21
+ || jq -r '.tracker // "jira"' .lisa.config.json 2>/dev/null \
22
+ || echo "jira")
23
+ ```
24
+
25
+ 2. **Validate the value**
26
+
27
+ - `jira` → continue to Step 3a.
28
+ - `github` → continue to Step 3b. Also confirm `github.org` and `github.repo` are present. If either is missing, stop and report: `"tracker=github but github.org and github.repo are not set in .lisa.config.json."`
29
+ - Any other value → stop and report: `"Unknown tracker '<value>' in .lisa.config.json. Expected 'jira' or 'github'."`
30
+
31
+ 3. **Dispatch**
32
+
33
+ - **3a (jira):** Invoke `lisa:jira-write-ticket` via the Skill tool, passing `$ARGUMENTS` verbatim.
34
+ - **3b (github):** Invoke `lisa:github-write-issue` via the Skill tool, passing `$ARGUMENTS` verbatim.
35
+
36
+ 4. **Surface the vendor skill's output unchanged.** Do not paraphrase; downstream callers parse the structured response.
37
+
38
+ ## Rules
39
+
40
+ - Never bypass dispatch — calling the vendor skill directly from a vendor-neutral caller defeats the per-project switch.
41
+ - Never invent a third tracker.
42
+ - Never mutate `$ARGUMENTS` between layers. The vendor skills define their own input contract.
43
+ - Never inline gate logic here. All validation rules live in the vendor skills (`lisa:jira-validate-ticket` / `lisa:github-validate-issue`); this skill only routes.
@@ -1,16 +1,26 @@
1
1
  ---
2
2
  name: verification-lifecycle
3
- description: "Verification lifecycle: confirm quality gates, classify types, discover tools, fail fast, plan, execute, loop. Quality gates (tests/typecheck/lint) are prerequisites, NOT verification. Verification means running the actual system and observing results."
3
+ description: "Verification lifecycle: confirm quality gates, classify types, discover tools, fail fast, plan, execute, codify (turn each passing verification into a regression test), spec conformance (verify shipped work matches the spec), loop. Quality gates (tests/typecheck/lint) are prerequisites, NOT verification. Verification means running the actual system and observing results."
4
4
  ---
5
5
 
6
6
  # Verification Lifecycle
7
7
 
8
- This skill defines the complete verification lifecycle that agents must follow for every change: confirm quality gates, classify, check tooling, fail fast, plan, execute, and loop.
8
+ This skill defines the complete verification lifecycle that agents must follow for every change: confirm quality gates, classify, check tooling, fail fast, plan, execute, codify (turn each passing verification into a regression test), spec conformance (verify shipped work matches the spec), and loop.
9
9
 
10
10
  ## Verification Lifecycle
11
11
 
12
12
  Agents must follow this mandatory sequence for every change:
13
13
 
14
+ 1. Confirm Quality Gates
15
+ 2. Classify
16
+ 3. Check Tooling
17
+ 4. Fail Fast (if blocked)
18
+ 5. Plan
19
+ 6. Execute
20
+ 7. Codify (turn each passing verification into a regression test)
21
+ 8. Spec Conformance
22
+ 9. Loop
23
+
14
24
  ### 1. Confirm Quality Gates
15
25
 
16
26
  Confirm that quality gates (tests, typecheck, lint, format) pass. These are prerequisites, NOT verification. Do not count them as verification — they are enforced automatically by hooks and CI. If quality gates fail, fix them before proceeding.
@@ -42,7 +52,17 @@ A verification plan that only lists `bun run test`, `bun run typecheck`, or `bun
42
52
 
43
53
  After implementation, run the verification plan. Execute each verification type in order.
44
54
 
45
- ### 7. Spec Conformance
55
+ ### 7. Codify
56
+
57
+ After each empirical verification produces PASS evidence, invoke the `codify-verification` skill to encode the verification as an automated regression test. The manual proof becomes a repeatable check that catches future regressions.
58
+
59
+ The `codify-verification` skill maps the verification type to the appropriate framework (Playwright for browser/UI, integration test for API/DB/auth, benchmark for performance, etc.), generates a deterministic test that asserts the same observable outcome the verification just confirmed, runs it in isolation to confirm PASS, and commits it in the same PR as the change.
60
+
61
+ Codification is mandatory for every empirical verification type with one exception set: PR, Documentation, Deploy, and Investigate-Only spikes — those have inherently non-behavioral proof. For every other type, skipping codification is not allowed; if codification is genuinely impossible (e.g., the test framework does not exist and cannot be installed in scope), escalate via the Escalation Protocol rather than silently skipping.
62
+
63
+ A change is not "verified" in the lifecycle sense until each empirical verification has both passed AND been codified.
64
+
65
+ ### 8. Spec Conformance
46
66
 
47
67
  After empirical verification produces evidence, run spec conformance as a separate, mandatory step. Invoke the `spec-conformance` skill (or delegate to the `spec-conformance-specialist` agent) with the spec source — plan file, JIRA/Linear/GitHub key, or PRD.
48
68
 
@@ -56,9 +76,9 @@ Required outputs:
56
76
 
57
77
  `PARTIAL` or `DIVERGES` blocks completion. Fix the gaps (implement the miss, remove the creep, capture the missing evidence) and re-run both empirical verification AND spec conformance. Never skip this step — it catches failures that empirical verification by itself does not, such as a feature that works but wasn't asked for, or a spec item that was quietly dropped.
58
78
 
59
- ### 8. Loop
79
+ ### 9. Loop
60
80
 
61
- If any verification or spec-conformance check fails, fix the issue and re-verify. Do not declare done until all required types pass AND the spec-conformance verdict is `CONFORMS`. If a verification or conformance check is stuck after 3 attempts, escalate.
81
+ If any verification, codification, or spec-conformance check fails, fix the issue and re-verify. Do not declare done until all required types pass, all empirical verifications are codified, AND the spec-conformance verdict is `CONFORMS`. If a verification, codification, or conformance check is stuck after 3 attempts, escalate.
62
82
 
63
83
  ---
64
84
 
@@ -194,9 +214,10 @@ Agents must follow this sequence unless explicitly instructed otherwise:
194
214
  8. Implement the change.
195
215
  9. Execute verification plan — run the actual system and observe results.
196
216
  10. Collect proof artifacts.
197
- 11. Run spec conformance build coverage matrix against the spec source (plan/ticket/issue), flag scope creep and untraceable changes, produce verdict.
198
- 12. Summarize what changed, what was verified, conformance verdict, and remaining risk.
199
- 13. Label the result with a verification level.
217
+ 11. Codify for each passing empirical verification, invoke `codify-verification` to encode it as a regression test (Playwright for UI, integration test for API/DB/auth, benchmark for performance, etc.) and commit the test in the same PR.
218
+ 12. Run spec conformance build coverage matrix against the spec source (plan/ticket/issue), flag scope creep and untraceable changes, produce verdict.
219
+ 13. Summarize what changed, what was verified, what was codified, conformance verdict, and remaining risk.
220
+ 14. Label the result with a verification level.
200
221
 
201
222
  ---
202
223
 
@@ -305,9 +326,10 @@ A task is done only when:
305
326
 
306
327
  - End user is identified
307
328
  - All applicable verification types are classified and executed
308
- - Verification lifecycle is completed (classify, check tooling, plan, execute, spec conformance, loop)
329
+ - Verification lifecycle is completed (classify, check tooling, plan, execute, codify, spec conformance, loop)
309
330
  - Required verification surfaces and tooling surfaces are used or explicitly unavailable
310
331
  - Proof artifacts are captured
332
+ - Every passing empirical verification is codified as a regression test (or has an explicit, documented skip reason from the allowed set)
311
333
  - Spec conformance verdict is `CONFORMS` (not `PARTIAL`, not `DIVERGES`)
312
334
  - Verification level is declared
313
335
  - Risks and gaps are documented
@@ -18,12 +18,13 @@ If you ARE already inside an agent team (e.g., a teammate invoked this skill via
18
18
 
19
19
  Execute the **Verify** flow as defined in the `intent-routing` rule (loaded via the lisa plugin). The flow includes:
20
20
 
21
- 1. **Commit** any pending changes via `lisa:git-commit`
22
- 2. **Push and PR** via `lisa:git-submit-pr`
23
- 3. **Review loop** — handle CodeRabbit / human review comments via `lisa:pull-request-review`
24
- 4. **Merge** when CI is green
25
- 5. **Remote verification** invoke the `lisa:monitor` skill against the target environment to confirm the deploy actually works (health endpoints, recent logs/errors, Validation Journey replay if defined)
26
- 6. **Evidence** — post results to the originating ticket via `lisa:jira-evidence` (or equivalent tracker adapter)
21
+ 1. **Pre-flight: codification gate** — confirm that every passing local empirical verification on this branch was codified as a regression test (the Implement flow's codify step). If any verification has no committed test and no allowed skip reason (PR / Documentation / Deploy / Investigate-Only), invoke `codify-verification` now and amend the PR before shipping. A change cannot ship until its verifications are guarded.
22
+ 2. **Commit** any pending changes via `lisa:git-commit`
23
+ 3. **Push and PR** via `lisa:git-submit-pr`
24
+ 4. **Review loop** handle CodeRabbit / human review comments via `lisa:pull-request-review`
25
+ 5. **Merge** when CI is green
26
+ 6. **Remote verification** — invoke the `lisa:monitor` skill against the target environment to confirm the deploy actually works (health endpoints, recent logs/errors, Validation Journey replay if defined). If remote verification surfaces a behavioral gap that the existing codified tests do not guard, invoke `codify-verification` to add coverage and open a follow-up PR.
27
+ 7. **Evidence** — post results to the originating ticket via `lisa:tracker-evidence` (vendor-neutral; dispatches to `lisa:jira-evidence` or `lisa:github-evidence` per `.lisa.config.json` `tracker`), including the list of codified tests added on this branch.
27
28
 
28
29
  The rule contains the canonical step sequence. Change it there, propagate everywhere.
29
30
 
@@ -8,7 +8,7 @@ allowed-tools: ["Skill", "mcp__atlassian__getJiraIssue", "mcp__atlassian__getAcc
8
8
 
9
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 (`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.
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-tracker` (PRD dry-run) all pick it up.
12
12
 
13
13
  ## Process
14
14
 
@@ -8,7 +8,7 @@ allowed-tools: ["Skill", "mcp__atlassian__getJiraIssue", "mcp__atlassian__getAcc
8
8
 
9
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 (`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.
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-tracker` (PRD dry-run) all pick it up.
12
12
 
13
13
  ## Process
14
14