/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.
$ npx -y skills add prowler-cloud/prowler --skill prowler-tour --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/prowler-tour
Context preview
The summary Claude sees to decide when to auto-load this skill.
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.md
prowler-tour.SKILL.mdname: prowler-tour
description: >
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.
license: Apache-2.0
metadata:
author: prowler-cloud
version: "1.0"
scope: [root, ui]
auto_invoke:
- "Editing a UI file containing data-tour-id attributes"
- "Adding, updating, or removing a tour definition (*.tour.ts)"
- "Renaming or removing a data-tour-id attribute value"
- "Changing button labels or section headings on a tour-covered page"
- "Restructuring routes or layouts covered by a tour"
allowed-tools: Read, Glob, Grepprowler-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`.
Read more
name: prowler-tour
description: >
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.
license: Apache-2.0
metadata:
author: prowler-cloud
version: "1.0"
scope: [root, ui]
auto_invoke:
- "Editing a UI file containing data-tour-id attributes"
- "Adding, updating, or removing a tour definition (*.tour.ts)"
- "Renaming or removing a data-tour-id attribute value"
- "Changing button labels or section headings on a tour-covered page"
- "Restructuring routes or layouts covered by a tour"
allowed-tools: Read, Glob, Grepprowler-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`.
Prowler is the world’s most widely used Open-Source Cloud Security Platform that automates security and compliance across any cloud environment.
Repo: prowler-cloud/prowler
Other skills on prowler.
- /framework-compliance-triage
Make a cloud account compliant with a security or industry framework using Prowler Cloud.
Open skill - /ai-sdk-5
Vercel AI SDK 5 patterns. Trigger: When building AI features with AI SDK v5 (chat, streaming, tools/function calling, UIMessage parts), including migration from v4.
Open skill - /django-drf
Django REST Framework patterns. Trigger: When implementing generic DRF APIs (ViewSets, serializers, routers, permissions, filtersets). For Prowler API specifics (RLS/RBAC/Providers), also use prowler-api.
Open skill - /django-migration-psql
Reviews Django migration files for PostgreSQL best practices specific to Prowler. Trigger: When creating migrations, running makemigrations/pgmakemigrations, reviewing migration PRs, adding indexes or constraints to database tables, modifying existing migration files, or writing
Open skill - /gh-aw
Create and maintain GitHub Agentic Workflows (gh-aw) for Prowler. Trigger: When creating agentic workflows, modifying gh-aw frontmatter, configuring safe-outputs, setting up MCP servers in workflows, importing Copilot Custom Agents, or debugging gh-aw compilation.
Open skill - /jsonapi
Strict JSON:API v1.1 specification compliance. Trigger: When creating or modifying API endpoints, reviewing API responses, or validating JSON:API compliance.
Open skill

