plugins/lisa/skills/lisa-linear-create/SKILL.md
Creates Linear Projects (Epic-equivalent), Issues (Story / Task / Bug / Spike), and sub-Issues (Sub-task) from code files or descriptions. Analyzes the input, determines the appropriate hierarchy, and creates items with comprehensive quality requirements including test-first development and Validation Journey. The Linear counterpart of lisa-jira-create — delegates every write to lisa-linear-write-issue.
npx skillsauth add codyswanngt/lisa lisa-linear-createInstall 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.
Analyze the provided file(s) and plan a Linear hierarchy. This skill plans structure only — every individual write is delegated to lisa-linear-write-issue. Do not call lisa-linear-access operation: save-project or lisa-linear-access operation: save-issue from this skill; those write tools are intentionally not in allowed-tools.
This skill is the destination of the lisa-tracker-create shim when tracker = "linear".
Reads linear.workspace, linear.teamKey from .lisa.config.json (with .local override).
$ARGUMENTS to understand scope.lisa-tracker-source-artifacts, then enumerate every external URL, embed, attachment, or example payload in the input and classify each by domain. Build the artifacts map (one entry per artifact: url, title, domain, source page, classification reason). See "Source Artifacts" below.lisa-product-walkthrough to capture current behavior, design-vs-product divergence, and reuse candidates. Skip when the work is purely backend or affects a screen that does not yet exist.Project (Epic) → Issue (Story) → sub-Issue (Sub-task)
Mapping per Linear best practices: Epic → Linear Project, Story → Issue with projectId, Sub-task → Issue with parentId. See config-resolution.md "Linear destination semantics".lisa-linear-write-issue in dependency order (Project first, then Issues with projectId set, then sub-Issues with parentId). Pass artifacts (filtered by domain per lisa-tracker-source-artifacts inheritance rules) and walkthrough findings (under ## Current Product).lisa-tracker-source-artifacts §8): after all writes complete, build the preservation matrix and verify every extracted artifact is reachable from the created items. Fail loudly if anything was dropped.Items that change runtime behavior should include a ## Validation Journey section. This section is consumed by lisa-linear-journey to automate verification.
Design the journey based on the change type. Place typed [EVIDENCE: <artifact-type>: <name>] markers at key verification points (types: screenshot, recording, http-transcript, cli-output, log-snippet, db-query-output, perf-trace, test-run-log, deploy-log, state-dump — see the verification rule).
To point at evidence owned by another work item, use exactly [EVIDENCE-REF: <work-item-ref> | <artifact-type>: <kebab-case-name>]. It is non-claiming and cannot satisfy S14; never paste or quote the sibling's [EVIDENCE: ...] marker into this item.
## Validation Journey
### Prerequisites
- Local dev server running
- Database accessible
- Required environment variables set
### Steps
1. Verify the current state before changes
2. Apply the change (run migration, deploy, etc.)
3. Verify the expected new state [EVIDENCE: http-transcript: state-after-change]
4. Test error/edge cases [EVIDENCE: screenshot: error-state-rendered]
5. Verify rollback or cleanup if applicable [EVIDENCE: db-query-output: rows-restored-after-rollback]
### Assertions
- Describe what must be true after verification
- Each assertion is verified against the captured evidence
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 attachments / remote links on the created items. Silent artifact loss is the single most common quality failure in this pipeline.
Invoke lisa-tracker-source-artifacts for the canonical rules: domains, per-tool classification, source precedence, conflict handling under ## Open Questions, inheritance from Project → Issue → sub-Issue, and the existing-component reuse expectation. Do not restate the rules here — invoke the skill so any rule change propagates uniformly.
When delegating actual writes to lisa-linear-write-issue, pass the extracted artifact list so its Phase 4c (Remote Links) step can attach them.
When the work touches existing user-facing surfaces, invoke lisa-product-walkthrough before drafting items. The walkthrough findings (current behavior, design-vs-product divergence, reuse candidates, behavioral surprises) become inputs to the item plan and surface under ## Current Product on the resulting items. Skip only when the work is purely backend or affects a screen that does not yet exist.
Each item must clearly communicate to:
Default team: from linear.teamKey config (override via arguments).
Mandatory. Every item created by this skill MUST go through lisa-linear-write-issue. This skill never performs Linear save operations itself — those tools are intentionally excluded from allowed-tools so the gate cannot be bypassed.
lisa-linear-write-issue enforces:
blocks / blocked_by / relates_to / duplicates)Items must be created in parent-before-child order so each child can be passed its parent ID:
lisa-linear-write-issue for the Epic (Project). Capture the returned Project ID.lisa-linear-write-issue with the Project ID as parent_project_id. Capture each Issue identifier.lisa-linear-write-issue with the Story Issue ID as parent_issue_id and explicit build_ready: true.ready-role-filing rule an omitted build_ready is not build-ready on any tracker, so pass build_ready: true on each Sub-task (the leaf work units this skill plans) and never on the Epic or Stories, which are containers per leaf-only-lifecycle. A leaf that is deliberately held instead passes human_gate: "<why a human must judge this first>". Filing a leaf with neither is an incomplete handoff and lisa-linear-write-issue rejects it.For every delegated write, pass:
lisa-linear-add-journey after create)This skill owns:
It does not own the actual Linear write — that's lisa-linear-write-issue's job.
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.