@codyswann/lisa 2.10.0 → 2.11.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 +1 -1
- package/plugins/lisa/agents/github-prd-intake.md +2 -2
- package/plugins/lisa/agents/linear-agent.md +128 -0
- package/plugins/lisa/agents/linear-build-intake.md +62 -0
- package/plugins/lisa/agents/linear-prd-intake.md +2 -2
- package/plugins/lisa/agents/notion-prd-intake.md +1 -1
- package/plugins/lisa/commands/plan.md +1 -1
- package/plugins/lisa/rules/config-resolution.md +187 -0
- package/plugins/lisa/rules/intent-routing.md +13 -13
- package/plugins/lisa/skills/confluence-prd-intake/SKILL.md +9 -4
- package/plugins/lisa/skills/confluence-to-tracker/SKILL.md +23 -16
- package/plugins/lisa/skills/github-create/SKILL.md +4 -4
- package/plugins/lisa/skills/github-prd-intake/SKILL.md +8 -3
- package/plugins/lisa/skills/github-to-tracker/SKILL.md +22 -13
- package/plugins/lisa/skills/github-write-issue/SKILL.md +2 -2
- package/plugins/lisa/skills/implement/SKILL.md +1 -1
- package/plugins/lisa/skills/intake/SKILL.md +3 -3
- package/plugins/lisa/skills/jira-build-intake/SKILL.md +6 -3
- package/plugins/lisa/skills/jira-create/SKILL.md +4 -4
- package/plugins/lisa/skills/jira-validate-ticket/SKILL.md +1 -1
- package/plugins/lisa/skills/jira-write-ticket/SKILL.md +3 -3
- package/plugins/lisa/skills/linear-add-journey/SKILL.md +104 -0
- package/plugins/lisa/skills/linear-build-intake/SKILL.md +160 -0
- package/plugins/lisa/skills/linear-create/SKILL.md +146 -0
- package/plugins/lisa/skills/linear-evidence/SKILL.md +86 -0
- package/plugins/lisa/skills/linear-journey/SKILL.md +134 -0
- package/plugins/lisa/skills/linear-prd-intake/SKILL.md +11 -6
- package/plugins/lisa/skills/linear-read-issue/SKILL.md +200 -0
- package/plugins/lisa/skills/linear-sync/SKILL.md +89 -0
- package/plugins/lisa/skills/linear-to-tracker/SKILL.md +20 -13
- package/plugins/lisa/skills/linear-validate-issue/SKILL.md +270 -0
- package/plugins/lisa/skills/linear-verify/SKILL.md +51 -0
- package/plugins/lisa/skills/linear-write-issue/SKILL.md +282 -0
- package/plugins/lisa/skills/notion-prd-intake/SKILL.md +12 -6
- package/plugins/lisa/skills/notion-to-tracker/SKILL.md +21 -15
- package/plugins/lisa/skills/plan/SKILL.md +3 -2
- package/plugins/lisa/skills/prd-ticket-coverage/SKILL.md +1 -1
- package/plugins/lisa/skills/product-walkthrough/SKILL.md +2 -2
- package/plugins/lisa/skills/spec-conformance/SKILL.md +1 -2
- package/plugins/lisa/skills/ticket-triage/SKILL.md +1 -1
- package/plugins/lisa/skills/tracker-add-journey/SKILL.md +5 -3
- package/plugins/lisa/skills/tracker-build-intake/SKILL.md +5 -3
- package/plugins/lisa/skills/tracker-create/SKILL.md +5 -3
- package/plugins/lisa/skills/tracker-evidence/SKILL.md +5 -3
- package/plugins/lisa/skills/tracker-journey/SKILL.md +5 -3
- package/plugins/lisa/skills/tracker-read/SKILL.md +6 -4
- package/plugins/lisa/skills/{jira-source-artifacts → tracker-source-artifacts}/SKILL.md +5 -5
- package/plugins/lisa/skills/tracker-sync/SKILL.md +6 -4
- package/plugins/lisa/skills/tracker-validate/SKILL.md +8 -7
- package/plugins/lisa/skills/tracker-verify/SKILL.md +4 -2
- package/plugins/lisa/skills/tracker-write/SKILL.md +12 -10
- 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-create/SKILL.md +4 -4
- 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-create/SKILL.md +4 -4
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/agents/confluence-prd-intake.md +1 -1
- package/plugins/src/base/agents/github-prd-intake.md +2 -2
- package/plugins/src/base/agents/linear-agent.md +128 -0
- package/plugins/src/base/agents/linear-build-intake.md +62 -0
- package/plugins/src/base/agents/linear-prd-intake.md +2 -2
- package/plugins/src/base/agents/notion-prd-intake.md +1 -1
- package/plugins/src/base/commands/plan.md +1 -1
- package/plugins/src/base/rules/config-resolution.md +187 -0
- package/plugins/src/base/rules/intent-routing.md +13 -13
- package/plugins/src/base/skills/confluence-prd-intake/SKILL.md +9 -4
- package/plugins/src/base/skills/confluence-to-tracker/SKILL.md +23 -16
- package/plugins/src/base/skills/github-create/SKILL.md +4 -4
- package/plugins/src/base/skills/github-prd-intake/SKILL.md +8 -3
- package/plugins/src/base/skills/github-to-tracker/SKILL.md +22 -13
- package/plugins/src/base/skills/github-write-issue/SKILL.md +2 -2
- package/plugins/src/base/skills/implement/SKILL.md +1 -1
- package/plugins/src/base/skills/intake/SKILL.md +3 -3
- package/plugins/src/base/skills/jira-build-intake/SKILL.md +6 -3
- package/plugins/src/base/skills/jira-create/SKILL.md +4 -4
- package/plugins/src/base/skills/jira-validate-ticket/SKILL.md +1 -1
- package/plugins/src/base/skills/jira-write-ticket/SKILL.md +3 -3
- package/plugins/src/base/skills/linear-add-journey/SKILL.md +104 -0
- package/plugins/src/base/skills/linear-build-intake/SKILL.md +160 -0
- package/plugins/src/base/skills/linear-create/SKILL.md +146 -0
- package/plugins/src/base/skills/linear-evidence/SKILL.md +86 -0
- package/plugins/src/base/skills/linear-journey/SKILL.md +134 -0
- package/plugins/src/base/skills/linear-prd-intake/SKILL.md +11 -6
- package/plugins/src/base/skills/linear-read-issue/SKILL.md +200 -0
- package/plugins/src/base/skills/linear-sync/SKILL.md +89 -0
- package/plugins/src/base/skills/linear-to-tracker/SKILL.md +20 -13
- package/plugins/src/base/skills/linear-validate-issue/SKILL.md +270 -0
- package/plugins/src/base/skills/linear-verify/SKILL.md +51 -0
- package/plugins/src/base/skills/linear-write-issue/SKILL.md +282 -0
- package/plugins/src/base/skills/notion-prd-intake/SKILL.md +12 -6
- package/plugins/src/base/skills/notion-to-tracker/SKILL.md +21 -15
- package/plugins/src/base/skills/plan/SKILL.md +3 -2
- package/plugins/src/base/skills/prd-ticket-coverage/SKILL.md +1 -1
- package/plugins/src/base/skills/product-walkthrough/SKILL.md +2 -2
- package/plugins/src/base/skills/spec-conformance/SKILL.md +1 -2
- package/plugins/src/base/skills/ticket-triage/SKILL.md +1 -1
- package/plugins/src/base/skills/tracker-add-journey/SKILL.md +5 -3
- package/plugins/src/base/skills/tracker-build-intake/SKILL.md +5 -3
- package/plugins/src/base/skills/tracker-create/SKILL.md +5 -3
- package/plugins/src/base/skills/tracker-evidence/SKILL.md +5 -3
- package/plugins/src/base/skills/tracker-journey/SKILL.md +5 -3
- package/plugins/src/base/skills/tracker-read/SKILL.md +6 -4
- package/plugins/src/base/skills/{jira-source-artifacts → tracker-source-artifacts}/SKILL.md +5 -5
- package/plugins/src/base/skills/tracker-sync/SKILL.md +6 -4
- package/plugins/src/base/skills/tracker-validate/SKILL.md +8 -7
- package/plugins/src/base/skills/tracker-verify/SKILL.md +4 -2
- package/plugins/src/base/skills/tracker-write/SKILL.md +12 -10
- package/plugins/src/base/skills/verify/SKILL.md +1 -1
- package/plugins/src/expo/skills/jira-create/SKILL.md +4 -4
- package/plugins/src/rails/skills/jira-create/SKILL.md +4 -4
- package/typescript/copy-overwrite/.prettierignore +7 -1
- package/plugins/lisa/rules/tracker-resolution.md +0 -76
- package/plugins/src/base/rules/tracker-resolution.md +0 -76
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: tracker-create
|
|
3
|
-
description: "Vendor-neutral wrapper for creating tickets/issues from code files or descriptions. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-create or lisa:
|
|
3
|
+
description: "Vendor-neutral wrapper for creating tickets/issues from code files or descriptions. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-create, lisa:github-create, or lisa:linear-create. Plans hierarchy structure (epic / story / sub-task), then delegates each individual write through the tracker-write shim."
|
|
4
4
|
allowed-tools: ["Skill", "Bash", "Read"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ allowed-tools: ["Skill", "Bash", "Read"]
|
|
|
8
8
|
|
|
9
9
|
Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor planning skill.
|
|
10
10
|
|
|
11
|
-
See the `
|
|
11
|
+
See the `config-resolution` rule for configuration and dispatch table.
|
|
12
12
|
|
|
13
13
|
## Workflow
|
|
14
14
|
|
|
@@ -16,9 +16,11 @@ See the `tracker-resolution` rule for configuration and dispatch table.
|
|
|
16
16
|
2. Dispatch:
|
|
17
17
|
- `jira` → invoke `lisa:jira-create` with `$ARGUMENTS` verbatim.
|
|
18
18
|
- `github` → invoke `lisa:github-create` with `$ARGUMENTS` verbatim.
|
|
19
|
+
- `linear` → invoke `lisa:linear-create` with `$ARGUMENTS` verbatim.
|
|
20
|
+
- Anything else → stop and report `"Unknown tracker '<value>' in .lisa.config.json. Expected 'jira', 'github', or 'linear'."`
|
|
19
21
|
3. Pass through the output.
|
|
20
22
|
|
|
21
23
|
## Rules
|
|
22
24
|
|
|
23
|
-
-
|
|
25
|
+
- All vendor skills delegate every individual ticket write through `lisa:tracker-write`. They never call vendor-specific write tools directly.
|
|
24
26
|
- This shim is for ad-hoc creation from code files / descriptions. PRD-driven creation goes through the `*-to-tracker` skills (notion / confluence / linear / github).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: tracker-evidence
|
|
3
|
-
description: "Vendor-neutral wrapper for posting verification evidence. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-evidence or lisa:
|
|
3
|
+
description: "Vendor-neutral wrapper for posting verification evidence. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-evidence, lisa:github-evidence, or lisa:linear-evidence. Uploads evidence to the GitHub `pr-assets` release, updates the PR description, posts a comment on the originating ticket/issue, and transitions the ticket/issue to its post-build review state."
|
|
4
4
|
allowed-tools: ["Skill", "Bash", "Read"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ allowed-tools: ["Skill", "Bash", "Read"]
|
|
|
8
8
|
|
|
9
9
|
Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor evidence skill.
|
|
10
10
|
|
|
11
|
-
See the `
|
|
11
|
+
See the `config-resolution` rule for configuration and dispatch table.
|
|
12
12
|
|
|
13
13
|
## Workflow
|
|
14
14
|
|
|
@@ -16,9 +16,11 @@ See the `tracker-resolution` rule for configuration and dispatch table.
|
|
|
16
16
|
2. Dispatch:
|
|
17
17
|
- `jira` → invoke `lisa:jira-evidence` with `$ARGUMENTS` verbatim. Arg shape: `<TICKET_ID> <EVIDENCE_DIR> <PR_NUMBER>`.
|
|
18
18
|
- `github` → invoke `lisa:github-evidence` with `$ARGUMENTS` verbatim. Arg shape: `<ISSUE_REF> <EVIDENCE_DIR> <PR_NUMBER>` where `ISSUE_REF` is `org/repo#<number>` or a GitHub issue URL.
|
|
19
|
+
- `linear` → invoke `lisa:linear-evidence` with `$ARGUMENTS` verbatim. Arg shape: `<IDENTIFIER> <EVIDENCE_DIR>` where `IDENTIFIER` is a Linear Issue identifier (e.g., `ENG-123`).
|
|
20
|
+
- Anything else → stop and report `"Unknown tracker '<value>' in .lisa.config.json. Expected 'jira', 'github', or 'linear'."`
|
|
19
21
|
3. Pass through the vendor skill's output.
|
|
20
22
|
|
|
21
23
|
## Rules
|
|
22
24
|
|
|
23
|
-
- The GitHub `pr-assets` release lives on the implementation repo (the one with the PR), regardless of which tracker hosts the ticket/issue.
|
|
25
|
+
- The GitHub `pr-assets` release lives on the implementation repo (the one with the PR), regardless of which tracker hosts the ticket/issue. All vendor skills upload there.
|
|
24
26
|
- Never post evidence to a different ticket than the one named — `$ARGUMENTS` is the source of truth.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: tracker-journey
|
|
3
|
-
description: "Vendor-neutral wrapper for executing a ticket/issue's Validation Journey end-to-end. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-journey or lisa:
|
|
3
|
+
description: "Vendor-neutral wrapper for executing a ticket/issue's Validation Journey end-to-end. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-journey, lisa:github-journey, or lisa:linear-journey. Parses the journey, satisfies prerequisites, executes the steps, captures evidence at each marker, and posts results via tracker-evidence."
|
|
4
4
|
allowed-tools: ["Skill", "Bash", "Read"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ allowed-tools: ["Skill", "Bash", "Read"]
|
|
|
8
8
|
|
|
9
9
|
Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor journey skill.
|
|
10
10
|
|
|
11
|
-
See the `
|
|
11
|
+
See the `config-resolution` rule for configuration and dispatch table.
|
|
12
12
|
|
|
13
13
|
## Workflow
|
|
14
14
|
|
|
@@ -16,9 +16,11 @@ See the `tracker-resolution` rule for configuration and dispatch table.
|
|
|
16
16
|
2. Dispatch:
|
|
17
17
|
- `jira` → invoke `lisa:jira-journey` with `$ARGUMENTS` verbatim. Arg shape: `<TICKET_ID> [PR_NUMBER]`.
|
|
18
18
|
- `github` → invoke `lisa:github-journey` with `$ARGUMENTS` verbatim. Arg shape: `<ISSUE_REF> [PR_NUMBER]`.
|
|
19
|
+
- `linear` → invoke `lisa:linear-journey` with `$ARGUMENTS` verbatim. Arg shape: `<IDENTIFIER> [PR_NUMBER]`.
|
|
20
|
+
- Anything else → stop and report `"Unknown tracker '<value>' in .lisa.config.json. Expected 'jira', 'github', or 'linear'."`
|
|
19
21
|
3. Pass through the output.
|
|
20
22
|
|
|
21
23
|
## Rules
|
|
22
24
|
|
|
23
|
-
- The journey content is identical across vendors; only the parser source differs (the JIRA vendor reads description via Atlassian MCP; the GitHub vendor reads body via `gh issue view --json body`).
|
|
25
|
+
- The journey content is identical across vendors; only the parser source differs (the JIRA vendor reads description via Atlassian MCP; the GitHub vendor reads body via `gh issue view --json body`; the Linear vendor reads description via `mcp__linear-server__get_issue`).
|
|
24
26
|
- Evidence posting always goes through `lisa:tracker-evidence` — never bypass.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: tracker-read
|
|
3
|
-
description: "Vendor-neutral wrapper for fetching the full scope of a ticket/issue and its related graph. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-read-ticket or lisa:
|
|
3
|
+
description: "Vendor-neutral wrapper for fetching the full scope of a ticket/issue and its related graph. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-read-ticket, lisa:github-read-issue, or lisa:linear-read-issue. Returns a consolidated context bundle so downstream agents never act on a single ticket in isolation."
|
|
4
4
|
allowed-tools: ["Skill", "Bash", "Read"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ allowed-tools: ["Skill", "Bash", "Read"]
|
|
|
8
8
|
|
|
9
9
|
Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor read skill.
|
|
10
10
|
|
|
11
|
-
See the `
|
|
11
|
+
See the `config-resolution` rule for configuration and dispatch table.
|
|
12
12
|
|
|
13
13
|
## Workflow
|
|
14
14
|
|
|
@@ -16,10 +16,12 @@ See the `tracker-resolution` rule for configuration and dispatch table.
|
|
|
16
16
|
2. Dispatch:
|
|
17
17
|
- `jira` → invoke `lisa:jira-read-ticket` with `$ARGUMENTS` verbatim. The argument is a JIRA key (e.g., `PROJ-123`).
|
|
18
18
|
- `github` → invoke `lisa:github-read-issue` with `$ARGUMENTS` verbatim. The argument is `org/repo#<number>` or a full GitHub issue URL.
|
|
19
|
+
- `linear` → invoke `lisa:linear-read-issue` with `$ARGUMENTS` verbatim. The argument is a Linear identifier (e.g., `ENG-123`) or a project URL.
|
|
20
|
+
- Anything else → stop and report `"Unknown tracker '<value>' in .lisa.config.json. Expected 'jira', 'github', or 'linear'."`
|
|
19
21
|
3. Return the vendor skill's context bundle verbatim.
|
|
20
22
|
|
|
21
23
|
## Rules
|
|
22
24
|
|
|
23
25
|
- Read-only — never modify the ticket/issue.
|
|
24
|
-
- The
|
|
25
|
-
- If the input format doesn't match the configured tracker (e.g. tracker is jira but `$ARGUMENTS` looks like a
|
|
26
|
+
- The three vendors emit different context-bundle formats (because their data models differ). Callers must be tolerant of all — or, more precisely, agents at the next layer parse the per-vendor bundle.
|
|
27
|
+
- If the input format doesn't match the configured tracker (e.g. tracker is jira but `$ARGUMENTS` looks like a Linear identifier), stop and report — never auto-translate.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: "Canonical taxonomy and rules for handling source artifacts (Figma, Lovable, Loom, screenshots, design docs, data samples) when generating or evaluating JIRA
|
|
2
|
+
name: tracker-source-artifacts
|
|
3
|
+
description: "Canonical, vendor-neutral taxonomy and rules for handling source artifacts (Figma, Lovable, Loom, screenshots, design docs, data samples) when generating or evaluating tracker tickets (JIRA, GitHub Issues, Linear). Defines: (1) artifact domains, (2) classification rules per tool, (3) source precedence (which artifact is authoritative for which question), (4) inheritance from epic to story to sub-task, (5) cross-axis conflict handling. Invoke this skill from any flow that extracts, attaches, or reasons about external design/UX/data artifacts so the rules don't drift across skills."
|
|
4
4
|
allowed-tools: []
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
#
|
|
7
|
+
# Tracker Source Artifact Taxonomy and Rules
|
|
8
8
|
|
|
9
|
-
This skill is doctrine, not action — it defines the rules. Skills that need to extract, classify, attach, or reason about external artifacts (design files, prototypes, recordings, data samples) invoke this skill to load the taxonomy and apply it.
|
|
9
|
+
This skill is doctrine, not action — it defines the rules. Skills that need to extract, classify, attach, or reason about external artifacts (design files, prototypes, recordings, data samples) invoke this skill to load the taxonomy and apply it. The taxonomy is vendor-neutral: it applies equally to JIRA tickets, GitHub Issues, and Linear Issues.
|
|
10
10
|
|
|
11
|
-
The reason this lives in one place: silent drift across skills is the failure mode this body of rules exists to prevent. If the rules differ between `lisa:notion-to-tracker`, `lisa:
|
|
11
|
+
The reason this lives in one place: silent drift across skills is the failure mode this body of rules exists to prevent. If the rules differ between `lisa:notion-to-tracker`, `lisa:tracker-create`, and `lisa:tracker-write`, agents will silently route artifacts wrong and developers will lose source of truth. Edit here, propagate everywhere.
|
|
12
12
|
|
|
13
13
|
## 1. Domains
|
|
14
14
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: tracker-sync
|
|
3
|
-
description: "Vendor-neutral wrapper for posting milestone updates to the linked ticket/issue. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-sync or lisa:
|
|
3
|
+
description: "Vendor-neutral wrapper for posting milestone updates to the linked ticket/issue. Reads `tracker` from .lisa.config.json (default: jira) and dispatches to lisa:jira-sync, lisa:github-sync, or lisa:linear-sync. Posts at: plan created, implementation in progress, PR ready, PR merged. Suggests (never auto-transitions) the next status."
|
|
4
4
|
allowed-tools: ["Skill", "Bash", "Read"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ allowed-tools: ["Skill", "Bash", "Read"]
|
|
|
8
8
|
|
|
9
9
|
Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor sync skill.
|
|
10
10
|
|
|
11
|
-
See the `
|
|
11
|
+
See the `config-resolution` rule for configuration and dispatch table.
|
|
12
12
|
|
|
13
13
|
## Workflow
|
|
14
14
|
|
|
@@ -16,11 +16,13 @@ See the `tracker-resolution` rule for configuration and dispatch table.
|
|
|
16
16
|
2. Dispatch:
|
|
17
17
|
- `jira` → invoke `lisa:jira-sync` with `$ARGUMENTS` verbatim.
|
|
18
18
|
- `github` → invoke `lisa:github-sync` with `$ARGUMENTS` verbatim.
|
|
19
|
+
- `linear` → invoke `lisa:linear-sync` with `$ARGUMENTS` verbatim.
|
|
20
|
+
- Anything else → stop and report `"Unknown tracker '<value>' in .lisa.config.json. Expected 'jira', 'github', or 'linear'."`
|
|
19
21
|
3. Pass through the output.
|
|
20
22
|
|
|
21
|
-
If `$ARGUMENTS` is empty,
|
|
23
|
+
If `$ARGUMENTS` is empty, all vendor skills auto-detect a ticket reference from the active plan file (most recently modified `.md` in `plans/`).
|
|
22
24
|
|
|
23
25
|
## Rules
|
|
24
26
|
|
|
25
27
|
- Idempotent updates — running sync at the same milestone twice should not produce duplicate comments. Vendor skills enforce this.
|
|
26
|
-
- Never auto-transition
|
|
28
|
+
- Never auto-transition the underlying state. Linear's label-based transition (`status:*`) is the canonical signal and is updated only when the caller passes `--update-label`. Native states stay as suggestions.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
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:
|
|
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, lisa:github-validate-issue, or lisa:linear-validate-issue. Read-only — never writes to any 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
4
|
allowed-tools: ["Skill", "Bash", "Read"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -8,28 +8,29 @@ allowed-tools: ["Skill", "Bash", "Read"]
|
|
|
8
8
|
|
|
9
9
|
Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor validator.
|
|
10
10
|
|
|
11
|
-
See the `
|
|
11
|
+
See the `config-resolution` rule for the full configuration schema and skill-mapping table.
|
|
12
12
|
|
|
13
13
|
## Workflow
|
|
14
14
|
|
|
15
15
|
1. **Resolve tracker config** (same logic as `lisa:tracker-write` Step 1):
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
local_tracker=$(jq -r '.tracker // empty' .lisa.config.local.json 2>/dev/null)
|
|
19
|
+
global_tracker=$(jq -r '.tracker // empty' .lisa.config.json 2>/dev/null)
|
|
20
|
+
tracker="${local_tracker:-${global_tracker:-jira}}"
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
2. **Dispatch**
|
|
24
24
|
|
|
25
25
|
- `jira` → invoke `lisa:jira-validate-ticket` with `$ARGUMENTS` verbatim.
|
|
26
26
|
- `github` → invoke `lisa:github-validate-issue` with `$ARGUMENTS` verbatim.
|
|
27
|
-
-
|
|
27
|
+
- `linear` → invoke `lisa:linear-validate-issue` with `$ARGUMENTS` verbatim.
|
|
28
|
+
- Anything else → stop and report `"Unknown tracker '<value>' in .lisa.config.json. Expected 'jira', 'github', or 'linear'."`
|
|
28
29
|
|
|
29
30
|
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
|
|
|
31
32
|
## Rules
|
|
32
33
|
|
|
33
|
-
- Read-only — never write to
|
|
34
|
+
- Read-only — never write to any tracker.
|
|
34
35
|
- Never re-implement gate logic here. The gate definitions are the vendor validator's responsibility.
|
|
35
36
|
- Never silently transform the input — pass `$ARGUMENTS` through verbatim.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
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:
|
|
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, lisa:github-verify, or lisa:linear-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
4
|
allowed-tools: ["Skill", "Bash", "Read"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ allowed-tools: ["Skill", "Bash", "Read"]
|
|
|
8
8
|
|
|
9
9
|
Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor post-write verifier.
|
|
10
10
|
|
|
11
|
-
See the `
|
|
11
|
+
See the `config-resolution` rule for configuration and dispatch table.
|
|
12
12
|
|
|
13
13
|
## Workflow
|
|
14
14
|
|
|
@@ -16,6 +16,8 @@ See the `tracker-resolution` rule for configuration and dispatch table.
|
|
|
16
16
|
2. Dispatch:
|
|
17
17
|
- `jira` → invoke `lisa:jira-verify` with `$ARGUMENTS` verbatim.
|
|
18
18
|
- `github` → invoke `lisa:github-verify` with `$ARGUMENTS` verbatim.
|
|
19
|
+
- `linear` → invoke `lisa:linear-verify` with `$ARGUMENTS` verbatim.
|
|
20
|
+
- Anything else → stop and report `"Unknown tracker '<value>' in .lisa.config.json. Expected 'jira', 'github', or 'linear'."`
|
|
19
21
|
3. Pass through the verifier's structured report unchanged.
|
|
20
22
|
|
|
21
23
|
## Rules
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
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:
|
|
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, lisa:github-write-issue, or lisa:linear-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
4
|
allowed-tools: ["Skill", "Bash", "Read"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ allowed-tools: ["Skill", "Bash", "Read"]
|
|
|
8
8
|
|
|
9
9
|
Thin dispatcher. Resolves the configured destination tracker and delegates to the matching vendor write skill.
|
|
10
10
|
|
|
11
|
-
See the `
|
|
11
|
+
See the `config-resolution` rule for the full configuration schema and skill-mapping table.
|
|
12
12
|
|
|
13
13
|
## Workflow
|
|
14
14
|
|
|
@@ -17,27 +17,29 @@ See the `tracker-resolution` rule for the full configuration schema and skill-ma
|
|
|
17
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
18
|
|
|
19
19
|
```bash
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
local_tracker=$(jq -r '.tracker // empty' .lisa.config.local.json 2>/dev/null)
|
|
21
|
+
global_tracker=$(jq -r '.tracker // empty' .lisa.config.json 2>/dev/null)
|
|
22
|
+
tracker="${local_tracker:-${global_tracker:-jira}}"
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
2. **Validate the value**
|
|
26
26
|
|
|
27
|
-
- `jira` →
|
|
28
|
-
- `github` →
|
|
29
|
-
-
|
|
27
|
+
- `jira` → confirm `atlassian.cloudId` and `jira.project` are present. If either is missing, stop and report: `"tracker=jira but atlassian.cloudId and jira.project are not set in .lisa.config.json."` Continue to Step 3a.
|
|
28
|
+
- `github` → 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."` Continue to Step 3b.
|
|
29
|
+
- `linear` → confirm `linear.workspace` and `linear.teamKey` are present. If either is missing, stop and report: `"tracker=linear but linear.workspace and linear.teamKey are not set in .lisa.config.json."` Continue to Step 3c.
|
|
30
|
+
- Any other value → stop and report: `"Unknown tracker '<value>' in .lisa.config.json. Expected 'jira', 'github', or 'linear'."`
|
|
30
31
|
|
|
31
32
|
3. **Dispatch**
|
|
32
33
|
|
|
33
34
|
- **3a (jira):** Invoke `lisa:jira-write-ticket` via the Skill tool, passing `$ARGUMENTS` verbatim.
|
|
34
35
|
- **3b (github):** Invoke `lisa:github-write-issue` via the Skill tool, passing `$ARGUMENTS` verbatim.
|
|
36
|
+
- **3c (linear):** Invoke `lisa:linear-write-issue` via the Skill tool, passing `$ARGUMENTS` verbatim.
|
|
35
37
|
|
|
36
38
|
4. **Surface the vendor skill's output unchanged.** Do not paraphrase; downstream callers parse the structured response.
|
|
37
39
|
|
|
38
40
|
## Rules
|
|
39
41
|
|
|
40
42
|
- Never bypass dispatch — calling the vendor skill directly from a vendor-neutral caller defeats the per-project switch.
|
|
41
|
-
- Never
|
|
43
|
+
- Never accept a tracker value outside `{jira, github, linear}`.
|
|
42
44
|
- 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.
|
|
45
|
+
- Never inline gate logic here. All validation rules live in the vendor skills (`lisa:jira-validate-ticket` / `lisa:github-validate-issue` / `lisa:linear-validate-issue`); this skill only routes.
|
|
@@ -29,7 +29,7 @@ Execute the **Verify** flow as defined in the `intent-routing` rule (loaded via
|
|
|
29
29
|
4. **Review loop** — handle CodeRabbit / human review comments via `lisa:pull-request-review`
|
|
30
30
|
5. **Merge** when CI is green
|
|
31
31
|
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.
|
|
32
|
-
7. **Evidence** — post results to the originating ticket via `lisa:tracker-evidence` (vendor-neutral; dispatches to `lisa:jira-evidence` or `lisa:
|
|
32
|
+
7. **Evidence** — post results to the originating ticket via `lisa:tracker-evidence` (vendor-neutral; dispatches to `lisa:jira-evidence`, `lisa:github-evidence`, or `lisa:linear-evidence` per `.lisa.config.json` `tracker`), including the list of codified tests added on this branch.
|
|
33
33
|
|
|
34
34
|
The rule contains the canonical step sequence. Change it there, propagate everywhere.
|
|
35
35
|
|
|
@@ -11,7 +11,7 @@ Analyze the provided file(s) and plan a JIRA hierarchy. **This skill plans struc
|
|
|
11
11
|
## Process
|
|
12
12
|
|
|
13
13
|
1. **Analyze**: Read $ARGUMENTS to understand scope.
|
|
14
|
-
2. **Extract source artifacts**: invoke the `lisa:
|
|
14
|
+
2. **Extract source artifacts**: invoke the `lisa:tracker-source-artifacts` skill, then enumerate every external URL, embed, attachment, or example payload and classify each by domain per its rules. Build the `artifacts` map. See "Source Artifacts" below.
|
|
15
15
|
3. **Walk the live product** (when applicable): if the work touches existing user-facing surfaces, invoke the `lisa:product-walkthrough` skill to capture current behavior, design-vs-product divergence, and reuse candidates. Especially load-bearing for Expo/React Native — a UI ticket without a current-product walkthrough is missing context the implementer needs. Skip only when the work is purely backend or affects a screen that does not yet exist. See "Live Product Walkthrough" below.
|
|
16
16
|
4. **Determine structure**:
|
|
17
17
|
- Epic needed if: multiple features, major changes, >3 related files
|
|
@@ -20,8 +20,8 @@ Analyze the provided file(s) and plan a JIRA hierarchy. **This skill plans struc
|
|
|
20
20
|
```text
|
|
21
21
|
Epic → User Story → Tasks (test, implement, document, cleanup)
|
|
22
22
|
```
|
|
23
|
-
6. **Delegate every write to `lisa:jira-write-ticket`** in dependency order (epic first, then stories with the epic as parent, then sub-tasks with their story as parent). Pass the artifacts (filtered by domain per `lisa:
|
|
24
|
-
7. **Run the artifact preservation gate** (`lisa:
|
|
23
|
+
6. **Delegate every write to `lisa:jira-write-ticket`** in dependency order (epic first, then stories with the epic as parent, then sub-tasks with their story as parent). Pass the artifacts (filtered by domain per `lisa:tracker-source-artifacts` inheritance rules), the walkthrough findings (under `## Current Product`), and — for UI tickets — the Validation Journey draft with `[SCREENSHOT: ...]` markers. See "Delegation to jira-write-ticket" below.
|
|
24
|
+
7. **Run the artifact preservation gate** (`lisa:tracker-source-artifacts` §8): after all writes complete, build the preservation matrix and verify every extracted artifact is reachable from the created tickets. Fail loudly if anything was dropped.
|
|
25
25
|
|
|
26
26
|
## Mandatory for Every Code Issue
|
|
27
27
|
|
|
@@ -95,7 +95,7 @@ h3. Assertions
|
|
|
95
95
|
|
|
96
96
|
If $ARGUMENTS includes (or references) any external artifact — PRD, design doc, Figma URL, Lovable prototype, Loom walkthrough, screenshot, example payload — those references MUST be preserved as remote links on the created tickets. Silent artifact loss is the single most common quality failure in this pipeline.
|
|
97
97
|
|
|
98
|
-
**Invoke the `lisa:
|
|
98
|
+
**Invoke the `lisa:tracker-source-artifacts` skill** for the canonical rules: domains, per-tool classification (Figma `/proto/` vs design, Lovable, Loom, screenshots), source precedence, conflict handling under `## Open Questions`, inheritance from epic → story → sub-task, and the existing-component reuse expectation. Do not restate the rules here.
|
|
99
99
|
|
|
100
100
|
Expo-specific note: the existing-component reuse rule is especially load-bearing for React Native — the project has an established component library; pixel-matching a mock instead of reusing components is the most common drift mode.
|
|
101
101
|
|
|
@@ -11,7 +11,7 @@ Analyze the provided file(s) and plan a JIRA hierarchy. **This skill plans struc
|
|
|
11
11
|
## Process
|
|
12
12
|
|
|
13
13
|
1. **Analyze**: Read $ARGUMENTS to understand scope.
|
|
14
|
-
2. **Extract source artifacts**: invoke the `lisa:
|
|
14
|
+
2. **Extract source artifacts**: invoke the `lisa:tracker-source-artifacts` skill, then enumerate every external URL, embed, attachment, or example payload and classify each by domain per its rules. Build the `artifacts` map. See "Source Artifacts" below.
|
|
15
15
|
3. **Walk the live product** (when applicable): if the work touches existing user-facing surfaces, invoke the `lisa:product-walkthrough` skill to capture current behavior, design-vs-product divergence, and reuse candidates. Skip only when the work is purely backend or affects a screen that does not yet exist. See "Live Product Walkthrough" below.
|
|
16
16
|
4. **Determine structure**:
|
|
17
17
|
- Epic needed if: multiple features, major changes, >3 related files
|
|
@@ -20,8 +20,8 @@ Analyze the provided file(s) and plan a JIRA hierarchy. **This skill plans struc
|
|
|
20
20
|
```text
|
|
21
21
|
Epic → User Story → Tasks (test, implement, document, cleanup)
|
|
22
22
|
```
|
|
23
|
-
6. **Delegate every write to `lisa:jira-write-ticket`** in dependency order (epic first, then stories with the epic as parent, then sub-tasks with their story as parent). Pass the artifacts (filtered by domain per `lisa:
|
|
24
|
-
7. **Run the artifact preservation gate** (`lisa:
|
|
23
|
+
6. **Delegate every write to `lisa:jira-write-ticket`** in dependency order (epic first, then stories with the epic as parent, then sub-tasks with their story as parent). Pass the artifacts (filtered by domain per `lisa:tracker-source-artifacts` inheritance rules) and the walkthrough findings (under `## Current Product`). See "Delegation to jira-write-ticket" below.
|
|
24
|
+
7. **Run the artifact preservation gate** (`lisa:tracker-source-artifacts` §8): after all writes complete, build the preservation matrix and verify every extracted artifact is reachable from the created tickets. Fail loudly if anything was dropped.
|
|
25
25
|
|
|
26
26
|
## Mandatory for Every Code Issue
|
|
27
27
|
|
|
@@ -35,7 +35,7 @@ Analyze the provided file(s) and plan a JIRA hierarchy. **This skill plans struc
|
|
|
35
35
|
|
|
36
36
|
If $ARGUMENTS includes (or references) any external artifact — PRD, design doc, Figma URL, Lovable prototype, Loom walkthrough, screenshot, example payload — those references MUST be preserved as remote links on the created tickets. Silent artifact loss is the single most common quality failure in this pipeline.
|
|
37
37
|
|
|
38
|
-
**Invoke the `lisa:
|
|
38
|
+
**Invoke the `lisa:tracker-source-artifacts` skill** for the canonical rules: domains, per-tool classification (Figma `/proto/` vs design, Lovable, Loom, screenshots), source precedence, conflict handling under `## Open Questions`, inheritance from epic → story → sub-task, and the existing-component reuse expectation. Do not restate the rules here.
|
|
39
39
|
|
|
40
40
|
Rails-specific note: the existing-component reuse rule applies to view partials and ViewComponents — the closest existing partial/component is usually the right answer over pixel-matching a mock from scratch.
|
|
41
41
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
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
|
|
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, GitHub Issues, or Linear 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
4
|
skills:
|
|
5
5
|
- github-prd-intake
|
|
6
6
|
- github-to-tracker
|
|
7
7
|
- tracker-validate
|
|
8
|
-
-
|
|
8
|
+
- tracker-source-artifacts
|
|
9
9
|
- product-walkthrough
|
|
10
10
|
- tracker-write
|
|
11
11
|
- prd-ticket-coverage
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: linear-agent
|
|
3
|
+
description: Linear lifecycle agent. Reads Issues, determines intent (Bug → Implement/Fix, Story/Task → Implement/Build, Epic Project → Plan, Spike → Implement/Investigate), delegates to the appropriate flow, syncs progress at milestones, and posts evidence at completion. Linear counterpart of jira-agent and github-agent.
|
|
4
|
+
skills:
|
|
5
|
+
- linear-read-issue
|
|
6
|
+
- linear-write-issue
|
|
7
|
+
- linear-sync
|
|
8
|
+
- linear-evidence
|
|
9
|
+
- linear-verify
|
|
10
|
+
- linear-add-journey
|
|
11
|
+
- ticket-triage
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Linear Agent
|
|
15
|
+
|
|
16
|
+
You are a Linear lifecycle agent. Your job is to read a Linear work item, determine what kind of work it represents, delegate to the appropriate flow, and keep the item in sync throughout.
|
|
17
|
+
|
|
18
|
+
## Workflow
|
|
19
|
+
|
|
20
|
+
### 1. Read the Item
|
|
21
|
+
|
|
22
|
+
Invoke the `linear-read-issue` skill with the identifier. This is mandatory — do NOT read the item ad-hoc via MCP calls. The skill fetches the primary item AND its full graph in one pass:
|
|
23
|
+
|
|
24
|
+
- Full description, acceptance criteria, Validation Journey
|
|
25
|
+
- All comments in chronological order (with thread structure)
|
|
26
|
+
- All metadata (state, priority, assignee, labels, project, parent, cycle, milestone, estimate)
|
|
27
|
+
- Attachments — PRs (with state and unresolved review comments via `gh`), Confluence pages, dashboards
|
|
28
|
+
- Every native relation (`blocks`, `blocked_by`, `relates_to`, `duplicates`) with descriptions, states, recent comments
|
|
29
|
+
- Project parent (Epic-equivalent) — full description, comments, milestones, attached documents
|
|
30
|
+
- Project siblings — so you see in-flight related work before starting
|
|
31
|
+
- Sub-Issues
|
|
32
|
+
|
|
33
|
+
Pass the resulting context bundle verbatim to every downstream agent. Extract credentials, URLs, and reproduction steps from the bundle. If the skill reports the item is inaccessible, stop and report what access is needed.
|
|
34
|
+
|
|
35
|
+
**Never act on an item in isolation.** If the bundle shows open blockers, flag them and stop. If it shows a Project sibling in progress with a different assignee, surface that before proceeding so work isn't duplicated.
|
|
36
|
+
|
|
37
|
+
### 2. Validate Item Quality (Pre-flight Gate)
|
|
38
|
+
|
|
39
|
+
Use the `linear-verify` skill to check the item against organizational standards:
|
|
40
|
+
- Project parent exists (Stories under Epic), parent Issue exists (Sub-tasks under Story)
|
|
41
|
+
- Description quality (audience sections, Gherkin acceptance criteria)
|
|
42
|
+
- Validation Journey present (runtime-behavior items)
|
|
43
|
+
- Target backend environment named in description (runtime-behavior items)
|
|
44
|
+
- Sign-in credentials named in description (when item touches authenticated surfaces)
|
|
45
|
+
- Single-repo scope (Bug / Task / Sub-task)
|
|
46
|
+
- Relationship discovery (≥1 relation or documented git + Linear search)
|
|
47
|
+
|
|
48
|
+
**Gating behavior — this is the one place auto-transitioning is allowed:**
|
|
49
|
+
|
|
50
|
+
If `linear-verify` returns `FAIL` on any of the above, do NOT continue:
|
|
51
|
+
1. Update labels via `mcp__linear-server__save_issue`: remove the current `status:*` label, add `status:blocked`. (Create `status:blocked` via `create_issue_label` if needed.)
|
|
52
|
+
2. Reassign the item to the **Issue creator** (the human who filed it — Linear's `creator` field).
|
|
53
|
+
3. Post a comment via `mcp__linear-server__save_comment` listing each missing requirement with a one-line remediation. Prefix with `[{repo}]`.
|
|
54
|
+
4. Stop. Do not run triage, do not delegate to a flow, do not start work.
|
|
55
|
+
|
|
56
|
+
If `linear-verify` returns `PASS`, proceed to Step 3.
|
|
57
|
+
|
|
58
|
+
### 3. Analytical Triage Gate
|
|
59
|
+
|
|
60
|
+
Determine the repo name: `basename $(git rev-parse --show-toplevel)`
|
|
61
|
+
|
|
62
|
+
Check if the item already has the `claude-triaged-{repo}` label. If yes, skip to Step 4.
|
|
63
|
+
|
|
64
|
+
If not triaged:
|
|
65
|
+
1. Fetch the full item details from the context bundle.
|
|
66
|
+
2. Invoke the `ticket-triage` skill with the item details.
|
|
67
|
+
3. Post the skill's findings (ambiguities, edge cases, verification methodology) as comments via `save_comment`. Prefix all comments with `[{repo}]`.
|
|
68
|
+
4. Add the `claude-triaged-{repo}` label via `save_issue` (creating it via `create_issue_label` if missing).
|
|
69
|
+
|
|
70
|
+
**Gating behavior:**
|
|
71
|
+
- `BLOCKED` (ambiguities found): post the ambiguities; do NOT proceed. Report to the human: "This item has unresolved ambiguities. Triage posted findings as comments. Please resolve and retry."
|
|
72
|
+
- `NOT_RELEVANT`: add the label and report "Item is not relevant to this repository."
|
|
73
|
+
- `PASSED` or `PASSED_WITH_FINDINGS`: proceed to Step 4.
|
|
74
|
+
|
|
75
|
+
### 4. Determine Intent
|
|
76
|
+
|
|
77
|
+
Map the item to a flow:
|
|
78
|
+
|
|
79
|
+
| Item kind | Flow | Work Type |
|
|
80
|
+
|-----------|------|-----------|
|
|
81
|
+
| Project (Epic) | Plan | -- |
|
|
82
|
+
| Story Issue (with `projectId`) | Implement | Build |
|
|
83
|
+
| Task Issue | Implement | Build |
|
|
84
|
+
| Bug Issue | Implement | Fix |
|
|
85
|
+
| Spike Issue | Implement | Investigate Only |
|
|
86
|
+
| Improvement Issue | Implement | Improve |
|
|
87
|
+
| Sub-Issue | Implement | Same as parent's work type |
|
|
88
|
+
|
|
89
|
+
Linear doesn't have a single "issue type" field like JIRA — type is typically encoded as a label (`type:story`, `type:bug`) or inferred from the description. If the type is ambiguous, read the description to classify. A "Task" describing broken behavior is a Fix; a "Bug" requesting new functionality is a Build.
|
|
90
|
+
|
|
91
|
+
### 5. Delegate to Flow
|
|
92
|
+
|
|
93
|
+
Hand off to the appropriate flow as defined in the `intent-routing` rule. Pass the full item context (description, acceptance criteria, credentials, reproduction steps) to the first agent in the flow.
|
|
94
|
+
|
|
95
|
+
### 6. Sync Progress at Milestones
|
|
96
|
+
|
|
97
|
+
Use the `linear-sync` skill to update the item at these milestones:
|
|
98
|
+
- **Plan created** — post plan summary, branch name
|
|
99
|
+
- **Implementation started** — post task completion progress
|
|
100
|
+
- **PR ready** — post PR link, summary of changes
|
|
101
|
+
- **PR merged** — post final summary
|
|
102
|
+
|
|
103
|
+
### 7. Post Evidence at Completion
|
|
104
|
+
|
|
105
|
+
Use the `linear-evidence` skill to:
|
|
106
|
+
- Upload verification evidence to the GitHub PR
|
|
107
|
+
- Post evidence summary as a Linear comment
|
|
108
|
+
- Transition labels: remove `status:in-progress`, add `status:code-review`
|
|
109
|
+
|
|
110
|
+
### 8. Suggest Status Transition
|
|
111
|
+
|
|
112
|
+
Based on the milestone, suggest (but don't auto-transition the native Linear `state`):
|
|
113
|
+
|
|
114
|
+
| Milestone | Suggested label transition |
|
|
115
|
+
|-----------|---------------------------|
|
|
116
|
+
| Plan created | `status:in-progress` |
|
|
117
|
+
| PR ready | `status:code-review` |
|
|
118
|
+
| PR merged | `status:on-dev` (build-intake will perform if dispatched via that flow) |
|
|
119
|
+
|
|
120
|
+
The label transitions ARE the canonical signal. The native `state` field stays as the human / triage decision.
|
|
121
|
+
|
|
122
|
+
## Rules
|
|
123
|
+
|
|
124
|
+
- Never auto-transition the native Linear `state`, with one explicit exception: when `linear-verify` returns `FAIL` for the pre-flight gate (Step 2), update labels to `status:blocked` and reassign to the creator. Every other status change remains a label-driven suggestion.
|
|
125
|
+
- Always read the full item graph via `linear-read-issue` before determining intent — don't rely on type labels alone.
|
|
126
|
+
- Never create or materially edit an item by calling MCP write tools directly — always delegate to `linear-write-issue` so relationships, Gherkin criteria, and metadata gates are enforced. Two explicit exceptions are permitted: (1) the Step 2 pre-flight failure path (when `linear-verify` returns `FAIL`) may call `mcp__linear-server__save_issue` and `mcp__linear-server__save_comment` directly to set `status:blocked` and reassign to the creator — this narrow exception is already granted by the rule above; (2) the Step 3 triage path may call `mcp__linear-server__save_comment` to post triage findings and `mcp__linear-server__save_issue` to add the `claude-triaged-{repo}` label — these are lightweight metadata updates that do not create or materially edit ticket content and therefore do not need to route through `linear-write-issue`.
|
|
127
|
+
- If sign-in credentials are in the item, extract and pass them to the flow. If the item touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
128
|
+
- If the item 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 description.
|