ShieldNet-360/securevibe

GitHub: ShieldNet-360/securevibe

SecureVibe 通过将经 Ed25519 签名的离线安全知识库直接嵌入 AI 编程助手,在代码生成阶段即预防安全漏洞和供应链风险。

Stars: 2 | Forks: 0

# SecureVibe [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE) [![Skills](https://img.shields.io/badge/skills-29-blue)](#skill-catalogue) [![Vulnerabilities](https://img.shields.io/badge/CVE%20patterns-58-orange)](./vulnerabilities/cve/code-relevant/cve_patterns.json) [![Ecosystems](https://img.shields.io/badge/supply--chain%20ecosystems-9-purple)](./vulnerabilities/supply-chain/malicious-packages) [![secret-detection patterns](https://img.shields.io/badge/Secret%20patterns-74-red)](./skills/secret-detection/checklists/secret_detection.yaml) [![Platforms](https://img.shields.io/badge/platforms-win%20%7C%20mac%20%7C%20linux-green)](#platform-support) **SecureVibe** is a structured, machine-readable library of security skills and supply-chain vulnerability intelligence designed to be embedded directly into AI coding assistants — Claude Code, Cursor, GitHub Copilot, Codex, Windsurf, Cline / OpenCode, Antigravity, and Devin. It ships bundled rules offline and supports incremental, Ed25519-signed remote updates. See [SIGNING.md](./SIGNING.md) for the signing model. Maintained by **[ShieldNet360](https://www.shieldnet360.com)** and released under the [MIT license](./LICENSE) — free to fork, embed, and ship in commercial products. ## Table of contents - [Why SecureVibe](#why-securevibe) - [What's inside](#whats-inside) - [Install & run](#install--run) - [Quick start — embed in your IDE](#quick-start--embed-in-your-ide) - [CLI install and routine updates](#cli-install-and-routine-updates) - [Vulnerability database — repo sample vs full upstream](#vulnerability-database--repo-sample-vs-full-upstream) - [Token efficiency](#token-efficiency) - [Project layout](#project-layout) - [Documentation](#documentation) - [CLI package layout](#cli-package-layout) - [MCP server](#mcp-server) - [Building and running tests](#building-and-running-tests) - [Signing model](#signing-model) - [Platform support](#platform-support) - [Skill catalogue](#skill-catalogue) - [Enterprise profiles](#enterprise-profiles) - [Compliance evidence](#compliance-evidence) - [Private repositories](#private-repositories) - [SDKs](#sdks) - [Localization](#localization) - [Contributing](#contributing) - [License and attribution](#license-and-attribution) ## Why SecureVibe - **AI coding assistants don't ship with current security knowledge.** Training data is months or years stale: a package compromised yesterday is happily imported by the model today. - **Security review is an afterthought** in the "vibe coding" workflow. Hardcoded secrets, vulnerable dependencies, typosquat imports, and unsafe deserialization all land in production routinely. - **No standardized way to inject security context** into AI tools today — every team writes its own `CLAUDE.md`, `.cursorrules`, or `copilot-instructions.md`, and most contain only style rules. - **Existing answers are proprietary, expensive, or infra-heavy.** SecureVibe is MIT-licensed, runs entirely offline, and ships as plain files in a Git repo plus a single static Go binary. SecureVibe closes the loop by shipping security knowledge *at the point of code generation*, before the diff ever touches your repo. ## What's inside | Area | Path | Description | |------|------|-------------| | **Skills** | [`skills/`](./skills) | 28 self-contained `SKILL.md` manifests with rules, patterns, and checklists. Each skill is a security capability the AI tool consults at generation time. | | **Vulnerability database** | [`vulnerabilities/`](./vulnerabilities) | Curated supply-chain corpus (malicious packages, typosquats, CVE detection patterns, dependency-confusion rules) plus an offline OSV cache. Delta-updatable. See the [Vulnerability database](#vulnerability-database--repo-sample-vs-full-upstream) section below for ecosystem coverage and counts. | | **Detection rules** | [`rules/`](./rules) | Sigma-format detection rules for AWS, GCP, Azure, K8s, Linux, macOS, Windows, O365, Google Workspace, Salesforce, and Slack — designed to complement the prevention-time rules in `skills/`. | | **Compliance maps** | [`compliance/`](./compliance) | OWASP Top 10, CWE Top 25, SANS Top 25 framework mappings plus developer-facing compliance coverage maps (SOC 2, HIPAA, PCI-DSS, FedRAMP). | | **Dictionaries** | [`dictionaries/`](./dictionaries) | Security term definitions, CWE catalogue, MITRE ATT&CK technique references — context the AI needs to reason about security. | | **Pre-compiled IDE files** | [`dist/`](./dist) | Ready-to-drop-in `CLAUDE.md`, `.cursorrules`, `copilot-instructions.md`, `AGENTS.md`, `.windsurfrules`, `devin.md`, `.clinerules`, and a universal `SECURITY-SKILLS.md`. | | **CLI** | [`cmd/skills-check/`](./cmd/skills-check) | Single static Go binary for installing, updating, and validating skills across every supported IDE. | | **MCP server** | [`cmd/skills-mcp/`](./cmd/skills-mcp) | JSON-RPC 2.0 Model Context Protocol server for on-demand skill / vulnerability lookups. | ## Install & run There are three ways to use SecureVibe, depending on whether you want the **MCP server** (16 scanning tools, any agent), the **skills** (knowledge for Claude Code), or both. Pick one — they're independent. ### A. npm / npx — no Go, no clone (easiest) Two published packages: | Package | What it is | |---------|------------| | [`@shieldnet360/secure-code-mcp`](https://www.npmjs.com/package/@shieldnet360/secure-code-mcp) | the MCP server (Go binary + data), agent-agnostic | | [`@shieldnet360/secure-code-skill`](https://www.npmjs.com/package/@shieldnet360/secure-code-skill) | the 29 skills + a connector, for Claude Code | **MCP server** — add to any MCP client's config (no install; `npx` fetches and runs it on demand): // Claude Code / Cursor / Windsurf / Cline … mcpServers block { "mcpServers": { "SecureVibe": { "command": "npx", "args": ["-y", "@shieldnet360/secure-code-mcp"] } } } Or, in Claude Code: `claude mcp add SecureVibe -- npx -y @shieldnet360/secure-code-mcp` **Skills** — install the native Claude Code skills into a project, then optionally wire up the MCP for active scanning: # install the 29 skills into ./.claude/skills (self-contained; no MCP needed) npx @shieldnet360/secure-code-skill init # (optional) connect the MCP engine for precise automated scanning npx @shieldnet360/secure-code-skill connect-mcp # connect-mcp is generic — it can register any MCP server: # npx @shieldnet360/secure-code-skill connect-mcp -- ... `npx` downloads + runs in one step (nothing is permanently installed — only the files `init` writes). Prefer a persistent command? `npm install -g @shieldnet360/secure-code-skill`, then `secure-code-skill init`. ### B. curl \| sh — prebuilt binary (no Go, no clone) curl -fsSL https://raw.githubusercontent.com/shieldnet-360/securevibe/main/install.sh | sh Downloads the `skills-check` binary for your OS/arch from the latest GitHub release, **verifies its SHA-256** against the release `SHA256SUMS.txt`, and installs it to `~/.local/bin`. Override with `SKILLS_CHECK_BIN_DIR` (install dir) or `SKILLS_CHECK_VERSION` (pin a tag). macOS + Linux, amd64 + arm64. ### C. Go — `go install` # the MCP server go install github.com/shieldnet-360/securevibe/cmd/skills-mcp@latest # the CLI (install/update/validate skills across IDEs) go install github.com/shieldnet-360/securevibe/cmd/skills-check@latest `skills-mcp` reads its library data from disk (it does not embed it), so point it at a **library directory** via `--path` (or `$SKILLS_LIBRARY_PATH`). Get one by cloning (section D below); `skills-check update` keeps that directory's signed skills + vulnerability data current: git clone https://github.com/shieldnet-360/securevibe.git lib skills-mcp --path ./lib # run the server against ./lib skills-check update --path ./lib # later: pull signed updates into ./lib ### D. From source (clone) git clone https://github.com/shieldnet-360/securevibe.git cd securevibe # build both binaries go build -o skills-mcp ./cmd/skills-mcp go build -o skills-check ./cmd/skills-check # run the MCP server against this checkout ./skills-mcp --path . Wire the local binary into an agent by absolute path: { "mcpServers": { "SecureVibe": { "command": "/abs/path/securevibe/skills-mcp", "args": ["--path", "/abs/path/securevibe"] } } } The skills also live in the checkout — copy `dist/claude-skills/.claude/skills/` into your project's `.claude/skills/`, or use the IDE-embed files in [`dist/`](./dist) (next section). ## Quick start — embed in your IDE The fastest path is to copy the pre-compiled file for your tool from [`dist/`](./dist) into your project root. Three patterns are available for every tool: 1. **Copy once** — fastest, no live updates. 2. **Symlink** — auto-updates whenever you run `skills-check update` or `git pull`. 3. **CLI-generated** — `skills-check init` writes a project-specific file with only the skills you care about, at the token budget you specify. ### Claude Code (`CLAUDE.md`) # Option 1: Copy the universal skill loader cp securevibe/dist/CLAUDE.md /your-project/CLAUDE.md # Option 2: Symlink for auto-updates ln -s /path/to/securevibe/dist/CLAUDE.md /your-project/CLAUDE.md # Option 3: Generate a project-specific CLAUDE.md skills-check init --tool claude --skills secret-detection,dependency-audit,secure-code-review ### Cursor (`.cursorrules`) cp securevibe/dist/.cursorrules /your-project/.cursorrules # or skills-check init --tool cursor --skills secret-detection,dependency-audit ### GitHub Copilot (`.github/copilot-instructions.md`) cp securevibe/dist/copilot-instructions.md /your-project/.github/copilot-instructions.md ### Codex / OpenAI (`AGENTS.md`) cp securevibe/dist/AGENTS.md /your-project/AGENTS.md ### Windsurf (`.windsurfrules`) cp securevibe/dist/.windsurfrules /your-project/.windsurfrules ### Devin (`devin.md`) cp securevibe/dist/devin.md /your-project/devin.md ### Cline / OpenCode (`.clinerules`) cp securevibe/dist/.clinerules /your-project/.clinerules ### Universal (any tool that reads project-root markdown) cp securevibe/dist/SECURITY-SKILLS.md /your-project/SECURITY-SKILLS.md ## CLI install and routine updates Vulnerability data and detection patterns change weekly. The CLI keeps your local copy current with incremental, signature-verified remote updates. ### Install (all platforms) # From source (requires Go 1.22+) go install github.com/shieldnet-360/securevibe/cmd/skills-check@latest # macOS via Homebrew brew install shieldnet-360/tap/skills-check # Windows via winget winget install shieldnet-360.skills-check # Linux via .deb / .rpm — see docs/install-linux.md ### Pull latest rules # Pull latest rules, vulnerabilities, and skills skills-check update # Pull and regenerate IDE files in one step skills-check update --regenerate # Check for updates without applying skills-check update --check-only # Revert to the previous version skills-check update --rollback # How stale is my data? (your AI is only as current as what it's fed) skills-check status # version, advisory count, data age, verdict skills-check status --json # machine-readable for CI skills-check status --fail-if-stale # exit 1 when the data is >30 days old (CI gate) skills-check status --max-age-days 14 # custom freshness budget # Use a custom source (HTTP URL, local directory, or tarball) skills-check update --source https://cdn.example.com/skills-library/ skills-check update --source /mnt/airgap/skills-library-v2.tar.gz ### Scheduled updates | Platform | Mechanism | Example | |----------|-----------|---------| | macOS | `launchd` LaunchAgent | `skills-check scheduler install --interval 6h` | | Linux | `systemd` user timer | `skills-check scheduler install --interval 6h` | | Windows | Task Scheduler | `skills-check scheduler install --interval 6h` | The scheduled task issues anonymous `GET` requests for public release artifacts and writes them to disk. **No device identifier, hostname, IP, or user information is transmitted.** The update server cannot distinguish a fresh install from its hundredth recurring check. ### Manual / Git-based cd /path/to/skills-library git pull origin main skills-check regenerate # rebuild dist/ files from the latest skills ### Vulnerability database — repo sample vs full upstream The committed `vulnerabilities/osv/` directory is a **small latest-first sample** of the upstream OSV archives at `osv-vulnerabilities.storage.googleapis.com`, generated by `scripts/ingest-osv.py`. It exists as an offline fallback so a fresh `git clone` can scan without network access. Sample size is controlled by `--per-ecosystem` (default 100); per-ecosystem advisory counts are published in [DATA_QUALITY.md](./DATA_QUALITY.md), regenerated on every ingest. The sample is **not a complete mirror**. Upstream npm alone has ~80,000 advisories. To get full coverage at scan time, populate the user-local cache. Two sources are supported: # Option 1: pull the full upstream catalogue from osv.dev directly. # ~250 MB, ~5–10 minutes on a typical connection. skills-check fetch-vulns # Option 2: pull the pre-built osv-cache.tar.gz from the latest GitHub # release. Single HTTPS download, no per-ecosystem fan-out; recommended # for production / air-gapped deployments and CI that cannot hit # osv.dev directly. skills-check fetch-vulns --from-release # Verify the cache is present and fresh (exit 1 if missing or >7d old; # suitable for cron / CI) skills-check fetch-vulns --check # Pull only specific ecosystems (e.g. JS/Python only). Applies to # osv.dev mode; the release-asset tarball is a single bundle. skills-check fetch-vulns --only npm,pypi The cache lives at `$SKILLS_MCP_CACHE` (falling back to `$XDG_CACHE_HOME/skills-mcp/vulns` and then `~/.cache/skills-mcp/vulns`). `skills-mcp` and `skills-check validate` prefer the user cache and only fall back to the repo-bundled sample when the cache is missing or incomplete — so populating it is purely additive and does not require changes to skill content. Re-run weekly (or wire up the `skills-check scheduler` to do it for you) to stay current with osv.dev. ## Token efficiency AI coding tools have finite context windows, and every byte of instructions you inject costs either tokens (for API tools) or working memory (for IDE tools). SecureVibe is designed around three principles: - **Skills are loaded on demand, not all at once.** The CLI lets you pick exactly which skills your project needs. - **Every `SKILL.md` declares a `token_budget` block** with three pre-counted variants: `minimal`, `compact`, and `full`. - **The `dist/` files are pre-compiled to a budget tier.** Generated output is checked at build time and the build fails if a variant exceeds its budget. | Tier | Approx. tokens | Contents | Recommended for | |------|----------------|----------|-----------------| | `minimal` | < 500 | ALWAYS / NEVER bullet rules only | Expensive API-based tools, very small context budgets | | `compact` | < 2000 | Full rules + known false positives + references; no examples or rationale | Default for most IDE integrations | | `full` | < 5000 | Rules + examples + rationale + related CWEs | Local models with large context, Devin-style agents | Select your tier with `skills-check init --budget compact`. Compact is the default. ## Project layout skills-library/ ├── README.md PROPOSAL.md ARCHITECTURE.md SIGNING.md LICENSE ├── skills/ # 29 skill definitions (the core product) │ ├── secret-detection/ # 74 secret-detection patterns + exclusions + test corpus │ ├── dependency-audit/ # known-malicious package corpus │ ├── supply-chain-security/ # typosquat + dependency-confusion rules │ ├── secure-code-review/ # OWASP Top 10 checklists + injection patterns │ ├── api-security/ # auth + input validation patterns │ ├── compliance-awareness/ # CWE + OWASP framework mappings │ ├── iac-security/ # Terraform / CloudFormation / Pulumi │ ├── container-security/ # Dockerfile / K8s / Helm │ ├── frontend-security/ # XSS, CSP, CORS, SRI, trusted types │ ├── database-security/ # SQL injection, ORM safety, RLS │ ├── crypto-misuse/ # weak ciphers, bad RNG, KDF │ ├── auth-security/ # JWT, OAuth, sessions, MFA │ ├── iam-best-practices/ # least-privilege roles + policies │ ├── serverless-security/ # Lambda / Cloud Functions IAM │ ├── mobile-security/ # Android exported components, iOS ATS │ ├── ml-security/ # model artifacts, poisoning, training-data PII │ ├── llm-app-security/ # prompt injection, output handling, RAG │ ├── protocol-security/ # TLS 1.2+, mTLS, HSTS, gRPC │ ├── error-handling-security/ # information disclosure │ ├── logging-security/ # secrets / PII in logs, log injection │ ├── cors-security/ # origin allowlists, preflight │ ├── cicd-security/ # GitHub Actions / GitLab CI hardening │ ├── ssrf-prevention/ # cloud-metadata + DNS-rebinding sinks │ ├── deserialization-security/ # unsafe deserializers + safe alternatives │ ├── graphql-security/ # depth / cost limits, introspection │ ├── file-upload-security/ # MIME + magic-byte validation │ ├── websocket-security/ # origin check, auth, rate limits │ └── saas-security/ # GWS / Atlassian / Slack / Salesforce / 14 services ├── vulnerabilities/ # Supply-chain vulnerability database │ ├── manifest.json # versioned, checksummed, delta-updatable │ ├── supply-chain/ │ │ ├── malicious-packages/ # ~1,900 entries across 9 ecosystems │ │ │ # (npm/pypi/crates/go/rubygems/maven/nuget/ │ │ │ # github-actions/docker) │ │ ├── typosquat-db/ # ~270 known typosquats (curated + derived) │ │ └── dependency-confusion/ # internal-namespace patterns │ ├── osv/ # per-ecosystem OSV.dev cache — │ │ # stride-sampled subset across 10 │ │ # ecosystems (composer, crates, go, │ │ # maven, npm, nuget, pub, pypi, │ │ # rubygems, swift) for offline │ │ # lookups, not comprehensive │ │ # vulnerability intelligence; │ │ # refresh via scripts/ingest-osv.py │ │ # (see DATA_QUALITY.md for counts) │ └── cve/ │ └── code-relevant/ # 58 CVE → code-pattern mappings (2015-2025) ├── rules/ # Sigma detection rules │ ├── cloud/aws,gcp,azure/ # CloudTrail / Cloud Audit Logs / Azure AD │ ├── endpoint/linux,macos,windows/ # auditd / UnifiedLog / Sysmon │ ├── container/k8s/ # API audit / privileged pod / exec │ └── saas/o365,gws,salesforce,slack/ # Mailbox forwarding / admin roles / GWS delegation / SF exports / Slack app scopes ├── dictionaries/ # Reference data for AI context │ ├── security_terms.yaml │ ├── cwe_top25.yaml │ ├── owasp_top10_2025.yaml │ └── attack_techniques.yaml # MITRE ATT&CK subset ├── dist/ # Pre-compiled IDE-specific files │ ├── CLAUDE.md .cursorrules copilot-instructions.md AGENTS.md │ ├── .windsurfrules devin.md .clinerules │ └── SECURITY-SKILLS.md # universal format ├── cmd/ │ ├── skills-check/ # CLI (Go, single binary) │ └── skills-mcp/ # MCP server over JSON-RPC stdio ├── packaging/ # OS installers / package manager manifests │ ├── macos/ windows/ linux/ # pkgbuild + MSI + nfpm .deb/.rpm │ ├── homebrew/ winget/ scoop/ # tap formula + winget + scoop │ ├── apt-yum/ # GitHub Pages-hosted APT / YUM repos │ └── codesign/ # notarization + Authenticode docs ├── docs/ # Install + admin docs │ ├── install-{macos,linux,windows}.md │ ├── admin-team-rollout.md │ └── air-gapped-install.md ├── profiles/ # Enterprise --profile mappings │ ├── financial-services.yaml │ ├── healthcare.yaml │ └── government.yaml ├── compliance/ # Framework control mappings │ ├── soc2_mapping.yaml │ ├── hipaa_mapping.yaml │ └── pci_dss_mapping.yaml ├── sdk/ # Programmatic access │ ├── go/ # Re-exports of internal/skill │ ├── python/ # skillslib Python package │ └── typescript/ # skillslib npm package ├── manifest.json # Root manifest for signed remote updates └── .github/workflows/ ├── validate.yml # CI: validate all skills, rules, manifests └── release.yml # CI: build CLI, tag release, publish manifests ## Documentation - [PROPOSAL.md](./PROPOSAL.md) — problem statement, design principles, target audience, scope boundaries, and the canonical `SKILL.md` format specification. - [ARCHITECTURE.md](./ARCHITECTURE.md) — system diagrams, compiler architecture, update protocol, CLI layout, scheduler implementation, and signing model. - [SIGNING.md](./SIGNING.md) — Ed25519 release signing procedure and key management policy. - [docs/](./docs/) — install guides (macOS / Linux / Windows / air-gapped) and the team rollout admin guide. - [packaging/codesign/README.md](./packaging/codesign/README.md) — macOS notarization and Windows Authenticode signing in the release workflow. ## CLI package layout cmd/skills-check/ ├── main.go # Cobra root command ├── cmd/ # init / update / validate / list / regenerate │ # / version / manifest / scheduler / self-update │ # / configure / evidence / new / test └── internal/ ├── token/ # tiktoken-go counter + 1.3x Claude multiplier ├── compiler/ # 8 IDE-specific formatters + core compile loop ├── manifest/ # manifest.json: load, checksum, Ed25519 sign / │ # verify, delta, atomic write ├── updater/ # Remote update: HTTP / dir / tarball sources, │ # verify-before-replace, rollback └── scheduler/ # Cross-platform scheduled updates # (launchd / systemd / Task Scheduler) cmd/skills-mcp/ # Model Context Protocol server (JSON-RPC 2.0 over stdio) ├── main.go └── internal/ ├── mcp/ # JSON-RPC dispatch + tool definitions └── tools/ # lookup_vulnerability, check_secret_pattern, # get_skill, search_skills internal/skill/ # SKILL.md parser (shared by skills-check and skills-mcp) ## MCP server `skills-mcp` exposes SecureVibe to AI tools that speak the [Model Context Protocol](https://modelcontextprotocol.io). It runs as a short-lived child process spoken to over stdio: go build -o skills-mcp ./cmd/skills-mcp skills-mcp --path /path/to/skills-library The server registers fifteen tools on `tools/list`: - `lookup_vulnerability(package, ecosystem?, version?)` — search the supply-chain malicious-packages database, the typosquat DB, AND the local OSV cache (vulnerabilities/osv/) for known CVE / GHSA / OSV-ID advisories. - `check_secret_pattern(text)` — run the secret-detection regex rules against `text`, returning matches with severity and whether they are known false positives. - `get_skill(skill_id, budget?)` — return the requested skill at the requested tier (`minimal` / `compact` / `full`). - `search_skills(query)` — substring match across skill metadata. - `scan_secrets(text | file_path, format?)` — secret scan of inline text or a path under the configured allowed roots; supports the `sarif` output format. - `check_dependency(package, version?, ecosystem, format?)` — check a dependency against the malicious-packages corpus, the typosquat DB, the CVE-pattern list, and the local OSV cache; ecosystem-native semver matching (node-semver, PEP 440, Go module pseudo-versions) is used when both sides parse. Optional SARIF output. - `check_typosquat(package, ecosystem?)` — flag candidate typosquats from the curated typosquat database. - `map_compliance_control(skill_id | query, framework?)` — map an installed skill (or free-text query) to controls in SOC 2, HIPAA, or PCI-DSS. - `get_sigma_rule(rule_id | query, category?)` — fetch a Sigma detection rule from `rules/` by ID, free-text query, or category. - `version_status()` — report data version, manifest signature state, and whether the loaded library is the canonical signed release. - `scan_dependencies(file_path, format?)` — parse a project lockfile or manifest (`package-lock.json`, `package.json`, `yarn.lock`, `pnpm-lock.yaml`, `requirements.txt`, `Pipfile.lock`, `poetry.lock`, `go.sum`, `Cargo.lock`, `pom.xml`, `gradle.lockfile` / `build.gradle.lockfile`, `packages.lock.json`, `*.csproj` / `*.fsproj` / `*.vbproj`, `Gemfile.lock`, `composer.lock`, `Package.resolved`, and `pubspec.lock`) and report every dependency that matches the malicious-packages, typosquat, or CVE databases. Parsers cover every vulnerability-database ecosystem (npm, PyPI, crates, Go, RubyGems, Maven, NuGet, Composer, Swift, Dart/pub — plus GitHub Actions and Docker, which are surfaced via `scan_github_actions` and `scan_dockerfile` respectively). Supports the `sarif` output format. - `scan_github_actions(file_path, format?)` — run the `skills/cicd-security/SKILL.md` rules against a workflow file: unpinned actions, missing `permissions:` defaults, `pull_request_target` checkout, untrusted-input script injection, `curl | sh`, and stored cloud credentials. Supports the `sarif` format. - `scan_dockerfile(file_path, format?)` — hardening pass over a Dockerfile: untagged / `:latest` base images, `USER root`, secrets in `ENV`/`ARG`, `ADD https://…`, `curl | sh`, and `apt-get install` without version pins. Supports the `sarif` format. - `explain_finding(query)` — map a CWE / CVE ID or free-text finding description to the relevant skills and CVE-pattern entries, so a SAST/SCA finding from another scanner can be paired with remediation guidance. - `gate(file_path, severity_floor?)` — dispatch the appropriate scanner for `file_path` (falling back to a secret scan for files no specialised scanner claims) and return a CI-friendly `pass` flag plus `exit_code` (0 on pass, 1 on fail). Findings at or above `severity_floor` (default `high`) fail the check; counts are returned per severity so a wrapper can produce a one-line summary. The library root is resolved from `--path`, then `$SKILLS_LIBRARY_PATH`, then the directory containing the binary. ### Same tools, from the terminal The eight tools that operate on packages or files are also exposed as top-level `skills-check` subcommands so they fit into shell scripts, pre-commit hooks, and CI steps without anyone having to speak JSON-RPC. Both surfaces share the same Go library, so a finding from `skills-check scan-dockerfile foo.Dockerfile` is bit-identical to the corresponding `scan_dockerfile` MCP tool response. # Package lookups skills-check check-dependency --package axios --version 0.21.1 --ecosystem npm --vuln-source hybrid skills-check check-typosquat --package lodahs --ecosystem npm skills-check lookup-vulnerability --package event-stream --ecosystem npm # File scanners (a file, or a directory to scan recursively) skills-check scan-secrets src/server.js skills-check scan-secrets ./src # walks the tree skills-check scan-dependencies package-lock.json skills-check scan-dependencies . # auto-discovers lockfiles skills-check scan-dockerfile Dockerfile skills-check scan-github-actions .github/workflows/ci.yml # Write an HTML + PDF report into a folder instead of the terminal skills-check scan-dependencies . --report-dir ./reports # CI gate — non-zero exit when findings meet --severity-floor skills-check gate Dockerfile --severity-floor high Every scan-/check- subcommand accepts `--format text` (default, human-readable), `--format json` (matches the MCP server's response schema field-for-field), and where the underlying scanner supports it, `--format sarif` for CI ingestion. The `--vuln-source` flag is threaded through to the same `local | external | hybrid` modes documented in [Live OSV.dev lookups](#live-osvdev-lookups-via---vuln-source-opt-in-enrichment). Every `scan-*` subcommand also accepts `--report-dir `. When set, the scanner writes a self-contained, styled **HTML report** and a matching **PDF** (`-report.html` and `-report.pdf`) into that directory instead of printing to the terminal; the directory is created if it does not exist. The HTML report has a clickable summary bar — **file(s) scanned** shows every file (including clean ones), **finding(s)** shows only files with findings, and each severity badge filters to that severity — and you can Print → Save as PDF from a browser as well. On a directory scan the PDF and terminal output list only files that actually have findings, while the summary still counts every file scanned. The file scanners read their rule data from a skills-library checkout. When you run them outside this repo — in a CI step, a pre-commit hook, or another project — point them at the data tree once via the `SKILLS_LIBRARY_PATH` environment variable instead of passing `--path` on every call (resolution order: explicit `--path` → `$SKILLS_LIBRARY_PATH` → current directory). If no rule data is found the command exits non-zero with an error, so a misconfigured gate fails loudly rather than silently passing: export SKILLS_LIBRARY_PATH=/opt/skills-library # data tree, set once skills-check gate Dockerfile --severity-floor high Arguments can be files or directories. A directory is walked — skipping `.git`, `node_modules`, `vendor`, and build output — and gated in one call for both specialised findings (every Dockerfile, lockfile, and `.github/workflows/*.yml`) and secrets in any other text file: skills-check gate . --severity-floor high # gate the whole repo Empty, oversized, and binary files are skipped during the walk so the scan stays fast and avoids entropy false positives on images and build artefacts. ### Gate in pre-commit and CI The `gate` command is also wired up as a [pre-commit](https://pre-commit.com) hook and a GitHub Action, both of which run the published `@shieldnet360/secure-code-mcp` package (binary + data bundled, no checkout needed). **pre-commit** — add to `.pre-commit-config.yaml`: repos: - repo: https://github.com/shieldnet-360/securevibe rev: v0.4.0 # a release tag that ships the CLI hooks: - id: secure-code-gate It runs `secure-code-check gate` over the staged files and blocks the commit when any finding meets the severity floor (default `high`; override with `args: ["--severity-floor", "critical"]`). **GitHub Actions** — gate specific files in a workflow: - uses: shieldnet-360/securevibe@v0.4.0 with: files: Dockerfile package-lock.json .github/workflows/ci.yml severity-floor: high To also surface the findings in GitHub Code Scanning (Security tab + PR annotations), set `sarif-file` and grant the workflow the upload permission — the job still fails when any finding meets the severity floor: permissions: contents: read security-events: write steps: - uses: actions/checkout@v4 - uses: shieldnet-360/securevibe@vNEXT # first tag with gate --format sarif with: files: Dockerfile package-lock.json .github/workflows/ci.yml severity-floor: high sarif-file: gate.sarif ### Extend the block list when you learn something (LEARN loop) Found a bad package the curated database doesn't know yet? Block it immediately — locally, with no round trip: skills-check contribute add -p evil-pkg -e npm \ --reason "exfiltrates AWS creds in a postinstall script" skills-check gate package.json --severity-floor high # now fails on evil-pkg `contribute add` writes only to `.skills-check/overlay.json` in your project; the rule never leaves your machine. Sharing widens by blast radius: | Scope | How | Who enforces it | |-------|-----|-----------------| | **You** | `contribute add` writes `.skills-check/overlay.json` | every local `check`/`scan`/`gate` | | **Team** | commit `.skills-check/overlay.json` | every teammate's gate (git is the fan-out) + CI, on next pull | | **Org** | point `SKILLS_CHECK_OVERLAY` at a shared overlay file outside any repo (OS path-list separated for several) | every `skills-check` invocation, across all repos and CI jobs | When you want to share a finding upstream, `contribute keygen` + `contribute submit --key …` produces a **signed**, portable candidate that a reviewer can `contribute verify` before it is promoted into the central, centrally-signed database. Crowdsource candidates, centralize trust — see **[Contribute a Finding](docs/contribute.md)**. ## Building and running tests go build -trimpath -ldflags "-s -w" -o skills-check ./cmd/skills-check go build -trimpath -ldflags "-s -w" -o skills-mcp ./cmd/skills-mcp go test ./... # covers CLI + MCP server ./skills-check validate # check SKILL.md frontmatter + budgets ./skills-check list # enumerate skills with token counts ./skills-check regenerate # rebuild dist/ files ./skills-check manifest compute --path . --write # recompute SHA-256 checksums ./skills-check manifest verify --path . --checksums-only # verify committed checksums The same commands run in CI on every PR. `skills-check validate` enforces the per-skill token budgets declared in each `SKILL.md` frontmatter; `skills-check regenerate` rebuilds every file in `dist/` and CI fails if the committed copy differs from the regenerated output. ## Signing model Release manifests are signed with **Ed25519**. The public key is embedded in the CLI binary at build time via `-ldflags -X`. See [SIGNING.md](./SIGNING.md) for the out-of-band YubiKey-backed signing procedure and key management policy. ## Platform support | OS | Architectures | CLI install | Scheduled updates | |----|---------------|-------------|-------------------| | macOS | `amd64`, `arm64` | `brew install shieldnet-360/tap/skills-check`, `go install` | `launchd` | | Linux | `amd64`, `arm64` | `.deb`, `.rpm`, `go install`, `apt`, `yum` | `systemd` user timer | | Windows | `amd64` | MSI, `winget`, `scoop`, `go install` | Task Scheduler | ## Skill catalogue All 29 skills are language-agnostic unless otherwise noted. | Skill | Category | Severity | Languages | |-------|----------|----------|-----------| | `secret-detection` | prevention | critical | * | | `dependency-audit` | supply-chain | high | * | | `secure-code-review` | prevention | high | * | | `supply-chain-security` | supply-chain | critical | * | | `api-security` | prevention | high | * | | `compliance-awareness` | compliance | medium | * | | `iac-security` | hardening | high | hcl, yaml, json | | `container-security` | hardening | high | dockerfile, yaml | | `electron-security` | hardening | critical | javascript, typescript | | `frontend-security` | prevention | high | javascript, typescript, html | | `database-security` | prevention | high | sql, javascript, typescript, python, java, go | | `crypto-misuse` | prevention | high | * | | `auth-security` | prevention | critical | * | | `iam-best-practices` | hardening | high | * | | `serverless-security` | hardening | high | python, javascript, typescript, java, yaml | | `mobile-security` | hardening | high | java, kotlin, swift, objective-c | | `ml-security` | prevention | high | python, jupyter | | `llm-app-security` | prevention | critical | python, javascript, typescript, go, * | | `protocol-security` | hardening | high | * | | `error-handling-security` | prevention | medium | * | | `logging-security` | prevention | high | * | | `cors-security` | hardening | medium | javascript, typescript, python, go, java | | `cicd-security` | prevention | critical | yaml, shell, * | | `ssrf-prevention` | prevention | critical | * | | `deserialization-security` | prevention | critical | java, python, csharp, php, ruby, javascript, typescript | | `graphql-security` | prevention | high | javascript, typescript, python, go, java, kotlin, csharp, ruby | | `file-upload-security` | prevention | high | * | | `websocket-security` | prevention | high | javascript, typescript, python, go, java, csharp, ruby, elixir | | `saas-security` | prevention | critical | * | ## Enterprise profiles `skills-check init` and `skills-check regenerate` accept `--profile ` to select a curated, compliance-aligned subset of skills: | Profile | Frameworks | Use case | |---------|-----------|----------| | `financial-services` | PCI-DSS v4.0, SOC 2 | Banks, fintech, payment processors | | `healthcare` | HIPAA Security Rule | Hospitals, telehealth, claims processing | | `government` | FedRAMP, NIST SP 800-53 Rev. 5 | Public-sector workloads | Profile definitions live under [`profiles/`](./profiles). ## Compliance evidence skills-check evidence --framework SOC2 --format markdown --out evidence.md skills-check evidence --framework HIPAA --format json skills-check evidence --framework PCI-DSS --format markdown The command maps controls to installed skills using YAML files in [`compliance/`](./compliance) and emits a timestamped compliance coverage report mapping installed skills to framework controls. The report is a developer-facing coverage map, not a substitute for a real audit — which still requires runtime evidence, change-management records, access reviews, and so on. ## Private repositories For air-gapped or internal deployments, point the CLI at your own signed bundle: skills-check configure \ --source https://skills.internal.example.com \ --bearer-token-env SKILLS_TOKEN \ --trusted-key /etc/skills/orgkey.pem \ --profile financial-services This writes `.skills-check.yaml` next to the repo. The updater accepts multiple trusted Ed25519 keys (`VerifyAny`) and authenticated HTTPS pulls. ## SDKs Minimal Go, Python, and TypeScript SDKs live under [`sdk/`](./sdk). import skillslib "github.com/shieldnet-360/securevibe/sdk/go" s, _ := skillslib.LoadSkill("skills/secret-detection/SKILL.md") fmt.Println(skillslib.Extract(s, skillslib.TierCompact)) import skillslib s = skillslib.load_skill("skills/secret-detection/SKILL.md") print(skillslib.extract(s, "compact")) import { loadSkill, extract } from "@skills-library/skillslib"; const s = loadSkill("skills/secret-detection/SKILL.md"); console.log(extract(s, "compact")); ## Contributing We welcome contributions from the community. Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for the full guide and [AGENTS.md](./AGENTS.md) for the project's AI-assisted-contribution policy (TL;DR: AI tools may be used to assist, but fully or predominantly AI-generated pull requests are not accepted). In brief: - **Skill contributions** — add a new directory under `skills/` with a `SKILL.md` and associated rules. Use [`skills/secret-detection/`](./skills/secret-detection) as the reference implementation. - **Vulnerability data** — add entries to `vulnerabilities/supply-chain/` JSON files via PR. Every entry must include at least one external reference (CVE ID, advisory URL, or reputable disclosure write-up). - **Detection rules** — add Sigma YAML files to `rules/`. Follow the existing taxonomy (`cloud/`, `endpoint/`, `container/`, `saas/`). - **False positive fixes** — update the `exclusions:` block of `skills/secret-detection/checklists/secret_detection.yaml` (or the equivalent exclusion file for another skill). False-positive PRs are merged quickly. - **IDE integration** — improve the templates in the `dist/` compiler for specific tools. - Run `skills-check validate` and `go test ./...` before submitting a PR. CI runs the same checks and rejects PRs that fail. To report a security issue privately, see [SECURITY.md](./SECURITY.md). ## License and attribution SecureVibe is released under the [MIT License](./LICENSE). The project is maintained by [ShieldNet360](https://www.shieldnet360.com) and is free to fork, embed, and ship in commercial products. We ask only that the MIT copyright notice and the attribution above are preserved in derivative works.
标签:AI代码安全, CI/CD安全, Ed25519签名, EVTX分析, Homebrew安装, Llama, 安全知识库, 日志审计, 暗色界面, 静态应用安全测试 (SAST)