@codyswann/lisa 1.95.0 → 2.0.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/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +41 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/codex/agent-installer.d.ts +56 -0
- package/dist/codex/agent-installer.d.ts.map +1 -0
- package/dist/codex/agent-installer.js +201 -0
- package/dist/codex/agent-installer.js.map +1 -0
- package/dist/codex/agent-transformer.d.ts +53 -0
- package/dist/codex/agent-transformer.d.ts.map +1 -0
- package/dist/codex/agent-transformer.js +181 -0
- package/dist/codex/agent-transformer.js.map +1 -0
- package/dist/codex/agents-md-installer.d.ts +24 -0
- package/dist/codex/agents-md-installer.d.ts.map +1 -0
- package/dist/codex/agents-md-installer.js +63 -0
- package/dist/codex/agents-md-installer.js.map +1 -0
- package/dist/codex/hooks-installer.d.ts +24 -0
- package/dist/codex/hooks-installer.d.ts.map +1 -0
- package/dist/codex/hooks-installer.js +206 -0
- package/dist/codex/hooks-installer.js.map +1 -0
- package/dist/codex/hooks-merger.d.ts +82 -0
- package/dist/codex/hooks-merger.d.ts.map +1 -0
- package/dist/codex/hooks-merger.js +127 -0
- package/dist/codex/hooks-merger.js.map +1 -0
- package/dist/codex/manifest.d.ts +32 -0
- package/dist/codex/manifest.d.ts.map +1 -0
- package/dist/codex/manifest.js +86 -0
- package/dist/codex/manifest.js.map +1 -0
- package/dist/codex/settings-installer.d.ts +48 -0
- package/dist/codex/settings-installer.d.ts.map +1 -0
- package/dist/codex/settings-installer.js +276 -0
- package/dist/codex/settings-installer.js.map +1 -0
- package/dist/codex/skills-installer.d.ts +46 -0
- package/dist/codex/skills-installer.d.ts.map +1 -0
- package/dist/codex/skills-installer.js +344 -0
- package/dist/codex/skills-installer.js.map +1 -0
- package/dist/core/config.d.ts +19 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +13 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/lisa.d.ts +12 -0
- package/dist/core/lisa.d.ts.map +1 -1
- package/dist/core/lisa.js +48 -0
- package/dist/core/lisa.js.map +1 -1
- package/dist/core/project-config.d.ts +49 -0
- package/dist/core/project-config.d.ts.map +1 -0
- package/dist/core/project-config.js +119 -0
- package/dist/core/project-config.js.map +1 -0
- package/package.json +3 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/agents/jira-build-intake.md +58 -0
- package/plugins/lisa/agents/notion-prd-intake.md +57 -0
- 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/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/plan.md +15 -3
- package/plugins/lisa/commands/product-walkthrough.md +7 -0
- package/plugins/{src/base/commands/plan/local-code-review.md → lisa/commands/review/local.md} +1 -1
- 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 +1 -1
- 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/jira-build-intake/SKILL.md +134 -0
- package/plugins/lisa/skills/jira-create/SKILL.md +53 -30
- package/plugins/lisa/skills/jira-source-artifacts/SKILL.md +107 -0
- package/plugins/lisa/skills/jira-validate-ticket/SKILL.md +224 -0
- package/plugins/lisa/skills/jira-verify/SKILL.md +15 -91
- package/plugins/lisa/skills/jira-write-ticket/SKILL.md +20 -15
- package/plugins/lisa/skills/notion-prd-intake/SKILL.md +169 -0
- package/plugins/lisa/skills/notion-to-jira/SKILL.md +137 -95
- package/plugins/lisa/skills/prd-ticket-coverage/SKILL.md +137 -0
- package/plugins/lisa/skills/product-walkthrough/SKILL.md +129 -0
- package/plugins/lisa/skills/{plan-local-code-review → review-local}/SKILL.md +1 -1
- 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-create/SKILL.md +60 -28
- package/plugins/lisa-expo/skills/jira-verify/SKILL.md +14 -34
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +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 +59 -28
- package/plugins/lisa-rails/skills/jira-verify/SKILL.md +13 -16
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/agents/jira-build-intake.md +58 -0
- package/plugins/src/base/agents/notion-prd-intake.md +57 -0
- 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/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/plan.md +15 -3
- package/plugins/src/base/commands/product-walkthrough.md +7 -0
- package/plugins/{lisa/commands/plan/local-code-review.md → src/base/commands/review/local.md} +1 -1
- 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 +1 -1
- 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/jira-build-intake/SKILL.md +134 -0
- package/plugins/src/base/skills/jira-create/SKILL.md +53 -30
- package/plugins/src/base/skills/jira-source-artifacts/SKILL.md +107 -0
- package/plugins/src/base/skills/jira-validate-ticket/SKILL.md +224 -0
- package/plugins/src/base/skills/jira-verify/SKILL.md +15 -91
- package/plugins/src/base/skills/jira-write-ticket/SKILL.md +20 -15
- package/plugins/src/base/skills/notion-prd-intake/SKILL.md +169 -0
- package/plugins/src/base/skills/notion-to-jira/SKILL.md +137 -95
- package/plugins/src/base/skills/prd-ticket-coverage/SKILL.md +137 -0
- package/plugins/src/base/skills/product-walkthrough/SKILL.md +129 -0
- package/plugins/src/base/skills/{plan-local-code-review → review-local}/SKILL.md +1 -1
- package/plugins/src/expo/skills/jira-create/SKILL.md +60 -28
- package/plugins/src/expo/skills/jira-verify/SKILL.md +14 -34
- 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 +59 -28
- package/plugins/src/rails/skills/jira-verify/SKILL.md +13 -16
- 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/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/sync.md +0 -7
- package/plugins/lisa/commands/jira/triage.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/plan/create.md +0 -8
- package/plugins/lisa/commands/plan/execute.md +0 -6
- 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/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/sync.md +0 -7
- package/plugins/src/base/commands/jira/triage.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/plan/create.md +0 -8
- package/plugins/src/base/commands/plan/execute.md +0 -6
- 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
- /package/plugins/lisa/commands/{plan/reduce-max-lines.md → improve/max-lines.md} +0 -0
- /package/plugins/lisa-rails/commands/{plan/fix-linter-error.md → fix/linter-error.md} +0 -0
- /package/plugins/lisa-rails/commands/{plan/lower-code-complexity.md → improve/code-complexity.md} +0 -0
- /package/plugins/lisa-rails/commands/{plan/reduce-max-lines-per-function.md → improve/max-lines-per-function.md} +0 -0
- /package/plugins/lisa-rails/commands/{plan/reduce-max-lines.md → improve/max-lines.md} +0 -0
- /package/plugins/lisa-rails/commands/{plan/add-test-coverage.md → improve/test-coverage.md} +0 -0
- /package/plugins/src/base/commands/{plan/reduce-max-lines.md → improve/max-lines.md} +0 -0
- /package/plugins/src/rails/commands/{plan/fix-linter-error.md → fix/linter-error.md} +0 -0
- /package/plugins/src/rails/commands/{plan/lower-code-complexity.md → improve/code-complexity.md} +0 -0
- /package/plugins/src/rails/commands/{plan/reduce-max-lines-per-function.md → improve/max-lines-per-function.md} +0 -0
- /package/plugins/src/rails/commands/{plan/reduce-max-lines.md → improve/max-lines.md} +0 -0
- /package/plugins/src/rails/commands/{plan/add-test-coverage.md → improve/test-coverage.md} +0 -0
|
@@ -1,23 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jira-create
|
|
3
3
|
description: This skill should be used when creating JIRA epics, stories, and tasks from code files or descriptions. It analyzes the provided input, determines the appropriate issue hierarchy, and creates issues with comprehensive quality requirements including test-first development and documentation.
|
|
4
|
-
allowed-tools: ["Read", "Glob", "LS", "
|
|
4
|
+
allowed-tools: ["Read", "Glob", "LS", "Skill", "mcp__atlassian__getVisibleJiraProjects", "mcp__atlassian__getJiraProjectIssueTypesMetadata", "mcp__atlassian__getAccessibleAtlassianResources"]
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Create JIRA Issues from $ARGUMENTS
|
|
8
8
|
|
|
9
|
-
Analyze the provided file(s) and
|
|
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`.
|
|
10
10
|
|
|
11
11
|
## Process
|
|
12
12
|
|
|
13
|
-
1. **Analyze**: Read $ARGUMENTS to understand scope
|
|
14
|
-
2. **
|
|
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.
|
|
16
|
+
4. **Determine structure**:
|
|
15
17
|
- Epic needed if: multiple features, major changes, >3 related files
|
|
16
18
|
- Direct tasks if: bug fix, single file, minor change
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
+
5. **Plan hierarchy**:
|
|
20
|
+
```text
|
|
19
21
|
Epic → User Story → Tasks (test, implement, document, cleanup)
|
|
20
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.
|
|
21
25
|
|
|
22
26
|
## Mandatory for Every Code Issue
|
|
23
27
|
|
|
@@ -87,33 +91,19 @@ h3. Assertions
|
|
|
87
91
|
6. **Prerequisites include feature flags** — If the feature is behind a PostHog flag, name it explicitly
|
|
88
92
|
7. **Auth steps included when needed** — If the journey requires login, include the test credentials in Prerequisites
|
|
89
93
|
|
|
90
|
-
## Source
|
|
91
|
-
|
|
92
|
-
If $ARGUMENTS includes a PRD, design doc, Figma URL, Lovable prototype, or similar external artifact — or if a referenced file links out to one — those references MUST be preserved as remote links on the created tickets. Dropping source artifacts during ticket creation is the single most common quality failure in this pipeline, because developers picking up a ticket then lose the design/UX source of truth.
|
|
94
|
+
## Source Artifacts
|
|
93
95
|
|
|
94
|
-
|
|
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.
|
|
95
97
|
|
|
96
|
-
|
|
97
|
-
2. **Epic gets everything**: attach all extracted artifacts as remote links on the epic, regardless of domain.
|
|
98
|
-
3. **Stories inherit by domain**: frontend/Expo stories get `ui-design` + `ux-flow` + `reference`; backend gets `data` + `reference`; infra gets `ops` + `reference`. When ambiguous, err on the side of inclusion.
|
|
99
|
-
4. **Sub-tasks inherit via parent**: do not re-attach on every sub-task unless a specific artifact applies only to that sub-task.
|
|
100
|
-
5. **Verify before reporting**: before declaring done, confirm every extracted artifact is reachable from the tickets. If any are missing, fail loudly and surface the dropped list to the human — do not silently drop.
|
|
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.
|
|
101
99
|
|
|
102
|
-
|
|
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.
|
|
103
101
|
|
|
104
|
-
|
|
105
|
-
- Figma URL with `/proto/` or `starting-point-node-id=` → `ux-flow`; plain design frame URL → `ui-design`.
|
|
106
|
-
- Lovable output → always `ux-flow` (its code/styling/logic is NOT authoritative).
|
|
107
|
-
- Loom / annotated screenshot with flow arrows → `ux-flow`; bare screenshot → `ui-design`.
|
|
102
|
+
When delegating writes to `jira-write-ticket`, pass the extracted artifact list so its Phase 4c step can attach them.
|
|
108
103
|
|
|
109
|
-
|
|
110
|
-
- Business rules (fields, validation, permissions, constraints) come from the **description / PRD body**.
|
|
111
|
-
- Visual treatment (layout, spacing, typography, color) comes from **mocks** (`ui-design`).
|
|
112
|
-
- Flow and interaction (navigation, transitions, state changes, empty/error/loading states) come from **prototypes** (`ux-flow`).
|
|
113
|
-
- API / data shape comes from **`data` artifacts**.
|
|
114
|
-
- Cross-axis conflicts are surfaced as `## Open Questions` BLOCKERs, never silently reconciled.
|
|
104
|
+
## Live Product Walkthrough
|
|
115
105
|
|
|
116
|
-
|
|
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.
|
|
117
107
|
|
|
118
108
|
## Issue Requirements
|
|
119
109
|
|
|
@@ -126,4 +116,46 @@ Each issue must clearly communicate to:
|
|
|
126
116
|
Default project: from jira-cli config (override via arguments)
|
|
127
117
|
Exclude unless requested: migration plans, performance tests
|
|
128
118
|
|
|
129
|
-
|
|
119
|
+
## Delegation to jira-write-ticket
|
|
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.
|
|
122
|
+
|
|
123
|
+
`jira-write-ticket` enforces things this skill does not, and which determine ticket quality:
|
|
124
|
+
- 3-audience description (Context / Technical Approach / Acceptance Criteria)
|
|
125
|
+
- Gherkin acceptance criteria
|
|
126
|
+
- Epic parent validation (non-bug, non-epic types)
|
|
127
|
+
- Explicit link discovery (`blocks` / `is blocked by` / `relates to` / `duplicates` / `clones`)
|
|
128
|
+
- Remote links (PRs, Confluence, dashboards)
|
|
129
|
+
- Single-repo scope check for Bug / Task / Sub-task
|
|
130
|
+
- Sign-in account and target environment recorded in description
|
|
131
|
+
- Post-create verification
|
|
132
|
+
|
|
133
|
+
### Invocation order
|
|
134
|
+
|
|
135
|
+
Tickets must be created in parent-before-child order so each child can be passed its parent key:
|
|
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.
|
|
140
|
+
|
|
141
|
+
### What to pass to each invocation
|
|
142
|
+
|
|
143
|
+
For every delegated write, pass:
|
|
144
|
+
- The summary, issue type, project key, and priority you decided
|
|
145
|
+
- The 3-section description body you drafted (Context / Technical Approach / Acceptance Criteria)
|
|
146
|
+
- Gherkin acceptance criteria
|
|
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.
|
|
150
|
+
|
|
151
|
+
### What this skill is responsible for
|
|
152
|
+
|
|
153
|
+
This skill owns:
|
|
154
|
+
- Deciding the *shape* of the hierarchy (what's an epic vs. story vs. sub-task)
|
|
155
|
+
- Drafting the description body and acceptance criteria from the input
|
|
156
|
+
- Extracting and classifying source artifacts
|
|
157
|
+
- Threading parent keys through subsequent writes
|
|
158
|
+
- Drafting the Validation Journey for UI tickets (this is Expo-specific guidance the base skill doesn't have)
|
|
159
|
+
- Running the artifact preservation check after all writes complete
|
|
160
|
+
|
|
161
|
+
It does not own the actual JIRA write — that's `jira-write-ticket`'s job.
|
|
@@ -1,47 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jira-verify
|
|
3
|
-
description: This skill should be used when verifying that a JIRA ticket meets organizational standards for epic relationships and
|
|
4
|
-
allowed-tools: ["
|
|
3
|
+
description: This skill should be used when verifying that a JIRA ticket meets organizational standards for epic relationships, description quality, and (for UI tickets) Validation Journey presence. It fetches the live ticket and delegates the gate checks to jira-validate-ticket so the bar matches what jira-write-ticket enforces pre-write.
|
|
4
|
+
allowed-tools: ["Skill", "mcp__atlassian__getJiraIssue", "mcp__atlassian__getAccessibleAtlassianResources"]
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Verify JIRA Ticket: $ARGUMENTS
|
|
8
8
|
|
|
9
|
-
|
|
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.
|
|
10
10
|
|
|
11
|
-
|
|
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.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
## Process
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
1. Resolve cloud ID via `mcp__atlassian__getAccessibleAtlassianResources`.
|
|
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.
|
|
18
|
+
4. Surface the validator's report verbatim.
|
|
16
19
|
|
|
17
|
-
|
|
20
|
+
## Output
|
|
18
21
|
|
|
19
|
-
|
|
22
|
+
Pass through `jira-validate-ticket`'s structured output unchanged. Downstream callers parse the gate lines.
|
|
20
23
|
|
|
21
|
-
|
|
24
|
+
## Notes
|
|
22
25
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
**Stakeholders**: Business value, user impact, success metrics, summary
|
|
26
|
-
|
|
27
|
-
### 3. Validation Journey (Frontend Tickets)
|
|
28
|
-
|
|
29
|
-
**Rule**: Tickets that touch UI (components, labels, or description mentioning frontend, UI, modal, layout, responsive, screen, page, button, form) MUST include a Validation Journey section.
|
|
30
|
-
|
|
31
|
-
Check by running:
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
python3 .claude/skills/jira-journey/scripts/parse-plan.py <TICKET_ID> 2>&1
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
- If the parser returns steps: PASS
|
|
38
|
-
- If the parser fails with "No 'Validation Journey' section found": FAIL — recommend using `/jira-add-journey <TICKET_ID>` to add one
|
|
39
|
-
|
|
40
|
-
This check is skipped for:
|
|
41
|
-
- Pure backend/API tickets (no UI surface)
|
|
42
|
-
- Config-only tickets (env vars, feature flags, CI/CD)
|
|
43
|
-
- Epic-level tickets (journeys belong on child stories/tasks)
|
|
44
|
-
|
|
45
|
-
## Execute Verification
|
|
46
|
-
|
|
47
|
-
Retrieve ticket details, run all checks, and provide specific improvement recommendations for any failures.
|
|
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.
|
|
@@ -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.
|
|
@@ -1,23 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jira-create
|
|
3
3
|
description: This skill should be used when creating JIRA epics, stories, and tasks from code files or descriptions. It analyzes the provided input, determines the appropriate issue hierarchy, and creates issues with comprehensive quality requirements including test-first development and documentation.
|
|
4
|
-
allowed-tools: ["Read", "Glob", "LS", "
|
|
4
|
+
allowed-tools: ["Read", "Glob", "LS", "Skill", "mcp__atlassian__getVisibleJiraProjects", "mcp__atlassian__getJiraProjectIssueTypesMetadata", "mcp__atlassian__getAccessibleAtlassianResources"]
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Create JIRA Issues from $ARGUMENTS
|
|
8
8
|
|
|
9
|
-
Analyze the provided file(s) and
|
|
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`.
|
|
10
10
|
|
|
11
11
|
## Process
|
|
12
12
|
|
|
13
|
-
1. **Analyze**: Read $ARGUMENTS to understand scope
|
|
14
|
-
2. **
|
|
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.
|
|
16
|
+
4. **Determine structure**:
|
|
15
17
|
- Epic needed if: multiple features, major changes, >3 related files
|
|
16
18
|
- Direct tasks if: bug fix, single file, minor change
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
+
5. **Plan hierarchy**:
|
|
20
|
+
```text
|
|
19
21
|
Epic → User Story → Tasks (test, implement, document, cleanup)
|
|
20
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.
|
|
21
25
|
|
|
22
26
|
## Mandatory for Every Code Issue
|
|
23
27
|
|
|
@@ -27,33 +31,19 @@ Analyze the provided file(s) and create a comprehensive JIRA hierarchy with all
|
|
|
27
31
|
**Feature Flags**: All features behind flags with lifecycle plan
|
|
28
32
|
**Cleanup**: Remove temporary code, scripts, dev configs
|
|
29
33
|
|
|
30
|
-
## Source
|
|
31
|
-
|
|
32
|
-
If $ARGUMENTS includes a PRD, design doc, Figma URL, Lovable prototype, or similar external artifact — or if a referenced file links out to one — those references MUST be preserved as remote links on the created tickets. Dropping source artifacts during ticket creation is the single most common quality failure in this pipeline, because developers picking up a ticket then lose the design/UX source of truth.
|
|
34
|
+
## Source Artifacts
|
|
33
35
|
|
|
34
|
-
|
|
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.
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
2. **Epic gets everything**: attach all extracted artifacts as remote links on the epic, regardless of domain.
|
|
38
|
-
3. **Stories inherit by domain**: frontend/view stories get `ui-design` + `ux-flow` + `reference`; backend/model/controller stories get `data` + `reference`; infra stories get `ops` + `reference`. When ambiguous, err on the side of inclusion.
|
|
39
|
-
4. **Sub-tasks inherit via parent**: do not re-attach on every sub-task unless a specific artifact applies only to that sub-task.
|
|
40
|
-
5. **Verify before reporting**: before declaring done, confirm every extracted artifact is reachable from the tickets. If any are missing, fail loudly and surface the dropped list to the human — do not silently drop.
|
|
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.
|
|
41
39
|
|
|
42
|
-
|
|
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.
|
|
43
41
|
|
|
44
|
-
|
|
45
|
-
- Figma URL with `/proto/` or `starting-point-node-id=` → `ux-flow`; plain design frame URL → `ui-design`.
|
|
46
|
-
- Lovable output → always `ux-flow` (its code/styling/logic is NOT authoritative).
|
|
47
|
-
- Loom / annotated screenshot with flow arrows → `ux-flow`; bare screenshot → `ui-design`.
|
|
42
|
+
When delegating writes to `jira-write-ticket`, pass the extracted artifact list so its Phase 4c step can attach them.
|
|
48
43
|
|
|
49
|
-
|
|
50
|
-
- Business rules (fields, validation, permissions, constraints) come from the **description / PRD body**.
|
|
51
|
-
- Visual treatment (layout, spacing, typography, color) comes from **mocks** (`ui-design`).
|
|
52
|
-
- Flow and interaction (navigation, transitions, state changes, empty/error/loading states) come from **prototypes** (`ux-flow`).
|
|
53
|
-
- API / data shape comes from **`data` artifacts**.
|
|
54
|
-
- Cross-axis conflicts are surfaced as `## Open Questions` BLOCKERs, never silently reconciled.
|
|
44
|
+
## Live Product Walkthrough
|
|
55
45
|
|
|
56
|
-
|
|
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.
|
|
57
47
|
|
|
58
48
|
## Issue Requirements
|
|
59
49
|
|
|
@@ -66,4 +56,45 @@ Each issue must clearly communicate to:
|
|
|
66
56
|
Default project: SE (override via arguments)
|
|
67
57
|
Exclude unless requested: migration plans, performance tests
|
|
68
58
|
|
|
69
|
-
|
|
59
|
+
## Delegation to jira-write-ticket
|
|
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.
|
|
62
|
+
|
|
63
|
+
`jira-write-ticket` enforces things this skill does not, and which determine ticket quality:
|
|
64
|
+
- 3-audience description (Context / Technical Approach / Acceptance Criteria)
|
|
65
|
+
- Gherkin acceptance criteria
|
|
66
|
+
- Epic parent validation (non-bug, non-epic types)
|
|
67
|
+
- Explicit link discovery (`blocks` / `is blocked by` / `relates to` / `duplicates` / `clones`)
|
|
68
|
+
- Remote links (PRs, Confluence, dashboards)
|
|
69
|
+
- Single-repo scope check for Bug / Task / Sub-task
|
|
70
|
+
- Sign-in account and target environment recorded in description
|
|
71
|
+
- Post-create verification
|
|
72
|
+
|
|
73
|
+
### Invocation order
|
|
74
|
+
|
|
75
|
+
Tickets must be created in parent-before-child order so each child can be passed its parent key:
|
|
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.
|
|
80
|
+
|
|
81
|
+
### What to pass to each invocation
|
|
82
|
+
|
|
83
|
+
For every delegated write, pass:
|
|
84
|
+
- The summary, issue type, project key, and priority you decided
|
|
85
|
+
- The 3-section description body you drafted (Context / Technical Approach / Acceptance Criteria)
|
|
86
|
+
- Gherkin acceptance criteria
|
|
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
|
|
90
|
+
|
|
91
|
+
### What this skill is responsible for
|
|
92
|
+
|
|
93
|
+
This skill owns:
|
|
94
|
+
- Deciding the *shape* of the hierarchy (what's an epic vs. story vs. sub-task)
|
|
95
|
+
- Drafting the description body and acceptance criteria from the input
|
|
96
|
+
- Extracting and classifying source artifacts
|
|
97
|
+
- Threading parent keys through subsequent writes
|
|
98
|
+
- Running the artifact preservation check after all writes complete
|
|
99
|
+
|
|
100
|
+
It does not own the actual JIRA write — that's `jira-write-ticket`'s job.
|
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jira-verify
|
|
3
|
-
description: This skill should be used when verifying that a JIRA ticket meets organizational standards for epic relationships and description quality. It
|
|
4
|
-
allowed-tools: ["
|
|
3
|
+
description: This skill should be used when verifying that a JIRA ticket meets organizational standards for epic relationships and description quality. It fetches the live ticket and delegates the gate checks to jira-validate-ticket so the bar matches what jira-write-ticket enforces pre-write.
|
|
4
|
+
allowed-tools: ["Skill", "mcp__atlassian__getJiraIssue", "mcp__atlassian__getAccessibleAtlassianResources"]
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Verify JIRA Ticket: $ARGUMENTS
|
|
8
8
|
|
|
9
|
-
|
|
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.
|
|
10
10
|
|
|
11
|
-
|
|
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.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
## Process
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
1. Resolve cloud ID via `mcp__atlassian__getAccessibleAtlassianResources`.
|
|
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.
|
|
18
|
+
4. Surface the validator's report verbatim.
|
|
16
19
|
|
|
17
|
-
|
|
20
|
+
## Output
|
|
18
21
|
|
|
19
|
-
|
|
22
|
+
Pass through `jira-validate-ticket`'s structured output unchanged. Downstream callers parse the gate lines.
|
|
20
23
|
|
|
21
|
-
|
|
24
|
+
## Notes
|
|
22
25
|
|
|
23
|
-
|
|
24
|
-
**Developers**: Technical context, integration points, testing, edge cases
|
|
25
|
-
**Stakeholders**: Business value, user impact, success metrics, summary
|
|
26
|
-
|
|
27
|
-
## Execute Verification
|
|
28
|
-
|
|
29
|
-
Retrieve ticket details, run both checks, and provide specific improvement recommendations for any failures.
|
|
26
|
+
- This skill is read-only. It never edits the ticket, posts comments, or changes status.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: jira-build-intake
|
|
3
|
+
description: JIRA build-intake agent. Runs one build-intake cycle against a JIRA project (or JQL filter) — claims Ready tickets, dispatches each to the jira-agent build flow, transitions to On Dev on success. Symmetric counterpart to notion-prd-intake. Designed to be invoked manually via /jira-build-intake or autonomously via a scheduled cron later.
|
|
4
|
+
skills:
|
|
5
|
+
- jira-build-intake
|
|
6
|
+
- jira-read-ticket
|
|
7
|
+
- jira-verify
|
|
8
|
+
- jira-validate-ticket
|
|
9
|
+
- jira-write-ticket
|
|
10
|
+
- jira-sync
|
|
11
|
+
- jira-evidence
|
|
12
|
+
- jira-add-journey
|
|
13
|
+
- ticket-triage
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# JIRA Build Intake Agent
|
|
17
|
+
|
|
18
|
+
You are a JIRA build-intake agent. Your single job is to run one cycle against a JIRA project / JQL filter — find Ready tickets, dispatch each through the build flow, transition successful builds to On Dev — then report what happened.
|
|
19
|
+
|
|
20
|
+
## Workflow
|
|
21
|
+
|
|
22
|
+
### 1. Receive the query
|
|
23
|
+
|
|
24
|
+
The invoking caller (a slash command or a future schedule wrapper) hands you a JIRA project key (e.g. `SE`) or a full JQL filter. You do not pick the query yourself.
|
|
25
|
+
|
|
26
|
+
If no query is provided, stop and ask. Never run intake against a default scope — the side effects (status transitions, PRs opened, builds running) are too high to act without an explicit target.
|
|
27
|
+
|
|
28
|
+
### 2. Run the intake skill
|
|
29
|
+
|
|
30
|
+
Invoke the `jira-build-intake` skill with the query as `$ARGUMENTS`. The skill owns the cycle logic — JQL execution, claim, dispatch to `jira-agent`, transition on success, summary. Do not duplicate that logic here.
|
|
31
|
+
|
|
32
|
+
The skill in turn invokes `jira-agent` per ticket, which owns the per-ticket lifecycle (read full graph, verify, triage, route to flow, sync progress, post evidence). You do not call `jira-agent` directly — the intake skill does.
|
|
33
|
+
|
|
34
|
+
### 3. Surface the summary
|
|
35
|
+
|
|
36
|
+
Pass the skill's summary block through to the caller verbatim. The caller needs the structured record:
|
|
37
|
+
|
|
38
|
+
- Total processed
|
|
39
|
+
- Per-ticket outcomes (`On Dev` → which PR; `Blocked` by verify → which gate; `Held` by triage → which ambiguities; Errors → reason)
|
|
40
|
+
- PR count
|
|
41
|
+
|
|
42
|
+
If the cycle errored before processing any tickets (e.g. workflow misconfigured — `In Progress` or `On Dev` not valid transitions, missing `Ready` status entirely), surface the cause in plain language and stop. Do NOT attempt to invent transitions.
|
|
43
|
+
|
|
44
|
+
### 4. Suggest next actions when warranted
|
|
45
|
+
|
|
46
|
+
After a successful cycle, if any tickets ended in `On Dev`, mention that the next phase (QA, deploy, or downstream verification — depending on the project workflow) is owned by either humans or a future intake skill. This skill does not own anything past `On Dev`.
|
|
47
|
+
|
|
48
|
+
If any tickets ended in `Blocked` (pre-flight verify failed) or `Held` (triage found ambiguities), point that out so the caller knows which tickets need human attention before they can be re-claimed. The Blocked ones were transitioned by `jira-agent`'s gate logic — that is correct and expected.
|
|
49
|
+
|
|
50
|
+
## Rules
|
|
51
|
+
|
|
52
|
+
- **Never run a cycle without an explicit query.** Side effects too high to default.
|
|
53
|
+
- **Never modify the lifecycle**: only `Ready → In Progress → On Dev`. Never touch `TODO`, `On QA`, `Done`, or any other status. (Exception: `jira-agent` may transition to `Blocked` as part of its pre-flight gate — that's its job, not yours.)
|
|
54
|
+
- **Never bypass `jira-agent` to do build work directly.** The intake skill dispatches; `jira-agent` builds. Skipping the dispatch produces broken work.
|
|
55
|
+
- **Never invent transitions.** If a project's workflow uses different status names, the caller passes them as overrides in `$ARGUMENTS`. Don't guess.
|
|
56
|
+
- **Never start a second cycle while one is in flight against an overlapping query.** Serial execution. Scheduling layer (when added) is responsible for not double-firing.
|
|
57
|
+
- **Stop and surface failures rather than retry-loop.** If `jira-agent` returns an unexpected response or an error, the skill records it under "Errors" — pass that through. Do not auto-retry.
|
|
58
|
+
- **Pre-flight failures are not your problem to fix.** If a ticket fails `jira-verify` (missing Validation Journey, sign-in, etc.), `jira-agent` transitions it to `Blocked` and reassigns to Reporter. Surface the count and move on. Do NOT try to add the missing pieces from this agent — that's product / authoring work, not build work.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: notion-prd-intake
|
|
3
|
+
description: PRD intake agent. Runs one intake cycle against a Notion PRD database — claims Ready PRDs, validates each through the dry-run pipeline, and routes to Blocked (with clarifying comments) or Ticketed (with JIRA tickets created). Designed to be invoked manually via /notion-prd-intake or autonomously via a scheduled cron.
|
|
4
|
+
skills:
|
|
5
|
+
- notion-prd-intake
|
|
6
|
+
- notion-to-jira
|
|
7
|
+
- jira-validate-ticket
|
|
8
|
+
- jira-source-artifacts
|
|
9
|
+
- product-walkthrough
|
|
10
|
+
- jira-write-ticket
|
|
11
|
+
- prd-ticket-coverage
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# PRD Intake Agent
|
|
15
|
+
|
|
16
|
+
You are a PRD intake agent. Your single job is to run one intake cycle against the Notion PRD database whose URL is given to you, then report what happened.
|
|
17
|
+
|
|
18
|
+
## Workflow
|
|
19
|
+
|
|
20
|
+
### 1. Receive the database URL
|
|
21
|
+
|
|
22
|
+
The invoking caller (a slash command, a scheduled cron, or a parent agent) hands you a Notion database URL or bare ID. You do not pick the database yourself.
|
|
23
|
+
|
|
24
|
+
If no URL is provided, stop and ask. Never run intake against a default or guessed database — the side effects (Notion status changes, JIRA tickets created) are too high to act without an explicit target.
|
|
25
|
+
|
|
26
|
+
### 2. Run the intake skill
|
|
27
|
+
|
|
28
|
+
Invoke the `notion-prd-intake` skill with the database URL as `$ARGUMENTS`. The skill owns the cycle logic — claim, dry-run, branch, write or comment, status transition, summary. Do not duplicate that logic here.
|
|
29
|
+
|
|
30
|
+
Treat the skill's output as the source of truth. If it reports `Ticketed: 3 / Blocked: 1 / Errors: 0`, that's what you report.
|
|
31
|
+
|
|
32
|
+
### 3. Surface the summary
|
|
33
|
+
|
|
34
|
+
Pass the skill's summary block through to the caller verbatim — do not paraphrase or condense. The caller (often a human running `/notion-prd-intake` ad-hoc, or a future schedule wrapper) needs the structured record:
|
|
35
|
+
|
|
36
|
+
- Total processed
|
|
37
|
+
- Per-PRD outcomes (Ticketed → which tickets created; Blocked → how many gate failures; Errors → reason)
|
|
38
|
+
- JIRA ticket count
|
|
39
|
+
|
|
40
|
+
If the cycle errored before processing any PRDs (e.g. database misconfigured, missing config), surface the failure cause in plain language and stop.
|
|
41
|
+
|
|
42
|
+
### 4. Suggest next actions when warranted
|
|
43
|
+
|
|
44
|
+
After a successful cycle, if any PRDs ended in `Blocked`, mention to the caller that those PRDs need product attention before they can be re-ticketed. Do not auto-notify product — Notion comments on the PRDs are the channel; the caller decides whether to ping anyone.
|
|
45
|
+
|
|
46
|
+
When reporting Blocked outcomes, distinguish the cause: **pre-write gate failure** (per-ticket validator caught a problem before any tickets were created) vs **post-write coverage gap** (tickets were created and remain in JIRA, but the PRD has uncovered requirements that the next intake cycle will address). Both result in `Status = Blocked`, but the implication for product is different — coverage gaps mean some tickets are already real and product should not re-author the PRD from scratch.
|
|
47
|
+
|
|
48
|
+
If all PRDs ended in `Ticketed` with coverage `COMPLETE`, mention that the next step is for product to monitor the created tickets and flip the PRDs to `Shipped` after delivery. If any are `COMPLETE_WITH_SCOPE_CREEP`, point that out so product can review the flagged tickets.
|
|
49
|
+
|
|
50
|
+
## Rules
|
|
51
|
+
|
|
52
|
+
- **Never run a cycle without an explicit database URL.** Side effects are too high to default.
|
|
53
|
+
- **Never modify the lifecycle**: only `Ready → In Review → Blocked|Ticketed`. Never touch `Draft` or `Shipped`. Never invent new status values.
|
|
54
|
+
- **Never write JIRA tickets directly.** All writes go through the skill chain (intake → notion-to-jira → jira-write-ticket). Bypassing this skips quality gates.
|
|
55
|
+
- **Never edit a PRD's body.** Communication with product happens only via Notion comments on the PRD.
|
|
56
|
+
- **Never start a second cycle while one is in flight against the same database.** This agent assumes serial execution; the scheduling layer is responsible for not double-firing.
|
|
57
|
+
- **Stop and surface failures rather than retry-loop.** If `notion-to-jira` returns an error, the skill records it under `Errors` in the summary; pass that through. Do not auto-retry.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Implement a work item end-to-end. Vendor-agnostic router: 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."
|
|
3
|
+
argument-hint: "<work-item-url | key | description>"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use the /lisa:implement skill to take a work item from spec to shipped: read the source (whichever tracker it lives in), 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
|