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/emre-guler/websec/authenticationnpx skills add emre-guler/websec --skill authenticationgit clone --depth 1 https://github.com/emre-guler/websecWhat 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.00065 | $0.05679 |
| Opus 5 | $0.00032 | $0.02840 |
| Sonnet 5 | $0.00013 | $0.01136 |
| Haiku 4.5 | $0.00006 | $0.00568 |
Grade A, and why
authentication 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 2d 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 — 175 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Authentication Detection
Overview
Authentication establishes that a caller is the account holder they claim to be, and keeps that claim attached to subsequent requests. It sits at the very front of the request lifecycle: the login handler and its supporting flows — registration, remember-me, password reset, password change, the second-factor challenge — form the first trust boundary a request crosses, and the session issued at the end of it carries the result. It fails when the identity decision is made from data the caller controls, when guessing is not effectively limited, when a step of the flow can be skipped, when a supporting token is predictable, or when the session that encodes the result is forgeable or never rotated. The attacker is an unauthenticated outsider, or a low-privilege user climbing into a higher-privilege account; what they gain is the full authority of the account they land in. This skill finds such gaps by locating every site where identity is proved or a session is issued, verifying each one in parallel, and merging the results into <output_dir>/authentication-results.md.
What it is NOT
- Access control (
/websec:access-control): the caller is already identified and the permission decision is missing or wrong. Test: if the attack requires a valid session for some account and then reaches across a boundary, it is authorization. Here the attack manufactures a session that was never legitimately issued. - Federated login (
/websec:oauth): a delegated sign-in flow, itsstate,redirect_uri, and token exchange. A local password flow that merely offers a social button is still judged here; the delegated flow itself is not. - Token forgery mechanics (
/websec:jwt): signature checking, algorithm pinning, claim validation of a signed token. If the session is a signed token and the weakness is in how it is validated, that is the sibling skill; if the weakness is that the login flow issues it too early or never rotates it, it is here. - Reset-link poisoning source (
/websec:host-header): the mechanism by which a request header reaches a generated URL. The reset flow's decision to trust that header for its link is judged here; a general header-reflection issue is not. - Disclosure (
/websec:information-disclosure): an error page or debug route that happens to reveal a username. An oracle that lives in an authentication endpoint — different messages, statuses, or timings for existing vs missing accounts — is judged here. - Business logic (
/websec:business-logic): domain workflows outside the credential flows — checkout, refunds, approvals — and their sequencing. This skill owns the login, registration, reset and multi-factor state machine, including a step skipped, reordered, or replayed to arrive at an authenticated state, plus any guessable code that substitutes for a credential; a guessable code that carries value but no identity (coupon, referral, gift card) is theirs. - Counter races (
/websec:race-conditions): concurrent requests slipping past an attempt counter. Note it, classify it there. Predictable token generation stays here: a reset or session token seeded from a timestamp, a weak PRNG, or a sequence is this skill's finding whatever the load, and becomes a race only when two overlapping requests collide and are handed the same value. - Not a finding: an absence of login, lockout, or session code in a service that
architecture.mdrecords as authenticated by an external layer — a gateway, an identity provider, a shared library, or a sibling service. Read the "Enforced where" column and the trust-boundary section before reporting that a service has no authentication. Judge the external configuration where it is readable; where it is not, the label is NEEDS MANUAL REVIEW naming what a human must open. What is judged here: whether this service establishes identity from something it never verified — a user, role, or tenant header attributed to an upstream hop, a claim copied out of a request context — and whether a caller reaching it directly would be believed. - Not a finding: a single generic failure message plus a benign redirect; timing jitter with no consistent, measurable gap; a genuinely enforced challenge after a threshold; a framework auth backend used in its documented form with its lockout and hashing settings configured.
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.
- 2d ago First seen · 175 lines · 65 tokens per session scan A ce3bb8913ced
authentication is a skill published in the GitHub repository emre-guler/websec (2 stars, last pushed 5d ago), licensed MIT. It adds 65 tokens to every session and 5,679 once invoked, about $0.0003 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-31.
Other skills, from other repositories
vantage
Autonomous, artifact-driven SAST (Static Application Security Testing) for web AND mobile app repositories, plus optional code-level remediation. Use whenever the user asks to security-review, pentest, audit, or scan a codebase for vulnerabilities — web (SQLi, XSS, IDOR/BOLA, auth bypass, SSRF, XXE, hardcoded secrets…
prowler-ui
Prowler UI-specific patterns. For generic patterns, see: typescript, react-19, nextjs-16, tailwind-4. Trigger: When working inside ui/ on Prowler-specific conventions (shadcn, folder placement, actions/adapters, shared types/hooks/lib).
prowler-test-api
Testing patterns for Prowler API: JSON:API, Celery tasks, RLS isolation, RBAC. Trigger: When writing tests for api/ (JSON:API requests/assertions, cross-tenant isolation, RBAC, Celery tasks, viewsets/serializers).
prowler-pr
Creates Pull Requests for Prowler following the project template and conventions. Trigger: When working on pull request requirements or creation (PR template sections, PR title Conventional Commits check, changelog gate/no-changelog label), or when inspecting PR-related GitHub workflows like conventional-commit.yml…
tailwind-4
Tailwind CSS 4 patterns and best practices. Trigger: When styling with Tailwind (className, variants, cn()), especially when dynamic styling or CSS variables are involved (no var() in className).
prowler-docs
Prowler documentation style guide and writing standards. Trigger: When writing documentation for Prowler features, tutorials, or guides.