plugins/src/base/skills/lisa-linear-journey/SKILL.md
Parse a Linear Issue's Validation Journey section, execute the verification steps using appropriate tools (curl, test commands, database queries, Playwright), capture evidence at each typed [EVIDENCE: <artifact-type>: <name>] marker, and post to Linear + GitHub PR using the linear-evidence skill. Linear counterpart of lisa-jira-journey.
npx skillsauth add codyswanngt/lisa lisa-linear-journeyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
Security scan pending...
This skill is queued for security scanning. Results will appear when the scan completes.
Parse a Linear Issue's Validation Journey, execute the verification steps using the appropriate tools for the change type, capture evidence at each typed [EVIDENCE: <artifact-type>: <name>] marker, and post to Linear + GitHub PR.
This skill is the destination of the lisa-tracker-journey shim when tracker = "linear".
Reads linear.workspace, linear.teamKey from .lisa.config.json (with .local override).
$ARGUMENTS: <IDENTIFIER> [PR_NUMBER]
IDENTIFIER (required): Linear Issue identifier (e.g. ENG-123)PR_NUMBER (optional): GitHub PR number to update descriptiongh CLI authenticatedFetch the Issue via lisa-linear-access operation: get-issue and extract the ## Validation Journey section from the markdown description. Parse:
### Prerequisites — list of required services / env / setup### Steps — numbered steps, each potentially containing typed [EVIDENCE: <artifact-type>: <name>] markers### Assertions — what must be true after verificationIf the section is missing or has no steps, report "No Validation Journey on <IDENTIFIER>. Run /linear-add-journey first." and stop.
Before executing steps, verify each prerequisite:
Stop and report if any prerequisite is not satisfied.
Execute each step sequentially. Determine the verification approach based on the step text and change type:
evidence/NN-name.txt (or .json for structured data)At each typed [EVIDENCE: <artifact-type>: <name>] marker, capture an artifact of the declared type — the type is the contract, not a suggestion:
screenshot / recording → an actual image/video file from the driven UI (Playwright, simulator), never a text description of what was seenhttp-transcript → the exact request (curl command or client call) plus the full responsecli-output → the command plus stdout/stderr and exit codelog-snippet → the correlated log lines pulled from the running systemdb-query-output → the query plus returned rowsperf-trace → the benchmark/frame-timing/profiler output with methodology (device profile, dataset size)test-run-log → reporter output naming the spec and showing it ran and passeddeploy-log / state-dump → the deployment/health-check output or observed-state JSONA prose claim ("the error state rendered gracefully") satisfies no marker. Legacy untyped markers: infer the type from the step's action, capture accordingly, and note the inference. Write each artifact to a numbered file:
Treat only exact [EVIDENCE: ...] markers (plus the legacy local [SCREENSHOT: ...] form) as capture instructions. Both the canonical [EVIDENCE-REF: <work-item-ref> | <artifact-type>: <kebab-case-name>] and the Lisa 2.223.0 legacy alias [EVIDENCE-REF: <tracker-ref>: <artifact-type>: <kebab-case-name>] point to another work item's artifact: preserve either as explanatory text, but do not capture it, assign it a sequence number, include it in duplicate-name checks, or count it as a local manifest entry. If a runtime-changing leaf has references but no local claiming marker, stop because S14 is unsatisfied.
{NN}-{evidence-name}.{ext}
NN: zero-padded sequential number (01, 02, 03...)evidence-name: the <name> part of the typed markerext: .txt for plain output, .json for structured dataExample:
evidence/
01-health-check.json
02-schema-after-migration.txt
03-rate-limit-response.txt
comment.txt
code-blocks.md
After capturing all evidence, build:
evidence/comment.txt — human-readable summary of the verification (Linear comment body, markdown-supported)evidence/code-blocks.md — fenced code blocks containing the captured evidence outputs (appended below comment.txt inside a <details> block)Invoke lisa-linear-evidence with <IDENTIFIER> ./evidence to:
pr-assets release (if files present in evidence/files/).comment.txt + collapsible code-blocks.md).status:in-progress, add status:code-review.Confirm:
status:* label transitioned to code-review.Use patterns from the project's verification.md:
| Change Type | Verification Method | Evidence Format |
|---|---|---|
| API endpoint | curl -s localhost:PORT/endpoint | JSON response |
| Database migration | psql -c "\d table" or migration output | Schema text |
| Background job | Trigger + check state | Log output |
| Library / utility | bun run test -- path/to/test | Test output |
| Security fix | Reproduce + verify fix | Request / response |
| Auth/authz | Multi-role verification | Status codes per role |
| UI / frontend | Any capable interactive browser controller (in-app Browser/Chrome, Playwright MCP/API/ad hoc script, CDP, computer use, or equivalent) | Screenshot + DOM |
Ensure the command succeeded and produced output. Use 2>&1 to capture both stdout and stderr.
The Issue may not have a Validation Journey section. Run /linear-add-journey <IDENTIFIER> to add one.
Ensure status:in-progress and status:code-review exist on the team. lisa-linear-evidence creates them on demand if missing.
tools
Configure the official SonarQube plugin + MCP as Lisa's single Sonar substrate across every supported coding agent. Installs/updates the SonarQube CLI, authenticates (browser login on a dev machine, or SONARQUBE_CLI_TOKEN headless), selects the Test Manager target, runs `sonar integrate <agent>` for each supported agent (Claude, Codex, Cursor, Copilot, Antigravity) and wires the MCP for OpenCode, then writes only non-secret policy to .lisa.config.json. Separate from the CI SonarCloud scan gate, which is unchanged.
tools
Configure the official SonarQube plugin + MCP as Lisa's single Sonar substrate across every supported coding agent. Installs/updates the SonarQube CLI, authenticates (browser login on a dev machine, or SONARQUBE_CLI_TOKEN headless), selects the Test Manager target, runs `sonar integrate <agent>` for each supported agent (Claude, Codex, Cursor, Copilot, Antigravity) and wires the MCP for OpenCode, then writes only non-secret policy to .lisa.config.json. Separate from the CI SonarCloud scan gate, which is unchanged.
tools
Configure the official SonarQube plugin + MCP as Lisa's single Sonar substrate across every supported coding agent. Installs/updates the SonarQube CLI, authenticates (browser login on a dev machine, or SONARQUBE_CLI_TOKEN headless), selects the Test Manager target, runs `sonar integrate <agent>` for each supported agent (Claude, Codex, Cursor, Copilot, Antigravity) and wires the MCP for OpenCode, then writes only non-secret policy to .lisa.config.json. Separate from the CI SonarCloud scan gate, which is unchanged.
tools
Configure the official SonarQube plugin + MCP as Lisa's single Sonar substrate across every supported coding agent. Installs/updates the SonarQube CLI, authenticates (browser login on a dev machine, or SONARQUBE_CLI_TOKEN headless), selects the Test Manager target, runs `sonar integrate <agent>` for each supported agent (Claude, Codex, Cursor, Copilot, Antigravity) and wires the MCP for OpenCode, then writes only non-secret policy to .lisa.config.json. Separate from the CI SonarCloud scan gate, which is unchanged.