Skip to main content
ClaudeWave
Skill1.6k repo starsupdated 3d ago

business-review

Use when the user asks to business-review their work (local mode default, via 'business-review' or 'review my branch'), a Relaticle pull request ('--pr <N>' or a bare PR number), or a described change (--describe). v3 is a panel-of-QAs engine. It resolves the live environment first (URLs/creds/queue/Redis/Reverb are DISCOVERED from the running app, never assumed), runs a browser-capability preflight, auto-tiers by blast radius, synthesizes journeys from the diff plus Relaticle CRM priors, walks them happy AND sad through the real browser, sweeps the regression ledger, adversarially cold-reproduces every bug, and emits a substance-gated verdict (ai-approved / ai-rejected / ai-needs-human, or blocked on a degraded channel). Browser-truth only: never tinker or hit the DB to fix or fake a result. On request ('fix all issues', --fix) enters fix mode: fix → re-verify each finding against its original repro → re-gate. Publishing to the PR is opt-in and hard-disabled on a degraded run. Does NOT do code/security/scope review; for that use /code-review, /review, /deep-review.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/relaticle/relaticle /tmp/business-review && cp -r /tmp/business-review/.claude/skills/business-review ~/.claude/skills/business-review
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# Business Review (Relaticle v3): panel-of-QAs, environment-discovering, regression-aware

A panel of senior manual QAs for Relaticle. The engine is the proven v2/universal one
(preflight → tier → journey fleet → adversarial verify → substance-gated verdict), with
three organs no earlier generation had: an **environment-discovery stage** (nothing about
URLs, credentials, or infra is assumed. It is derived from the running app each run, so
the skill keeps working when app code, routes, or domains change), a **regression ledger**
(`~/.claude/business-review/relaticle/regressions.json`, machine-local and NOT in the repo:
the repo is public and the ledger records production incident history. Past confirmed
findings become standing checks the planner MUST schedule when the diff matches their
trigger; `$BR_LEDGER` overrides the path), and a **fix mode** (find → fix → cold
re-verify against the original repro → re-gate, on request).

Every claim is **browser-truth**: observed through the live UI, never `tinker`/DB; an
error is a *finding*, never something to engineer around. Coverage is a required,
attested output: journey map, per-journey value verdict, sad-path attestation, regression
sweep, and an explicit frontier with `how_to_close`.

## Invocation: natural language first, flags as internals

```
business-review                          # local: current branch vs main, committed only
business-review --working-tree           # local incl. uncommitted changes
business-review --pr <N>                 # review a GitHub PR on relaticle/relaticle
business-review --describe "<text>"      # AC from free text, no diff
business-review --fix                    # after the verdict, enter fix mode automatically
business-review --publish                # post to the PR when done (healthy runs only)
business-review --no-prompt              # suppress the end-of-run prompt
business-review --reverify REG-NNN       # replay one ledger entry's repro verbatim, report pass/fail
```

**Parse the user's words, not just flags.** Real invocations are natural language; map them:

| User says (any phrasing like…) | Effect |
|---|---|
| a bare number, `#332`, or a PR URL | `--pr <N>` |
| a PR URL + "inside this branch" / the PR is already MERGED into the current branch | `--pr <N>` reviewed against the LOCAL live app: diff = `git diff <merge>^1 <merge>` (or `gh pr diff`), walks run on this checkout, comment posts to the merged PR with both the merge and head SHA in the br-sha footer (verified: 2026-06-12, PR 336) |
| "deploy to prod for 100,000 customers", "stress testing", "every single detail/angle", "deeply", "end-2-end" | **Tier 3 override** (production-gate depth, §Tiers). Never tier below the user's stated stakes |
| "20+ scenarios", "as many scenarios as possible" | depth override: plan at least that breadth on the touched arcs |
| "quick check", "smoke", "just sanity" | cap at Tier 1 |
| "post review into PR (with screenshots)" | `--publish` (screenshots are always inline; see §Publish) |
| "fix all issues", "fix and reverify", "fix inside this PR" | `--fix` (fix mode, §Stage 6) |
| "is <bug> still fixed?", "re-check <finding>" | `--reverify` against the matching ledger/review finding |

There is **no `--tier` flag**. Tier is auto-computed (`scripts/compute_tier.py`) and only
ever raised (never lowered) by user emphasis. When the user's words and the computed tier
disagree, take the higher and say so in the plan.

## Autonomy contract

Ask **0–N clarifying questions, batched at the END of Stage 1**, each justified in
REVIEW.md `## Context gaps`. Stage 0 feeds that batch (unreachable URL after discovery,
no working credential for a role in scope). **No mid-run questions.** The only permitted
mid-run halt is the degraded-channel escalation (`references/preflight.md`). Under
`--no-prompt`, unresolved fields become Context gaps and preflight fails loudly instead
of asking.

## Stage flow

```
0 ENVIRONMENT  re-derive volatile facts from the RUNNING app (URLs, creds, queue, Redis,
               Reverb, credits) + 5-step browser-capability smoke  -- incapacity --> BLOCKED
1 UNDERSTAND   diff · sanitize untrusted text · AC curation · code-context subagent ·
               changed-surface map · regression-ledger match (check_regressions.py)
2 TIER + PLAN  classify_diff --profile -> compute_tier (0-3) ∪ user emphasis;
               journey synthesis (diff + CRM priors); personas; plan.md;
               GATES: validate_plan.py + check_regressions.py --plan
3 RUN          persona walks (lenses always; parallel subagents only Tier 3 + capacity-checked,
               inline sequential fallback is legitimate and recorded); browser-truth;
               health gate; artifact per claim
4 VERIFY       adversarial cold-repro of every bug in a FRESH context (mandatory subagent
               when the diff was authored in this session); coverage-critic -> frontier
5 REPORT       aggregate_verdicts.py -> substance gates 6b/6c (never vacuous) +
               regression-sweep section + decision_needed/frontier gates -> REVIEW.md
6 FIX MODE     (on request / --fix) fix -> cold re-verify EACH fix against its original
               repro -> re-run gates -> updated verdict -> ledger update
7 PUBLISH      opt-in; inline images (evidence branch / gh attach); ai-* label;
               br-sha marker; HARD-DISABLED when blocked
```

Stage detail lives in `references/`: `environment.md` (0), `preflight.md` (0),
`understand.md` (1), `tiering.md` + `journeys.md` + `personas.md` (2), `fleet.md` +
`browser-truth.md` + `ux-lens.md` + `checks-matrix.md` (3), `verification.md` (4),
`report.md` (5), `fix-mode.md` (6), `regression-ledger.md` (cross-cutting),
`screenshot-rules.md` + `gotchas.md` (cross-cutting).

## Setup

```bash
PRIOR_BRANCH=$(git branch --show-current)
MODE=local|pr|describe            # from invocation parsing
REVIEW_DIR=".context/reviews/${PR_NUM:-local}"     # same roots gen-1 used; LATEST.txt still maintained
mkdir -p "
agent-browser-relaticleSkill

Use whenever driving agent-browser against the local Relaticle app (relaticle.test and its panels) for testing, QA, business review, or UI automation. Covers Filament v5 + Livewire v4 quirks specific to this codebase: panel URL derivation (domain-routed vs path-routed, never assumed), login flows for the app and sysadmin panels, seeded credentials, Select/date-picker interaction, the $wire.mountAction gold pattern, tenant switching, Reverb/queue hazards, and session isolation. Every hard fact here is a DATED CACHED HINT. When one fails, re-derive from the running app and update this file (self-heal). Not for other sites or generic browser automation.

ai-sdk-developmentSkill

TRIGGER when working with ai-sdk which is Laravel official first-party AI SDK. Activate when building, editing AI agents, chatbots, text generation, image generation, audio/TTS, transcription/STT, embeddings, RAG, vector stores, reranking, structured output, streaming, conversation memory, tools, queueing, broadcasting, and provider failover across OpenAI, Anthropic, Gemini, Azure, Groq, xAI, DeepSeek, Mistral, Ollama, ElevenLabs, Cohere, Jina, and VoyageAI. Invoke when the user references ai-sdk, the `Laravel\Ai\` namespace, or this project's AI features — not for other AI packages used directly.

cashier-stripe-developmentSkill

Handles Laravel Cashier Stripe integration including subscriptions, webhooks, Stripe Checkout, invoices, charges, refunds, trials, coupons, metered billing, and payment failure handling. Triggered when a user mentions Cashier, Billable, IncompletePayment, stripe_id, newSubscription, Stripe subscriptions, or billing. Also applies when setting up webhooks, handling SCA/3DS payment failures, testing with Stripe test cards, or troubleshooting incomplete subscriptions, CSRF webhook errors, or migration publish issues.

configuring-horizonSkill

Use this skill whenever the user mentions Horizon by name in a Laravel context. Covers the full Horizon lifecycle: installing Horizon (horizon:install, Sail setup), configuring config/horizon.php (supervisor blocks, queue assignments, balancing strategies, minProcesses/maxProcesses), fixing the dashboard (authorization via Gate::define viewHorizon, blank metrics, horizon:snapshot scheduling), and troubleshooting production issues (worker crashes, timeout chain ordering, LongWaitDetected notifications, waits config). Also covers job tagging and silencing. Do not use for generic Laravel queues without Horizon, SQS or database drivers, standalone Redis setup, Linux supervisord, Telescope, or job batching.

echo-developmentSkill

Develops real-time broadcasting with Laravel Echo. Activates when setting up broadcasting (Reverb, Pusher, Ably); creating ShouldBroadcast events; defining broadcast channels (public, private, presence, encrypted); authorizing channels; configuring Echo; listening for events; implementing client events (whisper); setting up model broadcasting; broadcasting notifications; or when the user mentions broadcasting, Echo, WebSockets, real-time events, Reverb, or presence channels.

fortify-developmentSkill

ACTIVATE when the user works on authentication in Laravel. This includes login, registration, password reset, email verification, two-factor authentication (2FA/TOTP/QR codes/recovery codes), passkeys, profile updates, password confirmation, or any auth-related routes and controllers. Activate when the user mentions Fortify, auth, authentication, login, register, signup, forgot password, verify email, 2FA, passkeys, WebAuthn, or references app/Actions/Fortify/, CreateNewUser, UpdateUserProfileInformation, FortifyServiceProvider, config/fortify.php, or auth guards. Fortify is the frontend-agnostic authentication backend for Laravel that registers all auth routes and controllers. Also activate when building SPA or headless authentication, customizing login redirects, overriding response contracts like LoginResponse, or configuring login throttling. Do NOT activate for Laravel Passport (OAuth2 API tokens), Socialite (OAuth social login), or non-auth Laravel features.

infer-conventionsSkill

Use this skill to analyze how a Laravel application is actually written and record its conventions as shared rules. Trigger when the user wants to detect, infer, document, or standardize project conventions or coding style, set up or grow `.ai/rules`, resolve mixed or conflicting patterns (e.g. \"are we using Form Requests or inline validation?\"), or onboard agents and teammates to \"how we do things here\". Covers: a systematic sweep of ~49 Laravel convention dimensions (validation, models, architecture, testing, frontend, database, console), open-ended house-pattern discovery, conflict reporting, and recording rules scoped to the right paths via the Boost `record-rule` MCP tool. Do not use for one-off code review, enforcing formatting a linter already handles, or editing `.ai/rules` files by hand.

laravel-best-practicesSkill

Apply this skill whenever writing, reviewing, or refactoring Laravel PHP code. This includes creating or modifying controllers, models, migrations, form requests, policies, jobs, scheduled commands, service classes, and Eloquent queries. Triggers for N+1 and query performance issues, caching strategies, authorization and security patterns, validation, error handling, queue and job configuration, route definitions, and architectural decisions. Also use for Laravel code reviews and refactoring existing Laravel code to follow best practices. Covers any task involving Laravel backend PHP code patterns.