plugins/lisa-copilot/skills/lisa-track/SKILL.md
Resolves exactly one live configured-tracker leaf for durable project work, claims it idempotently, and persists its canonical reference in worktree-local state. Accepts an existing Jira/GitHub/Linear ref, a spec file, or plain text. Use directly to mention/create the related ticket, and as lisa-implement's mandatory input gate.
npx skillsauth add codyswanngt/lisa lisa-trackInstall 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.
Establish the tracked-work invariant before any durable project mutation. Discussion and read-only orientation may proceed without this skill; code, configuration, documentation, research artifacts, plans, investigation findings, tests, commits, and pull requests may not.
This flow must return exactly one canonical (tracker_provider, work_item_ref) pair or fail closed. It never returns an unvalidated textual guess.
.lisa.config.local.json over .lisa.config.json exactly as lisa-tracker-read / lisa-tracker-write do. Missing, unknown, or incomplete tracker configuration is a blocking error.$ARGUMENTS as exactly one of:
KEY-123, org/repo#123 or issue URL, Linear team identifier);Invoke lisa-tracker-read <ref> and require a live result from the configured project. Reject nonexistent, inaccessible, closed/resolved/terminal, wrong-project, wrong-repository, or container items. This live read is mandatory even if caller context already includes ticket text.
Search conservatively before creating:
gh issue list --repo <org>/<repo> --state open --search "<keywords> in:title,body".lisa-atlassian-access operation: search-issues with project-scoped JQL.lisa-linear-access operation: list-issues scoped to the configured team/workspace.lisa-tracker-read, and discard terminal, container, blocked, cross-repo, and materially different outcomes.lisa-tracker-write once. Synthesize one complete single-repository leaf (Bug, Task, Sub-task, or Improvement, never Epic/container) with the writer's required three-audience body, Gherkin acceptance criteria, repository, target environment, relationship search, and executable Validation Journey. Pass build_ready: true. Do not create placeholder/thin tickets, do not create a hierarchy, and do not retry creation by making another item if validation fails; repair the proposed spec and retry the same writer operation only if the vendor contract supports idempotent reuse.lisa-tracker-read. A create response without a verified live leaf is failure.This is intentionally conservative: ambiguity creates one explicit work item instead of silently attaching work to the wrong existing item. Across the entire invocation, at most one new work item may be created.
Invoke lisa-tracker-claim <canonical-ref>. Require its post-read verified claim_outcome: claimed|reused; no binding may be written after a failed/unverified claim.
Persist only the canonical reference in worktree-local machine state:
node scripts/lisa-work-item.mjs bind <canonical-ref>
Read the binding back through node scripts/lisa-work-item.mjs current and require it to equal the canonical reference. If binding fails, stop before durable project work.
branch: null as a pending state. Create the feature branch only after the gate succeeds, then run node scripts/lisa-work-item.mjs attach-branch. Commit preparation and validation fail closed until that attachment succeeds.Return this structured result plus the full resolved work-item context:
tracker_provider: jira|github|linear
work_item_ref: <canonical-ref>
resolution_outcome: explicit|reused|created
claim_outcome: claimed|reused
binding_outcome: verified
node scripts/lisa-work-item.mjs attach-branch after the feature branch exists.node scripts/lisa-work-item.mjs clear and verifying no current binding remains.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.