Skill: msaad00/agent-bom-ingest (version 0.88.4)

--- name: agent-bom-ingest description: >- Validate and ingest operator-pushed agent-bom inventory JSON from AWS, Azure, GCP, Snowflake, CMDB, or endpoint collectors. Use when a user has canonical inventory JSON and wants local findings, graph, policy, provenance, or auditor-ready exports without giving agent-bom direct cloud credentials. version: 0.88.4 license: Apache-2.0 compatibility: >- Requires Python 3.11+ and agent-bom 0.84.4+. Inventory must conform to the packaged inventory.schema.json contract. metadata: author: msaad00 homepage: https://github.com/msaad00/agent-bom source: https://github.com/msaad00/agent-bom pypi: https://pypi.org/project/agent-bom/ openclaw: requires: bins: - agent-bom env: [] credentials: none credential_policy: "No cloud credentials are required. Optional control-plane push uses an operator-provided agent-bom API token; never ask users to paste that token into chat and never print it." optional_env: - AGENT_BOM_API_KEY - AGENT_BOM_PUSH_URL optional_bins: [] emoji: "inbox" homepage: https://github.com/msaad00/agent-bom source: https://github.com/msaad00/agent-bom license: Apache-2.0 os: - darwin - linux - windows credential_handling: "Inventory is schema-validated before it is trusted. Env var values, URL credentials, launch arguments, discovery_provenance, permissions_used, and security intelligence pass through the sanitizer/redaction contract before display/export." data_flow: "Operator-generated inventory JSON -> packaged inventory.schema.json validation -> local agent-bom scan/graph/export. Optional push to an operator-owned control plane goes only to the URL the operator provided." file_reads: - "operator-selected inventory JSON file" - "packaged agent_bom/data/inventory.schema.json" file_writes: - "operator-selected JSON/SARIF/HTML/Markdown export path" network_endpoints: - url: "operator-provided AGENT_BOM_PUSH_URL" purpose: "Optional push into the operator-owned agent-bom control plane" auth: true optional: true - url: "https://api.osv.dev/v1" purpose: "Optional package vulnerability lookup during local scan" auth: false optional: true - url: "https://api.github.com/advisories" purpose: "Optional GitHub Advisory enrichment during local scan" auth: false optional: true telemetry: false persistence: false privilege_escalation: false always: false autonomous_invocation: restricted --- # agent-bom-ingest Use this skill when the operator already produced canonical inventory JSON with an operator-pull adapter, endpoint collector, CMDB export, or AI-agent workflow. The default path is local validation plus local scan/export. ## Guardrails - Validate inventory with the packaged schema before treating it as evidence. - Require `discovery_provenance` and `permissions_used` where the source claims cloud/operator-pushed discovery. - Require a trustworthy `discovery_provenance.source_type` such as `operator_pushed_inventory` or `skill_invoked_pull`; do not infer it from prose. - Do not invent provenance, permissions, cloud scopes, or credential posture. - Do not push to a control plane unless the operator provides the destination URL and auth method explicitly. - Do not print raw tokens, URL credentials, private keys, or env var values. ## Workflow Validate first: ```bash agent-bom mcp validate inventory.json ``` Scan locally: ```bash agent-bom agents --inventory inventory.json --format json --output agent-bom-findings.json ``` Choose output by consumer: - SARIF for CI/code-scanning gates - JSON for graph, API, and automation - HTML or Markdown for human review - CycloneDX/SPDX for SBOM consumers ## Evidence Contract Valid inventory preserves `discovery_provenance`, `permissions_used`, `cloud_origin`, redaction state, package identity, server identity, tools, and security intelligence. If the inventory is malformed or missing required trust fields, stop and ask the operator to regenerate it rather than scanning a best-effort summary.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)