skills/contribute/SKILL.md
<!-- Copyright (c) 2026 OpenGuardrails.com Author: thomas-security <[email protected]> SPDX-License-Identifier: Apache-2.0 --> --- name: thomas-security-contribute description: | Use this skill when the user asks you to add, draft, or submit a new security checkup, red-team test, or integration to the `thomas-security` repository. Triggered by phrases like "add a checkup for <CVE>", "write a red-team attack for <incident>", "contribute this advisory to thomas", "add an i
npx skillsauth add openguardrails/openguardrails skills/contributeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
thomas-security repository. Triggered by phrases like "add a
checkup for <CVE>", "write a red-team attack for <incident>",
"contribute this advisory to thomas", "add an integration for
<agent>", or "open a PR against thomas-security". Walks the agent
through drafting, validating, and submitting the contribution.The user wants to add new content to the thomas-security repo. Your
job is to take a reference they provide (a CVE, GHSA advisory,
upstream issue, or threat-intel writeup), turn it into the right kind
of artifact (checkup, red-team attack, or integration), and submit it
as a PR.
The user will almost never type the YAML themselves. They will say:
"Add a checkup for GHSA-g8p2-7wf7-98mq."
and hand you the link. You do the rest.
| Clue in the request / reference | Kind | Where it goes |
| ------------------------------------------------------------------- | --------------- | ----------------------------------------- |
| Matches a pattern in a file / config / version pin | checkup | checkups/<agent>/<category>.yaml |
| A prompt the attacker sends to trick the agent | red-team | redteam/<agent>/<suite>.yaml |
| A new hook / plugin / SDK glue for a host agent we don't cover yet | integration | integrations/<kind>/ (new subdirectory) |
If the reference describes both a static IoC and an in-the-wild attack prompt, split into two PRs — one checkup, one red-team. Reviewers prefer focused changes.
If it's ambiguous, ask the user which one they want before writing any files.
# Only if the user doesn't already have a checkout
git clone https://github.com/openguardrails/thomas-security.git
cd thomas-security
git checkout -b add-<short-slug>
<short-slug> should name the incident, not the file. Good:
add-ghsa-g8p2-gatewayurl. Bad: add-rule.
Before writing YAML, read the README of the target directory so the new entry matches local convention (ID prefix, canary prefix, file organization):
checkups/README.md and checkups/<agent>/README.md.redteam/README.md and redteam/<agent>/README.md.integrations/README.md.Don't skip this. Each target has its own ID prefix (OGR-OC-* for
OpenClaw) and file layout.
Append one entry to the appropriate checkups/<agent>/<category>.yaml.
Required fields: id, category, severity, title, description,
patterns (or filename_matches / sha256), references, remediation.
- id: OGR-OC-CFG-NNN # next unused number in this file
category: dangerous-config
severity: high
title: "one-line summary"
description: >-
Why this matters. Name the actor / advisory. State what the agent
loses if this fires.
patterns:
- "regex_literal" # JS RegExp syntax, escape backslashes
references:
- "https://..." # the link the user gave you
remediation: "what the operator should do when this fires"
Hard rules:
references is mandatory. Every rule must cite a CVE, GHSA,
upstream issue, or named-vendor writeup. If the user's only source
is their own blog post, stop and ask them to get it upstream first.Append one entry to redteam/<agent>/<suite>.yaml. Required fields:
id, suite, severity, title, prompt, hit_patterns,
references, remediation.
- id: OGR-OC-ATT-NNN
suite: openclaw-prompt-injection
severity: high
title: "one-line summary"
prompt: |
The exact text sent to the target. Keep it short.
Use a unique canary like OGR-OC-CANARY-NNNNN.
hit_patterns:
- "OGR-OC-CANARY-NNNNN"
references:
- "https://..."
remediation: "what to change in the target agent"
One technique per attack. If your prompt tests two things, split it.
Create integrations/<host>/ with at minimum:
README.md explaining install, config, and failure modethomasintegrations/sdk/index.ts rather than
reimplementing the HTTP clientKeep it small. If it takes more than ~150 lines, you're probably building too much — ship the minimum and let users fork.
# YAML syntax
bunx js-yaml checkups/<agent>/<file>.yaml > /dev/null
# Schema validation (if CI provides a validate script)
bun run validate 2>/dev/null || true
If there's a test sample for the rule, grep the sample with the pattern to prove the regex fires.
One contribution per commit. Good commit message:
checkups(openclaw): add OGR-OC-CFG-006 for GHSA-xxxx-gateway-bypass
Body (optional but nice): one line pointing at the advisory.
gh pr create --title "checkups(openclaw): add OGR-OC-CFG-006 — <title>" \
--body "$(cat <<'EOF'
Adds a checkup for <advisory> published at <URL>.
- **Scope:** <one sentence>
- **Tested against:** <sample / PoC if applicable>
- **Reference:** <URL>
Refs <advisory ID>.
EOF
)"
Then show the PR URL to the user and stop. The maintainers review from there.
main. Open a PR from a branch.gh pr create.If the user says "here's a Twitter thread, add a rule" — push back. Ask them to either:
The reference bar is the whole point. A rule without a citation is a liability for every future maintainer.
development
<!-- Copyright (c) 2026 OpenGuardrails.com Author: thomas-security <[email protected]> SPDX-License-Identifier: Apache-2.0 --> --- name: thomas-security description: | Use this skill when the user asks you to check, scan, audit, or red-team the security of an AI agent — either yourself, another agent installed on the same machine (OpenClaw, Claude Code, Cursor, Hermes), or a remote agent endpoint. Triggered by phrases like "give my agent a security check", "scan yourself
development
<!-- Copyright (c) 2026 OpenGuardrails.com Author: thomas-security <[email protected]> SPDX-License-Identifier: Apache-2.0 --> --- name: openguardrails description: | Use this skill when the user asks you to check, scan, test, or audit the security of an AI agent — either yourself, another agent installed on the same machine (e.g., OpenClaw, Hermes, Claude Code, Cursor), or a remote agent endpoint. Triggered by phrases like "give my agent a security check", "scan yoursel
testing
Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references/ or scripts/, removing stale content, validating against the AgentSkills spec). Triggers on phrases like "create a skill", "author a skill", "tidy up a skill", "improve this skill", "review the skill", "clean up the skill", "audit the skill".
testing
Host security hardening and risk-tolerance configuration for OpenClaw deployments. Use when a user asks for security audits, firewall/SSH/update hardening, risk posture, exposure review, OpenClaw cron scheduling for periodic checks, or version status checks on a machine running OpenClaw (laptop, workstation, Pi, VPS).