# Prowler Tour

> Keeps product-tour definitions aligned with the UI features they describe. Trigger: When modifying UI components that have associated tours, editing tour definition files, or renaming data-tour-id attributes.

- Skill: `prowler-cloud/prowler-tour` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds add prowler-cloud/prowler-tour`
- Raw SKILL.md: https://api.skillmd.com/api/skills/prowler-cloud/prowler-tour/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: prowler-cloud (https://skillmd.com/u/prowler-cloud)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/prowler-cloud/prowler-tour

---


# prowler-tour

**Report-only.** This skill never edits tour files or UI files; it inspects
the change, reports drift it finds between tours and the covered UI, and
recommends actions for the developer to apply.

## Early-exit rule

Run this check first. Most UI edits are not tour-related — exit cheaply.

1. Glob `ui/lib/tours/*.tour.ts`.
2. For each tour, check whether any `coversFiles` glob pattern matches any
   file in the current change.
3. If no tour matches, respond **exactly**:

   > No tour affected — skipping alignment check

   and exit. Do not proceed to the checklist.
4. If at least one tour matches, continue to "Drift checklist" for that tour.

## Drift checklist

For each affected tour, evaluate every item. Skip items that obviously do
not apply, but list explicitly which items were checked.

1. **Orphan selectors** — every step's `target` (which composes to
   `data-tour-id="<tour-id>-<step.target>"`) must resolve to a real element
   in the codebase. Grep `ui/` for the expected attribute value; report
   any step whose target is missing.
2. **Renamed selectors** — a `data-tour-id` attribute was edited in this
   change. Match it back to any tour step referencing the old value.
3. **Outdated copy** — a popover `title`/`description` references a button
   label, heading, or term that no longer exists on the covered page.
4. **Obsolete steps** — a step describes a section, panel, or workflow
   that was removed.
5. **Missing steps** — a new feature was added on the covered surface
   without a corresponding step (e.g. a new panel, a new primary action,
   a new wizard stage).
6. **Reordered flow** — the user's path through the feature changed (e.g.
   query builder moved before scan selection) and the step order no
   longer reflects it.

## Version-bump decision tree

Apply per tour after listing drift:

- **NO bump** when the change is cosmetic. Examples: fix a typo, soften
  copy, rename a `data-tour-id` selector while keeping the same step,
  swap one screenshot for another, tighten wording.
- **BUMP `version`** when the user-visible flow changes materially.
  Examples: a new step was added or removed; the order changed; an
  anchored target was retargeted to a different panel; the tour now
  covers a new feature on the surface.

When in doubt, ask: "Would a user who already saw the previous version
miss something useful by not seeing this one?" If yes, bump.

## Output format

When emitting a report, follow the exact structure in
`references/output-format.md`. The structure is mandatory because the
report is consumed downstream and tolerates no field reordering.

## What this skill MUST NOT do

- Do not edit `*.tour.ts` files. This skill is report-only.
- Do not edit UI files to add or rename `data-tour-id` attributes.
- Do not invent new tours. Authoring a new tour is a separate, deliberate
  decision — the developer makes it, not the skill.
- Do not flag drift in tours whose `coversFiles` do not match any file
  in the current change. Stick to the early-exit rule.

## See also

- `references/output-format.md` — exact report template (read when
  emitting a report).
- `references/tours-architecture.md` — code map for the tour abstraction
  under `ui/lib/tours/`.
- `assets/tour-template.ts` — boilerplate for authoring a new `*.tour.ts`.

