npx claudepluginhub techygarg/lattice --plugin latticeThis skill uses the workspace's default tool permissions.
Skill support project-custom. Order:
Use when writing code that processes user input, manages authentication or authorization, constructs database queries, handles file operations, interacts with external data, exposes API endpoints, or manages secrets - any code that crosses a trust boundary
Runs rigid security checks for code crossing trust boundaries: parsing user input, building SQL/shell commands, handling secrets/credentials, hashing passwords, changing auth checks, deserializing untrusted data, constructing paths/URLs.
Conducts security reviews using checklists and patterns for authentication, user input, secrets, API endpoints, SQL injection, XSS/CSRF, and rate limiting.
Share bugs, ideas, or general feedback.
Skill support project-custom. Order:
.lattice/config.yaml in repo rootpaths.secure_coding for custom doc pathmode:
mode: override (or no mode): Custom doc take full precedence.
Use instead embed default. Must be comprehensive -- sole reference.mode: overlay: Read embed ./references/defaults.md first, then apply
custom doc sections on top. Custom sections replace matching
sections in default (match by heading). New sections append after default../references/defaults.mdpaths.language_idioms exist in config, read "Error Handling" section and adapt §1 (Trust Boundary Identification) error message patterns to language idioms. Language idioms take precedence over pseudocode defaults.Default ship with skill, represent opinionated best practice. Work out box any project. Override only when team have specific standard differ from default.
STOP after gen each component. Verify ALL before proceed. If check clearly fail, fix code before present. If check judgment call with multiple valid approach (see Ambiguity Signals), flag — present options and reasoning rather than silent choose.
After verify checklist above, scan output for specific anti-pattern. If find any, fix before present code.
Check often have multiple valid outcome. When encounter, present option rather than silent choose.
Security about thinking in trust boundary. Every data flow cross boundary somewhere -- between user and server, between app and database, between code and third-party API. Question not "could this be exploited?" but "where trusted meet untrusted, and what happen at boundary?"
Atom teach adversarial thinking during code gen, not afterthought. When write code, identify trust boundary as go -- same way skilled dev consider edge case. Cost build security in during gen near zero; cost retrofit after breach catastrophic.
Boundary with clean-code: clean-code say "handle error explicit with actionable message." Secure-coding say "error message shown to user must not reveal internal detail." Both apply; this skill govern security dimension.
Boundary with architecture atom: "check authorization at every layer" (this skill) map direct to loaded architecture layer structure. Architecture atom define where each check live (e.g., service layer, not controller); secure-coding define what to check (identity confirmed, permission granted, resource owned).
See ./references/defaults.md for trust boundary identification, input validation patterns, authorization checks, secrets management, and injection prevention patterns.