@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
package/package.json
CHANGED
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"lodash": ">=4.18.1"
|
|
79
79
|
},
|
|
80
80
|
"name": "@codyswann/lisa",
|
|
81
|
-
"version": "1.
|
|
81
|
+
"version": "2.1.0",
|
|
82
82
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
83
83
|
"main": "dist/index.js",
|
|
84
84
|
"exports": {
|
|
@@ -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
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Vendor-agnostic batch scanner for Status=Ready queues. Notion PRD database URL → finds Ready PRDs and runs lisa:plan per item. JIRA project key or JQL → finds Ready tickets and runs lisa:implement per item. Designed as the cron target for /schedule."
|
|
3
|
+
argument-hint: "<Notion-PRD-database-URL | JIRA-project-key | JQL-filter>"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use the /lisa:intake skill to scan the queue for Status=Ready items and dispatch each one through the appropriate single-item lifecycle skill. $ARGUMENTS
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Monitor application health.
|
|
2
|
+
description: "Monitor application health across environments. Health endpoints, recent logs, error-rate spikes, performance, optional browser UAT. Routes to the stack-specific ops-specialist."
|
|
3
3
|
argument-hint: "[environment]"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
This sub-flow is also invoked as part of the Verify flow's remote verification step. Delegates to `ops-specialist` for health checks, log inspection, error monitoring, and performance analysis.
|
|
9
|
-
|
|
10
|
-
$ARGUMENTS
|
|
6
|
+
Use the /lisa:monitor skill to check application health, logs, errors, and performance for the named environment. $ARGUMENTS
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Plan work
|
|
3
|
-
argument-hint: "<
|
|
2
|
+
description: "Plan work from a single PRD or specification. Decomposes into ordered work items in the configured tracker. For batch scanning of all Status=Ready PRDs in a queue, use /lisa:intake instead."
|
|
3
|
+
argument-hint: "<single-PRD-url | @file | ticket-id-or-url | description>"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
**Orchestration: agent team.** Plan is a multi-specialist flow feeding a shared decomposition. After echoing the flow and orchestration mode, your FIRST tool call MUST be `TeamCreate`. Do not call `TaskCreate`, `Agent`, or implementation tools before the team exists.
|
|
9
|
-
|
|
10
|
-
If no PRD or specification exists, suggest running the **Research** flow first to produce one.
|
|
11
|
-
|
|
12
|
-
If the argument is a JIRA ticket ID or URL, hand off to the `jira-agent` which will read the ticket and extract context.
|
|
13
|
-
|
|
14
|
-
$ARGUMENTS
|
|
6
|
+
Use the /lisa:plan skill to decompose the PRD/spec into ordered work items in the configured tracker. $ARGUMENTS
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Research a problem space and produce a PRD. Investigates codebase, defines user flows, assesses technical feasibility."
|
|
2
|
+
description: "Research a problem space and produce a PRD. Investigates the codebase, defines user flows, assesses technical feasibility, and outputs a specification ready for the Plan flow."
|
|
3
3
|
argument-hint: "<problem-statement-or-feature-idea>"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
**Orchestration: agent team.** Research is a multi-specialist flow feeding a shared PRD. After echoing the flow and orchestration mode, your FIRST tool call MUST be `TeamCreate`. Do not call `TaskCreate`, `Agent`, or implementation tools before the team exists.
|
|
9
|
-
|
|
10
|
-
$ARGUMENTS
|
|
6
|
+
Use the /lisa:research skill to research the problem and produce a PRD. $ARGUMENTS
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Ship and verify code. Commits, opens PR, handles review loop, merges,
|
|
2
|
+
description: "Ship and verify code. Commits, opens PR, handles review loop, merges, monitors deploy, and runs remote verification in target environment. Folds in /ship."
|
|
3
3
|
argument-hint: "[commit-message-hint]"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
This includes: atomic commits, PR creation, CI/review-fix loop, merge, deploy monitoring, and remote verification.
|
|
9
|
-
|
|
10
|
-
$ARGUMENTS
|
|
6
|
+
Use the /lisa:verify skill to commit, push, PR, merge, deploy, and verify in the target environment. $ARGUMENTS
|
|
@@ -8,7 +8,7 @@ Each flow has a readiness gate that MUST pass before work begins. If the gate fa
|
|
|
8
8
|
|
|
9
9
|
This protocol runs **once per session**, on the first user message. After that, every later message inherits the established flow — do not re-run classification.
|
|
10
10
|
|
|
11
|
-
1. If the user invoked a slash command (`/
|
|
11
|
+
1. If the user invoked a slash command (`/lisa:research`, `/lisa:plan`, `/lisa:implement`, `/lisa:verify`, `/lisa:monitor`, `/lisa:intake`, etc.), the flow is already determined -- skip classification.
|
|
12
12
|
2. Read the user's request and match it against the flow definitions below.
|
|
13
13
|
3. If you cannot confidently classify the request:
|
|
14
14
|
- **Interactive session** (user is present): present a multiple choice using AskUserQuestion with options: Research, Plan, Implement, Verify, No flow.
|
|
@@ -23,16 +23,20 @@ This protocol runs **once per session**, on the first user message. After that,
|
|
|
23
23
|
|
|
24
24
|
## Orchestration Selection Protocol
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
Orchestration is owned by the **lifecycle skill** for the chosen flow, not by this rule. Each top-level lifecycle skill (`lisa:research`, `lisa:plan`, `lisa:implement`, `lisa:verify`, `lisa:monitor`, `lisa:intake`) contains its own cascade-safe orchestration preamble — that's where the team is created (or skipped, if already inside one).
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
> One-sentence justification.
|
|
28
|
+
What this rule still enforces:
|
|
30
29
|
|
|
31
|
-
|
|
30
|
+
1. **Echo orchestration mode immediately after echoing the flow** (in the same message), so the user sees both before any work begins:
|
|
32
31
|
|
|
33
|
-
|
|
32
|
+
> **Orchestration: agent team** (or **single agent**)
|
|
33
|
+
> One-sentence justification.
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
2. **Cascade rule (load-bearing)**: Before calling `TeamCreate`, check whether you are already operating inside an agent team. Signs you are inside a team: a prior `TeamCreate` exists in this session; you were spawned via `Agent` with `team_name`; your context references a team lead. If any of these are true, **do NOT call `TeamCreate`** — the harness rejects double-creates and the work stalls. Continue within the existing team. Invoke flows via the Skill tool; the team lead inherits responsibility for orchestration.
|
|
36
|
+
|
|
37
|
+
3. **Default mode**: All top-level lifecycle flows (`Research`, `Plan`, `Implement`, `Verify`, `Monitor`, `Intake`) run as agent teams. Single-agent mode is reserved for diagnostics that don't compose multiple specialists (`product-walkthrough` standalone, ad-hoc Investigate-Only spikes that explicitly opt out). When in doubt, use a team.
|
|
38
|
+
|
|
39
|
+
The mechanical "first tool call MUST be TeamCreate" directive lives inside each lifecycle skill — see those skills' orchestration preambles for the exact wording.
|
|
36
40
|
|
|
37
41
|
## Readiness Gate Protocol
|
|
38
42
|
|
|
@@ -59,7 +63,6 @@ Gate:
|
|
|
59
63
|
- If none is provided, ask: "What problem are you trying to solve or what capability are you trying to add?"
|
|
60
64
|
|
|
61
65
|
Sequence:
|
|
62
|
-
0. **Create agent team via `TeamCreate`** (see Orchestration section) -- Research is a multi-specialist flow; do this before any other work.
|
|
63
66
|
1. **Investigate sub-flow** -- gather context from codebase, git history, existing behavior, and external sources
|
|
64
67
|
2. `product-specialist` -- define user goals, user flows (Gherkin), acceptance criteria, error states, UX concerns, and out-of-scope items
|
|
65
68
|
3. `architecture-specialist` -- assess technical feasibility, identify constraints, map existing system boundaries
|
|
@@ -80,7 +83,6 @@ Gate:
|
|
|
80
83
|
- If the specification has unresolved ambiguities, stop and list them
|
|
81
84
|
|
|
82
85
|
Sequence:
|
|
83
|
-
0. **Create agent team via `TeamCreate`** (see Orchestration section) -- Plan is a multi-specialist flow feeding a shared decomposition; do this before any other work.
|
|
84
86
|
1. **Investigate sub-flow** -- explore codebase for architecture, patterns, dependencies relevant to the spec
|
|
85
87
|
2. `product-specialist` -- validate and refine acceptance criteria for the whole scope
|
|
86
88
|
3. `architecture-specialist` -- map dependencies, identify cross-cutting concerns, determine execution order
|
|
@@ -110,7 +112,6 @@ Determine the work type and execute the matching variant:
|
|
|
110
112
|
|
|
111
113
|
#### Build (features, stories, tasks)
|
|
112
114
|
|
|
113
|
-
0. **Create agent team via `TeamCreate`** (see Orchestration section) -- Build runs a long sequence with parallel review; do this before any other work.
|
|
114
115
|
1. **Investigate sub-flow** -- explore codebase for related code, patterns, dependencies
|
|
115
116
|
2. `product-specialist` -- define acceptance criteria, user flows, error states
|
|
116
117
|
3. `architecture-specialist` -- design approach, map files to modify, identify reusable code
|
|
@@ -124,7 +125,6 @@ Determine the work type and execute the matching variant:
|
|
|
124
125
|
|
|
125
126
|
#### Fix (bugs)
|
|
126
127
|
|
|
127
|
-
0. **Create agent team via `TeamCreate`** (see Orchestration section) -- Fix runs a long sequence with parallel review; do this before any other work.
|
|
128
128
|
1. **Reproduce sub-flow** -- write failing test or script that demonstrates the bug (MANDATORY before any fix is attempted)
|
|
129
129
|
2. **Investigate sub-flow** -- git history, root cause analysis
|
|
130
130
|
3. `debug-specialist` -- prove root cause with evidence
|
|
@@ -139,7 +139,6 @@ Determine the work type and execute the matching variant:
|
|
|
139
139
|
|
|
140
140
|
#### Improve (refactoring, optimization, coverage improvement)
|
|
141
141
|
|
|
142
|
-
0. **Create agent team via `TeamCreate`** (see Orchestration section) -- Improve runs a long sequence with parallel review; do this before any other work.
|
|
143
142
|
1. **Investigate sub-flow** -- understand current state, measure baseline
|
|
144
143
|
2. `architecture-specialist` -- identify target, plan approach
|
|
145
144
|
3. `test-specialist` -- ensure existing test coverage before refactoring (safety net)
|
|
@@ -274,7 +273,9 @@ Flows reference sub-flows by name. When a flow says "Investigate sub-flow", exec
|
|
|
274
273
|
|
|
275
274
|
## Orchestration
|
|
276
275
|
|
|
277
|
-
|
|
276
|
+
> **Note**: Orchestration authority belongs to lifecycle skills (see `## Orchestration Selection Protocol` above). This section documents the patterns that lifecycle skills implement — it is reference material, not a directive for this rule to choose modes independently.
|
|
277
|
+
|
|
278
|
+
Lifecycle skills dispatch their agents according to the flow's shape. The following patterns are how they do it — do not default to the heaviest one.
|
|
278
279
|
|
|
279
280
|
### Agent Teams (default for multi-step flows)
|
|
280
281
|
|
package/plugins/{src/base/skills/plan-fix-linter-error → lisa/skills/fix-linter-error}/SKILL.md
RENAMED
|
@@ -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 ESLint rules across the codebase. It runs the linter, groups violations by rule 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 functions, early returns, apply formatting, add types
|
|
|
42
42
|
Verification: `bun run lint 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.
|
|
@@ -1,19 +1,34 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: implement
|
|
3
3
|
description: This skill should be used for any non-trivial request — features, bugs, stories, epics, spikes, or multi-step tasks. It accepts a ticket URL (Jira, Linear, GitHub), a file path containing a spec, or a plain-text prompt. It assembles an agent team, breaks the work into structured tasks, and manages the full lifecycle from research through implementation, code review, deploy, and empirical verification.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
# Implement: $ARGUMENTS
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
## Orchestration: agent team
|
|
8
9
|
|
|
9
|
-
If
|
|
10
|
+
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.
|
|
10
11
|
|
|
11
|
-
If
|
|
12
|
+
If you ARE already inside an agent team (e.g., a teammate invoked this skill via the Skill tool, or `lisa:intake` is running this skill per Ready ticket), do NOT call `TeamCreate` — the harness rejects double-creates. Continue within the existing team. The team lead created the team; teammates inherit it.
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
When you do create the team, spawn every agent with `mode: "plan"` so they must submit their plan for team lead approval before making any file changes. Every team must include the Explore agent.
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
## Resolve the input
|
|
16
17
|
|
|
18
|
+
$ARGUMENTS is either a url to a ticket containing the request, a pointer to a file containing the request, or the request in text format.
|
|
19
|
+
|
|
20
|
+
If it's a ticket, use the appropriate vendor adapter to read and fully understand the request:
|
|
21
|
+
- JIRA ticket → `lisa:jira-read-ticket` (preferred) or the Jira CLI
|
|
22
|
+
- Linear ticket → the Linear CLI (no `lisa:linear-*` adapter built yet)
|
|
23
|
+
- GitHub ticket → the Github CLI
|
|
24
|
+
|
|
25
|
+
Capture comments and metadata, not just the description.
|
|
26
|
+
|
|
27
|
+
If it's a file, read the entire file without offset or limit.
|
|
28
|
+
|
|
29
|
+
If this is a simple, self-contained request that requires no complex orchestration, execute it directly within the current team context and skip the agent roster and task planning below.
|
|
30
|
+
|
|
31
|
+
## Select the agent roster
|
|
17
32
|
|
|
18
33
|
Review all available agent types listed in the Task tool's `subagent_type` options. This includes built-in agents (like `Explore`, `general-purpose`), custom agents (from `.claude/agents/`), and plugin agents (from `.claude/settings.json` `enabledPlugins`). For each agent, explain in one sentence why it IS or IS NOT relevant to this task. Then select all agents that are relevant. You MUST justify excluding an agent — inclusion is the default.
|
|
19
34
|
|
|
@@ -22,12 +37,6 @@ When deciding the agents to use, consider:
|
|
|
22
37
|
* Each task must be reviewed by the team to make sure their verification passes.
|
|
23
38
|
* Each task must have their learnings reviewed by the learner subagent.
|
|
24
39
|
|
|
25
|
-
NOTE: Every team must include the Explore agent
|
|
26
|
-
|
|
27
|
-
Create an agent team composed of the selected agents. Spawn every agent with `mode: "plan"` so they must submit their plan for team lead approval before making any file changes.
|
|
28
|
-
|
|
29
|
-
Use the TeamCreate tool to create the team before doing anything else.
|
|
30
|
-
|
|
31
40
|
Using the general-purpose agent in Team Lead session, Determine the name of this plan
|
|
32
41
|
|
|
33
42
|
Using the general-purpose agent in Team Lead session, Determine what branch to use:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: improve-code-complexity
|
|
3
3
|
description: This skill should be used when reducing the cognitive complexity threshold of the codebase. It lowers the threshold by 2, identifies functions 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
|
---
|
|
@@ -41,4 +41,4 @@ Refactoring strategies: extract functions, early returns, extract conditions, us
|
|
|
41
41
|
Verification: `bun run lint 2>&1 | grep "cognitive-complexity" | wc -l` → Expected: 0
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
Invoke `/
|
|
44
|
+
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 file lines threshold and fixing all violations. It updates the eslint threshold configuration, identifies files 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
|
|
|
@@ -42,4 +42,4 @@ Refactoring strategies: extract modules, remove duplication, delete dead code, s
|
|
|
42
42
|
Verification: `bun run lint 2>&1 | grep "max-lines" | wc -l` → Expected: 0
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
Invoke `/
|
|
45
|
+
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 function threshold and fixing all violations. It updates the eslint threshold configuration, identifies functions exceeding the new limit, generates a brief with refactoring strategies, and creates a plan with tasks to split oversized functions.
|
|
4
4
|
allowed-tools: ["Read", "Bash", "Glob", "Grep"]
|
|
5
5
|
|
|
@@ -43,4 +43,4 @@ Refactoring strategies: extract functions, early returns, extract conditions, us
|
|
|
43
43
|
Verification: `bun run lint 2>&1 | grep "max-lines-per-function" | 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 coverage report, 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
|
|
|
@@ -41,4 +41,4 @@ Configuration: [config file path], update thresholds to $ARGUMENTS%
|
|
|
41
41
|
Verification: `bun run test:cov` → Expected: All thresholds pass at $ARGUMENTS%
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
Invoke `/
|
|
44
|
+
Invoke `/implement` with this brief to create the implementation plan.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: improve-tests
|
|
3
3
|
description: This skill should be used when improving test quality. It scans the test suite for weak, brittle, or poorly-written tests, generates a brief with improvement opportunities, and creates a plan with tasks to strengthen the tests.
|
|
4
4
|
allowed-tools: ["Read", "Bash", "Glob", "Grep"]
|
|
5
5
|
---
|
|
@@ -44,4 +44,4 @@ Test files needing improvement (ordered by impact):
|
|
|
44
44
|
Verification: `bun run test` -> Expected: All tests pass, improved assertions and coverage
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
Invoke `/
|
|
47
|
+
Invoke `/implement` with this brief to create the implementation plan.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: intake
|
|
3
|
+
description: "Vendor-agnostic batch scanner for Status=Ready queues. Given a Notion PRD database URL → finds Ready PRDs and runs lisa:plan per item. Given a JIRA project key or JQL filter → finds Ready tickets and runs lisa:implement per item. Designed as the cron target for /schedule — one cycle per invocation, processes everything currently Ready, exits cleanly on empty. Symmetric counterpart to the single-item lisa:plan and lisa:implement skills."
|
|
4
|
+
allowed-tools: ["Skill", "Bash", "mcp__claude_ai_Notion__notion-fetch", "mcp__claude_ai_Notion__notion-search", "mcp__atlassian__getAccessibleAtlassianResources", "mcp__atlassian__searchJiraIssuesUsingJql", "mcp__atlassian__getJiraIssue"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Intake: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
Run one batch-intake cycle against the queue identified by `$ARGUMENTS`. Scans for `Status = Ready`, claims each item, and dispatches to the appropriate single-item lifecycle skill.
|
|
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
|
+
The cycle's outer team is created by Intake. Each item it processes (a PRD via `lisa:plan`, a ticket via `lisa:implement`) executes within the same team — those skills' orchestration preambles detect the existing team and skip TeamCreate. One team per cron cycle, processes everything currently Ready.
|
|
18
|
+
|
|
19
|
+
## Source dispatch
|
|
20
|
+
|
|
21
|
+
Detect the queue type from `$ARGUMENTS` and route:
|
|
22
|
+
|
|
23
|
+
| If `$ARGUMENTS` is... | Queue type | Per-item dispatch |
|
|
24
|
+
|------------------------|------------|---------------------|
|
|
25
|
+
| A Notion **database** URL or database ID | PRD queue (Notion) | Invoke `lisa:notion-prd-intake` (which scans the DB for Status=Ready, claims each, runs `lisa:plan` per PRD via the dry-run validate → branch → write pipeline) |
|
|
26
|
+
| A JIRA project key (e.g. `SE`) | Work queue (JIRA) | Invoke `lisa:jira-build-intake` (which scans the project for Status=Ready, claims each via In Progress, runs `lisa:implement` per ticket, transitions to On Dev on success) |
|
|
27
|
+
| A full JQL filter (e.g. `project = SE AND component = "frontend"`) | Work queue (JIRA, narrowed) | Invoke `lisa:jira-build-intake` with the JQL |
|
|
28
|
+
| A Linear / GitHub Issues queue | Not yet implemented | Stop and report — no `linear-tracker` or `github-tracker` adapter has been built. Don't fall back. |
|
|
29
|
+
|
|
30
|
+
The single-item skills (`lisa:plan`, `lisa:implement`) and the per-vendor batch skills (`lisa:notion-prd-intake`, `lisa:jira-build-intake`) are internal — Intake is the public entry point. Developers schedule `/lisa:intake <queue>`; the rest is composition.
|
|
31
|
+
|
|
32
|
+
## Cycle behavior
|
|
33
|
+
|
|
34
|
+
1. **Resolve the queue** — fetch the database/project metadata, confirm the Status property/workflow has the expected `Ready` value.
|
|
35
|
+
2. **Pre-flight check** — for JIRA, confirm `In Progress` and `On Dev` are reachable transitions before doing any per-ticket work. Stop with a clear error if the workflow is misconfigured.
|
|
36
|
+
3. **Find Ready items** — query the queue. Empty → exit cleanly with `"No items with Status=Ready. Nothing to do."` This is the common idle case for a scheduled run.
|
|
37
|
+
4. **Process each Ready item serially** (claim-first ordering for idempotency):
|
|
38
|
+
- Notion PRDs → `lisa:notion-prd-intake` handles per-item: claim, dry-run validate, branch to Blocked or Ticketed, coverage audit
|
|
39
|
+
- JIRA tickets → `lisa:jira-build-intake` handles per-item: claim, dispatch to `lisa:jira-agent`, transition to On Dev on success
|
|
40
|
+
5. **Failure isolation** — one item failing does not stop the cycle; record under "Errors" and continue.
|
|
41
|
+
6. **Summary report** — per-item outcomes, total processed, total errors.
|
|
42
|
+
|
|
43
|
+
## Schedule examples
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
/schedule "every 30 minutes" /lisa:intake https://www.notion.so/<workspace>/<database-id>
|
|
47
|
+
/schedule "every 30 minutes" /lisa:intake SE
|
|
48
|
+
/schedule "every hour" /lisa:intake "project = SE AND component = 'frontend'"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Rules
|
|
52
|
+
|
|
53
|
+
- Never run a cycle without an explicit queue. Side effects too high to default.
|
|
54
|
+
- Never modify the source/destination lifecycles directly — Intake delegates per-item to the vendor adapter, which owns status transitions.
|
|
55
|
+
- Never run two Intake cycles concurrently against overlapping queues — concurrent claims could race. The scheduling layer is responsible for serialization.
|
|
56
|
+
- Stop and surface failures rather than retry-loop.
|
|
@@ -115,6 +115,6 @@ python3 .claude/skills/jira-journey/scripts/parse-plan.py <TICKET_ID>
|
|
|
115
115
|
## When to Use This Skill
|
|
116
116
|
|
|
117
117
|
- Ticket was created before the Validation Journey convention was established
|
|
118
|
-
- Ticket was created manually without following `jira-create` guidelines
|
|
118
|
+
- Ticket was created manually without following `lisa:jira-create` guidelines
|
|
119
119
|
- Ticket needs a journey added or updated based on implementation progress
|
|
120
120
|
- Before starting work on a ticket, to ensure verification steps are documented
|
|
@@ -11,7 +11,7 @@ allowed-tools: ["Skill", "Bash", "mcp__atlassian__getAccessibleAtlassianResource
|
|
|
11
11
|
1. A JIRA project key (e.g. `SE`) — scans that project for `Status = Ready` tickets.
|
|
12
12
|
2. A full JQL filter (e.g. `project = SE AND component = "frontend" AND Status = Ready`) — used as-is. The skill will not append a `Status = Ready` clause if the JQL already names a status, so callers can intentionally widen.
|
|
13
13
|
|
|
14
|
-
Run one build-intake cycle. Each Ready ticket is claimed, built via the `jira-agent` flow, and transitioned to `On Dev` (or the equivalent next-status for that project). The cycle is the symmetric mirror of `notion-prd-intake`: humans flip `Ready`, agents pick up and progress.
|
|
14
|
+
Run one build-intake cycle. Each Ready ticket is claimed, built via the `lisa:jira-agent` flow, and transitioned to `On Dev` (or the equivalent next-status for that project). The cycle is the symmetric mirror of `lisa:notion-prd-intake`: humans flip `Ready`, agents pick up and progress.
|
|
15
15
|
|
|
16
16
|
## Lifecycle assumed
|
|
17
17
|
|
|
@@ -55,28 +55,28 @@ If the transition fails (permission, missing transition, race), log under "Error
|
|
|
55
55
|
|
|
56
56
|
#### 3b. Run the build flow
|
|
57
57
|
|
|
58
|
-
Invoke the `jira-agent` (existing per-ticket lifecycle agent) with the ticket key. `jira-agent` owns:
|
|
59
|
-
- Reading the full ticket graph (`jira-read-ticket`)
|
|
60
|
-
- Running its own pre-flight quality gate (`jira-verify`)
|
|
61
|
-
- Running ticket triage (`ticket-triage`)
|
|
58
|
+
Invoke the `lisa:jira-agent` (existing per-ticket lifecycle agent) with the ticket key. `lisa:jira-agent` owns:
|
|
59
|
+
- Reading the full ticket graph (`lisa:jira-read-ticket`)
|
|
60
|
+
- Running its own pre-flight quality gate (`lisa:jira-verify`)
|
|
61
|
+
- Running ticket triage (`lisa:ticket-triage`)
|
|
62
62
|
- Routing to the appropriate flow (Build / Fix / Investigate / Improve based on type)
|
|
63
|
-
- Posting progress comments via `jira-sync`
|
|
64
|
-
- Posting evidence via `jira-evidence`
|
|
63
|
+
- Posting progress comments via `lisa:jira-sync`
|
|
64
|
+
- Posting evidence via `lisa:jira-evidence`
|
|
65
65
|
|
|
66
|
-
Wait for `jira-agent` to return. Capture its outcome:
|
|
66
|
+
Wait for `lisa:jira-agent` to return. Capture its outcome:
|
|
67
67
|
- **Success** — PR is ready (open or merged); evidence posted; ready for next status.
|
|
68
|
-
- **Blocked by jira-verify pre-flight gate** — `jira-agent` itself transitions the ticket to `Blocked` and reassigns to Reporter. This is correct and expected — let it stand. Record the outcome and move on.
|
|
69
|
-
- **Blocked by ticket-triage ambiguities** — `jira-agent` posts findings and stops. The ticket stays in `In Progress`. Surface to human; do not auto-transition. Record under "Errors" with reason `"Triage found ambiguities — see comments on <ticket-key>"`.
|
|
68
|
+
- **Blocked by jira-verify pre-flight gate** — `lisa:jira-agent` itself transitions the ticket to `Blocked` and reassigns to Reporter. This is correct and expected — let it stand. Record the outcome and move on.
|
|
69
|
+
- **Blocked by ticket-triage ambiguities** — `lisa:jira-agent` posts findings and stops. The ticket stays in `In Progress`. Surface to human; do not auto-transition. Record under "Errors" with reason `"Triage found ambiguities — see comments on <ticket-key>"`.
|
|
70
70
|
- **Errored** — exception, missing config, etc. Leave the ticket in `In Progress` for human investigation. Record under "Errors" with the exception summary.
|
|
71
71
|
|
|
72
72
|
#### 3c. Transition to On Dev (only on Success)
|
|
73
73
|
|
|
74
|
-
If `jira-agent` returned Success:
|
|
74
|
+
If `lisa:jira-agent` returned Success:
|
|
75
75
|
1. Use `getTransitionsForJiraIssue` to find the transition ID for `On Dev` (or the configured next-after-build status).
|
|
76
76
|
2. Transition via `transitionJiraIssue`.
|
|
77
77
|
3. Post a `[claude-build-intake]` comment: `"Build complete. PR <URL>. Transitioned to On Dev."`
|
|
78
78
|
|
|
79
|
-
For any non-Success outcome, do NOT transition. The ticket sits in `In Progress` (or wherever `jira-agent` left it for the Blocked case) — the cycle's job is done; humans take it from there.
|
|
79
|
+
For any non-Success outcome, do NOT transition. The ticket sits in `In Progress` (or wherever `lisa:jira-agent` left it for the Blocked case) — the cycle's job is done; humans take it from there.
|
|
80
80
|
|
|
81
81
|
#### 3d. Continue
|
|
82
82
|
|
|
@@ -106,10 +106,10 @@ Total PRs opened: <n>
|
|
|
106
106
|
|
|
107
107
|
## Idempotency & safety
|
|
108
108
|
|
|
109
|
-
- **Claim-first ordering**: `In Progress` set BEFORE `jira-agent` invocation — no double-pickup.
|
|
110
|
-
- **No writes outside the lifecycle**: this skill only transitions `Ready → In Progress` and `In Progress → On Dev`. Every other status change is owned by `jira-agent` (which suggests transitions but only auto-transitions on the verify-FAIL path).
|
|
109
|
+
- **Claim-first ordering**: `In Progress` set BEFORE `lisa:jira-agent` invocation — no double-pickup.
|
|
110
|
+
- **No writes outside the lifecycle**: this skill only transitions `Ready → In Progress` and `In Progress → On Dev`. Every other status change is owned by `lisa:jira-agent` (which suggests transitions but only auto-transitions on the verify-FAIL path).
|
|
111
111
|
- **Failure isolation**: per-ticket exceptions caught and recorded; the cycle continues.
|
|
112
|
-
- **Single cycle per query**: do not run two `jira-build-intake` cycles in parallel against overlapping queries — concurrent claims could race. The scheduling layer (when added) is responsible for serialization.
|
|
112
|
+
- **Single cycle per query**: do not run two `lisa:jira-build-intake` cycles in parallel against overlapping queries — concurrent claims could race. The scheduling layer (when added) is responsible for serialization.
|
|
113
113
|
- **Never invent a transition**: if `In Progress` or `On Dev` aren't valid transitions in the project's workflow, stop and report rather than guessing alternative names.
|
|
114
114
|
|
|
115
115
|
## Configuration
|
|
@@ -128,7 +128,7 @@ If a `Ready` status does not exist in the JIRA project's workflow, this skill ca
|
|
|
128
128
|
## Rules
|
|
129
129
|
|
|
130
130
|
- Never transition a ticket the cycle didn't claim. The `In Progress` transition is the signature of cycle ownership.
|
|
131
|
-
- Never bypass `jira-agent` to do build work directly. `jira-agent` owns the per-ticket lifecycle (read, verify, triage, route, sync, evidence). This skill is the dispatcher, not the builder.
|
|
131
|
+
- Never bypass `lisa:jira-agent` to do build work directly. `lisa:jira-agent` owns the per-ticket lifecycle (read, verify, triage, route, sync, evidence). This skill is the dispatcher, not the builder.
|
|
132
132
|
- Never auto-transition past `On Dev`. Downstream statuses (`On QA`, `Done`) are owned by QA / product / a future verification-intake skill — not this one.
|
|
133
|
-
- If the ticket has no Validation Journey or no sign-in credentials in its description, `jira-agent`'s pre-flight verify will catch it and transition to `Blocked` — **don't try to fix the ticket from here**. Pre-flight gating is `jira-agent`'s job; running build work on a thin ticket produces broken work.
|
|
134
|
-
- On any unexpected response from `jira-agent` (status it doesn't claim, missing PR URL on success, etc.), record as Error and surface — never assume.
|
|
133
|
+
- If the ticket has no Validation Journey or no sign-in credentials in its description, `lisa:jira-agent`'s pre-flight verify will catch it and transition to `Blocked` — **don't try to fix the ticket from here**. Pre-flight gating is `lisa:jira-agent`'s job; running build work on a thin ticket produces broken work.
|
|
134
|
+
- On any unexpected response from `lisa:jira-agent` (status it doesn't claim, missing PR URL on success, etc.), record as Error and surface — never assume.
|