Borrowing it
Nothing to install: this file belongs to qauth-labs/qauth. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/qauth-labs/qauth/main/.claude/skills/validation/SKILL.mdgit clone --depth 1 https://github.com/qauth-labs/qauthWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/qauth-labs/qauth/validation)<a href="https://agentmods.dev/skills/qauth-labs/qauth/validation"><img src="https://agentmods.dev/badge/skills/qauth-labs/qauth/validation/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/qauth-labs/qauth/validation"><img src="https://agentmods.dev/badge/skills/qauth-labs/qauth/validation.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What 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.1 | $0.00060 | $0.00913 |
| Opus 5.5 | $0.00024 | $0.00365 |
| Sonnet 5.5 | $0.00012 | $0.00183 |
| Haiku 4.5 | $0.00006 | $0.00091 |
Grade A, and why
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 1mo ago.
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 — 101 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Validation (QAuth)
Input validation for the QAuth auth-server using Zod v4. Validate at the route boundary (fail fast), organize schemas consistently, and use the standalone Zod v4 validators. Use this skill when defining or reviewing schemas.
Zod v4 Validators
This project uses Zod v4, where many format validators are standalone functions, not string methods. Do not use the deprecated string-method form.
| Use | Not |
|---|---|
z.email() |
z.string().email() |
z.uuid() |
z.string().uuid() |
z.url() |
z.string().url() |
Optional error message: z.email('Invalid email format'),
z.uuid('Invalid realm ID format'), z.url('Must be a valid URL').
Also standalone in Zod v4: z.httpUrl(), z.hostname(), z.jwt(),
z.iso.date(), z.iso.datetime(), z.ipv4(), z.ipv6(), z.hex(),
z.base64(), etc. See zod.dev/api under "String formats."
If you learn another Zod v4 standalone validator, use it consistently and do not
fall back to the old string-method form.
Export the schema and its inferred type together:
export type RequestType = z.infer<typeof requestSchema>;
Schema Organization
- API schemas:
apps/auth-server/src/app/schemas/(e.g.auth.ts,oauth.ts,common.ts) - Config schemas:
libs/server/config/src/lib/schemas/(env validation) - Shared validators:
libs/shared/validation/(email normalization, password strength)
Security and Best Practices
- Validate all inputs: body, query params, headers, and response shape. Never trust client input.
- Fail fast: validation happens at the route level via the Fastify schema; invalid requests return 400 before the handler runs.
- Normalize before validation/use: email normalization (
normalizeEmail) happens after format validation but before storage/query. - Specific formats: use regex for exact formats (e.g. hex tokens
/^[0-9a-fA-F]{64}$/, PKCE verifiers/^[A-Za-z0-9._~-]{43,128}$/). - Length limits: set
.min()and.max()on strings to prevent DoS (e.g.state: z.string().max(255).optional()). - Password strength: use
zxcvbnvia@qauth-labs/shared-validation; return feedback for weak passwords.
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.
- 1mo ago First seen · 101 lines · 60 tokens per session scan A 2e12335a9aad
validation is a skill published in the GitHub repository qauth-labs/qauth (26 stars, last pushed today), licensed Apache-2.0. It adds 60 tokens to every session and 913 once invoked, about $0.0002 per session on Opus 5.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
theauth
Install and use theAuth (@glinr/theauth), the TypeScript auth SDK for AI agents and humans. Use when adding agent identity, scoped permissions, delegation, audit logs, human sign-in plugins, or an MCP OAuth 2.1 authorization server to a Node, Bun, Deno or edge project.
crudauth
Use when building or modifying authentication in a FastAPI app with crudauth (the crudauth PyPI package) — covers CRUDAuth, the AuthUserMixin / makeauthidentity user model, IdentityConfig, currentuser(...) gates, session + bearer transports, OAuth (Google/GitHub), email verification / password reset / change, custom…
nextjs-authentication
Secure token storage (HttpOnly Cookies) and Middleware patterns. Use when implementing authentication, secure session storage, or auth middleware in Next.js.
api-integration-architect
Design, implement, debug, and optimize API integrations with expert-level patterns for REST, GraphQL, webhooks, and authentication flows.
coding-directives
Implement or review caddy-security Go code, Caddy modules, parsers, lifecycle, and HTTP delegation. Use for app/plugin boundaries, authcrunch integration, errors, logging, and code conventions.
configuration-authentication-cookies
Configure portal cookie names, prefixes, domains, paths, attributes, and refresh overrides. Use for cookie precedence and coordination with authorization token discovery.