@codyswann/lisa 1.96.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/commands/{plan/fix-linter-error.md → fix/linter-error.md} +1 -1
- package/plugins/lisa/commands/implement.md +6 -0
- package/plugins/{src/base/commands/plan/lower-code-complexity.md → lisa/commands/improve/code-complexity.md} +1 -1
- package/plugins/lisa/commands/{plan/reduce-max-lines-per-function.md → improve/max-lines-per-function.md} +1 -1
- package/plugins/lisa/commands/{plan/reduce-max-lines.md → improve/max-lines.md} +1 -1
- package/plugins/lisa/commands/{plan/add-test-coverage.md → improve/test-coverage.md} +1 -1
- package/plugins/lisa/commands/{plan/improve-tests.md → improve/tests.md} +1 -1
- package/plugins/lisa/commands/intake.md +6 -0
- package/plugins/lisa/commands/monitor.md +2 -6
- package/plugins/lisa/commands/plan.md +3 -11
- package/plugins/lisa/commands/research.md +2 -6
- package/plugins/{src/base/commands/plan/local-code-review.md → lisa/commands/review/local.md} +1 -1
- package/plugins/lisa/commands/verify.md +2 -6
- package/plugins/lisa/rules/intent-routing.md +14 -13
- package/plugins/{src/base/skills/plan-fix-linter-error → lisa/skills/fix-linter-error}/SKILL.md +2 -2
- package/plugins/lisa/skills/{plan-execute → implement}/SKILL.md +21 -12
- package/plugins/lisa/skills/{plan-lower-code-complexity → improve-code-complexity}/SKILL.md +2 -2
- package/plugins/lisa/skills/{plan-reduce-max-lines → improve-max-lines}/SKILL.md +2 -2
- package/plugins/{src/base/skills/plan-reduce-max-lines-per-function → lisa/skills/improve-max-lines-per-function}/SKILL.md +2 -2
- package/plugins/lisa/skills/{plan-add-test-coverage → improve-test-coverage}/SKILL.md +2 -2
- package/plugins/{src/base/skills/plan-improve-tests → lisa/skills/improve-tests}/SKILL.md +2 -2
- package/plugins/lisa/skills/intake/SKILL.md +56 -0
- package/plugins/lisa/skills/jira-add-journey/SKILL.md +1 -1
- package/plugins/lisa/skills/jira-build-intake/SKILL.md +18 -18
- package/plugins/lisa/skills/jira-create/SKILL.md +17 -17
- package/plugins/lisa/skills/jira-source-artifacts/SKILL.md +1 -1
- package/plugins/lisa/skills/jira-validate-ticket/SKILL.md +4 -4
- package/plugins/lisa/skills/jira-verify/SKILL.md +5 -5
- package/plugins/lisa/skills/jira-write-ticket/SKILL.md +12 -12
- package/plugins/lisa/skills/monitor/SKILL.md +33 -0
- package/plugins/lisa/skills/notion-prd-intake/SKILL.md +11 -11
- package/plugins/lisa/skills/notion-to-jira/SKILL.md +32 -32
- package/plugins/lisa/skills/plan/SKILL.md +38 -0
- package/plugins/lisa/skills/prd-ticket-coverage/SKILL.md +4 -4
- package/plugins/lisa/skills/product-walkthrough/SKILL.md +3 -3
- package/plugins/lisa/skills/research/SKILL.md +23 -0
- package/plugins/lisa/skills/{plan-local-code-review → review-local}/SKILL.md +1 -1
- package/plugins/lisa/skills/ticket-triage/SKILL.md +3 -3
- package/plugins/lisa/skills/verify/SKILL.md +32 -0
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/skills/jira-add-journey/SKILL.md +1 -1
- package/plugins/lisa-expo/skills/jira-create/SKILL.md +17 -17
- package/plugins/lisa-expo/skills/jira-verify/SKILL.md +5 -5
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/{src/rails/commands/plan/fix-linter-error.md → lisa-rails/commands/fix/linter-error.md} +1 -1
- package/plugins/{src/rails/commands/plan/lower-code-complexity.md → lisa-rails/commands/improve/code-complexity.md} +1 -1
- package/plugins/lisa-rails/commands/{plan/reduce-max-lines-per-function.md → improve/max-lines-per-function.md} +1 -1
- package/plugins/lisa-rails/commands/{plan/reduce-max-lines.md → improve/max-lines.md} +1 -1
- package/plugins/lisa-rails/commands/{plan/add-test-coverage.md → improve/test-coverage.md} +1 -1
- package/plugins/lisa-rails/skills/{plan-fix-linter-error → fix-linter-error}/SKILL.md +2 -2
- package/plugins/lisa-rails/skills/{plan-lower-code-complexity → improve-code-complexity}/SKILL.md +2 -2
- package/plugins/{src/rails/skills/plan-reduce-max-lines → lisa-rails/skills/improve-max-lines}/SKILL.md +2 -2
- package/plugins/{src/rails/skills/plan-reduce-max-lines-per-function → lisa-rails/skills/improve-max-lines-per-function}/SKILL.md +2 -2
- package/plugins/lisa-rails/skills/{plan-add-test-coverage → improve-test-coverage}/SKILL.md +2 -2
- package/plugins/lisa-rails/skills/jira-create/SKILL.md +16 -16
- package/plugins/lisa-rails/skills/jira-verify/SKILL.md +4 -4
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/commands/{plan/fix-linter-error.md → fix/linter-error.md} +1 -1
- package/plugins/src/base/commands/implement.md +6 -0
- package/plugins/{lisa/commands/plan/lower-code-complexity.md → src/base/commands/improve/code-complexity.md} +1 -1
- package/plugins/src/base/commands/{plan/reduce-max-lines-per-function.md → improve/max-lines-per-function.md} +1 -1
- package/plugins/src/base/commands/{plan/reduce-max-lines.md → improve/max-lines.md} +1 -1
- package/plugins/src/base/commands/{plan/add-test-coverage.md → improve/test-coverage.md} +1 -1
- package/plugins/src/base/commands/{plan/improve-tests.md → improve/tests.md} +1 -1
- package/plugins/src/base/commands/intake.md +6 -0
- package/plugins/src/base/commands/monitor.md +2 -6
- package/plugins/src/base/commands/plan.md +3 -11
- package/plugins/src/base/commands/research.md +2 -6
- package/plugins/{lisa/commands/plan/local-code-review.md → src/base/commands/review/local.md} +1 -1
- package/plugins/src/base/commands/verify.md +2 -6
- package/plugins/src/base/rules/intent-routing.md +14 -13
- package/plugins/{lisa/skills/plan-fix-linter-error → src/base/skills/fix-linter-error}/SKILL.md +2 -2
- package/plugins/src/base/skills/{plan-execute → implement}/SKILL.md +21 -12
- package/plugins/src/base/skills/{plan-lower-code-complexity → improve-code-complexity}/SKILL.md +2 -2
- package/plugins/src/base/skills/{plan-reduce-max-lines → improve-max-lines}/SKILL.md +2 -2
- package/plugins/{lisa/skills/plan-reduce-max-lines-per-function → src/base/skills/improve-max-lines-per-function}/SKILL.md +2 -2
- package/plugins/src/base/skills/{plan-add-test-coverage → improve-test-coverage}/SKILL.md +2 -2
- package/plugins/{lisa/skills/plan-improve-tests → src/base/skills/improve-tests}/SKILL.md +2 -2
- package/plugins/src/base/skills/intake/SKILL.md +56 -0
- package/plugins/src/base/skills/jira-add-journey/SKILL.md +1 -1
- package/plugins/src/base/skills/jira-build-intake/SKILL.md +18 -18
- package/plugins/src/base/skills/jira-create/SKILL.md +17 -17
- package/plugins/src/base/skills/jira-source-artifacts/SKILL.md +1 -1
- package/plugins/src/base/skills/jira-validate-ticket/SKILL.md +4 -4
- package/plugins/src/base/skills/jira-verify/SKILL.md +5 -5
- package/plugins/src/base/skills/jira-write-ticket/SKILL.md +12 -12
- package/plugins/src/base/skills/monitor/SKILL.md +33 -0
- package/plugins/src/base/skills/notion-prd-intake/SKILL.md +11 -11
- package/plugins/src/base/skills/notion-to-jira/SKILL.md +32 -32
- package/plugins/src/base/skills/plan/SKILL.md +38 -0
- package/plugins/src/base/skills/prd-ticket-coverage/SKILL.md +4 -4
- package/plugins/src/base/skills/product-walkthrough/SKILL.md +3 -3
- package/plugins/src/base/skills/research/SKILL.md +23 -0
- package/plugins/src/base/skills/{plan-local-code-review → review-local}/SKILL.md +1 -1
- package/plugins/src/base/skills/ticket-triage/SKILL.md +3 -3
- package/plugins/src/base/skills/verify/SKILL.md +32 -0
- package/plugins/src/expo/skills/jira-add-journey/SKILL.md +1 -1
- package/plugins/src/expo/skills/jira-create/SKILL.md +17 -17
- package/plugins/src/expo/skills/jira-verify/SKILL.md +5 -5
- package/plugins/{lisa-rails/commands/plan/fix-linter-error.md → src/rails/commands/fix/linter-error.md} +1 -1
- package/plugins/{lisa-rails/commands/plan/lower-code-complexity.md → src/rails/commands/improve/code-complexity.md} +1 -1
- package/plugins/src/rails/commands/{plan/reduce-max-lines-per-function.md → improve/max-lines-per-function.md} +1 -1
- package/plugins/src/rails/commands/{plan/reduce-max-lines.md → improve/max-lines.md} +1 -1
- package/plugins/src/rails/commands/{plan/add-test-coverage.md → improve/test-coverage.md} +1 -1
- package/plugins/src/rails/skills/{plan-fix-linter-error → fix-linter-error}/SKILL.md +2 -2
- package/plugins/src/rails/skills/{plan-lower-code-complexity → improve-code-complexity}/SKILL.md +2 -2
- package/plugins/{lisa-rails/skills/plan-reduce-max-lines → src/rails/skills/improve-max-lines}/SKILL.md +2 -2
- package/plugins/{lisa-rails/skills/plan-reduce-max-lines-per-function → src/rails/skills/improve-max-lines-per-function}/SKILL.md +2 -2
- package/plugins/src/rails/skills/{plan-add-test-coverage → improve-test-coverage}/SKILL.md +2 -2
- package/plugins/src/rails/skills/jira-create/SKILL.md +16 -16
- package/plugins/src/rails/skills/jira-verify/SKILL.md +4 -4
- package/plugins/lisa/commands/build.md +0 -12
- package/plugins/lisa/commands/fix.md +0 -12
- package/plugins/lisa/commands/improve.md +0 -18
- package/plugins/lisa/commands/investigate.md +0 -10
- package/plugins/lisa/commands/jira/add-journey.md +0 -7
- package/plugins/lisa/commands/jira/build-intake.md +0 -7
- package/plugins/lisa/commands/jira/create.md +0 -7
- package/plugins/lisa/commands/jira/evidence.md +0 -7
- package/plugins/lisa/commands/jira/journey.md +0 -7
- package/plugins/lisa/commands/jira/read-ticket.md +0 -7
- package/plugins/lisa/commands/jira/source-artifacts.md +0 -6
- package/plugins/lisa/commands/jira/sync.md +0 -7
- package/plugins/lisa/commands/jira/triage.md +0 -7
- package/plugins/lisa/commands/jira/validate-ticket.md +0 -7
- package/plugins/lisa/commands/jira/verify.md +0 -7
- package/plugins/lisa/commands/jira/write-ticket.md +0 -7
- package/plugins/lisa/commands/notion-prd-intake.md +0 -7
- package/plugins/lisa/commands/plan/create.md +0 -8
- package/plugins/lisa/commands/plan/execute.md +0 -6
- package/plugins/lisa/commands/prd-ticket-coverage.md +0 -7
- package/plugins/lisa/commands/review/implementation.md +0 -7
- package/plugins/lisa/commands/review.md +0 -10
- package/plugins/lisa/commands/ship.md +0 -8
- package/plugins/lisa/commands/spec-conformance.md +0 -7
- package/plugins/lisa-expo/commands/jira/add-journey.md +0 -7
- package/plugins/lisa-expo/commands/jira/create.md +0 -7
- package/plugins/lisa-expo/commands/jira/evidence.md +0 -7
- package/plugins/lisa-expo/commands/jira/journey.md +0 -7
- package/plugins/lisa-expo/commands/jira/verify.md +0 -7
- package/plugins/lisa-rails/commands/jira/add-journey.md +0 -7
- package/plugins/lisa-rails/commands/jira/create.md +0 -7
- package/plugins/lisa-rails/commands/jira/evidence.md +0 -7
- package/plugins/lisa-rails/commands/jira/journey.md +0 -7
- package/plugins/lisa-rails/commands/jira/verify.md +0 -7
- package/plugins/src/base/commands/build.md +0 -12
- package/plugins/src/base/commands/fix.md +0 -12
- package/plugins/src/base/commands/improve.md +0 -18
- package/plugins/src/base/commands/investigate.md +0 -10
- package/plugins/src/base/commands/jira/add-journey.md +0 -7
- package/plugins/src/base/commands/jira/build-intake.md +0 -7
- package/plugins/src/base/commands/jira/create.md +0 -7
- package/plugins/src/base/commands/jira/evidence.md +0 -7
- package/plugins/src/base/commands/jira/journey.md +0 -7
- package/plugins/src/base/commands/jira/read-ticket.md +0 -7
- package/plugins/src/base/commands/jira/source-artifacts.md +0 -6
- package/plugins/src/base/commands/jira/sync.md +0 -7
- package/plugins/src/base/commands/jira/triage.md +0 -7
- package/plugins/src/base/commands/jira/validate-ticket.md +0 -7
- package/plugins/src/base/commands/jira/verify.md +0 -7
- package/plugins/src/base/commands/jira/write-ticket.md +0 -7
- package/plugins/src/base/commands/notion-prd-intake.md +0 -7
- package/plugins/src/base/commands/plan/create.md +0 -8
- package/plugins/src/base/commands/plan/execute.md +0 -6
- package/plugins/src/base/commands/prd-ticket-coverage.md +0 -7
- package/plugins/src/base/commands/review/implementation.md +0 -7
- package/plugins/src/base/commands/review.md +0 -10
- package/plugins/src/base/commands/ship.md +0 -8
- package/plugins/src/base/commands/spec-conformance.md +0 -7
- package/plugins/src/expo/commands/jira/add-journey.md +0 -7
- package/plugins/src/expo/commands/jira/create.md +0 -7
- package/plugins/src/expo/commands/jira/evidence.md +0 -7
- package/plugins/src/expo/commands/jira/journey.md +0 -7
- package/plugins/src/expo/commands/jira/verify.md +0 -7
- package/plugins/src/rails/commands/jira/add-journey.md +0 -7
- package/plugins/src/rails/commands/jira/create.md +0 -7
- package/plugins/src/rails/commands/jira/evidence.md +0 -7
- package/plugins/src/rails/commands/jira/journey.md +0 -7
- package/plugins/src/rails/commands/jira/verify.md +0 -7
|
@@ -9,13 +9,13 @@ allowed-tools: ["Skill", "mcp__claude_ai_Notion__notion-fetch", "mcp__claude_ai_
|
|
|
9
9
|
`$ARGUMENTS` is one of:
|
|
10
10
|
|
|
11
11
|
1. A PRD URL alone — auto-discover created tickets via the PRD's epic remote link.
|
|
12
|
-
2. A PRD URL plus an explicit list of ticket keys — `<PRD URL> tickets=[KEY-1,KEY-2,...]`. Use this when called from `notion-prd-intake` (which knows the keys it just created).
|
|
12
|
+
2. A PRD URL plus an explicit list of ticket keys — `<PRD URL> tickets=[KEY-1,KEY-2,...]`. Use this when called from `lisa:notion-prd-intake` (which knows the keys it just created).
|
|
13
13
|
|
|
14
14
|
Verify that every atomic item in the PRD is covered by at least one of the listed/discovered JIRA tickets. The output gates whether the PRD's `Status` should remain `Ticketed` or revert to `Blocked`.
|
|
15
15
|
|
|
16
16
|
## Why this exists
|
|
17
17
|
|
|
18
|
-
Per-ticket gates (`jira-validate-ticket`) prove each created ticket is well-formed in isolation. They do NOT prove the *set* of created tickets is complete relative to the source PRD. Silent drops happen — an agent generates 8 tickets when the PRD called for 9, and nothing notices. This skill is the catch.
|
|
18
|
+
Per-ticket gates (`lisa:jira-validate-ticket`) prove each created ticket is well-formed in isolation. They do NOT prove the *set* of created tickets is complete relative to the source PRD. Silent drops happen — an agent generates 8 tickets when the PRD called for 9, and nothing notices. This skill is the catch.
|
|
19
19
|
|
|
20
20
|
## Phases
|
|
21
21
|
|
|
@@ -27,7 +27,7 @@ Per-ticket gates (`jira-validate-ticket`) prove each created ticket is well-form
|
|
|
27
27
|
2. Fetch the PRD via `notion-fetch` with `include_discussions: true`. Capture: title, body, child Epic pages, all comment threads.
|
|
28
28
|
3. If the PRD has child Epic sub-pages (a multi-epic PRD like Home revamp), fetch each in parallel with `include_discussions: true`. The audit walks the full PRD tree.
|
|
29
29
|
4. If `tickets=[...]` not provided, locate the JIRA epic by:
|
|
30
|
-
- Looking for a JIRA URL in the PRD body, comments, or the PRD's most recent "Ticketed by Claude" comment posted by `notion-prd-intake`.
|
|
30
|
+
- Looking for a JIRA URL in the PRD body, comments, or the PRD's most recent "Ticketed by Claude" comment posted by `lisa:notion-prd-intake`.
|
|
31
31
|
- Searching JIRA via `searchJiraIssuesUsingJql` for an epic whose summary or description references the PRD title or page ID.
|
|
32
32
|
- If no epic found, return verdict `NO_TICKETS_FOUND` with a clear remediation — coverage cannot be assessed without the ticket set.
|
|
33
33
|
5. Once the epic is known, fetch all child stories and sub-tasks via JQL: `"Epic Link" = <EPIC-KEY>` and recursively for sub-tasks.
|
|
@@ -134,4 +134,4 @@ Atomic PRD items extracted: <n>
|
|
|
134
134
|
- Never silently drop a PRD item from extraction. If an item is ambiguous about whether it's scope, include it in extraction with type `ambiguous` and let the matching phase resolve it. The point of the audit is to catch silent drops; the audit can't have its own.
|
|
135
135
|
- Be explicit about confidence in matches — the matrix is for humans to skim; vague matches help no one. If a match is rule-3 ("scope inheritance"), say so.
|
|
136
136
|
- Scope creep is INFORMATIONAL. It is normal for an agent to add infra tickets (`X.0 Setup`) the PRD doesn't explicitly enumerate. Only flag scope creep when the ticket genuinely doesn't trace to PRD content AND isn't standard scaffolding.
|
|
137
|
-
- The `GAPS_FOUND` verdict is the gate. The caller (e.g. `notion-prd-intake`) uses it to decide whether to revert `Status` from `Ticketed` to `Blocked`.
|
|
137
|
+
- The `GAPS_FOUND` verdict is the gate. The caller (e.g. `lisa:notion-prd-intake`) uses it to decide whether to revert `Status` from `Ticketed` to `Blocked`.
|
|
@@ -66,8 +66,8 @@ For every walkthrough, record:
|
|
|
66
66
|
|
|
67
67
|
- **What exists today**: a short prose description of the current flow, the components in use (if you can identify them from the DOM via `browser_snapshot`), and the states observed.
|
|
68
68
|
- **What the PRD changes**: explicit delta — added screens, removed screens, modified components, new states, removed states.
|
|
69
|
-
- **Existing-component reuse candidates**: components in the current product that could absorb the new behavior. The PRD-vs-current-product comparison drives which existing components a developer should reuse instead of building new (see `jira-source-artifacts` §7).
|
|
70
|
-
- **Design-vs-current-product divergence**: places where the mock/prototype materially diverges from what's shipped. Each divergence is a discussion item, not an automatic "rebuild from scratch" — see `jira-source-artifacts` §3 (mocks define visual intent, not implementation shortcut).
|
|
69
|
+
- **Existing-component reuse candidates**: components in the current product that could absorb the new behavior. The PRD-vs-current-product comparison drives which existing components a developer should reuse instead of building new (see `lisa:jira-source-artifacts` §7).
|
|
70
|
+
- **Design-vs-current-product divergence**: places where the mock/prototype materially diverges from what's shipped. Each divergence is a discussion item, not an automatic "rebuild from scratch" — see `lisa:jira-source-artifacts` §3 (mocks define visual intent, not implementation shortcut).
|
|
71
71
|
- **Coverage smells**: states the PRD doesn't address that exist today (e.g., the mock shows the empty state but ignores the populated state that has 90% of users).
|
|
72
72
|
- **Behavioral surprises**: anything that doesn't match the PRD's assumptions about current behavior — these are usually the most valuable findings, because they invalidate parts of the PRD.
|
|
73
73
|
|
|
@@ -85,7 +85,7 @@ Capture screenshots/snapshots in a way that the originating ticket / Notion comm
|
|
|
85
85
|
|
|
86
86
|
## Findings format
|
|
87
87
|
|
|
88
|
-
Use this structure when emitting walkthrough findings, so consuming skills can splice them into tickets / comments unchanged. The `## Current Product` heading matches what `jira-write-ticket` Phase 4e expects to inherit — keep the heading exact.
|
|
88
|
+
Use this structure when emitting walkthrough findings, so consuming skills can splice them into tickets / comments unchanged. The `## Current Product` heading matches what `lisa:jira-write-ticket` Phase 4e expects to inherit — keep the heading exact.
|
|
89
89
|
|
|
90
90
|
```text
|
|
91
91
|
## Current Product
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: research
|
|
3
|
+
description: "Research a problem space and produce a PRD. Investigates the codebase, defines user flows, assesses technical feasibility, and outputs a specification ready to hand to the Plan flow. Vendor-agnostic — the resulting PRD lands wherever the configured destination is (Notion, Confluence, file, etc.)."
|
|
4
|
+
allowed-tools: ["Skill", "Bash", "Read", "Glob", "Grep"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Research
|
|
8
|
+
|
|
9
|
+
Produce a PRD for the problem in `$ARGUMENTS`.
|
|
10
|
+
|
|
11
|
+
## Orchestration: agent team
|
|
12
|
+
|
|
13
|
+
If you are NOT already operating inside an agent team (no prior `TeamCreate` in this session, not spawned via `Agent` with `team_name`), your FIRST tool call MUST be `TeamCreate`. Do not call `TaskCreate`, `Agent`, or implementation tools before the team exists.
|
|
14
|
+
|
|
15
|
+
If you ARE already inside an agent team (e.g., a teammate invoked this skill via the Skill tool), do NOT call `TeamCreate` — the harness rejects double-creates. Continue within the existing team. The team lead created the team; teammates inherit it.
|
|
16
|
+
|
|
17
|
+
## Flow
|
|
18
|
+
|
|
19
|
+
Execute the **Research** flow as defined in the `intent-routing` rule (loaded via the lisa plugin). The rule contains the canonical step sequence (gates, sub-flows, deliverables). This skill does NOT restate flow steps — change them in the rule, propagate everywhere.
|
|
20
|
+
|
|
21
|
+
## Output
|
|
22
|
+
|
|
23
|
+
A PRD that includes (per the intent-routing rule's Research flow definition): context, problem statement, user flows, acceptance criteria, technical feasibility notes, and any open questions. The PRD lands in the configured destination (Notion database, Confluence space, local markdown file) per project config. The Plan flow consumes it next.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: review-local
|
|
3
3
|
description: This skill should be used when performing a code review on local changes on the current branch compared to the main branch. It uses multiple parallel agents to check for bugs, CLAUDE.md compliance, git history context, previous PR comments, and code comment adherence, then scores and filters findings by confidence level.
|
|
4
4
|
disable-model-invocation: false
|
|
5
5
|
---
|
|
@@ -6,13 +6,13 @@ allowed-tools: ["Read", "Glob", "Grep", "Bash"]
|
|
|
6
6
|
|
|
7
7
|
# Ticket Triage: $ARGUMENTS
|
|
8
8
|
|
|
9
|
-
Perform analytical triage on the JIRA ticket. The caller MUST have run `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 `/jira-read-ticket` first.
|
|
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.
|
|
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 `jira-verify`; this phase consumes its output. If `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: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:
|
|
16
16
|
|
|
17
17
|
- Epic parent missing (non-bug, non-epic)
|
|
18
18
|
- Description quality failures (no Gherkin acceptance criteria, missing audience sections)
|
|
@@ -24,7 +24,7 @@ Before any analytical work, confirm the ticket carries the content an implemente
|
|
|
24
24
|
|
|
25
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.
|
|
26
26
|
|
|
27
|
-
If `jira-verify` returned `PASS` for all the above, proceed to Phase 1.
|
|
27
|
+
If `lisa:jira-verify` returned `PASS` for all the above, proceed to Phase 1.
|
|
28
28
|
|
|
29
29
|
## Phase 1 -- Relevance Check
|
|
30
30
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: verify
|
|
3
|
+
description: "Ship and verify code. Commits any pending changes, opens or updates the PR, handles the review loop, merges when green, monitors the deploy, and runs remote verification (health checks, Validation Journey replay, Sentry/log inspection) in the target environment. Folds in the legacy /ship alias."
|
|
4
|
+
allowed-tools: ["Skill", "Bash", "Read", "Grep", "Glob"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Verify: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
Ship the current branch and prove it works in the target environment.
|
|
10
|
+
|
|
11
|
+
## Orchestration: agent team
|
|
12
|
+
|
|
13
|
+
If you are NOT already operating inside an agent team (no prior `TeamCreate` in this session, not spawned via `Agent` with `team_name`), your FIRST tool call MUST be `TeamCreate`. Do not call `TaskCreate`, `Agent`, or implementation tools before the team exists.
|
|
14
|
+
|
|
15
|
+
If you ARE already inside an agent team (e.g., a teammate invoked this skill via the Skill tool), do NOT call `TeamCreate` — the harness rejects double-creates. Continue within the existing team. The team lead created the team; teammates inherit it.
|
|
16
|
+
|
|
17
|
+
## Flow
|
|
18
|
+
|
|
19
|
+
Execute the **Verify** flow as defined in the `intent-routing` rule (loaded via the lisa plugin). The flow includes:
|
|
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)
|
|
27
|
+
|
|
28
|
+
The rule contains the canonical step sequence. Change it there, propagate everywhere.
|
|
29
|
+
|
|
30
|
+
## Output
|
|
31
|
+
|
|
32
|
+
A merged PR, a successful deploy to the target environment, and posted evidence on the originating work item.
|
|
@@ -121,6 +121,6 @@ The parser should now return the steps, viewports, and assertions from the newly
|
|
|
121
121
|
## When to Use This Skill
|
|
122
122
|
|
|
123
123
|
- Ticket was created before the Validation Journey convention was established
|
|
124
|
-
- Ticket was created manually without following `jira-create` guidelines
|
|
124
|
+
- Ticket was created manually without following `lisa:jira-create` guidelines
|
|
125
125
|
- Ticket needs a journey added or updated based on implementation progress
|
|
126
126
|
- During sprint planning, to ensure all frontend tickets have journeys before work starts
|
|
@@ -6,13 +6,13 @@ allowed-tools: ["Read", "Glob", "LS", "Skill", "mcp__atlassian__getVisibleJiraPr
|
|
|
6
6
|
|
|
7
7
|
# Create JIRA Issues from $ARGUMENTS
|
|
8
8
|
|
|
9
|
-
Analyze the provided file(s) and plan a JIRA hierarchy. **This skill plans structure only — every individual ticket write is delegated to `jira-write-ticket`.** Do not call `mcp__atlassian__createJiraIssue` from this skill; the necessary write tools are intentionally not in `allowed-tools`.
|
|
9
|
+
Analyze the provided file(s) and plan a JIRA hierarchy. **This skill plans structure only — every individual ticket write is delegated to `lisa:jira-write-ticket`.** Do not call `mcp__atlassian__createJiraIssue` from this skill; the necessary write tools are intentionally not in `allowed-tools`.
|
|
10
10
|
|
|
11
11
|
## Process
|
|
12
12
|
|
|
13
13
|
1. **Analyze**: Read $ARGUMENTS to understand scope.
|
|
14
|
-
2. **Extract source artifacts**: invoke the `jira-source-artifacts` skill, then enumerate every external URL, embed, attachment, or example payload and classify each by domain per its rules. Build the `artifacts` map. See "Source Artifacts" below.
|
|
15
|
-
3. **Walk the live product** (when applicable): if the work touches existing user-facing surfaces, invoke the `product-walkthrough` skill to capture current behavior, design-vs-product divergence, and reuse candidates. Especially load-bearing for Expo/React Native — a UI ticket without a current-product walkthrough is missing context the implementer needs. Skip only when the work is purely backend or affects a screen that does not yet exist. See "Live Product Walkthrough" below.
|
|
14
|
+
2. **Extract source artifacts**: invoke the `lisa:jira-source-artifacts` skill, then enumerate every external URL, embed, attachment, or example payload and classify each by domain per its rules. Build the `artifacts` map. See "Source Artifacts" below.
|
|
15
|
+
3. **Walk the live product** (when applicable): if the work touches existing user-facing surfaces, invoke the `lisa:product-walkthrough` skill to capture current behavior, design-vs-product divergence, and reuse candidates. Especially load-bearing for Expo/React Native — a UI ticket without a current-product walkthrough is missing context the implementer needs. Skip only when the work is purely backend or affects a screen that does not yet exist. See "Live Product Walkthrough" below.
|
|
16
16
|
4. **Determine structure**:
|
|
17
17
|
- Epic needed if: multiple features, major changes, >3 related files
|
|
18
18
|
- Direct tasks if: bug fix, single file, minor change
|
|
@@ -20,8 +20,8 @@ Analyze the provided file(s) and plan a JIRA hierarchy. **This skill plans struc
|
|
|
20
20
|
```text
|
|
21
21
|
Epic → User Story → Tasks (test, implement, document, cleanup)
|
|
22
22
|
```
|
|
23
|
-
6. **Delegate every write to `jira-write-ticket`** in dependency order (epic first, then stories with the epic as parent, then sub-tasks with their story as parent). Pass the artifacts (filtered by domain per `jira-source-artifacts` inheritance rules), the walkthrough findings (under `## Current Product`), and — for UI tickets — the Validation Journey draft with `[SCREENSHOT: ...]` markers. See "Delegation to jira-write-ticket" below.
|
|
24
|
-
7. **Run the artifact preservation gate** (`jira-source-artifacts` §8): after all writes complete, build the preservation matrix and verify every extracted artifact is reachable from the created tickets. Fail loudly if anything was dropped.
|
|
23
|
+
6. **Delegate every write to `lisa:jira-write-ticket`** in dependency order (epic first, then stories with the epic as parent, then sub-tasks with their story as parent). Pass the artifacts (filtered by domain per `lisa:jira-source-artifacts` inheritance rules), the walkthrough findings (under `## Current Product`), and — for UI tickets — the Validation Journey draft with `[SCREENSHOT: ...]` markers. See "Delegation to jira-write-ticket" below.
|
|
24
|
+
7. **Run the artifact preservation gate** (`lisa:jira-source-artifacts` §8): after all writes complete, build the preservation matrix and verify every extracted artifact is reachable from the created tickets. Fail loudly if anything was dropped.
|
|
25
25
|
|
|
26
26
|
## Mandatory for Every Code Issue
|
|
27
27
|
|
|
@@ -34,7 +34,7 @@ Analyze the provided file(s) and plan a JIRA hierarchy. **This skill plans struc
|
|
|
34
34
|
|
|
35
35
|
## Validation Journey (Frontend Tickets)
|
|
36
36
|
|
|
37
|
-
Every ticket that changes, adds, or fixes UI must include a `Validation Journey` section in the description. This section is consumed by the `jira-journey` skill to automate visual verification via Playwright.
|
|
37
|
+
Every ticket that changes, adds, or fixes UI must include a `Validation Journey` section in the description. This section is consumed by the `lisa:jira-journey` skill to automate visual verification via Playwright.
|
|
38
38
|
|
|
39
39
|
### When to Include
|
|
40
40
|
|
|
@@ -95,15 +95,15 @@ h3. Assertions
|
|
|
95
95
|
|
|
96
96
|
If $ARGUMENTS includes (or references) any external artifact — PRD, design doc, Figma URL, Lovable prototype, Loom walkthrough, screenshot, example payload — those references MUST be preserved as remote links on the created tickets. Silent artifact loss is the single most common quality failure in this pipeline.
|
|
97
97
|
|
|
98
|
-
**Invoke the `jira-source-artifacts` skill** for the canonical rules: domains, per-tool classification (Figma `/proto/` vs design, Lovable, Loom, screenshots), source precedence, conflict handling under `## Open Questions`, inheritance from epic → story → sub-task, and the existing-component reuse expectation. Do not restate the rules here.
|
|
98
|
+
**Invoke the `lisa:jira-source-artifacts` skill** for the canonical rules: domains, per-tool classification (Figma `/proto/` vs design, Lovable, Loom, screenshots), source precedence, conflict handling under `## Open Questions`, inheritance from epic → story → sub-task, and the existing-component reuse expectation. Do not restate the rules here.
|
|
99
99
|
|
|
100
100
|
Expo-specific note: the existing-component reuse rule is especially load-bearing for React Native — the project has an established component library; pixel-matching a mock instead of reusing components is the most common drift mode.
|
|
101
101
|
|
|
102
|
-
When delegating writes to `jira-write-ticket`, pass the extracted artifact list so its Phase 4c step can attach them.
|
|
102
|
+
When delegating writes to `lisa:jira-write-ticket`, pass the extracted artifact list so its Phase 4c step can attach them.
|
|
103
103
|
|
|
104
104
|
## Live Product Walkthrough
|
|
105
105
|
|
|
106
|
-
When the work touches existing user-facing surfaces, invoke the `product-walkthrough` skill before drafting tickets. Findings (current behavior, design-vs-product divergence, reuse candidates, behavioral surprises) become inputs to the ticket plan and surface under `## Current Product` on the resulting tickets, complementing the Validation Journey (which describes how to verify the *new* behavior, not what exists today). Skip only when the work is purely backend or affects a screen that does not yet exist.
|
|
106
|
+
When the work touches existing user-facing surfaces, invoke the `lisa:product-walkthrough` skill before drafting tickets. Findings (current behavior, design-vs-product divergence, reuse candidates, behavioral surprises) become inputs to the ticket plan and surface under `## Current Product` on the resulting tickets, complementing the Validation Journey (which describes how to verify the *new* behavior, not what exists today). Skip only when the work is purely backend or affects a screen that does not yet exist.
|
|
107
107
|
|
|
108
108
|
## Issue Requirements
|
|
109
109
|
|
|
@@ -118,9 +118,9 @@ Exclude unless requested: migration plans, performance tests
|
|
|
118
118
|
|
|
119
119
|
## Delegation to jira-write-ticket
|
|
120
120
|
|
|
121
|
-
**Mandatory.** Every ticket created by this skill MUST go through `jira-write-ticket`. This skill never calls `mcp__atlassian__createJiraIssue` itself — that tool is intentionally excluded from `allowed-tools` so the gate cannot be bypassed.
|
|
121
|
+
**Mandatory.** Every ticket created by this skill MUST go through `lisa:jira-write-ticket`. This skill never calls `mcp__atlassian__createJiraIssue` itself — that tool is intentionally excluded from `allowed-tools` so the gate cannot be bypassed.
|
|
122
122
|
|
|
123
|
-
`jira-write-ticket` enforces things this skill does not, and which determine ticket quality:
|
|
123
|
+
`lisa:jira-write-ticket` enforces things this skill does not, and which determine ticket quality:
|
|
124
124
|
- 3-audience description (Context / Technical Approach / Acceptance Criteria)
|
|
125
125
|
- Gherkin acceptance criteria
|
|
126
126
|
- Epic parent validation (non-bug, non-epic types)
|
|
@@ -134,9 +134,9 @@ Exclude unless requested: migration plans, performance tests
|
|
|
134
134
|
|
|
135
135
|
Tickets must be created in parent-before-child order so each child can be passed its parent key:
|
|
136
136
|
|
|
137
|
-
1. Invoke `jira-write-ticket` for the epic. Capture the returned key.
|
|
138
|
-
2. For each story, invoke `jira-write-ticket` with the epic key as the epic parent. Capture each story key.
|
|
139
|
-
3. For each sub-task, invoke `jira-write-ticket` with the parent story key.
|
|
137
|
+
1. Invoke `lisa:jira-write-ticket` for the epic. Capture the returned key.
|
|
138
|
+
2. For each story, invoke `lisa:jira-write-ticket` with the epic key as the epic parent. Capture each story key.
|
|
139
|
+
3. For each sub-task, invoke `lisa:jira-write-ticket` with the parent story key.
|
|
140
140
|
|
|
141
141
|
### What to pass to each invocation
|
|
142
142
|
|
|
@@ -145,8 +145,8 @@ For every delegated write, pass:
|
|
|
145
145
|
- The 3-section description body you drafted (Context / Technical Approach / Acceptance Criteria)
|
|
146
146
|
- Gherkin acceptance criteria
|
|
147
147
|
- Parent key (epic key for stories; story key for sub-tasks)
|
|
148
|
-
- The artifact list extracted in "Source Artifacts", filtered by domain per the inheritance rules — `jira-write-ticket` Phase 4c attaches them as remote links
|
|
149
|
-
- For UI-touching tickets: the Validation Journey draft (with `[SCREENSHOT: ...]` markers, viewports, and feature-flag prerequisites). If the journey is missing, instruct it to call `jira-add-journey` after create.
|
|
148
|
+
- The artifact list extracted in "Source Artifacts", filtered by domain per the inheritance rules — `lisa:jira-write-ticket` Phase 4c attaches them as remote links
|
|
149
|
+
- For UI-touching tickets: the Validation Journey draft (with `[SCREENSHOT: ...]` markers, viewports, and feature-flag prerequisites). If the journey is missing, instruct it to call `lisa:jira-add-journey` after create.
|
|
150
150
|
|
|
151
151
|
### What this skill is responsible for
|
|
152
152
|
|
|
@@ -158,4 +158,4 @@ This skill owns:
|
|
|
158
158
|
- Drafting the Validation Journey for UI tickets (this is Expo-specific guidance the base skill doesn't have)
|
|
159
159
|
- Running the artifact preservation check after all writes complete
|
|
160
160
|
|
|
161
|
-
It does not own the actual JIRA write — that's `jira-write-ticket`'s job.
|
|
161
|
+
It does not own the actual JIRA write — that's `lisa:jira-write-ticket`'s job.
|
|
@@ -6,22 +6,22 @@ allowed-tools: ["Skill", "mcp__atlassian__getJiraIssue", "mcp__atlassian__getAcc
|
|
|
6
6
|
|
|
7
7
|
# Verify JIRA Ticket: $ARGUMENTS
|
|
8
8
|
|
|
9
|
-
Verify that the existing JIRA ticket `$ARGUMENTS` meets organizational standards. This skill is a thin post-write wrapper around `jira-validate-ticket`: it fetches the live ticket and asks `jira-validate-ticket` to run the gates against the fetched state.
|
|
9
|
+
Verify that the existing JIRA ticket `$ARGUMENTS` meets organizational standards. This skill is a thin post-write wrapper around `lisa:jira-validate-ticket`: it fetches the live ticket and asks `lisa:jira-validate-ticket` to run the gates against the fetched state.
|
|
10
10
|
|
|
11
|
-
This indirection exists so the gate definitions live in exactly one place (`jira-validate-ticket`). When the bar changes, change it there — `jira-verify`, `jira-write-ticket` (Phase 5.5 pre-write), and `notion-to-jira` (PRD dry-run) all pick it up.
|
|
11
|
+
This indirection exists so the gate definitions live in exactly one place (`lisa:jira-validate-ticket`). When the bar changes, change it there — `lisa:jira-verify`, `lisa:jira-write-ticket` (Phase 5.5 pre-write), and `lisa:notion-to-jira` (PRD dry-run) all pick it up.
|
|
12
12
|
|
|
13
13
|
## Process
|
|
14
14
|
|
|
15
15
|
1. Resolve cloud ID via `mcp__atlassian__getAccessibleAtlassianResources`.
|
|
16
16
|
2. Fetch the ticket via `mcp__atlassian__getJiraIssue` for `$ARGUMENTS`.
|
|
17
|
-
3. Invoke `jira-validate-ticket` and pass the ticket key. The validator runs every gate (Specification + Feasibility) against the live state, including the Validation Journey check (S11) which applies to any runtime-behavior change — UI tickets in Expo always qualify.
|
|
17
|
+
3. Invoke `lisa:jira-validate-ticket` and pass the ticket key. The validator runs every gate (Specification + Feasibility) against the live state, including the Validation Journey check (S11) which applies to any runtime-behavior change — UI tickets in Expo always qualify.
|
|
18
18
|
4. Surface the validator's report verbatim.
|
|
19
19
|
|
|
20
20
|
## Output
|
|
21
21
|
|
|
22
|
-
Pass through `jira-validate-ticket`'s structured output unchanged. Downstream callers parse the gate lines.
|
|
22
|
+
Pass through `lisa:jira-validate-ticket`'s structured output unchanged. Downstream callers parse the gate lines.
|
|
23
23
|
|
|
24
24
|
## Notes
|
|
25
25
|
|
|
26
26
|
- This skill is read-only. It never edits the ticket, posts comments, or changes status.
|
|
27
|
-
- For UI tickets that fail the Validation Journey gate, the validator's remediation will recommend `/jira-add-journey` — the Expo flavor of `jira-add-journey` produces the `[SCREENSHOT: ...]` + viewport block that the Playwright-based journey runner consumes.
|
|
27
|
+
- For UI tickets that fail the Validation Journey gate, the validator's remediation will recommend `/lisa:jira-add-journey` — the Expo flavor of `lisa:jira-add-journey` produces the `[SCREENSHOT: ...]` + viewport block that the Playwright-based journey runner consumes.
|
|
@@ -3,4 +3,4 @@ description: "Reduce the cognitive complexity threshold by 2 and fix all violati
|
|
|
3
3
|
allowed-tools: ["Skill"]
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Use the /lisa-rails:
|
|
6
|
+
Use the /lisa-rails:improve-code-complexity skill to lower code complexity.
|
|
@@ -4,4 +4,4 @@ allowed-tools: ["Skill"]
|
|
|
4
4
|
argument-hint: "<max-lines-per-function-value>"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Use the /lisa-rails:
|
|
7
|
+
Use the /lisa-rails:improve-max-lines-per-function skill to reduce max function lines. $ARGUMENTS
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: fix-linter-error
|
|
3
3
|
description: This skill should be used when fixing all violations of one or more RuboCop cops across the codebase. It runs RuboCop, groups violations by cop and file, generates a brief with fix strategies, and creates a plan with tasks to implement the fixes.
|
|
4
4
|
allowed-tools: ["Read", "Bash", "Glob", "Grep"]
|
|
5
5
|
|
|
@@ -42,4 +42,4 @@ Fix strategies: extract methods, reduce complexity, apply auto-correct where saf
|
|
|
42
42
|
Verification: `bundle exec rubocop --format simple 2>&1 | grep -E "($ARGUMENTS)" | wc -l` -> Expected: 0
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
Invoke `/
|
|
45
|
+
Invoke `/implement` with this brief to create the implementation plan.
|
package/plugins/lisa-rails/skills/{plan-lower-code-complexity → improve-code-complexity}/SKILL.md
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: improve-code-complexity
|
|
3
3
|
description: This skill should be used when reducing the code complexity threshold of the codebase. It lowers the CyclomaticComplexity threshold by 2, identifies methods that exceed the new limit, generates a brief with refactoring strategies, and creates a plan with tasks to fix all violations.
|
|
4
4
|
allowed-tools: ["Read", "Bash", "Glob", "Grep"]
|
|
5
5
|
---
|
|
@@ -45,4 +45,4 @@ Refactoring strategies: extract methods, early returns, extract conditions, use
|
|
|
45
45
|
Verification: `bundle exec rubocop --only Metrics/CyclomaticComplexity --format simple 2>&1 | grep "offense" | wc -l` -> Expected: 0
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
Invoke `/
|
|
48
|
+
Invoke `/implement` with this brief to create the implementation plan.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: improve-max-lines
|
|
3
3
|
description: This skill should be used when reducing the maximum class/module lines threshold and fixing all violations. It updates the RuboCop configuration, identifies classes and modules exceeding the new limit, generates a brief with refactoring strategies, and creates a plan with tasks to split oversized files.
|
|
4
4
|
allowed-tools: ["Read", "Bash", "Glob", "Grep"]
|
|
5
5
|
|
|
@@ -43,4 +43,4 @@ Refactoring strategies: extract concerns, extract service objects, remove duplic
|
|
|
43
43
|
Verification: `bundle exec rubocop --only Metrics/ClassLength,Metrics/ModuleLength --format simple 2>&1 | grep "offense" | wc -l` -> Expected: 0
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
Invoke `/
|
|
46
|
+
Invoke `/implement` with this brief to create the implementation plan.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: improve-max-lines-per-function
|
|
3
3
|
description: This skill should be used when reducing the maximum lines per method threshold and fixing all violations. It updates the RuboCop configuration, identifies methods exceeding the new limit, generates a brief with refactoring strategies, and creates a plan with tasks to split oversized methods.
|
|
4
4
|
allowed-tools: ["Read", "Bash", "Glob", "Grep"]
|
|
5
5
|
|
|
@@ -43,4 +43,4 @@ Refactoring strategies: extract methods, early returns, extract conditions, use
|
|
|
43
43
|
Verification: `bundle exec rubocop --only Metrics/MethodLength --format simple 2>&1 | grep "offense" | wc -l` -> Expected: 0
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
Invoke `/
|
|
46
|
+
Invoke `/implement` with this brief to create the implementation plan.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: improve-test-coverage
|
|
3
3
|
description: This skill should be used when increasing test coverage to a specified threshold percentage. It runs the test suite with SimpleCov, identifies files with the lowest coverage, generates a brief with coverage gaps, and creates a plan with tasks to add the missing tests.
|
|
4
4
|
allowed-tools: ["Read", "Bash", "Glob", "Grep"]
|
|
5
5
|
|
|
@@ -42,4 +42,4 @@ Configuration: .simplecov, update minimum_coverage to $ARGUMENTS%
|
|
|
42
42
|
Verification: `bundle exec rspec` -> Expected: SimpleCov reports >= $ARGUMENTS% coverage
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
Invoke `/
|
|
45
|
+
Invoke `/implement` with this brief to create the implementation plan.
|
|
@@ -6,13 +6,13 @@ allowed-tools: ["Read", "Glob", "LS", "Skill", "mcp__atlassian__getVisibleJiraPr
|
|
|
6
6
|
|
|
7
7
|
# Create JIRA Issues from $ARGUMENTS
|
|
8
8
|
|
|
9
|
-
Analyze the provided file(s) and plan a JIRA hierarchy. **This skill plans structure only — every individual ticket write is delegated to `jira-write-ticket`.** Do not call `mcp__atlassian__createJiraIssue` from this skill; the necessary write tools are intentionally not in `allowed-tools`.
|
|
9
|
+
Analyze the provided file(s) and plan a JIRA hierarchy. **This skill plans structure only — every individual ticket write is delegated to `lisa:jira-write-ticket`.** Do not call `mcp__atlassian__createJiraIssue` from this skill; the necessary write tools are intentionally not in `allowed-tools`.
|
|
10
10
|
|
|
11
11
|
## Process
|
|
12
12
|
|
|
13
13
|
1. **Analyze**: Read $ARGUMENTS to understand scope.
|
|
14
|
-
2. **Extract source artifacts**: invoke the `jira-source-artifacts` skill, then enumerate every external URL, embed, attachment, or example payload and classify each by domain per its rules. Build the `artifacts` map. See "Source Artifacts" below.
|
|
15
|
-
3. **Walk the live product** (when applicable): if the work touches existing user-facing surfaces, invoke the `product-walkthrough` skill to capture current behavior, design-vs-product divergence, and reuse candidates. Skip only when the work is purely backend or affects a screen that does not yet exist. See "Live Product Walkthrough" below.
|
|
14
|
+
2. **Extract source artifacts**: invoke the `lisa:jira-source-artifacts` skill, then enumerate every external URL, embed, attachment, or example payload and classify each by domain per its rules. Build the `artifacts` map. See "Source Artifacts" below.
|
|
15
|
+
3. **Walk the live product** (when applicable): if the work touches existing user-facing surfaces, invoke the `lisa:product-walkthrough` skill to capture current behavior, design-vs-product divergence, and reuse candidates. Skip only when the work is purely backend or affects a screen that does not yet exist. See "Live Product Walkthrough" below.
|
|
16
16
|
4. **Determine structure**:
|
|
17
17
|
- Epic needed if: multiple features, major changes, >3 related files
|
|
18
18
|
- Direct tasks if: bug fix, single file, minor change
|
|
@@ -20,8 +20,8 @@ Analyze the provided file(s) and plan a JIRA hierarchy. **This skill plans struc
|
|
|
20
20
|
```text
|
|
21
21
|
Epic → User Story → Tasks (test, implement, document, cleanup)
|
|
22
22
|
```
|
|
23
|
-
6. **Delegate every write to `jira-write-ticket`** in dependency order (epic first, then stories with the epic as parent, then sub-tasks with their story as parent). Pass the artifacts (filtered by domain per `jira-source-artifacts` inheritance rules) and the walkthrough findings (under `## Current Product`). See "Delegation to jira-write-ticket" below.
|
|
24
|
-
7. **Run the artifact preservation gate** (`jira-source-artifacts` §8): after all writes complete, build the preservation matrix and verify every extracted artifact is reachable from the created tickets. Fail loudly if anything was dropped.
|
|
23
|
+
6. **Delegate every write to `lisa:jira-write-ticket`** in dependency order (epic first, then stories with the epic as parent, then sub-tasks with their story as parent). Pass the artifacts (filtered by domain per `lisa:jira-source-artifacts` inheritance rules) and the walkthrough findings (under `## Current Product`). See "Delegation to jira-write-ticket" below.
|
|
24
|
+
7. **Run the artifact preservation gate** (`lisa:jira-source-artifacts` §8): after all writes complete, build the preservation matrix and verify every extracted artifact is reachable from the created tickets. Fail loudly if anything was dropped.
|
|
25
25
|
|
|
26
26
|
## Mandatory for Every Code Issue
|
|
27
27
|
|
|
@@ -35,15 +35,15 @@ Analyze the provided file(s) and plan a JIRA hierarchy. **This skill plans struc
|
|
|
35
35
|
|
|
36
36
|
If $ARGUMENTS includes (or references) any external artifact — PRD, design doc, Figma URL, Lovable prototype, Loom walkthrough, screenshot, example payload — those references MUST be preserved as remote links on the created tickets. Silent artifact loss is the single most common quality failure in this pipeline.
|
|
37
37
|
|
|
38
|
-
**Invoke the `jira-source-artifacts` skill** for the canonical rules: domains, per-tool classification (Figma `/proto/` vs design, Lovable, Loom, screenshots), source precedence, conflict handling under `## Open Questions`, inheritance from epic → story → sub-task, and the existing-component reuse expectation. Do not restate the rules here.
|
|
38
|
+
**Invoke the `lisa:jira-source-artifacts` skill** for the canonical rules: domains, per-tool classification (Figma `/proto/` vs design, Lovable, Loom, screenshots), source precedence, conflict handling under `## Open Questions`, inheritance from epic → story → sub-task, and the existing-component reuse expectation. Do not restate the rules here.
|
|
39
39
|
|
|
40
40
|
Rails-specific note: the existing-component reuse rule applies to view partials and ViewComponents — the closest existing partial/component is usually the right answer over pixel-matching a mock from scratch.
|
|
41
41
|
|
|
42
|
-
When delegating writes to `jira-write-ticket`, pass the extracted artifact list so its Phase 4c step can attach them.
|
|
42
|
+
When delegating writes to `lisa:jira-write-ticket`, pass the extracted artifact list so its Phase 4c step can attach them.
|
|
43
43
|
|
|
44
44
|
## Live Product Walkthrough
|
|
45
45
|
|
|
46
|
-
When the work touches existing user-facing surfaces, invoke the `product-walkthrough` skill before drafting tickets. Findings (current behavior, design-vs-product divergence, reuse candidates, behavioral surprises) become inputs to the ticket plan and surface under `## Current Product` on the resulting tickets. Skip only when the work is purely backend or affects a screen that does not yet exist.
|
|
46
|
+
When the work touches existing user-facing surfaces, invoke the `lisa:product-walkthrough` skill before drafting tickets. Findings (current behavior, design-vs-product divergence, reuse candidates, behavioral surprises) become inputs to the ticket plan and surface under `## Current Product` on the resulting tickets. Skip only when the work is purely backend or affects a screen that does not yet exist.
|
|
47
47
|
|
|
48
48
|
## Issue Requirements
|
|
49
49
|
|
|
@@ -58,9 +58,9 @@ Exclude unless requested: migration plans, performance tests
|
|
|
58
58
|
|
|
59
59
|
## Delegation to jira-write-ticket
|
|
60
60
|
|
|
61
|
-
**Mandatory.** Every ticket created by this skill MUST go through `jira-write-ticket`. This skill never calls `mcp__atlassian__createJiraIssue` itself — that tool is intentionally excluded from `allowed-tools` so the gate cannot be bypassed.
|
|
61
|
+
**Mandatory.** Every ticket created by this skill MUST go through `lisa:jira-write-ticket`. This skill never calls `mcp__atlassian__createJiraIssue` itself — that tool is intentionally excluded from `allowed-tools` so the gate cannot be bypassed.
|
|
62
62
|
|
|
63
|
-
`jira-write-ticket` enforces things this skill does not, and which determine ticket quality:
|
|
63
|
+
`lisa:jira-write-ticket` enforces things this skill does not, and which determine ticket quality:
|
|
64
64
|
- 3-audience description (Context / Technical Approach / Acceptance Criteria)
|
|
65
65
|
- Gherkin acceptance criteria
|
|
66
66
|
- Epic parent validation (non-bug, non-epic types)
|
|
@@ -74,9 +74,9 @@ Exclude unless requested: migration plans, performance tests
|
|
|
74
74
|
|
|
75
75
|
Tickets must be created in parent-before-child order so each child can be passed its parent key:
|
|
76
76
|
|
|
77
|
-
1. Invoke `jira-write-ticket` for the epic. Capture the returned key.
|
|
78
|
-
2. For each story, invoke `jira-write-ticket` with the epic key as the epic parent. Capture each story key.
|
|
79
|
-
3. For each sub-task, invoke `jira-write-ticket` with the parent story key.
|
|
77
|
+
1. Invoke `lisa:jira-write-ticket` for the epic. Capture the returned key.
|
|
78
|
+
2. For each story, invoke `lisa:jira-write-ticket` with the epic key as the epic parent. Capture each story key.
|
|
79
|
+
3. For each sub-task, invoke `lisa:jira-write-ticket` with the parent story key.
|
|
80
80
|
|
|
81
81
|
### What to pass to each invocation
|
|
82
82
|
|
|
@@ -85,8 +85,8 @@ For every delegated write, pass:
|
|
|
85
85
|
- The 3-section description body you drafted (Context / Technical Approach / Acceptance Criteria)
|
|
86
86
|
- Gherkin acceptance criteria
|
|
87
87
|
- Parent key (epic key for stories; story key for sub-tasks)
|
|
88
|
-
- The artifact list extracted in "Source Artifacts", filtered by domain per the inheritance rules — `jira-write-ticket` Phase 4c attaches them as remote links
|
|
89
|
-
- For tickets that change runtime behavior: the Validation Journey draft, or instruct it to call `jira-add-journey` after create
|
|
88
|
+
- The artifact list extracted in "Source Artifacts", filtered by domain per the inheritance rules — `lisa:jira-write-ticket` Phase 4c attaches them as remote links
|
|
89
|
+
- For tickets that change runtime behavior: the Validation Journey draft, or instruct it to call `lisa:jira-add-journey` after create
|
|
90
90
|
|
|
91
91
|
### What this skill is responsible for
|
|
92
92
|
|
|
@@ -97,4 +97,4 @@ This skill owns:
|
|
|
97
97
|
- Threading parent keys through subsequent writes
|
|
98
98
|
- Running the artifact preservation check after all writes complete
|
|
99
99
|
|
|
100
|
-
It does not own the actual JIRA write — that's `jira-write-ticket`'s job.
|
|
100
|
+
It does not own the actual JIRA write — that's `lisa:jira-write-ticket`'s job.
|
|
@@ -6,20 +6,20 @@ allowed-tools: ["Skill", "mcp__atlassian__getJiraIssue", "mcp__atlassian__getAcc
|
|
|
6
6
|
|
|
7
7
|
# Verify JIRA Ticket: $ARGUMENTS
|
|
8
8
|
|
|
9
|
-
Verify that the existing JIRA ticket `$ARGUMENTS` meets organizational standards. This skill is a thin post-write wrapper around `jira-validate-ticket`: it fetches the live ticket and asks `jira-validate-ticket` to run the gates against the fetched state.
|
|
9
|
+
Verify that the existing JIRA ticket `$ARGUMENTS` meets organizational standards. This skill is a thin post-write wrapper around `lisa:jira-validate-ticket`: it fetches the live ticket and asks `lisa:jira-validate-ticket` to run the gates against the fetched state.
|
|
10
10
|
|
|
11
|
-
This indirection exists so the gate definitions live in exactly one place (`jira-validate-ticket`). When the bar changes, change it there — `jira-verify`, `jira-write-ticket` (Phase 5.5 pre-write), and `notion-to-jira` (PRD dry-run) all pick it up.
|
|
11
|
+
This indirection exists so the gate definitions live in exactly one place (`lisa:jira-validate-ticket`). When the bar changes, change it there — `lisa:jira-verify`, `lisa:jira-write-ticket` (Phase 5.5 pre-write), and `lisa:notion-to-jira` (PRD dry-run) all pick it up.
|
|
12
12
|
|
|
13
13
|
## Process
|
|
14
14
|
|
|
15
15
|
1. Resolve cloud ID via `mcp__atlassian__getAccessibleAtlassianResources`.
|
|
16
16
|
2. Fetch the ticket via `mcp__atlassian__getJiraIssue` for `$ARGUMENTS`.
|
|
17
|
-
3. Invoke `jira-validate-ticket` and pass the ticket key. The validator runs every gate (Specification + Feasibility) against the live state.
|
|
17
|
+
3. Invoke `lisa:jira-validate-ticket` and pass the ticket key. The validator runs every gate (Specification + Feasibility) against the live state.
|
|
18
18
|
4. Surface the validator's report verbatim.
|
|
19
19
|
|
|
20
20
|
## Output
|
|
21
21
|
|
|
22
|
-
Pass through `jira-validate-ticket`'s structured output unchanged. Downstream callers parse the gate lines.
|
|
22
|
+
Pass through `lisa:jira-validate-ticket`'s structured output unchanged. Downstream callers parse the gate lines.
|
|
23
23
|
|
|
24
24
|
## Notes
|
|
25
25
|
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Implement a single work item end-to-end. Vendor-agnostic: given a work-item URL/key (JIRA, Linear, GitHub Issues) or description, reads it, determines work type (Build/Fix/Improve/Investigate), assembles an agent team, runs the full lifecycle through PR + evidence. For batch processing of all Status=Ready tickets in a queue, use /lisa:intake instead."
|
|
3
|
+
argument-hint: "<single-work-item-url | key | description>"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use the /lisa:implement skill to take the work item from spec to shipped: read the source, determine work type, assemble an agent team, and run the full lifecycle through PR creation, code review, deploy, and empirical verification. $ARGUMENTS
|
|
@@ -4,4 +4,4 @@ allowed-tools: ["Skill"]
|
|
|
4
4
|
argument-hint: "<max-lines-per-function-value>"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Use the /lisa:
|
|
7
|
+
Use the /lisa:improve-max-lines-per-function skill to reduce max function lines. $ARGUMENTS
|