🧠 Lagune's specializations are focused, language-agnostic security knowledge modules that load only on demand, never by default. They are not commands. Your project's catalog is the set it uses: the built-in specializations of its categories plus its own. The detect and verify phases reach for them while they run, and you can load one directly any time.
- Overview
- How it Works
Access Control
Makes sure people can only see and do what they are allowed to, so no one can reach another user's data or admin-only actions just by changing a link or an ID.
npx lagune read catalog access-controlAPI Endpoint
Checks the doors your app exposes to the outside world, so requests from strangers can't pull private data or trigger actions they shouldn't.
npx lagune read catalog api-endpointBrowser
Guards what runs in your visitors' browsers, so an attacker can't inject code that steals logins or hijacks what your users see and click.
npx lagune read catalog browserC / C++
Catches low-level memory mistakes that let attackers crash the program or run their own code on your server.
npx lagune read catalog c-cppContainer
Reviews how your app is packaged and deployed, so a break-in stays contained instead of handing an attacker the whole machine.
npx lagune read catalog containerCredential Endpoint
Protects the login, signup, and password-reset flows, so attackers can't guess passwords, take over accounts, or reset someone else's.
npx lagune read catalog credential-endpointCrypto
Makes sure sensitive data is scrambled properly, so passwords, tokens, and personal info can't be read even if they leak.
npx lagune read catalog cryptoCSV
Hardens exported spreadsheets, so opening a downloaded file is far less likely to quietly run a harmful command on someone's computer.
npx lagune read catalog csv.NET
Covers security pitfalls specific to .NET apps that can let an attacker run their own code on your server.
npx lagune read catalog dotnetFederation
Hardens “sign in with Google/Microsoft/etc.” so an attacker has a much harder time impersonating a user or slipping into an account that isn't theirs.
npx lagune read catalog federationGo
Covers security pitfalls specific to Go apps, especially subtle bugs that show up under real traffic.
npx lagune read catalog goHTTP Request
Inspects the data that arrives with each web request, so hidden or malicious input can't bend your app into doing the wrong thing.
npx lagune read catalog http-requestInfrastructure
Reviews the files that build and deploy your app, like Dockerfiles, Terraform, and CI workflows, so one loose setting can't expose the whole environment.
npx lagune read catalog infraInterpreter
Stops user input from being run as commands, so a form field or upload can't make your server execute an attacker's instructions.
npx lagune read catalog interpreterJava
Covers security pitfalls specific to Java apps that can let an attacker run their own code on your server.
npx lagune read catalog javaJavaScript
Covers security pitfalls specific to JavaScript and Node apps, from running untrusted code to reading files it shouldn't.
npx lagune read catalog javascriptLLM
Protects features built on AI models, so a cleverly worded message can't trick the AI into leaking data or misusing connected tools.
npx lagune read catalog llmNetwork
Checks how your app talks to other services, so it can't be tricked into fetching or trusting something an attacker controls.
npx lagune read catalog networkPath
Prevents attackers from wandering your server's files, so they can't read private files or overwrite important ones by manipulating a filename.
npx lagune read catalog pathPayment
Hardens checkout and billing, making it far harder to tamper with prices, dodge payment, or replay a charge.
npx lagune read catalog paymentPHP
Covers security pitfalls specific to PHP apps that can let an attacker run their own code or bypass a login.
npx lagune read catalog phpPython
Covers security pitfalls specific to Python apps, especially loading untrusted data that can run an attacker's code.
npx lagune read catalog pythonRegex
Hardens text checks so they stay efficient, making it far harder for a malicious input to freeze your app by overloading it.
npx lagune read catalog regexRuby
Covers security pitfalls specific to Ruby apps, especially loading untrusted data that can run an attacker's code.
npx lagune read catalog rubyRust
Covers security pitfalls specific to Rust apps, especially unsafe code that can corrupt memory or crash the program.
npx lagune read catalog rustSecrets
Keeps passwords, API keys, and tokens out of your source code, so a shared repository or a leaked build never hands them to an attacker.
npx lagune read catalog secretsServerless
Reviews cloud functions and their permissions, so a single function can't be abused to reach far more than it should.
npx lagune read catalog serverlessSQL
Guards how your app talks to its database, so a crafted input can't read, change, or delete data it was never meant to touch.
npx lagune read catalog sqlSupabase
Locks down your Supabase backend, so your database rules actually hold and secret keys don't end up exposed to the public.
npx lagune read catalog supabaseTransport
Hardens transport so data travels over an encrypted connection, making it far harder to read or alter on the way between your users and your app.
npx lagune read catalog transportUpload
Hardens file uploads, making it far harder for someone to upload a disguised file that runs code, overwrites data, or fills up your storage.
npx lagune read catalog uploadXML
Hardens how your app reads XML data, so a crafted file is far less able to leak server files or knock your app offline.
npx lagune read catalog xmlRun yourself
To use a specialization directly, ask your agent to load it with read catalog <name> and write the task in the same prompt. The knowledge then acts on what you asked for. This works in any prompt, even one unrelated to the Lagune flow.
For example, a direct free-form prompt to generate a safe RegExp collection with Python:
Load the regex specialization with `npx lagune read catalog regex`, then create a collection of regular expressions in @src/utils/regex.py to validate emails and usernames.
This uses a deterministic hook to test each RegExp against ReDoS, keeps the safe ones, and produces something like:
import re
EMAIL = re.compile(r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$")
USERNAME = re.compile(r"^[a-zA-Z0-9_]{3,20}$")
def is_email(value: str) -> bool:
return EMAIL.match(value) is not None
def is_username(value: str) -> bool:
return USERNAME.match(value) is not None
Test a pattern yourself at devina.io/redos-checker.
The built-in specializations
The built-in specializations are grouped into categories. This is the set that ships with Lagune:
| Specialization | Category | Focus |
|---|---|---|
regex | owasp | ReDoS: patterns that explode on crafted input. |
network | owasp | SSRF & redirects: user-supplied fetch or redirect destinations. |
interpreter | owasp, lovable | Code injection: eval, dynamic include, name dispatch. |
sql | owasp | Relational databases: injection, raw ORM calls, privileges, engine reach. |
path | owasp | Filesystem paths: traversal, null-byte, NTFS streams, planting. |
upload | owasp | File uploads: type/signature, malicious content, storage, limits. |
access-control | owasp, lovable | Authn/authz/session: IDOR, mass assignment, tenants, sessions. |
credential-endpoint | owasp, lovable | Guessing & bots: brute force, spraying, stuffing, throttling. |
federation | owasp | Token trust: OAuth/OIDC, SAML, JWT validation, QR login. |
http-request | owasp | Request provenance: CSRF, CORS misconfig, spoofed client-IP. |
transport | owasp | Channel security: TLS config, HTTPS/cleartext, HSTS, pinning. |
crypto | owasp, lovable | Crypto at rest: weak/custom algorithms, CSPRNG, key management. |
secrets | owasp, lovable | Hardcoded credentials: keys, tokens, passwords literal in source. |
api-endpoint | owasp | Non-REST surfaces: GraphQL, gRPC, WebSocket authz, DoS, schema. |
payment | owasp, lovable | Checkout flow: verify gateway server-side, signed callbacks, idempotency. |
xml | owasp | XML parsing: XXE, external entities, billion-laughs expansion. |
csv | owasp | Formula injection: spreadsheet cells starting =/+/-/@. |
container | owasp, infra | Container config: root, capabilities, socket mount, image hardening. |
infra | infra | Infrastructure as code: Terraform, Dockerfile, GitHub Actions. |
serverless | owasp, infra, lovable | FaaS functions: least-privilege IAM, event input, context, secrets. |
llm | ai, lovable | AI/LLM risks: prompt injection, agency, RAG, MCP, output. |
supabase | lovable | Supabase backend: RLS off by default, AI-misgenerated policies, key model. |
browser | javascript, lovable | Client-side risks: XSS, CSP, framing, storage, etc. |
javascript | javascript | Language-level risks: RCE, prototype pollution, etc. |
python | python | Language-level risks: pickle RCE, class pollution, -O, etc. |
rust | rust | unsafe soundness: UB from safe callers, transmute, overflow. |
java | java | Deserialization & mobile code: readObject chains, object hijack. |
ruby | ruby | Deserialization & open: Marshal/YAML revival, pipe quirk. |
php | php | Type juggling & unserialize: magic hashes, POP chains. |
go | go | Typed-nil & data races: nil != nil, shared-memory goroutines. |
c-cpp | c-cpp | Format strings: printf(user_input), %n write-what-where. |
dotnet | dotnet | Platform-level risks: BinaryFormatter RCE, @Html.Raw, enum gaps. |
Most built-in knowledge is distilled from OWASP. See OWASP Sources for the full mapping of each specialization to its canonical OWASP attack and Cheat Sheet pages. A few stack-specific modules draw from the vendor's own guidance instead: supabase, for instance, comes from the Supabase docs and CVE-2025-48757.
Your own specializations
The built-ins grow by adding one knowledge file plus one index row, never a new command. You add your own the same way, with /lagune-specialize: point it at an article or a topic and it distills a new specialization into your project, the file under .lagune/catalog/ and its entry in .lagune/configs.json. Your own are always in the catalog, whatever its categories, and one of yours shadows a built-in of the same name.
When the detect or verify phase hits a context a specialization covers, it loads that specialization with read catalog <name> itself. This happens automatically, as part of the phase. You do not do it by hand for this to work.
Discover what is available
To list your project's catalog from the terminal, one specialization per line with its tags:
npx lagune read catalog
# regex: Regular Expression [required]
# network: Requests, Webhook, URL Fetch, Socket, IMDS, Redirect
# interpreter: Evaluator, Sink, Shell, Dynamic Execution
# ...
A [required] specialization always applies, whatever the work. Which built-ins the list holds depends on your project's categories.
The relevant knowledge is pulled in for what the project actually is, instead of every check running by default.
Frequently Asked Questions
A focused, language-agnostic security knowledge module that loads only on demand, never by default. It is not a command like the agent skills.
The specializations the project uses: the built-ins of its categories plus its own. While no category is recorded, it uses OWASP alone.
No. They load only on demand, for what the project actually is.
In the same prompt as the task, ask your agent to run npx lagune read catalog <name>.
