Skip to content
Development
Skill

/configure-nightwatch

Configures Laravel Nightwatch data collection, sampling rates, filtering rules, and redaction policies. Use when setting up Nightwatch, managing data volume, protecting sensitive data (PII), or optimizing event collection for production workloads.

From plugin
agent-skills
7333 skills1 agent1 MCP

Claude Code

$ npx -y skills add laravel/agent-skills --skill configure-nightwatch --agent claude-code

SKILL.md

configure-nightwatch.SKILL.md
name: configure-nightwatch
description: Configures Laravel Nightwatch data collection, sampling rates, filtering rules, and redaction policies. Use when setting up Nightwatch, managing data volume, protecting sensitive data (PII), or optimizing event collection for production workloads.
license: MIT
metadata:
  author: laravel

Nightwatch Configuration Guide

This skill helps configure Laravel Nightwatch data collection to balance observability, performance, and privacy. Covers sampling strategies, filtering rules, and redaction methods across all event types.

Documentation Reference

The [Nightwatch Documentation](https://nightwatch.laravel.com/docs) is the definitive and up-to-date source of information for all Nightwatch configuration options. This skill provides practical guidance and common patterns, but always consult the official documentation as the primary source of truth for specific details, environment variables, and API behavior. The documentation includes comprehensive coverage of:

  • [Filtering and Configuration](https://nightwatch.laravel.com/docs/filtering) - Core concepts for sampling, filtering, and redaction
  • Individual event type pages with specific configuration options:
  • [Requests](https://nightwatch.laravel.com/docs/requests) - Request sampling, header handling, payload capture
  • [Commands](https://nightwatch.laravel.com/docs/commands) - Command sampling and redaction
  • [Queries](https://nightwatch.laravel.com/docs/queries) - Query filtering and redaction
  • [Cache](https://nightwatch.laravel.com/docs/cache) - Cache event filtering by key or pattern
  • [Jobs](https://nightwatch.laravel.com/docs/jobs) - Job filtering and sampling decoupling
  • [Mail](https://nightwatch.laravel.com/docs/mail) - Mail event filtering
  • [Notifications](https://nightwatch.laravel.com/docs/notifications) - Notification filtering by channel
  • [Exceptions](https://nightwatch.laravel.com/docs/exceptions) - Exception sampling and throttling
  • [Outgoing Requests](https://nightwatch.laravel.com/docs/outgoing-requests) - HTTP request filtering
  • [reference.md](reference.md) - Quick lookup table by event type, production presets, and verification checklist

Data Collection Flow

Nightwatch processes events through three stages:

1. **Sampling** - Controls which entry points are captured (requests, commands, scheduled tasks) 2. **Filtering** - Excludes specific events after sampling (queries, cache, mail, etc.) 3. **Redaction** - Modifies captured data to remove/obfuscate sensitive information

Request/Command/Scheduled Task
       |
       v
   [Sampling?] ----NO----> Drop entire trace
       | YES
       v
   Events generated
       |
       v
   [Filtering?] ----YES---> Drop specific event
       | NO
       v
   [Redaction] ----------> Store modified data

---

Sampling Configuration

Sampling determines which entry points (requests, commands, scheduled tasks) trigger full trace collection. When an entry point is sampled, all related events are captured.

Global Sample Rates

Configure via environment variables:

# Default: 100% sampling (all requests/commands captured)
NIGHTWATCH_REQUEST_SAMPLE_RATE=0.1      # Recommended: 10% of requests
NIGHTWATCH_COMMAND_SAMPLE_RATE=1.0      # Capture all commands
NIGHTWATCH_EXCEPTION_SAMPLE_RATE=1.0    # Always capture exceptions

**Recommendation**: Start with `0.1` (10%) for requests in production, adjust based on volume and needs.

Route-Based Sampling

Apply different rates to specific routes using the `Sample` middleware:

use Illuminate\Support\Facades\Route;
use Laravel\Nightwatch\Http\Middleware\Sample;

// Sample admin routes at 100%
Route::middleware(Sample::rate(1.0))->prefix('admin')->group(function () {
    // All admin routes sampled fully
});

// Sample API routes at 5%
Route::middleware(Sample::rate(0.05))->prefix('api')->group(function () {
    // API routes sampled sparingly
});

// Always sample critical endpoints
Route::post('/checkout', [CheckoutController::class, 'process'])
    ->middleware(Sample::always());

// Never sample health checks
Route::get('/health', [HealthController::class, 'check'])
    ->middleware(Sample::never());

Unmatched Route Sampling

Handle 404/bot traffic with reduced sampling:

Route::fallback(fn () => abort(404))
    ->middleware(Sample::rate(0.01));  // 1% sampling for unmatched routes

Dynamic Sampling

Sample based on runtime conditions (user role, request attributes):

use Closure;
use Illuminate\Http\Request;
use Laravel\Nightwatch\Facades\Nightwatch;

class SampleAdminRequests
{
    public function handle(Request $request, Closure $next)
    {
        if ($request->user()?->isAdmin()) {
            Nightwatch::sample();  // Always sample admin requests
        }
        return $next($request);
    }
}

Command Sampling

Exclude specific commands from sampling:

use Illuminate\Console\Events\CommandStarting;
use Illuminate\Support\Facades\Event;
use Laravel\Nightwatch\Facades\Nightwatch;

public function boot(): void
{
    Event::listen(function (CommandStarting $event) {
        if (in_array($event->command, ['schedule:finish', 'horizon:snapshot'])) {
            Nightwatch::dontSample();
        }
    });
}

Vendor Commands

Nightwatch automatically ignores framework/internal commands. Opt-in to capture them:

Nightwatch::captureDefaultVendorCommands();

---

Filtering Configuration

Filtering excludes specific events from collection after sampling. Use filtering to reduce noise and quota usage.

Database Queries

**Filter all queries** (disable query collection):

NIGHTWATCH_IGNORE_QUERIES=true

**Filter specific queries** by SQL pattern:

use Laravel\Nightwatch\Facades\Nightwatch;
use Laravel\Nightwatch\Records\Query;
Read more
@laravel
Ships withagent-skills

Laravel's official collection of agent skills, available as plugins for Claude Code and Cursor.

7333 skills1 agent1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
733
Star history of laravel/agent-skills on GitHub, a chart by star-history.com

Other skills on agent-skills.

deploying-to-cloud

deploying-to-cloud

Deploys and manages Laravel applications on Laravel Cloud using the `cloud` CLI. Use when the user wants to deploy an app, ship…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about configure-nightwatch.

Which coding agents can use configure-nightwatch?
configure-nightwatch installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.