plugins/lisa-cursor/skills/product-walkthrough/SKILL.md
Methodology for evaluating the live product when planning work or evaluating a PRD. Reading a PRD or a mock without seeing the current product produces tickets that misjudge the change — this skill grounds the analysis in what actually exists today. Driving the product is owned by the `use-the-product` core (which detects the product type — DOM web, HTTP/API, canvas game, CLI, IaC — resolves the per-environment mutation policy from .lisa.config.json so production is never mutated by accident, and explores through the project's personas when defined); this skill adds the planning lens. Invoke from notion-to-tracker (Phase 2b live-product walkthrough), jira-create, and any PRD intake flow whose work touches existing user-facing surfaces.
npx skillsauth add codyswanngt/lisa product-walkthroughInstall 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.
Reading a PRD or a mock without seeing the current product produces tickets that misjudge the change. This skill defines how to evaluate the live product before planning tickets, so the work is grounded in what actually exists today.
How you drive the product is owned by the use-the-product core skill — it detects the product type (web / API / game / CLI / IaC), resolves the target environment and its mutation policy from .lisa.config.json, and discovers the project's personas. A walkthrough is read-leaning: prefer the policy's read-only actions, and only mutate when both the policy allows it (full) and a flow genuinely can't be understood without it. This skill adds the planning lens below.
Always run a walkthrough when the work touches user-facing surfaces:
Skip when the work is purely internal (type-only, doc-only) or affects a surface that does not yet exist in production / dev.
Before driving anything, list the surfaces the change will touch:
Write this list down. If you can't, the PRD is too vague — note it as a coverage smell and surface it as an Open Question on the resulting ticket.
Invoke use-the-product to detect the type, resolve the environment + mutation policy, and discover personas — then drive the surfaces from step 1 through its per-type playbook (browser for DOM, curl for an API, canvas+input for a game, cdk synth/diff for IaC). Capture evidence as you go: for a DOM app, a browser_snapshot (accessibility tree — best for reasoning) and a browser_take_screenshot (visual) per surface and per state, plus browser_console_messages / browser_network_requests after interactions; for an API, representative request/response pairs; for a game, screenshots of each state. If the project defines personas, walk the surfaces as the relevant archetype(s).
Honor the mutation gate: on a read-only env, observe without submitting; never walk a forbidden env (production defaults to forbidden). Treat console errors, 4xx/5xx, and unexpected calls as findings.
For every walkthrough, record:
lisa:tracker-source-artifacts §7).lisa:tracker-source-artifacts §3).Capture evidence so the originating ticket / Notion comment / PRD review can reference it. Close the session when done (browser_close for a browser) — walkthroughs are short, focused, and one-shot.
## Current Product in the ticket description (Story or Epic). Reference screenshots as remote links or attachments.Use this structure when emitting walkthrough findings, so consuming skills can splice them into tickets / comments unchanged. The ## Current Product heading matches what lisa:jira-write-ticket Phase 4e expects to inherit — keep the heading exact.
## Current Product
**Environment**: <target> as <account/role> (<mutation level>)
**Explored as**: <persona(s) or "generic representative user">
**Viewports exercised**: Desktop 1512×768, Mobile 375×812 (DOM web only)
### Surfaces walked
1. <route/endpoint/screen> — <one-line current behavior>
2. <route/endpoint/screen> — <one-line current behavior>
### What exists today
<2-4 sentence prose summary of the current flow and components/endpoints in use>
### Delta vs. PRD
- ADDED: <new surface/state from PRD>
- MODIFIED: <existing surface, with the change>
- REMOVED: <existing surface PRD removes>
- UNCHANGED-BUT-IMPACTED: <existing surface PRD doesn't mention but will be affected>
### Existing-component reuse candidates
- <component / endpoint / screen> — could absorb <new behavior>
### Design-vs-current-product divergence
- <mock or prototype reference> diverges from <current surface> in: <specific dimension>
- Recommendation: <reuse / new build / discussion>
### Coverage smells & behavioral surprises
- <smell or surprise>
### Evidence
- <list of screenshots/snapshots/request-response pairs, with captions>
forbidden environment (production is forbidden by default). Use dev/staging per the exploration config, and default to read-only for a planning walkthrough.## Open Questions on tickets, not silent assumptions. If the current product contradicts the PRD, surface it as a BLOCKER.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.