plugins/lisa-copilot/skills/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 [EVIDENCE: name] marker, and post to Linear + GitHub PR using the linear-evidence skill. Linear counterpart of lisa:jira-journey.
npx skillsauth add codyswanngt/lisa linear-journeyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Parse a Linear Issue's Validation Journey, execute the verification steps using the appropriate tools for the change type, capture evidence at each [EVIDENCE: 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 [EVIDENCE: 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 [EVIDENCE: name] marker, capture stdout / stderr to a numbered file:
{NN}-{evidence-name}.{ext}
NN: zero-padded sequential number (01, 02, 03...)evidence-name: the value from [EVIDENCE: name]ext: .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 | Playwright browser_* MCP tools | 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.
development
Prepare a machine — a fresh laptop or a throwaway container — to run coding agents, before any repository exists. Detects which of Lisa's supported agents (Claude Code, Codex, Cursor, OpenCode, Antigravity, Copilot) are already installed, asks which credential manager the machine uses (Bitwarden, 1Password, Doppler, Vault, AWS, or none), and installs only what is missing, each by its vendor's own preferred method. Idempotent, headless by default, and emits a Dockerfile for a spin-up/spin-down environment. Run it on a new machine, in a container, or before cloning anything.
tools
Provision and verify a remote execution environment for a host project — Codex Cloud today, other remote surfaces as they are added. Generates a repository-owned setup script that installs the declared toolchain, materializes secrets through lisa-secrets-access, and runs the project's own hook. Provisions by API where one exists, by driving the vendor console where one does not, and by emitting exact config otherwise — then proves the result with the same read-back regardless of which tier did the work. Use before dispatching any work with executionEnv.
tools
Bring a developer's machine in line with the toolchain the project declares. Reports every tool in remoteEnv.tools that is missing, outdated, or unpinned for this platform, and installs the missing ones into ~/.local/bin from the same pinned, checksummed entries the remote surfaces use — but only when asked. Same manifest, same pins, same installers as lisa-setup-remote-env; what differs is consent and that the pin is a floor rather than an equality. Run it on a fresh checkout, after a manifest change, or when a tool fails at the moment of use.
tools
Route one unit of work to a remote execution surface. Reads the executionEnv parameter (local by default, codex-cloud or claude-web today), verifies the environment is provisioned and bound to this repository, submits a thin skill invocation, records the task identifier to .lisa/remote-dispatch.json, and exits without polling. Routing only — the remote runs the identical skill from the identical repository. Composable and inline: other skills invoke it via the Skill tool rather than users calling it directly.