Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/platonai/browser4/data-validationnpx skills add platonai/Browser4 --skill data-validationgit clone --depth 1 https://github.com/platonai/Browser4What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00034 | $0.00801 |
| Opus 5 | $0.00017 | $0.00400 |
| Sonnet 5 | $0.00007 | $0.00160 |
| Haiku 4.5 | $0.00003 | $0.00080 |
Grade A, and why
data-validation scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 141 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Data Validation Skill
Description
Validate data against specified rules. This skill provides a flexible validation framework supporting common validation patterns like email format, required fields, and custom rules.
Dependencies
None
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| data | Map<String, Any> | Yes | - | The data to validate |
| rules | List | Yes | - | List of validation rules to apply |
Return Value
Returns a SkillResult with the following data structure on success:
{
"validationResults": {
"rule1": true,
"rule2": true
}
}
On failure, returns:
{
"validationResults": {
"rule1": true,
"rule2": false
},
"errors": ["error message 1", "error message 2"]
}
Supported Validation Rules
| Rule | Description | Example |
|---|---|---|
| Validates email format | "[email protected]" | |
| required | Checks all fields are non-null and non-blank | All values must be present |
Usage Examples
Email Validation
val result = registry.execute(
skillId = "data-validation",
context = context,
params = mapOf(
"data" to mapOf("email" to "[email protected]"),
"rules" to listOf("email")
)
)
Multiple Rules Validation
val result = registry.execute(
skillId = "data-validation",
context = context,
params = mapOf(
"data" to mapOf(
"email" to "[email protected]",
"name" to "John Doe",
"age" to "25"
),
"rules" to listOf("email", "required")
)
)
Error Handling
The skill returns a failure result in the following cases:
- Missing required parameter
data - Missing required parameter
rules - Unknown validation rule specified
- Validation rule fails for the provided data
Implementation Notes
- Rules are applied in the order specified in the
ruleslist - All rules are executed even if some fail (to provide complete feedback)
- Custom validation rules can be added by extending the skill
- Validation is performed synchronously
- Thread-safe execution
What ships with it
4 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 141 lines · 34 tokens per session scan A 50fab2651932
data-validation is a skill published in the GitHub repository platonai/Browser4 (1,114 stars, last pushed 2d ago), licensed Apache-2.0. It adds 34 tokens to every session and 801 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
eric-task-master
Install, connect, and use Eric Task Master for durable Playwright browser jobs with persistent or ephemeral Profiles, live fast-auto-human behavior control, task queues, progress health, semantic diagnostics, recovery, artifacts, and composable Task Packs.
browserstack
../../../engineering-team/playwright-pro/skills/browserstack/SKILL.md.
analyze-performance-traces
Analyze Chrome, Chromium, Electron, React DevTools, or Perfetto-compatible JSON traces and audit user-reported profiling findings without loading large artifacts into context; prove trigger-to-render/layout chains, separate measured facts from source inference, find exact code choke points, classify forced layout and…
feature-demo-recording
Record a demo video of a web feature from a real browser. Two modes -- a NARRATED film where measured voiceover drives the timeline (designed slides, subtitles, punch-in camera, rendered from an HTML timeline), and a SILENT evidence clip for a PR or a QA pass. Use when the user asks to record a video, demo, or screen…
browser-recording
Record a browser flow as a video/GIF for evidence — animations, transitions, and multi-step interactions that a still screenshot cannot prove. Drives the project's own Playwright through a bundled runner, then converts to mp4 + GIF via ffmpeg. Use when the user asks to record a demo, capture a GIF or video of the UI…
browser-auth
Browse sites that need a logged-in session with playwright-cli, using attach mode, saved storage state, or individual cookies. Use when a page is behind a login wall and a plain open lands on a sign-in screen.