plugins/lisa/skills/plan-execute/SKILL.md
This skill should be used for any non-trivial request — features, bugs, stories, epics, spikes, or multi-step tasks. It accepts a ticket URL (Jira, Linear, GitHub), a file path containing a spec, or a plain-text prompt. It assembles an agent team, breaks the work into structured tasks, and manages the full lifecycle from research through implementation, code review, deploy, and empirical verification.
npx skillsauth add codyswanngt/lisa plan-executeInstall 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.
$ARGUMENTS is either a url to a ticket containing the request, a pointer to a file containing the request or the request in text format.
If it's a ticket, use either the Jira CLI (if it's a jira ticket), the Linear CLI (if it's a linear ticket) or the Github CLI (if it's a github ticket) to read and fully understand the request, including any comments or meta data associated with the ticket.
If it's a file, read the entire file without offset or limit to understand the request.
Is this a simple request? Just execute it as usual and ignore the rest...
Otherwise:
Review all available agent types listed in the Task tool's subagent_type options. This includes built-in agents (like Explore, general-purpose), custom agents (from .claude/agents/), and plugin agents (from .claude/settings.json enabledPlugins). For each agent, explain in one sentence why it IS or IS NOT relevant to this task. Then select all agents that are relevant. You MUST justify excluding an agent — inclusion is the default.
When deciding the agents to use, consider:
metadata.relevant_documentation with the findings.NOTE: Every team must include the Explore agent
Create an agent team composed of the selected agents. Spawn every agent with mode: "plan" so they must submit their plan for team lead approval before making any file changes.
Use the TeamCreate tool to create the team before doing anything else.
Using the general-purpose agent in Team Lead session, Determine the name of this plan
Using the general-purpose agent in Team Lead session, Determine what branch to use:
Using the general-purpose agent in Team Lead session, Determine which flow applies:
If Implement, determine the work type:
Run the readiness gate check for the selected flow as defined in the intent-routing rule (loaded via the lisa plugin). If the gate fails, stop and report what is missing.
IF it is a Fix (bug), execute the Reproduce sub-flow FIRST:
Using the general-purpose agent in Team Lead session, determine how you will know that the task is fully complete
Using the general-purpose agent in Team Lead session, create tasks needed to complete the request.
Every task MUST include this JSON metadata block. Do NOT omit skills (use [] if none), learnings (use [] if none) or verification.
{
"plan": "<plan-name>",
"type": "spike|bug|task|epic|story",
"acceptance_criteria": ["..."],
"relevant_documentation": "",
"testing_requirements": ["..."],
"skills": ["..."],
"learnings": ["..."],
"verification": {
"type": "ui-recording|api-test|cli-test|database-check|manual-check|documentation",
"command": "the proof command — must run the actual system (NOT test/typecheck/lint, those are quality gates)",
"expected": "what success looks like — observable system behavior"
}
}
Before any task is implemented, the agent team must explore the codebase for relevant research (documentation, code, git history, etc) and update each task's metadata.relevant_documentation with the findings.
Each task must be reviewed by the team to make sure their verification passes. Each task must have their learnings reviewed by the learner subagent.
Before shutting down the team, execute the Verify flow:
verification-specialist: verify locally by running the actual system and observing results (empirical proof that the change works). This is the real verification step.verification-specialist verifies in target environment (same checks as local verification, but on remote)ops-specialist: post-deploy health check, monitor for errors in first minutesdevelopment
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.