Data Flow

February 26, 2026 ยท View on GitHub

Primary Flows

  • Advisory ingestion: NVD/community inputs are transformed into a normalized advisory feed, signed, then mirrored for clients.
  • Skill catalog publication: release assets are discovered and converted into public/skills/index.json plus per-skill docs/checksums.
  • Runtime enforcement: suite and nanoclaw consumers load advisory data, match against skills, and emit alerts or confirmation gates.
  • This page appears under the Guides section in INDEX.md.

Step-by-Step

  1. Feed producer workflow/script fetches source data (NVD API or issue payload).
  2. JSON transform logic normalizes severity/type/affected fields and deduplicates by advisory ID.
  3. Signature/checksum steps generate detached signatures and checksum manifests.
  4. Deploy workflow mirrors signed artifacts under public/ and public/releases/latest/download/.
  5. UI consumers validate JSON shape/content; runtime consumers additionally verify signatures/checksums before trusting feed data.
  6. Matchers compare affected specifiers to skill names/versions and emit alerts or enforce confirmation.

Inputs and Outputs

Inputs/outputs are summarized in the table below.

TypeNameLocationDescription
InputCVE payloadsservices.nvd.nist.gov/rest/json/cves/2.0Source vulnerabilities filtered by ClawSec keywords.
InputCommunity advisory issue.github/workflows/community-advisory.yml event payloadMaintainer-approved issue transformed into advisory record.
InputSkill release assetsGitHub Releases API + assetsUsed to build web catalog and mirror downloads.
InputLocal config/envOPENCLAW_AUDIT_CONFIG, CLAWSEC_* varsControls feed pathing, suppression, and verification behavior.
OutputAdvisory feedadvisories/feed.jsonCanonical repository feed.
OutputAdvisory signatureadvisories/feed.json.sigDetached signature for feed authenticity.
OutputSkill catalog indexpublic/skills/index.jsonRuntime web catalog used by /skills pages.
OutputRelease checksums/signaturesrelease-assets/checksums.json(.sig)Integrity manifest for release consumers.
OutputHook state~/.openclaw/clawsec-suite-feed-state.jsonTracks scan timing and notified matches.

Data Structures

StructureKey FieldsPurpose
Advisory feed recordid, severity, type, affected[], publishedUnit of risk data used by UI and installers.
Skill metadata recordid, name, version, emoji, tagCatalog row for web browsing and install commands.
Checksums manifestschema_version, algorithm, filesMaps file names to expected digests.
Advisory stateknown_advisories, last_hook_scan, notified_matchesPrevents repeated alerts and throttles scans.
Suppression configenabledFor[], suppressions[]Targeted skip list by checkId + skill.

Diagrams

flowchart LR
  A["NVD + Issue Inputs"] --> B["Transform + Deduplicate"]
  B --> C["advisories/feed.json"]
  C --> D["Sign + checksums"]
  D --> E["public/advisories + releases/latest"]
  E --> F["Web UI fetch"]
  E --> G["Suite/NanoClaw verification"]
  G --> H["Match skills + emit alerts/gates"]

State and Storage

StorePath/ScopeWrite Path
Canonical advisoriesadvisories/NVD + community workflows and local populate script.
Embedded advisory copiesskills/clawsec-feed/advisories/ and skills/clawsec-suite/advisories/Sync/packaging processes and release workflow.
Public mirrorspublic/advisories/, public/releases/Deploy workflow.
Runtime state~/.openclaw/clawsec-suite-feed-state.jsonAdvisory hook state persistence.
NanoClaw cache/workspace/project/data/clawsec-advisory-cache.jsonHost-side advisory cache manager.
Integrity state/workspace/project/data/soul-guardian/ (NanoClaw)Integrity monitor baseline/audit storage.

Example Snippets

# Local feed flow (NVD fetch -> transform -> sync)
./scripts/populate-local-feed.sh --days 120
jq '.updated, (.advisories | length)' advisories/feed.json
# Runtime guarded install uses signed feed paths
CLAWSEC_LOCAL_FEED=~/.openclaw/skills/clawsec-suite/advisories/feed.json \
CLAWSEC_FEED_PUBLIC_KEY=~/.openclaw/skills/clawsec-suite/advisories/feed-signing-public.pem \
node skills/clawsec-suite/scripts/guarded_skill_install.mjs --skill test-skill --dry-run

Failure Modes

  • NVD rate limits (403/429) can delay feed refresh and require retries/backoff.
  • Missing or invalid detached signatures cause feed rejection in fail-closed mode.
  • HTML fallback responses for JSON endpoints can produce false positives unless explicitly filtered.
  • Path-token misconfiguration (\$HOME) can break local fallback path resolution.
  • Mismatched public key fingerprints in workflows trigger hard CI failure.

Source References

  • advisories/feed.json
  • advisories/feed.json.sig
  • scripts/populate-local-feed.sh
  • scripts/populate-local-skills.sh
  • .github/workflows/poll-nvd-cves.yml
  • .github/workflows/community-advisory.yml
  • .github/workflows/deploy-pages.yml
  • .github/workflows/skill-release.yml
  • skills/clawsec-suite/hooks/clawsec-advisory-guardian/lib/feed.mjs
  • skills/clawsec-suite/hooks/clawsec-advisory-guardian/lib/state.ts
  • skills/clawsec-suite/hooks/clawsec-advisory-guardian/lib/matching.ts
  • skills/clawsec-suite/scripts/guarded_skill_install.mjs
  • skills/clawsec-nanoclaw/lib/advisories.ts
  • skills/clawsec-nanoclaw/host-services/advisory-cache.ts