How to handle `GRIDA-SEC-<id>` security boundaries in the Grida repo. Triggers when you encounter a `GRIDA-SEC` tag in source/docs, when modifying files under any tagged path, or when adding a new prevented- vulnerability record. Each `GRIDA-SEC-<id>` identifies a structural trust boundary documented in `/SECURITY.md`. This skill explains the contract, mandates a security review before committing changes to any tagged file, and shows how to register a new id. Use whenever "GRIDA-SEC" appears in context.
73
91%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
GRIDA-SECGRIDA-SEC-<id> meansEach GRIDA-SEC-<id> is a prevented vulnerability — a class of
attack that would exist by default but the codebase structurally
forecloses. Unlike a CVE (which describes something that was broken),
a GRIDA-SEC id is a contract: this specific class of attack is
impossible because of these specific files, and we keep it that way.
/SECURITY.md is the canonical registry. Every id has a section there
with:
When you see GRIDA-SEC-<id> in a file you're touching:
/SECURITY.md for that id. Don't act on the
tag alone — the rules are spelled out there.grep -rn GRIDA-SEC-<id> . to find every other file in the
contract. Changes that look local often aren't — a tagged file is
load-bearing for the boundary./SECURITY.md
in the same change, with a written justification.If your change touches any file containing a GRIDA-SEC-<id> tag, you
must complete a security review before committing. The review is
brief but explicit:
/SECURITY.md for every GRIDA-SEC-<id>
that appears in your diff. Confirm the prevented scenario is still
prevented after your change./SECURITY.md in the same commit.grep -rn GRIDA-SEC-<id> --include='*test*' --include='*spec*' to find any others.For database-backed boundaries, follow the canonical RPC role contract. Trace public entry points through their role privileges and tenant policies; a private inner schema or a service-role grant comment does not prove that callers are denied.
If you cannot satisfy steps 1–4, do not commit. Either revert the change, or explicitly amend the SECURITY.md entry to reflect a deliberate update of the contract — and surface that to the user.
GRIDA-SEC idWhen you introduce a new structural prevention worth tracking:
/SECURITY.md, find the
highest existing GRIDA-SEC-NNN, use NNN+1. Don't reuse retired
ids; don't renumber./SECURITY.md under "Active boundaries". Use
the same four-section shape as existing ids: What it protects /
Vulnerable scenario / How the code prevents it / Files bound.GRIDA-SEC-NNN. Brief inline tags at specific code locations are
fine too (e.g. // GRIDA-SEC-NNN: rule 2 — fail closed).grep -rn GRIDA-SEC-NNN . should return
the entry in /SECURITY.md plus every tagged file.This skill auto-loads on any "GRIDA-SEC" mention via its description. You don't need to register a new id with the skill.
A good test: if you can reasonably write "this attack class is impossible because…" in one paragraph and grep returns ≥2 files that together make it true, it's a candidate for GRIDA-SEC.
d086528
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.