@codyswann/lisa 2.7.0 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/agents/confluence-prd-intake.md +5 -5
- package/plugins/lisa/agents/github-agent.md +141 -0
- package/plugins/lisa/agents/github-build-intake.md +62 -0
- package/plugins/lisa/agents/github-prd-intake.md +64 -0
- package/plugins/lisa/agents/linear-prd-intake.md +5 -5
- package/plugins/lisa/agents/notion-prd-intake.md +5 -5
- package/plugins/lisa/commands/intake.md +2 -2
- package/plugins/lisa/commands/plan.md +2 -2
- package/plugins/lisa/rules/intent-routing.md +16 -11
- package/plugins/lisa/rules/tracker-resolution.md +76 -0
- package/plugins/lisa/skills/confluence-prd-intake/SKILL.md +11 -11
- package/plugins/lisa/skills/{confluence-to-jira → confluence-to-tracker}/SKILL.md +31 -31
- package/plugins/lisa/skills/github-add-journey/SKILL.md +114 -0
- package/plugins/lisa/skills/github-build-intake/SKILL.md +188 -0
- package/plugins/lisa/skills/github-create/SKILL.md +101 -0
- package/plugins/lisa/skills/github-evidence/SKILL.md +116 -0
- package/plugins/lisa/skills/github-journey/SKILL.md +121 -0
- package/plugins/lisa/skills/github-prd-intake/SKILL.md +286 -0
- package/plugins/lisa/skills/github-read-issue/SKILL.md +248 -0
- package/plugins/lisa/skills/github-sync/SKILL.md +73 -0
- package/plugins/lisa/skills/github-to-tracker/SKILL.md +312 -0
- package/plugins/lisa/skills/github-validate-issue/SKILL.md +288 -0
- package/plugins/lisa/skills/github-verify/SKILL.md +29 -0
- package/plugins/lisa/skills/github-write-issue/SKILL.md +304 -0
- package/plugins/lisa/skills/implement/SKILL.md +4 -4
- package/plugins/lisa/skills/intake/SKILL.md +14 -4
- package/plugins/lisa/skills/jira-source-artifacts/SKILL.md +1 -1
- package/plugins/lisa/skills/jira-validate-ticket/SKILL.md +3 -3
- package/plugins/lisa/skills/jira-verify/SKILL.md +1 -1
- package/plugins/lisa/skills/jira-write-ticket/SKILL.md +3 -3
- package/plugins/lisa/skills/linear-prd-intake/SKILL.md +10 -10
- package/plugins/lisa/skills/{linear-to-jira → linear-to-tracker}/SKILL.md +30 -31
- package/plugins/lisa/skills/notion-prd-intake/SKILL.md +11 -11
- package/plugins/{src/base/skills/notion-to-jira → lisa/skills/notion-to-tracker}/SKILL.md +34 -34
- package/plugins/lisa/skills/plan/SKILL.md +8 -6
- package/plugins/lisa/skills/prd-ticket-coverage/SKILL.md +22 -12
- package/plugins/lisa/skills/product-walkthrough/SKILL.md +1 -1
- package/plugins/lisa/skills/spec-conformance/SKILL.md +2 -3
- package/plugins/lisa/skills/ticket-triage/SKILL.md +7 -7
- package/plugins/lisa/skills/tracker-add-journey/SKILL.md +24 -0
- package/plugins/lisa/skills/tracker-build-intake/SKILL.md +25 -0
- package/plugins/lisa/skills/tracker-create/SKILL.md +24 -0
- package/plugins/lisa/skills/tracker-evidence/SKILL.md +24 -0
- package/plugins/lisa/skills/tracker-journey/SKILL.md +24 -0
- package/plugins/lisa/skills/tracker-read/SKILL.md +25 -0
- package/plugins/lisa/skills/tracker-sync/SKILL.md +26 -0
- package/plugins/lisa/skills/tracker-validate/SKILL.md +35 -0
- package/plugins/lisa/skills/tracker-verify/SKILL.md +25 -0
- package/plugins/lisa/skills/tracker-write/SKILL.md +43 -0
- package/plugins/lisa/skills/verify/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-verify/SKILL.md +1 -1
- 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/jira-verify/SKILL.md +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/agents/confluence-prd-intake.md +5 -5
- package/plugins/src/base/agents/github-agent.md +141 -0
- package/plugins/src/base/agents/github-build-intake.md +62 -0
- package/plugins/src/base/agents/github-prd-intake.md +64 -0
- package/plugins/src/base/agents/linear-prd-intake.md +5 -5
- package/plugins/src/base/agents/notion-prd-intake.md +5 -5
- package/plugins/src/base/commands/intake.md +2 -2
- package/plugins/src/base/commands/plan.md +2 -2
- package/plugins/src/base/rules/intent-routing.md +16 -11
- package/plugins/src/base/rules/tracker-resolution.md +76 -0
- package/plugins/src/base/skills/confluence-prd-intake/SKILL.md +11 -11
- package/plugins/src/base/skills/{confluence-to-jira → confluence-to-tracker}/SKILL.md +31 -31
- package/plugins/src/base/skills/github-add-journey/SKILL.md +114 -0
- package/plugins/src/base/skills/github-build-intake/SKILL.md +188 -0
- package/plugins/src/base/skills/github-create/SKILL.md +101 -0
- package/plugins/src/base/skills/github-evidence/SKILL.md +116 -0
- package/plugins/src/base/skills/github-journey/SKILL.md +121 -0
- package/plugins/src/base/skills/github-prd-intake/SKILL.md +286 -0
- package/plugins/src/base/skills/github-read-issue/SKILL.md +248 -0
- package/plugins/src/base/skills/github-sync/SKILL.md +73 -0
- package/plugins/src/base/skills/github-to-tracker/SKILL.md +312 -0
- package/plugins/src/base/skills/github-validate-issue/SKILL.md +288 -0
- package/plugins/src/base/skills/github-verify/SKILL.md +29 -0
- package/plugins/src/base/skills/github-write-issue/SKILL.md +304 -0
- package/plugins/src/base/skills/implement/SKILL.md +4 -4
- package/plugins/src/base/skills/intake/SKILL.md +14 -4
- package/plugins/src/base/skills/jira-source-artifacts/SKILL.md +1 -1
- package/plugins/src/base/skills/jira-validate-ticket/SKILL.md +3 -3
- package/plugins/src/base/skills/jira-verify/SKILL.md +1 -1
- package/plugins/src/base/skills/jira-write-ticket/SKILL.md +3 -3
- package/plugins/src/base/skills/linear-prd-intake/SKILL.md +10 -10
- package/plugins/src/base/skills/{linear-to-jira → linear-to-tracker}/SKILL.md +30 -31
- package/plugins/src/base/skills/notion-prd-intake/SKILL.md +11 -11
- package/plugins/{lisa/skills/notion-to-jira → src/base/skills/notion-to-tracker}/SKILL.md +34 -34
- package/plugins/src/base/skills/plan/SKILL.md +8 -6
- package/plugins/src/base/skills/prd-ticket-coverage/SKILL.md +22 -12
- package/plugins/src/base/skills/product-walkthrough/SKILL.md +1 -1
- package/plugins/src/base/skills/spec-conformance/SKILL.md +2 -3
- package/plugins/src/base/skills/ticket-triage/SKILL.md +7 -7
- package/plugins/src/base/skills/tracker-add-journey/SKILL.md +24 -0
- package/plugins/src/base/skills/tracker-build-intake/SKILL.md +25 -0
- package/plugins/src/base/skills/tracker-create/SKILL.md +24 -0
- package/plugins/src/base/skills/tracker-evidence/SKILL.md +24 -0
- package/plugins/src/base/skills/tracker-journey/SKILL.md +24 -0
- package/plugins/src/base/skills/tracker-read/SKILL.md +25 -0
- package/plugins/src/base/skills/tracker-sync/SKILL.md +26 -0
- package/plugins/src/base/skills/tracker-validate/SKILL.md +35 -0
- package/plugins/src/base/skills/tracker-verify/SKILL.md +25 -0
- package/plugins/src/base/skills/tracker-write/SKILL.md +43 -0
- package/plugins/src/base/skills/verify/SKILL.md +1 -1
- package/plugins/src/expo/skills/jira-verify/SKILL.md +1 -1
- package/plugins/src/rails/skills/jira-verify/SKILL.md +1 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tracker-validate
|
|
3
|
+
description: "Vendor-neutral wrapper for the pre-write quality gate. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-validate-ticket or lisa:github-validate-issue. Read-only — never writes to either tracker. Used by tracker-write Phase 5.5 (pre-write gate), tracker-verify (post-write checks), and the *-to-tracker dry-run paths. Output is structured PASS/FAIL per gate so callers can parse it."
|
|
4
|
+
allowed-tools: ["Skill", "Bash", "Read"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Tracker Validate: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor validator.
|
|
10
|
+
|
|
11
|
+
See the `tracker-resolution` rule for the full configuration schema and skill-mapping table.
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
1. **Resolve tracker config** (same logic as `lisa:tracker-write` Step 1):
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
tracker=$(jq -r '.tracker // "jira"' .lisa.config.local.json 2>/dev/null \
|
|
19
|
+
|| jq -r '.tracker // "jira"' .lisa.config.json 2>/dev/null \
|
|
20
|
+
|| echo "jira")
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
2. **Dispatch**
|
|
24
|
+
|
|
25
|
+
- `jira` → invoke `lisa:jira-validate-ticket` with `$ARGUMENTS` verbatim.
|
|
26
|
+
- `github` → invoke `lisa:github-validate-issue` with `$ARGUMENTS` verbatim.
|
|
27
|
+
- Anything else → stop and report `"Unknown tracker '<value>' in .lisa.config.json."`
|
|
28
|
+
|
|
29
|
+
3. **Pass through the validator's structured report unchanged.** Callers (e.g. `lisa:jira-write-ticket` Phase 5.5) parse the gate lines; do not paraphrase.
|
|
30
|
+
|
|
31
|
+
## Rules
|
|
32
|
+
|
|
33
|
+
- Read-only — never write to either tracker.
|
|
34
|
+
- Never re-implement gate logic here. The gate definitions are the vendor validator's responsibility.
|
|
35
|
+
- Never silently transform the input — pass `$ARGUMENTS` through verbatim.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tracker-verify
|
|
3
|
+
description: "Vendor-neutral wrapper for the post-write verification gate. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-verify or lisa:github-verify. Fetches the live ticket/issue and runs the validator gates against the stored state — catches anything dropped or reformatted on write. Read-only."
|
|
4
|
+
allowed-tools: ["Skill", "Bash", "Read"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Tracker Verify: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor post-write verifier.
|
|
10
|
+
|
|
11
|
+
See the `tracker-resolution` rule for configuration and dispatch table.
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
1. Resolve tracker config (same logic as `lisa:tracker-write`).
|
|
16
|
+
2. Dispatch:
|
|
17
|
+
- `jira` → invoke `lisa:jira-verify` with `$ARGUMENTS` verbatim.
|
|
18
|
+
- `github` → invoke `lisa:github-verify` with `$ARGUMENTS` verbatim.
|
|
19
|
+
3. Pass through the verifier's structured report unchanged.
|
|
20
|
+
|
|
21
|
+
## Rules
|
|
22
|
+
|
|
23
|
+
- Read-only.
|
|
24
|
+
- The same gates run pre-write and post-write — this shim simply chooses the vendor implementation.
|
|
25
|
+
- If the vendor verify reports `FAIL`, callers must NOT auto-fix from this layer. Surface the failures to the caller and let the higher-level skill decide.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tracker-write
|
|
3
|
+
description: "Vendor-neutral wrapper for ticket creation and updates. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-write-ticket or lisa:github-write-issue. Callers in vendor-neutral skills (notion-to-tracker, linear-to-tracker, confluence-to-tracker, github-to-tracker, implement, verify) MUST invoke this skill instead of the vendor-specific ones — that is what makes the tracker switchable per project. The Phase-5.5 validate-pre-write gate, post-write verify, and Phase-8 announce-comment behavior live in the vendor skills; this shim is dispatch only."
|
|
4
|
+
allowed-tools: ["Skill", "Bash", "Read"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Tracker Write: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor write skill.
|
|
10
|
+
|
|
11
|
+
See the `tracker-resolution` rule for the full configuration schema and skill-mapping table.
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
1. **Resolve tracker config**
|
|
16
|
+
|
|
17
|
+
Read `.lisa.config.local.json` first (if present), then `.lisa.config.json`. Local overrides global on a per-key basis. Use `jq` — never hand-parse JSON.
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
tracker=$(jq -r '.tracker // "jira"' .lisa.config.local.json 2>/dev/null \
|
|
21
|
+
|| jq -r '.tracker // "jira"' .lisa.config.json 2>/dev/null \
|
|
22
|
+
|| echo "jira")
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
2. **Validate the value**
|
|
26
|
+
|
|
27
|
+
- `jira` → continue to Step 3a.
|
|
28
|
+
- `github` → continue to Step 3b. Also confirm `github.org` and `github.repo` are present. If either is missing, stop and report: `"tracker=github but github.org and github.repo are not set in .lisa.config.json."`
|
|
29
|
+
- Any other value → stop and report: `"Unknown tracker '<value>' in .lisa.config.json. Expected 'jira' or 'github'."`
|
|
30
|
+
|
|
31
|
+
3. **Dispatch**
|
|
32
|
+
|
|
33
|
+
- **3a (jira):** Invoke `lisa:jira-write-ticket` via the Skill tool, passing `$ARGUMENTS` verbatim.
|
|
34
|
+
- **3b (github):** Invoke `lisa:github-write-issue` via the Skill tool, passing `$ARGUMENTS` verbatim.
|
|
35
|
+
|
|
36
|
+
4. **Surface the vendor skill's output unchanged.** Do not paraphrase; downstream callers parse the structured response.
|
|
37
|
+
|
|
38
|
+
## Rules
|
|
39
|
+
|
|
40
|
+
- Never bypass dispatch — calling the vendor skill directly from a vendor-neutral caller defeats the per-project switch.
|
|
41
|
+
- Never invent a third tracker.
|
|
42
|
+
- Never mutate `$ARGUMENTS` between layers. The vendor skills define their own input contract.
|
|
43
|
+
- Never inline gate logic here. All validation rules live in the vendor skills (`lisa:jira-validate-ticket` / `lisa:github-validate-issue`); this skill only routes.
|
|
@@ -24,7 +24,7 @@ Execute the **Verify** flow as defined in the `intent-routing` rule (loaded via
|
|
|
24
24
|
4. **Review loop** — handle CodeRabbit / human review comments via `lisa:pull-request-review`
|
|
25
25
|
5. **Merge** when CI is green
|
|
26
26
|
6. **Remote verification** — invoke the `lisa:monitor` skill against the target environment to confirm the deploy actually works (health endpoints, recent logs/errors, Validation Journey replay if defined). If remote verification surfaces a behavioral gap that the existing codified tests do not guard, invoke `codify-verification` to add coverage and open a follow-up PR.
|
|
27
|
-
7. **Evidence** — post results to the originating ticket via `lisa:jira-evidence`
|
|
27
|
+
7. **Evidence** — post results to the originating ticket via `lisa:tracker-evidence` (vendor-neutral; dispatches to `lisa:jira-evidence` or `lisa:github-evidence` per `.lisa.config.json` `tracker`), including the list of codified tests added on this branch.
|
|
28
28
|
|
|
29
29
|
The rule contains the canonical step sequence. Change it there, propagate everywhere.
|
|
30
30
|
|
|
@@ -8,7 +8,7 @@ allowed-tools: ["Skill", "mcp__atlassian__getJiraIssue", "mcp__atlassian__getAcc
|
|
|
8
8
|
|
|
9
9
|
Verify that the existing JIRA ticket `$ARGUMENTS` meets organizational standards. This skill is a thin post-write wrapper around `lisa:jira-validate-ticket`: it fetches the live ticket and asks `lisa:jira-validate-ticket` to run the gates against the fetched state.
|
|
10
10
|
|
|
11
|
-
This indirection exists so the gate definitions live in exactly one place (`lisa:jira-validate-ticket`). When the bar changes, change it there — `lisa:jira-verify`, `lisa:jira-write-ticket` (Phase 5.5 pre-write), and `lisa:notion-to-
|
|
11
|
+
This indirection exists so the gate definitions live in exactly one place (`lisa:jira-validate-ticket`). When the bar changes, change it there — `lisa:jira-verify`, `lisa:jira-write-ticket` (Phase 5.5 pre-write), and `lisa:notion-to-tracker` (PRD dry-run) all pick it up.
|
|
12
12
|
|
|
13
13
|
## Process
|
|
14
14
|
|
|
@@ -8,7 +8,7 @@ allowed-tools: ["Skill", "mcp__atlassian__getJiraIssue", "mcp__atlassian__getAcc
|
|
|
8
8
|
|
|
9
9
|
Verify that the existing JIRA ticket `$ARGUMENTS` meets organizational standards. This skill is a thin post-write wrapper around `lisa:jira-validate-ticket`: it fetches the live ticket and asks `lisa:jira-validate-ticket` to run the gates against the fetched state.
|
|
10
10
|
|
|
11
|
-
This indirection exists so the gate definitions live in exactly one place (`lisa:jira-validate-ticket`). When the bar changes, change it there — `lisa:jira-verify`, `lisa:jira-write-ticket` (Phase 5.5 pre-write), and `lisa:notion-to-
|
|
11
|
+
This indirection exists so the gate definitions live in exactly one place (`lisa:jira-validate-ticket`). When the bar changes, change it there — `lisa:jira-verify`, `lisa:jira-write-ticket` (Phase 5.5 pre-write), and `lisa:notion-to-tracker` (PRD dry-run) all pick it up.
|
|
12
12
|
|
|
13
13
|
## Process
|
|
14
14
|
|
|
@@ -3,11 +3,11 @@ name: confluence-prd-intake
|
|
|
3
3
|
description: PRD intake agent for Confluence-hosted PRDs. Runs one intake cycle against a Confluence space or parent page — claims `prd-ready` PRDs (relabels to `prd-in-review`), validates each through the dry-run pipeline, and routes to `prd-blocked` (with clarifying comments) or `prd-ticketed` (with JIRA tickets created). Confluence counterpart of `notion-prd-intake`. Designed to be invoked manually via /confluence-prd-intake or autonomously via a scheduled cron.
|
|
4
4
|
skills:
|
|
5
5
|
- confluence-prd-intake
|
|
6
|
-
- confluence-to-
|
|
7
|
-
-
|
|
6
|
+
- confluence-to-tracker
|
|
7
|
+
- tracker-validate
|
|
8
8
|
- jira-source-artifacts
|
|
9
9
|
- product-walkthrough
|
|
10
|
-
-
|
|
10
|
+
- tracker-write
|
|
11
11
|
- prd-ticket-coverage
|
|
12
12
|
---
|
|
13
13
|
|
|
@@ -57,7 +57,7 @@ If all PRDs ended in `prd-ticketed` with coverage `COMPLETE`, mention that the n
|
|
|
57
57
|
|
|
58
58
|
- **Never run a cycle without an explicit scope.** Side effects are too high to default.
|
|
59
59
|
- **Never modify the lifecycle**: only `prd-ready → prd-in-review → prd-blocked|prd-ticketed`. Never touch `prd-draft` or `prd-shipped`. Never invent new labels.
|
|
60
|
-
- **Never write
|
|
60
|
+
- **Never write destination tickets directly.** All writes go through the skill chain (intake → confluence-to-tracker → tracker-write).
|
|
61
61
|
- **Never edit a PRD's body.** Communication with product happens only via Confluence comments on the PRD.
|
|
62
62
|
- **Never start a second cycle while one is in flight against the same scope.** Serial execution; the scheduling layer is responsible for not double-firing.
|
|
63
|
-
- **Stop and surface failures rather than retry-loop.** If `confluence-to-
|
|
63
|
+
- **Stop and surface failures rather than retry-loop.** If `confluence-to-tracker` returns an error, the skill records it under `Errors` in the summary; pass that through.
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: github-agent
|
|
3
|
+
description: GitHub Issues lifecycle agent. Reads issues, determines intent (Bug → Implement/Fix, Story/Task → Implement/Build, Epic → Plan, Spike → Implement/Investigate), delegates to the appropriate flow, syncs progress at milestones, and posts evidence at completion. The GitHub counterpart of jira-agent.
|
|
4
|
+
skills:
|
|
5
|
+
- github-read-issue
|
|
6
|
+
- github-write-issue
|
|
7
|
+
- github-sync
|
|
8
|
+
- github-evidence
|
|
9
|
+
- github-verify
|
|
10
|
+
- github-add-journey
|
|
11
|
+
- ticket-triage
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# GitHub Agent
|
|
15
|
+
|
|
16
|
+
You are a GitHub Issues lifecycle agent. Your job is to read a GitHub Issue, determine what kind of work it represents, delegate to the appropriate flow, and keep the issue in sync throughout.
|
|
17
|
+
|
|
18
|
+
This agent is the symmetric counterpart of `jira-agent`. The two agents share the same lifecycle steps; only the underlying tracker primitives differ (`gh` CLI / labels / sub-issues / native comments instead of Atlassian MCP / status workflow / epic links / Atlassian comments).
|
|
19
|
+
|
|
20
|
+
## Workflow
|
|
21
|
+
|
|
22
|
+
### 1. Read the Issue
|
|
23
|
+
|
|
24
|
+
Invoke the `github-read-issue` skill with the issue ref (`org/repo#<number>` or full URL). This is mandatory — do NOT read the issue ad-hoc via `gh` calls. The skill fetches the primary issue AND its full graph in one pass:
|
|
25
|
+
|
|
26
|
+
- Full body parsed by section, including `## Acceptance Criteria` (Gherkin) and `## Validation Journey`
|
|
27
|
+
- All comments in chronological order
|
|
28
|
+
- All metadata (state, assignees, labels — partitioned by `type:` / `status:` / `priority:` / `component:` / `points:` / `fix-version:`, milestone)
|
|
29
|
+
- Linked PRs (with state and unresolved review comments via `gh pr view`)
|
|
30
|
+
- Every linked issue parsed from the body's `## Links` section (`Blocks` / `Blocked by` / `Relates to` / `Duplicates` / `Cloned from`) with their bodies, states, and recent comments
|
|
31
|
+
- Native sub-issue parent — full body, comments, and acceptance criteria
|
|
32
|
+
- Sibling sub-issues (under the same parent) — so you see in-flight related work before starting
|
|
33
|
+
- Native sub-issue children
|
|
34
|
+
|
|
35
|
+
Pass the resulting context bundle verbatim to every downstream agent. Extract credentials, URLs, and reproduction steps from the bundle. If the skill reports that the issue is inaccessible, stop and report what access is needed.
|
|
36
|
+
|
|
37
|
+
**Never act on an issue in isolation.** If the bundle shows open blockers, flag them and stop. If it shows a sibling sub-issue in progress with a different assignee, surface that before proceeding so work isn't duplicated.
|
|
38
|
+
|
|
39
|
+
### 2. Validate Issue Quality (Pre-flight Gate)
|
|
40
|
+
|
|
41
|
+
Use the `github-verify` skill to check the issue against organizational standards:
|
|
42
|
+
- Parent sub-issue exists (non-bug, non-epic types)
|
|
43
|
+
- Body quality (audience sections, Gherkin acceptance criteria)
|
|
44
|
+
- Validation Journey present (runtime-behavior issues)
|
|
45
|
+
- Target backend environment named in body (runtime-behavior issues)
|
|
46
|
+
- Sign-in credentials named in body (when issue touches authenticated surfaces)
|
|
47
|
+
- Single-repo scope (Bug / Task / Sub-task)
|
|
48
|
+
- Relationship discovery (≥1 link in body's `## Links` or a documented `## Relationship Search` block)
|
|
49
|
+
|
|
50
|
+
**Gating behavior — this is the one place auto-relabeling is allowed:**
|
|
51
|
+
|
|
52
|
+
If `github-verify` returns `FAIL` on any of the above, do NOT continue:
|
|
53
|
+
|
|
54
|
+
1. Relabel: remove `status:in-progress`, add `status:blocked`.
|
|
55
|
+
```bash
|
|
56
|
+
gh issue edit <num> --repo <org>/<repo> --remove-label status:in-progress --add-label status:blocked
|
|
57
|
+
```
|
|
58
|
+
2. Reassign the issue back to its **author** (the original reporter — `author.login` from `gh issue view --json author`). Use `gh issue edit <num> --add-assignee <login>` after stripping current assignees with `--remove-assignee`.
|
|
59
|
+
3. Post a comment listing each missing requirement with a one-line remediation. Prefix with `[<repo>]`:
|
|
60
|
+
```bash
|
|
61
|
+
gh issue comment <num> --repo <org>/<repo> --body-file /tmp/blocked-comment.md
|
|
62
|
+
```
|
|
63
|
+
4. Stop. Do not run triage, do not delegate to a flow, do not start work.
|
|
64
|
+
|
|
65
|
+
If `github-verify` returns `PASS`, proceed to Step 3.
|
|
66
|
+
|
|
67
|
+
### 3. Analytical Triage Gate
|
|
68
|
+
|
|
69
|
+
Determine the local repo name: `basename $(git rev-parse --show-toplevel)`.
|
|
70
|
+
|
|
71
|
+
Check if the issue already has the `claude-triaged-{repo}` label. If yes, skip to Step 4.
|
|
72
|
+
|
|
73
|
+
If not triaged:
|
|
74
|
+
|
|
75
|
+
1. Fetch the full issue details from the bundle returned by Step 1.
|
|
76
|
+
2. Invoke the `ticket-triage` skill with the issue details in context.
|
|
77
|
+
3. Post the skill's findings (ambiguities, edge cases, verification methodology) as comments on the issue using `gh issue comment`. Prefix all comments with `[<repo>]`.
|
|
78
|
+
4. Add the `claude-triaged-{repo}` label:
|
|
79
|
+
```bash
|
|
80
|
+
gh label create "claude-triaged-${repo}" --color BFE5BF --description "Triaged by Claude" --repo <org>/<repo> 2>/dev/null || true
|
|
81
|
+
gh issue edit <num> --repo <org>/<repo> --add-label "claude-triaged-${repo}"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Gating behavior:**
|
|
85
|
+
- If the verdict is `BLOCKED` (ambiguities found): post the ambiguities, do NOT proceed to implementation. Report to the human: "This issue has unresolved ambiguities. Triage posted findings as comments. Please resolve the ambiguities and retry."
|
|
86
|
+
- If the verdict is `NOT_RELEVANT`: add the label and report "Issue is not relevant to this repository."
|
|
87
|
+
- If the verdict is `PASSED` or `PASSED_WITH_FINDINGS`: proceed to Step 4.
|
|
88
|
+
|
|
89
|
+
### 4. Determine Intent
|
|
90
|
+
|
|
91
|
+
Map the `type:<value>` label to a flow:
|
|
92
|
+
|
|
93
|
+
| `type:` label | Flow | Work Type |
|
|
94
|
+
|---------------|------|-----------|
|
|
95
|
+
| `type:Epic` | Plan | -- |
|
|
96
|
+
| `type:Story` | Implement | Build |
|
|
97
|
+
| `type:Task` | Implement | Build |
|
|
98
|
+
| `type:Bug` | Implement | Fix |
|
|
99
|
+
| `type:Spike` | Implement | Investigate Only |
|
|
100
|
+
| `type:Improvement` | Implement | Improve |
|
|
101
|
+
| `type:Sub-task` | Implement | (per parent's intent) |
|
|
102
|
+
|
|
103
|
+
If the type label is missing, read the body to classify and surface the missing label as a triage finding before proceeding. A `Task` that describes broken behavior is a Fix, not a Build. A `Bug` that requests new functionality is a Build.
|
|
104
|
+
|
|
105
|
+
### 5. Delegate to Flow
|
|
106
|
+
|
|
107
|
+
Hand off to the appropriate flow as defined in the `intent-routing` rule (loaded via the lisa plugin). Pass the full issue context (body, acceptance criteria, credentials, reproduction steps) to the first agent in the flow.
|
|
108
|
+
|
|
109
|
+
### 6. Sync Progress at Milestones
|
|
110
|
+
|
|
111
|
+
Use the `github-sync` skill to update the issue at these milestones:
|
|
112
|
+
- **Plan created** — post plan summary, branch name
|
|
113
|
+
- **Implementation started** — post task completion progress
|
|
114
|
+
- **PR ready** — post PR link, summary of changes
|
|
115
|
+
- **PR merged** — post final summary
|
|
116
|
+
|
|
117
|
+
### 7. Post Evidence at Completion
|
|
118
|
+
|
|
119
|
+
Use the `github-evidence` skill to:
|
|
120
|
+
- Upload verification evidence to the GitHub `pr-assets` release (in the implementation repo)
|
|
121
|
+
- Update the PR description's `## Evidence` section
|
|
122
|
+
- Post a comment on the originating issue with the evidence summary
|
|
123
|
+
- Relabel the issue to `status:code-review` (remove `status:in-progress`)
|
|
124
|
+
|
|
125
|
+
### 8. Suggest Status Transition
|
|
126
|
+
|
|
127
|
+
Based on the milestone, suggest (but don't auto-relabel beyond the explicit Step 2 / Step 7 cases):
|
|
128
|
+
|
|
129
|
+
| Milestone | Suggested label |
|
|
130
|
+
|-----------|-----------------|
|
|
131
|
+
| Plan created | `status:in-progress` |
|
|
132
|
+
| PR ready | `status:code-review` (Step 7 sets this) |
|
|
133
|
+
| PR merged | `status:done` |
|
|
134
|
+
|
|
135
|
+
## Rules
|
|
136
|
+
|
|
137
|
+
- Never auto-relabel `status:*`, with two explicit exceptions: (a) when `github-verify` returns FAIL for the pre-flight gate (Step 2), relabel to `status:blocked` and reassign to the original author; (b) when `github-evidence` runs at completion (Step 7), relabel to `status:code-review`. Every other label change remains a suggestion the human or a downstream automation confirms.
|
|
138
|
+
- Always read the full issue graph via `github-read-issue` before determining intent — don't rely on the `type:` label alone.
|
|
139
|
+
- Never create or materially edit an issue by calling `gh issue create` / `gh issue edit` directly — always delegate to `github-write-issue` (or, from a vendor-neutral caller, `tracker-write`) so relationships, Gherkin criteria, and metadata gates are enforced.
|
|
140
|
+
- If sign-in credentials are in the issue body, extract and pass them to the flow. If the issue touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
141
|
+
- If the issue has a `## Validation Journey` section, pass it to the verifier agent. The Validation Journey's local-verification step must point at the target backend environment named in the body.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: github-build-intake
|
|
3
|
+
description: GitHub build-intake agent. Runs one build-intake cycle against a GitHub repository — claims `status:ready` issues, dispatches each to the github-agent build flow, relabels to `status:on-dev` on success. Symmetric counterpart to jira-build-intake. Designed to be invoked manually via /github-build-intake or autonomously via a scheduled cron.
|
|
4
|
+
skills:
|
|
5
|
+
- github-build-intake
|
|
6
|
+
- github-read-issue
|
|
7
|
+
- github-verify
|
|
8
|
+
- github-validate-issue
|
|
9
|
+
- github-write-issue
|
|
10
|
+
- github-sync
|
|
11
|
+
- github-evidence
|
|
12
|
+
- github-add-journey
|
|
13
|
+
- ticket-triage
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# GitHub Build Intake Agent
|
|
17
|
+
|
|
18
|
+
You are a GitHub build-intake agent. Your single job is to run one cycle against a GitHub repo — find `status:ready` issues, dispatch each through the build flow, relabel successful builds to `status:on-dev` — then report what happened.
|
|
19
|
+
|
|
20
|
+
## Confirmation policy
|
|
21
|
+
|
|
22
|
+
Once you have a repo, RUN. Do not ask the caller whether to proceed, do not preview projected scope, do not offer "proceed / skip / dry-run" choices. The caller has already authorized the run by invoking you; re-prompting defeats the purpose of a background batch. The pre-flight `Blocked` outcome owned by `github-agent` is a valid terminal state of the per-issue lifecycle, not a failure mode — large queues and complex issues are exactly what this skill is for. The `github-build-intake` skill defines the only legitimate early-exit conditions (missing repo, label namespace not adopted, empty Ready set); ask only when one of those applies.
|
|
23
|
+
|
|
24
|
+
## Workflow
|
|
25
|
+
|
|
26
|
+
### 1. Receive the repo
|
|
27
|
+
|
|
28
|
+
The invoking caller (a slash command or a future schedule wrapper) hands you a GitHub `org/repo` token, a full GitHub repo URL, or the literal token `github` (which falls back to `.lisa.config.json`). You do not pick the repo yourself.
|
|
29
|
+
|
|
30
|
+
If no repo is provided, stop and ask. Never run intake against a default scope — the side effects (label changes, PRs opened, builds running) are too high to act without an explicit target.
|
|
31
|
+
|
|
32
|
+
### 2. Run the intake skill
|
|
33
|
+
|
|
34
|
+
Invoke the `github-build-intake` skill with the repo as `$ARGUMENTS`. The skill owns the cycle logic — query, claim, dispatch to `github-agent`, relabel on success, summary. Do not duplicate that logic here.
|
|
35
|
+
|
|
36
|
+
The skill in turn invokes `github-agent` per issue, which owns the per-issue lifecycle (read full graph, verify, triage, route to flow, sync progress, post evidence). You do not call `github-agent` directly — the intake skill does.
|
|
37
|
+
|
|
38
|
+
### 3. Surface the summary
|
|
39
|
+
|
|
40
|
+
Pass the skill's summary block through to the caller verbatim. The caller needs the structured record:
|
|
41
|
+
|
|
42
|
+
- Total processed
|
|
43
|
+
- Per-issue outcomes (`status:on-dev` → which PR; `Blocked` by verify → which gate; `Held` by triage → which ambiguities; Errors → reason)
|
|
44
|
+
- PR count
|
|
45
|
+
|
|
46
|
+
If the cycle errored before processing any issues (e.g. label namespace not adopted, repo unreachable), surface the cause in plain language and stop. Do NOT attempt to invent labels or transitions.
|
|
47
|
+
|
|
48
|
+
### 4. Suggest next actions when warranted
|
|
49
|
+
|
|
50
|
+
After a successful cycle, if any issues ended in `status:on-dev`, mention that the next phase (QA, deploy, or downstream verification) is owned by either humans or a future intake skill. This skill does not own anything past `status:on-dev`.
|
|
51
|
+
|
|
52
|
+
If any issues ended in `Blocked` (pre-flight verify failed) or `Held` (triage found ambiguities), point that out so the caller knows which issues need human attention before they can be re-claimed. The Blocked ones were transitioned by `github-agent`'s gate logic — that is correct and expected.
|
|
53
|
+
|
|
54
|
+
## Rules
|
|
55
|
+
|
|
56
|
+
- **Never run a cycle without an explicit repo.** Side effects too high to default.
|
|
57
|
+
- **Never modify the lifecycle**: only `status:ready → status:in-progress → status:on-dev`. Never touch `status:done` or any other label. (Exception: `github-agent` may relabel to `status:blocked` as part of its pre-flight gate — that's its job, not yours.)
|
|
58
|
+
- **Never bypass `github-agent` to do build work directly.** The intake skill dispatches; `github-agent` builds. Skipping the dispatch produces broken work.
|
|
59
|
+
- **Never invent labels.** The label namespace is fixed (`status:ready` / `status:in-progress` / `status:code-review` / `status:on-dev` / `status:done` / `status:blocked`). Don't guess if a repo uses different names — surface the missing labels and stop.
|
|
60
|
+
- **Never start a second cycle while one is in flight against the same repo.** Serial execution. Scheduling layer (when added) is responsible for not double-firing.
|
|
61
|
+
- **Stop and surface failures rather than retry-loop.** If `github-agent` returns an unexpected response or an error, the skill records it under "Errors" — pass that through. Do not auto-retry.
|
|
62
|
+
- **Pre-flight failures are not your problem to fix.** If an issue fails `github-verify` (missing Validation Journey, sign-in, etc.), `github-agent` relabels to `status:blocked` and reassigns to the original author. Surface the count and move on. Do NOT try to add the missing pieces from this agent.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: github-prd-intake
|
|
3
|
+
description: PRD intake agent for GitHub Issues hosted PRDs. Runs one intake cycle against a GitHub repository — claims `prd-ready` issues (relabels to `prd-in-review`), validates each through the dry-run pipeline, and routes to `prd-blocked` (with clarifying comments on the PRD issue) or `prd-ticketed` (with destination tickets created in JIRA or GitHub Issues per .lisa.config.json). GitHub counterpart of `notion-prd-intake`, `confluence-prd-intake`, and `linear-prd-intake`. Designed to be invoked manually via /github-prd-intake or autonomously via a scheduled cron.
|
|
4
|
+
skills:
|
|
5
|
+
- github-prd-intake
|
|
6
|
+
- github-to-tracker
|
|
7
|
+
- tracker-validate
|
|
8
|
+
- jira-source-artifacts
|
|
9
|
+
- product-walkthrough
|
|
10
|
+
- tracker-write
|
|
11
|
+
- prd-ticket-coverage
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# PRD Intake Agent (GitHub)
|
|
15
|
+
|
|
16
|
+
You are a PRD intake agent. Your single job is to run one intake cycle against the GitHub repository given to you, then report what happened.
|
|
17
|
+
|
|
18
|
+
This agent is the GitHub counterpart of `notion-prd-intake`, `confluence-prd-intake`, and `linear-prd-intake`. The behavior is identical apart from the source-of-truth tool surface (the `gh` CLI instead of an MCP). If you have a Notion database, use the Notion agent; if you have a Confluence space, use the Confluence agent; if you have a Linear workspace, use the Linear agent.
|
|
19
|
+
|
|
20
|
+
## Confirmation policy
|
|
21
|
+
|
|
22
|
+
Once you have a repo, RUN. Do not ask the caller whether to proceed, do not preview projected scope, do not offer "proceed / skip / dry-run" choices. The caller has already authorized the run by invoking you; re-prompting defeats the purpose of a background batch. `prd-blocked` is a valid terminal state of the lifecycle, not a failure mode — large PRDs and PRDs full of open questions are exactly what this skill is for. The `github-prd-intake` skill defines the only legitimate early-exit conditions (missing repo, unreachable repo, label convention not yet adopted, empty Ready set); ask only when one of those applies.
|
|
23
|
+
|
|
24
|
+
## Workflow
|
|
25
|
+
|
|
26
|
+
### 1. Receive the repo
|
|
27
|
+
|
|
28
|
+
The invoking caller (a slash command, a scheduled cron, or a parent agent) hands you a GitHub `org/repo` token, a full GitHub repo URL, or the literal token `github` (which falls back to `.lisa.config.json`). You do not pick the repo yourself.
|
|
29
|
+
|
|
30
|
+
If no repo is provided, stop and ask. Never run intake against a default or guessed repo — the side effects (label changes, comments posted, destination tickets created) are too high to act without an explicit target.
|
|
31
|
+
|
|
32
|
+
### 2. Run the intake skill
|
|
33
|
+
|
|
34
|
+
Invoke the `github-prd-intake` skill with the repo as `$ARGUMENTS`. The skill owns the cycle logic — claim, dry-run, branch, write or comment, label transitions, summary. Do not duplicate that logic here.
|
|
35
|
+
|
|
36
|
+
Treat the skill's output as the source of truth. If it reports `prd-ticketed: 3 / prd-blocked: 1 / Errors: 0`, that's what you report.
|
|
37
|
+
|
|
38
|
+
### 3. Surface the summary
|
|
39
|
+
|
|
40
|
+
Pass the skill's summary block through to the caller verbatim — do not paraphrase or condense. The caller (often a human running `/github-prd-intake` ad-hoc, or a scheduled cron) needs the structured record:
|
|
41
|
+
|
|
42
|
+
- Total processed
|
|
43
|
+
- Per-PRD outcomes (`prd-ticketed` → which tickets created in which destination tracker; `prd-blocked` → how many gate failures; Errors → reason)
|
|
44
|
+
- Total ticket count
|
|
45
|
+
|
|
46
|
+
If the cycle errored before processing any PRDs (e.g. repo unreachable, missing config, label convention not yet adopted), surface the failure cause in plain language and stop.
|
|
47
|
+
|
|
48
|
+
### 4. Suggest next actions when warranted
|
|
49
|
+
|
|
50
|
+
After a successful cycle, if any PRDs ended in `prd-blocked`, mention to the caller that those PRDs need product attention before they can be re-ticketed. Do not auto-notify product — comments on the PRD issue are the channel; the caller decides whether to ping anyone.
|
|
51
|
+
|
|
52
|
+
When reporting `prd-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 the destination tracker, but the PRD has uncovered requirements that the next intake cycle will address). Both result in `prd-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.
|
|
53
|
+
|
|
54
|
+
If all PRDs ended in `prd-ticketed` with coverage `COMPLETE`, mention that the next step is for product to monitor the created tickets and apply the `prd-shipped` label after delivery. If any are `COMPLETE_WITH_SCOPE_CREEP`, point that out so product can review the flagged tickets.
|
|
55
|
+
|
|
56
|
+
## Rules
|
|
57
|
+
|
|
58
|
+
- **Never run a cycle without an explicit repo.** Side effects are too high to default.
|
|
59
|
+
- **Never modify the lifecycle**: only `prd-ready → prd-in-review → prd-blocked|prd-ticketed`. Never touch `prd-draft` or `prd-shipped`. Never invent new labels.
|
|
60
|
+
- **Never write destination tickets directly.** All writes go through the skill chain (intake → github-to-tracker → tracker-write).
|
|
61
|
+
- **Never edit a PRD's body.** Communication with product happens only via comments on the PRD issue.
|
|
62
|
+
- **Never close, archive, or repurpose a PRD issue.** Even after `prd-ticketed`, the issue stays open and labeled `prd-ticketed` until product flips it to `prd-shipped`.
|
|
63
|
+
- **Never start a second cycle while one is in flight against the same repo.** Serial execution; the scheduling layer is responsible for not double-firing.
|
|
64
|
+
- **Stop and surface failures rather than retry-loop.** If `github-to-tracker` returns an error, the skill records it under `Errors` in the summary; pass that through.
|
|
@@ -3,11 +3,11 @@ name: linear-prd-intake
|
|
|
3
3
|
description: PRD intake agent for Linear-hosted PRDs. Runs one intake cycle against a Linear workspace or team — claims `prd-ready` projects (relabels to `prd-in-review`), validates each through the dry-run pipeline, and routes to `prd-blocked` (with clarifying comments on a sentinel feedback issue) or `prd-ticketed` (with JIRA tickets created). Linear counterpart of `notion-prd-intake` and `confluence-prd-intake`. Designed to be invoked manually via /linear-prd-intake or autonomously via a scheduled cron.
|
|
4
4
|
skills:
|
|
5
5
|
- linear-prd-intake
|
|
6
|
-
- linear-to-
|
|
7
|
-
-
|
|
6
|
+
- linear-to-tracker
|
|
7
|
+
- tracker-validate
|
|
8
8
|
- jira-source-artifacts
|
|
9
9
|
- product-walkthrough
|
|
10
|
-
-
|
|
10
|
+
- tracker-write
|
|
11
11
|
- prd-ticket-coverage
|
|
12
12
|
---
|
|
13
13
|
|
|
@@ -57,8 +57,8 @@ If all PRDs ended in `prd-ticketed` with coverage `COMPLETE`, mention that the n
|
|
|
57
57
|
|
|
58
58
|
- **Never run a cycle without an explicit scope.** Side effects are too high to default.
|
|
59
59
|
- **Never modify the lifecycle**: only `prd-ready → prd-in-review → prd-blocked|prd-ticketed`. Never touch `prd-draft` or `prd-shipped`. Never invent new labels.
|
|
60
|
-
- **Never write
|
|
60
|
+
- **Never write destination tickets directly.** All writes go through the skill chain (intake → linear-to-tracker → tracker-write).
|
|
61
61
|
- **Never edit a project's description or any attached Linear document.** Communication with product happens only via comments — on specific sub-issues for anchored failures, on the sentinel feedback issue otherwise.
|
|
62
62
|
- **Never close, archive, or repurpose the sentinel feedback issue.** It is reused across cycles; its longevity is the audit trail.
|
|
63
63
|
- **Never start a second cycle while one is in flight against the same scope.** Serial execution; the scheduling layer is responsible for not double-firing.
|
|
64
|
-
- **Stop and surface failures rather than retry-loop.** If `linear-to-
|
|
64
|
+
- **Stop and surface failures rather than retry-loop.** If `linear-to-tracker` returns an error, the skill records it under `Errors` in the summary; pass that through.
|
|
@@ -3,11 +3,11 @@ name: notion-prd-intake
|
|
|
3
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
4
|
skills:
|
|
5
5
|
- notion-prd-intake
|
|
6
|
-
- notion-to-
|
|
7
|
-
-
|
|
6
|
+
- notion-to-tracker
|
|
7
|
+
- tracker-validate
|
|
8
8
|
- jira-source-artifacts
|
|
9
9
|
- product-walkthrough
|
|
10
|
-
-
|
|
10
|
+
- tracker-write
|
|
11
11
|
- prd-ticket-coverage
|
|
12
12
|
---
|
|
13
13
|
|
|
@@ -55,7 +55,7 @@ If all PRDs ended in `Ticketed` with coverage `COMPLETE`, mention that the next
|
|
|
55
55
|
|
|
56
56
|
- **Never run a cycle without an explicit database URL.** Side effects are too high to default.
|
|
57
57
|
- **Never modify the lifecycle**: only `Ready → In Review → Blocked|Ticketed`. Never touch `Draft` or `Shipped`. Never invent new status values.
|
|
58
|
-
- **Never write
|
|
58
|
+
- **Never write destination tickets directly.** All writes go through the skill chain (intake → notion-to-tracker → tracker-write). Bypassing this skips quality gates.
|
|
59
59
|
- **Never edit a PRD's body.** Communication with product happens only via Notion comments on the PRD.
|
|
60
60
|
- **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.
|
|
61
|
-
- **Stop and surface failures rather than retry-loop.** If `notion-to-
|
|
61
|
+
- **Stop and surface failures rather than retry-loop.** If `notion-to-tracker` returns an error, the skill records it under `Errors` in the summary; pass that through. Do not auto-retry.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Vendor-agnostic batch scanner for Ready queues. Notion PRD database URL → finds Status=Ready PRDs and runs lisa:plan per item. Confluence space or parent-page URL → finds prd-ready PRDs and runs lisa:plan per item. Linear workspace or team URL → finds prd-ready Linear projects 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 | Confluence-space-URL | Confluence-parent-page-URL | Linear-workspace-URL | Linear-team-URL | JIRA-project-key | JQL-filter>"
|
|
2
|
+
description: "Vendor-agnostic batch scanner for Ready queues. Notion PRD database URL → finds Status=Ready PRDs and runs lisa:plan per item. Confluence space or parent-page URL → finds prd-ready PRDs and runs lisa:plan per item. Linear workspace or team URL → finds prd-ready Linear projects and runs lisa:plan per item. GitHub repo URL or org/repo token → finds prd-ready GitHub issues and runs lisa:plan per item (PRD-source mode), or finds status:ready issues and runs lisa:implement per item when tracker=github (build-queue mode). 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 | Confluence-space-URL | Confluence-parent-page-URL | Linear-workspace-URL | Linear-team-URL | GitHub-repo-URL | org/repo | JIRA-project-key | JQL-filter>"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
Use the /lisa:intake skill to scan the queue for Ready items and dispatch each one through the appropriate single-item lifecycle skill. $ARGUMENTS
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Plan work from a single PRD or specification. Decomposes into ordered work items in the configured tracker. For batch scanning of all
|
|
3
|
-
argument-hint: "<single-PRD-url | @file | ticket-id-or-url | description>"
|
|
2
|
+
description: "Plan work from a single PRD or specification. Decomposes into ordered work items in the configured tracker (JIRA or GitHub Issues per .lisa.config.json). Source can be a Notion / Confluence / Linear / GitHub Issue URL, a JIRA epic key, a markdown file, or a free-form description. For batch scanning of all Ready PRDs in a queue, use /lisa:intake instead."
|
|
3
|
+
argument-hint: "<single-PRD-url | GitHub-issue-url | @file | ticket-id-or-url | description>"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
Use the /lisa:plan skill to decompose the PRD/spec into ordered work items in the configured tracker. $ARGUMENTS
|
|
@@ -233,16 +233,16 @@ Sequence:
|
|
|
233
233
|
1. `ops-specialist` -- health checks, log inspection, error monitoring, performance analysis
|
|
234
234
|
2. Report findings, escalate if action needed
|
|
235
235
|
|
|
236
|
-
##
|
|
236
|
+
## Tracker Entry Point (JIRA or GitHub Issues)
|
|
237
237
|
|
|
238
|
-
When the request references a
|
|
238
|
+
When the request references a tracker ticket (a JIRA key like `PROJ-123`, a JIRA URL, a GitHub issue URL, or an `org/repo#<n>` token):
|
|
239
239
|
|
|
240
|
-
1. Hand off to `jira-agent`
|
|
241
|
-
2.
|
|
242
|
-
3.
|
|
243
|
-
4.
|
|
244
|
-
5. If triage finds unresolved ambiguities (`BLOCKED` verdict),
|
|
245
|
-
6.
|
|
240
|
+
1. Hand off to the matching vendor agent — `jira-agent` (for JIRA refs) or `github-agent` (for GitHub Issue refs). The configured destination tracker (`.lisa.config.json` `tracker`) is the default when the ref shape is ambiguous.
|
|
241
|
+
2. The agent reads the ticket fully via the matching read skill (`jira-read-ticket` / `github-read-issue`) — description / body, comments, attachments, linked issues, parent (Epic / parent sub-issue), siblings.
|
|
242
|
+
3. The agent validates ticket quality via the matching verify skill (`jira-verify` / `github-verify`).
|
|
243
|
+
4. The agent runs analytical triage via the vendor-neutral `ticket-triage` skill.
|
|
244
|
+
5. If triage finds unresolved ambiguities (`BLOCKED` verdict), the agent posts findings and STOPS -- no work begins.
|
|
245
|
+
6. The agent determines intent and delegates to the appropriate flow:
|
|
246
246
|
|
|
247
247
|
| Ticket Type | Flow | Work Type |
|
|
248
248
|
|-------------|------|-----------|
|
|
@@ -252,11 +252,16 @@ When the request references a JIRA ticket (ticket ID like PROJ-123 or a JIRA URL
|
|
|
252
252
|
| Bug | Implement | Fix |
|
|
253
253
|
| Spike | Implement | Investigate Only |
|
|
254
254
|
| Improvement | Implement | Improve |
|
|
255
|
+
| Sub-task | Implement | (per parent's intent) |
|
|
255
256
|
|
|
256
|
-
|
|
257
|
+
For JIRA, the type comes from the ticket's issue type. For GitHub, the type comes from the `type:<value>` label.
|
|
257
258
|
|
|
258
|
-
|
|
259
|
-
|
|
259
|
+
If the ticket type is ambiguous, read the description / body to classify. A "Task" that describes broken behavior is a Fix. A "Bug" that requests new functionality is a Build.
|
|
260
|
+
|
|
261
|
+
7. The agent syncs progress at milestones via the matching sync skill (`jira-sync` / `github-sync`).
|
|
262
|
+
8. The agent posts evidence at completion via the matching evidence skill (`jira-evidence` / `github-evidence`).
|
|
263
|
+
|
|
264
|
+
Vendor-neutral callers (e.g., `implement`, `verify`) should invoke the `tracker-*` shims — they dispatch to the right vendor automatically.
|
|
260
265
|
|
|
261
266
|
## Flow Chaining
|
|
262
267
|
|