davida-ps f9a7565d6f Automated Vulnerability Scanner Skill (clawsec-scanner) (#101)
* auto-claude: subtask-1-1 - Create skill.json with SBOM, OpenClaw config, and required binaries

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* auto-claude: subtask-1-2 - Create SKILL.md with YAML frontmatter and documentation

* auto-claude: subtask-1-3 - Create CHANGELOG.md starting at version 0.1.0

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* auto-claude: subtask-1-4 - Create directory structure (scripts/, lib/, hooks/, test/)

* auto-claude: subtask-2-1 - Create lib/types.ts with Vulnerability and ScanReport interfaces

- Defined VulnerabilitySource type with 7 possible sources (npm-audit, pip-audit, osv, nvd, github, sast, dast)
- Defined SeverityLevel type with 5 severity levels (critical, high, medium, low, info)
- Created Vulnerability interface with all required fields: id, source, severity, package, version, title, description, references, discovered_at, and optional fixed_version
- Created ScanReport interface with scan_id, timestamp, target, vulnerabilities array, and summary counts
- Added HookEvent and HookContext types for OpenClaw hook integration
- Follows patterns from clawsec-suite advisory-guardian types

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* auto-claude: subtask-2-2 - Create lib/utils.mjs with subprocess execution and JSON parsing helpers

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* auto-claude: subtask-2-3 - Create lib/report.mjs for unified vulnerability re

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* auto-claude: subtask-3-1 - Create scripts/scan_dependencies.mjs for npm audit and pip-audit integration

- Implements npm audit JSON output parsing with non-zero exit handling
- Implements pip-audit JSON output parsing with -f json flag
- Handles missing package-lock.json/requirements.txt gracefully
- Checks for command availability (npm, pip-audit) before running
- Converts audit outputs to unified Vulnerability schema
- Generates ScanReport with UUID scan_id and timestamp
- Supports --target and --format (json|text) CLI flags
- Edge cases: missing files, unavailable commands, malformed JSON
- Verification passes: UUID scan_id matches pattern ^[0-9a-f-]{36}$

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* auto-claude: subtask-4-1 - Create scripts/query_cve_databases.mjs with OSV pr

Implemented CVE database integration with:
- queryOSV(): Primary CVE source using OSV API (free, no auth)
- queryNVD(): Fallback NVD API with 6s rate limiting (gated by CLAWSEC_NVD_API_KEY)
- queryGitHub(): Placeholder for future GitHub Advisory Database integration
- enrichVulnerability(): Multi-database enrichment pipeline
- Normalization to unified Vulnerability schema with severity, references, fixed versions
- Graceful error handling for network failures and API errors

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* auto-claude: subtask-5-1 - Create scripts/sast_analyzer.mjs to run Semgrep and Bandit

Implemented static analysis engine following scan_dependencies.mjs pattern:
- Runs Semgrep for JS/TS with --config auto and --json output
- Runs Bandit for Python with -r <path> -f json -c pyproject.toml
- Handles non-zero exit codes gracefully (tools exit 1 on findings)
- Parses JSON output and converts to unified Vulnerability schema
- Supports --target and --format CLI flags
- Gracefully handles missing tools (semgrep, bandit)
- Generates ScanReport with UUID scan_id and severity summary

Verification passed: JSON output with valid vulnerabilities array

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* auto-claude: subtask-6-1 - Create scripts/dast_runner.mjs with basic security test framework

- Implemented DAST framework with 4 security test cases:
  - DAST-001: Hook handler malicious input test (XSS, command injection, path traversal)
  - DAST-002: Hook handler timeout enforcement (30s default)
  - DAST-003: Hook handler resource limits (memory/CPU)
  - DAST-004: Hook handler event mutation safety
- Supports --target, --format (json|text), --timeout CLI flags
- Returns unified ScanReport with vulnerability schema
- Executes all test cases with configurable timeout
- Tests malicious input patterns: XSS, SQL injection, command injection, path traversal, null bytes, large payloads
- v1 scope: basic test framework for hook security testing (full agent workflow DAST is future work)

Verification:
-  Framework loads and executes 4 test cases
-  Timeout enforcement working (30s default, configurable via --timeout)
-  JSON output with valid scan_id
-  Text format output working
-  Help output displays usage information

* auto-claude: subtask-7-1 - Create scripts/runner.sh as main entry point with CLI flag parsing

- Orchestrates all scanning engines (dependency, SAST, DAST, CVE)
- Supports --target (required), --output, --format flags
- Merges reports from all scanners using jq
- Provides --help documentation
- Follows openclaw-audit-watchdog/scripts/runner.sh pattern
- Includes skip flags for selective scanning
- Verification: --help shows --target flag

* auto-claude: subtask-8-1 - Create hooks/clawsec-scanner-hook/HOOK.md with hook metadata

- Added YAML frontmatter with hook name, description, and OpenClaw events
- Documented hook purpose: periodic vulnerability scanning on agent:bootstrap and command:new
- Described four scanning engines: dependency, SAST, DAST, CVE lookup
- Added safety contract (non-blocking, read-only, configurable interval)
- Documented all environment variables (core config, CVE integration, selective scanning, advanced options)
- Listed required binaries (node, npm, python3, pip-audit, semgrep, bandit, jq, curl)
- Follows clawsec-advisory-guardian/HOOK.md pattern

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* auto-claude: subtask-8-2 - Create hooks/clawsec-scanner-hook/handler.ts with event.messages mutation

- Implement hook handler following clawsec-advisory-guardian pattern
- Add rate-limited scanning with configurable interval (default 24h)
- Support event types: agent:bootstrap and command:new
- Integrate with runner.sh for vulnerability scanning
- Deduplicate vulnerabilities using state file persistence
- Filter findings by minimum severity (default: medium)
- Push scan results to event.messages array
- Support selective scanning via environment variables
- Handle failures gracefully with partial results

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* auto-claude: subtask-8-3 - Create scripts/setup_scanner_hook.mjs for hook installation

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* auto-claude: subtask-9-1 - Create test/dependency_scanner.test.mjs for dependency scanning tests

- Created test harness (test/lib/test_harness.mjs) with test utilities
- Created comprehensive test suite with 20 tests covering:
  - normalizeSeverity function (all severity levels)
  - safeJsonParse function (valid, invalid, empty inputs)
  - getTimestamp and generateUuid functions
  - commandExists function (found and not found cases)
  - generateReport function (empty and with vulnerabilities)
  - formatReportJson and formatReportText functions
  - Report structure validation
  - Temp directory creation and cleanup
- All tests pass successfully (20/20)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* auto-claude: subtask-9-2 - Create test/cve_integration.test.mjs for CVE database API tests

Added comprehensive CVE integration tests covering:
- OSV API query and normalization
- NVD API query with rate limiting
- GitHub Advisory Database placeholder
- Multi-source enrichment
- Error handling and network failures
- Vulnerability structure validation
- Multiple ecosystem support (npm, PyPI)

Tests gracefully handle network unavailability and skip API key-dependent tests.
All 20 tests passing.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* auto-claude: subtask-9-3 - Create test/sast_engine.test.mjs for static analysis tests

- Added comprehensive test suite for SAST engine functionality
- Tests cover Semgrep and Bandit output parsing
- Validates severity normalization and vulnerability data structures
- Includes edge case handling for malformed JSON and missing fields
- All 16 tests passing

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* auto-claude: subtask-10-2 - Run ESLint with zero warnings

- Add no-unused-vars rule with argsIgnorePattern to .mjs files in ESLint config
- Prefix unused parameters with underscore in handler.ts, dast_runner.mjs, query_cve_databases.mjs
- Remove unused error binding in handler.ts catch block
- Remove unused result variable in cve_integration.test.mjs
- Remove unused SAMPLE_OSV_VULN and SAMPLE_NVD_CVE constants
- Remove unused safeJsonParse import from query_cve_databases.mjs

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* fix(clawsec-scanner): resolve baz logical scanner findings

* fix(clawsec-scanner): make scanner state parsing type-safe

* chore(clawsec-scanner): bump version to 0.0.1

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-03-09 21:16:22 +02:00
2026-02-05 21:58:23 +02:00
2026-02-16 16:00:43 +02:00
2026-02-05 21:58:23 +02:00
2026-02-05 21:58:23 +02:00
2026-02-05 21:58:23 +02:00
2026-02-05 21:58:23 +02:00
2026-02-05 21:58:23 +02:00

prompt-icon ClawSec: Security Skill Suite for AI Agents prompt-icon

Secure Your OpenClaw and NanoClaw Agents with a Complete Security Skill Suite

Brought to you by Prompt Security, the Platform for AI Security

Prompt Security Logo clawsec mascot


🦞 What is ClawSec?

ClawSec is a complete security skill suite for AI agent platforms. It provides unified security monitoring, integrity verification, and threat intelligence-protecting your agent's cognitive architecture against prompt injection, drift, and malicious instructions.

Supported Platforms

  • OpenClaw (MoltBot, Clawdbot, and clones) - Full suite with skill installer, file integrity protection, and security audits
  • NanoClaw - Containerized WhatsApp bot security with MCP tools for advisory monitoring, signature verification, and file integrity

Core Capabilities

  • 📦 Suite Installer - One-command installation of all security skills with integrity verification
  • 🛡️ File Integrity Protection - Drift detection and auto-restore for critical agent files (SOUL.md, IDENTITY.md, etc.)
  • 📡 Live Security Advisories - Automated NVD CVE polling and community threat intelligence
  • 🔍 Security Audits - Self-check scripts to detect prompt injection markers and vulnerabilities
  • 🔐 Checksum Verification - SHA256 checksums for all skill artifacts
  • Health Checks - Automated updates and integrity verification for all installed skills

🎬 Product Demos

Animated previews below are GIFs (no audio). Click any preview to open the full MP4 with audio.

Install Demo (clawsec-suite)

Install demo animated preview

Direct link: install-demo.mp4

Drift Detection Demo (soul-guardian)

Drift detection animated preview

Direct link: soul-guardian-demo.mp4


🚀 Quick Start

For AI Agents

# Install the ClawSec security suite
npx clawhub@latest install clawsec-suite

After install, the suite can:

  1. Discover installable protections from the published skills catalog
  2. Verify release integrity using signed checksums
  3. Set up advisory monitoring and hook-based protection flows
  4. Add optional scheduled checks

Manual/source-first option:

Read https://github.com/prompt-security/clawsec/releases/latest/download/SKILL.md and follow the installation instructions.

For Humans

Copy this instruction to your AI agent:

Install ClawSec with npx clawhub@latest install clawsec-suite, then complete the setup steps from the generated instructions.

Shell and OS Notes

ClawSec scripts are split between:

  • Cross-platform Node/Python tooling (npm run build, hook/setup .mjs, utils/*.py)
  • POSIX shell workflows (*.sh, most manual install snippets)

For Linux/macOS (bash/zsh):

  • Use unquoted or double-quoted home vars: export INSTALL_ROOT="$HOME/.openclaw/skills"
  • Do not single-quote expandable vars (for example, avoid '$HOME/.openclaw/skills')

For Windows (PowerShell):

  • Prefer explicit path building:
    • $env:INSTALL_ROOT = Join-Path $HOME ".openclaw\\skills"
    • node "$env:INSTALL_ROOT\\clawsec-suite\\scripts\\setup_advisory_hook.mjs"
  • POSIX .sh scripts require WSL or Git Bash.

Troubleshooting: if you see directories such as ~/.openclaw/workspace/$HOME/..., a home variable was passed literally. Re-run using an absolute path or an unquoted home expression.


📱 NanoClaw Platform Support

ClawSec now supports NanoClaw, a containerized WhatsApp bot powered by Claude agents.

clawsec-nanoclaw Skill

Location: skills/clawsec-nanoclaw/

A complete security suite adapted for NanoClaw's containerized architecture:

  • 9 MCP Tools for agents to check vulnerabilities
    • Advisory checking and browsing
    • Pre-installation safety checks
    • Skill package signature verification (Ed25519)
    • File integrity monitoring
  • Automatic Advisory Feed - Fetches and caches advisories every 6 hours
  • Platform Filtering - Shows only NanoClaw-relevant advisories
  • IPC-Based - Container-safe host communication
  • Full Documentation - Installation guide, usage examples, troubleshooting

Advisory Feed for NanoClaw

The feed now monitors NanoClaw-specific keywords:

  • NanoClaw - Direct product name
  • WhatsApp-bot - Core functionality
  • baileys - WhatsApp client library dependency

Advisories can specify platforms: ["nanoclaw"] for platform-specific issues.

Quick Start for NanoClaw

See skills/clawsec-nanoclaw/INSTALL.md for detailed setup instructions.

Quick integration:

  1. Copy skill to NanoClaw deployment
  2. Integrate MCP tools in container
  3. Add IPC handlers and cache service on host
  4. Restart NanoClaw

📦 ClawSec Suite (OpenClaw)

The clawsec-suite is a skill-of-skills manager that installs, verifies, and maintains security skills from the ClawSec catalog.

Skills in the Suite

Skill Description Installation Compatibility
📡 clawsec-feed Security advisory feed monitoring with live CVE updates Included by default All agents
🔭 openclaw-audit-watchdog Automated daily audits with email reporting ⚙️ Optional (install separately) OpenClaw/MoltBot/Clawdbot
👻 soul-guardian Drift detection and file integrity guard with auto-restore ⚙️ Optional All agents
🤝 clawtributor Community incident reporting Optional (Explicit request) All agents

⚠️ clawtributor is not installed by default as it may share anonymized incident data. Install only on explicit user request.

⚠️ openclaw-audit-watchdog is tailored for the OpenClaw/MoltBot/Clawdbot agent family. Other agents receive the universal skill set.

Suite Features

  • Integrity Verification - Every skill package includes checksums.json with SHA256 hashes
  • Updates - Automatic checks for new skill versions
  • Self-Healing - Failed integrity checks trigger automatic re-download from trusted releases
  • Advisory Cross-Reference - Installed skills are checked against the security advisory feed

📡 Security Advisory Feed

ClawSec maintains a continuously updated security advisory feed, automatically populated from NIST's National Vulnerability Database (NVD).

Feed URL

# Fetch latest advisories
curl -s https://clawsec.prompt.security/advisories/feed.json | jq '.advisories[] | select(.severity == "critical" or .severity == "high")'

Canonical endpoint: https://clawsec.prompt.security/advisories/feed.json
Compatibility mirror (legacy): https://clawsec.prompt.security/releases/latest/download/feed.json

Monitored Keywords

The feed polls CVEs related to:

  • OpenClaw Platform: OpenClaw, clawdbot, Moltbot
  • NanoClaw Platform: NanoClaw, WhatsApp-bot, baileys
  • Prompt injection patterns
  • Agent security vulnerabilities

Exploitability Context

ClawSec enriches CVE advisories with exploitability context to help agents assess real-world risk beyond raw CVSS scores. Newly analyzed advisories can include:

  • Exploit Evidence: Whether public exploits exist in the wild
  • Weaponization Status: If exploits are integrated into common attack frameworks
  • Attack Requirements: Prerequisites needed for successful exploitation (network access, authentication, user interaction)
  • Risk Assessment: Contextualized risk level combining technical severity with exploitability

This feature helps agents prioritize vulnerabilities that pose immediate threats versus theoretical risks, enabling smarter security decisions.

Advisory Schema

NVD CVE Advisory:

{
  "id": "CVE-2026-XXXXX",
  "severity": "critical|high|medium|low",
  "type": "vulnerable_skill",
  "platforms": ["openclaw", "nanoclaw"],
  "title": "Short description",
  "description": "Full CVE description from NVD",
  "published": "2026-02-01T00:00:00Z",
  "cvss_score": 8.8,
  "nvd_url": "https://nvd.nist.gov/vuln/detail/CVE-2026-XXXXX",
  "exploitability_score": "high|medium|low|unknown",
  "exploitability_rationale": "Why this CVE is or is not likely exploitable in agent deployments",
  "references": ["..."],
  "action": "Recommended remediation"
}

Community Advisory:

{
  "id": "CLAW-2026-0042",
  "severity": "high",
  "type": "prompt_injection|vulnerable_skill|tampering_attempt",
  "platforms": ["nanoclaw"],
  "title": "Short description",
  "description": "Detailed description from issue",
  "published": "2026-02-01T00:00:00Z",
  "affected": ["skill-name@1.0.0"],
  "source": "Community Report",
  "github_issue_url": "https://github.com/.../issues/42",
  "action": "Recommended remediation"
}

Platform values:

  • "openclaw" - OpenClaw/Clawdbot/MoltBot only
  • "nanoclaw" - NanoClaw only
  • ["openclaw", "nanoclaw"] - Both platforms
  • (empty/missing) - All platforms (backward compatible)

🔄 CI/CD Pipelines

ClawSec uses automated pipelines for continuous security updates and skill distribution.

Automated Workflows

Workflow Trigger Description
ci.yml PRs to main, pushes to main Lint/type/build + skill test suites
pages-verify.yml PRs to main Verifies Pages build and signing outputs without publishing
poll-nvd-cves.yml Daily cron (06:00 UTC) Polls NVD for new CVEs, updates feed
community-advisory.yml Issue labeled advisory-approved Processes community reports into advisories
skill-release.yml Skill tags + metadata PR changes Validates version parity in PRs and publishes signed skill releases on tags
deploy-pages.yml workflow_run after successful trusted CI/release or manual dispatch Builds and deploys the web interface to GitHub Pages
wiki-sync.yml Pushes to main touching wiki/** Syncs wiki/ to the GitHub Wiki mirror

Skill Release Pipeline

When a skill is tagged (e.g., soul-guardian-v1.0.0), the pipeline:

  1. Validates - Checks skill.json version matches tag
  2. Enforces key consistency - Verifies pinned release key references are consistent across repo PEMs and skills/clawsec-suite/SKILL.md
  3. Generates Checksums - Creates checksums.json with SHA256 hashes for all SBOM files
  4. Signs + verifies - Signs checksums.json and validates the generated signing-public.pem fingerprint against canonical repo key material
  5. Releases - Publishes to GitHub Releases with all artifacts
  6. Supersedes Old Releases - Deletes older versions within the same major line (tags remain)
  7. Triggers Pages Update - Refreshes the skills catalog on the website

Signing Key Consistency Guardrails

To prevent supply-chain drift, CI now fails fast when signing key references diverge.

Guardrail script:

  • scripts/ci/verify_signing_key_consistency.sh

What it checks:

  • skills/clawsec-suite/SKILL.md inline public key fingerprint matches RELEASE_PUBKEY_SHA256
  • Canonical PEM files all match the same fingerprint:
    • clawsec-signing-public.pem
    • advisories/feed-signing-public.pem
    • skills/clawsec-suite/advisories/feed-signing-public.pem
  • Generated public key in workflows matches canonical key:
    • release-assets/signing-public.pem (release workflow)
    • public/signing-public.pem (pages workflow)

Where enforced:

  • .github/workflows/skill-release.yml
  • .github/workflows/deploy-pages.yml

Release Versioning & Superseding

ClawSec follows semantic versioning. When a new version is released:

Scenario Behavior
New patch/minor (e.g., 1.0.1, 1.1.0) Previous releases with same major version are deleted
New major (e.g., 2.0.0) Previous major version (1.x.x) remains for backwards compatibility

Why do old releases disappear?

When you release skill-v0.0.2, the previous skill-v0.0.1 release is automatically deleted to keep the releases page clean. Only the latest version within each major version is retained.

  • Git tags are preserved - You can always recreate a release from an existing tag if needed
  • Major versions coexist - Both skill-v1.x.x and skill-v2.x.x latest releases remain available for backwards compatibility

Release Artifacts

Each skill release includes:

  • checksums.json - SHA256 hashes for integrity verification
  • skill.json - Skill metadata
  • SKILL.md - Main skill documentation
  • Additional files from SBOM (scripts, configs, etc.)

Signing Operations Documentation

For feed/release signing rollout and operations guidance:


🛠️ Offline Tools

ClawSec includes Python utilities for local skill development and validation.

Skill Validator

Validates a skill folder against the required schema:

python utils/validate_skill.py skills/clawsec-feed

Checks:

  • skill.json exists and is valid JSON
  • Required fields present (name, version, description, author, license)
  • SBOM files exist and are readable
  • OpenClaw metadata is properly structured

Skill Checksums Generator

Generates checksums.json with SHA256 hashes for a skill:

python utils/package_skill.py skills/clawsec-feed ./dist

Outputs:

  • checksums.json - SHA256 hashes for verification

🛠️ Local Development

Prerequisites

  • Node.js 20+
  • Python 3.10+ (for offline tools)
  • npm

Setup

# Install dependencies
npm install

# Start development server
npm run dev

Populate Local Data

# Populate skills catalog from local skills/ directory
./scripts/populate-local-skills.sh

# Populate advisory feed with real NVD CVE data
./scripts/populate-local-feed.sh --days 120

# Generate wiki llms exports from wiki/ (for local preview)
./scripts/populate-local-wiki.sh

# Direct generator entrypoint (used by predev/prebuild)
npm run gen:wiki-llms

Notes:

  • npm run dev and npm run build automatically regenerate wiki llms.txt exports (predev/prebuild hooks).
  • public/wiki/ is generated output (local + CI) and is intentionally gitignored.

Build

npm run build

📁 Project Structure

├── advisories/
│   └── feed.json              # Main advisory feed (auto-updated from NVD)
├── components/                 # React components
├── pages/                      # Page components
├── wiki/                       # Source-of-truth docs (synced to GitHub Wiki)
├── scripts/
│   ├── generate-wiki-llms.mjs # wiki/*.md -> public/wiki/**/llms.txt
│   ├── populate-local-feed.sh # Local CVE feed populator
│   ├── populate-local-skills.sh # Local skills catalog populator
│   ├── populate-local-wiki.sh # Local wiki llms export populator
│   └── release-skill.sh       # Manual skill release helper
├── skills/
│   ├── clawsec-suite/       # 📦 Suite installer (skill-of-skills)
│   ├── clawsec-feed/        # 📡 Advisory feed skill
│   ├── clawsec-nanoclaw/    # 📱 NanoClaw platform security suite
│   ├── clawsec-clawhub-checker/ # 🧪 ClawHub reputation checks
│   ├── clawtributor/           # 🤝 Community reporting skill
│   ├── openclaw-audit-watchdog/ # 🔭 Automated audit skill
│   ├── prompt-agent/          # 🧠 Prompt-focused protection workflows
│   └── soul-guardian/         # 👻 File integrity skill
├── utils/
│   ├── package_skill.py       # Skill packager utility
│   └── validate_skill.py      # Skill validator utility
├── .github/workflows/
│   ├── ci.yml                 # Cross-platform lint/type/build + tests
│   ├── pages-verify.yml       # PR-only pages build verification
│   ├── poll-nvd-cves.yml      # CVE polling pipeline
│   ├── community-advisory.yml # Approved issue -> advisory PR
│   ├── skill-release.yml      # Skill release pipeline
│   ├── wiki-sync.yml          # Sync repo wiki/ to GitHub Wiki
│   └── deploy-pages.yml       # Pages deployment
└── public/                     # Static assets + generated publish artifacts

🤝 Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

Submitting Security Advisories

Found a prompt injection vector, malicious skill, or security vulnerability? Report it via GitHub Issues:

  1. Open a new issue using the Security Incident Report template
  2. Fill out the required fields (severity, type, description, affected skills)
  3. A maintainer will review and add the advisory-approved label
  4. The advisory is automatically published to the feed as CLAW-{YEAR}-{ISSUE#}

See CONTRIBUTING.md for detailed guidelines.

Adding New Skills

  1. Create a skill folder under skills/
  2. Add skill.json with required metadata and SBOM
  3. Add SKILL.md with agent-readable instructions
  4. Validate with python utils/validate_skill.py skills/your-skill
  5. Submit a PR for review

📚 Documentation Source of Truth

For all wiki content, edit files under wiki/ in this repository. The GitHub Wiki (<repo>.wiki.git) is synced from wiki/ by .github/workflows/wiki-sync.yml when wiki/** changes on main.

LLM exports are generated from wiki/ into public/wiki/:

  • /wiki/llms.txt is the LLM-ready export for wiki/INDEX.md (or a generated fallback index if INDEX.md is missing).
  • /wiki/<page>/llms.txt is the LLM-ready export for that single wiki page.

📄 License

  • Source code: GNU AGPL v3.0 or later - See LICENSE for details.
  • Fonts in font/: Licensed separately - See font/README.md.

ClawSec · Prompt Security, SentinelOne

🦞 Hardening agentic workflows, one skill at a time.

Languages
JavaScript 60.6%
TypeScript 20.6%
Python 9.7%
Shell 8.7%
HTML 0.4%