npx skills add https://github.com/ghostsecurity/skills --skill ghost-report你将所有扫描技能(scan-deps、scan-secrets、scan-code)的发现结果汇总成一份按优先级排序的单一报告。所有工作自行完成——不要生成子代理或委派任务。
$ARGUMENTS
运行以下 Bash 命令计算路径:
repo_name=$(basename "$(pwd)") && remote_url=$(git remote get-url origin 2>/dev/null || pwd) && short_hash=$(printf '%s' "$remote_url" | git hash-object --stdin | cut -c1-8) && repo_id="${repo_name}-${short_hash}" && short_sha=$(git rev-parse --short HEAD 2>/dev/null || date +%Y%m%d) && ghost_repo_dir="$HOME/.ghost/repos/${repo_id}" && scans_dir="${ghost_repo_dir}/scans/${short_sha}" && cache_dir="${ghost_repo_dir}/cache" && skill_dir=$(find . -path '*/skills/report/SKILL.md' 2>/dev/null | head -1 | xargs dirname) && echo "scans_dir=$scans_dir cache_dir=$cache_dir skill_dir=$skill_dir"
存储 scans_dir(提交级别的扫描目录)、cache_dir 和 skill_dir。
如果 已存在,则显示:
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
<scans_dir>/report.mdCombined security report is at: <scans_dir>/report.md
并停止。不要重新生成。
如果存在,读取 <cache_dir>/repo.md。提取:
如果不存在,继续执行——这不是错误。
列出 <scans_dir> 的内容,查看存在哪些扫描类型目录。识别的类型:
deps/ — SCA / 依赖项漏洞扫描secrets/ — 密钥和凭证扫描code/ — 代码安全扫描(SAST)如果这些目录都不存在,报告错误:
No scan results found in <scans_dir>. Run one or more scan skills first:
/ghost-scan-deps
/ghost-scan-secrets
/ghost-scan-code
并停止。
对于存在的每种扫描类型,使用通配符 <scans_dir>/<type>/findings/*.md 并完整地读取每个发现文件。保留每个发现的完整 Markdown 正文——报告将直接内联此内容,以便读者无需打开单独的发现文件。
从每个发现中,还提取以下元数据字段用于过滤和排序:
## Metadata → IDdeps、secrets 或 code)## Metadata → Severity(high、medium、low)## Metadata → Status(例如,confirmed-exploitable、unverified、verified、rejected、clean)过滤: 仅保留高置信度的发现:
deps 发现:状态为 confirmed-exploitablesecrets 发现:状态不是 clean 且不是 rejectedcode 发现:状态为 verified 或 unverified(不是 rejected)排除任何状态为 clean、rejected 或 false-positive 的发现。
排序剩余的发现:
对于 deps 和 secrets 扫描类型,如果存在,读取 <scans_dir>/<type>/report.md。提取:
注意:code 不生成 report.md。对于代码扫描覆盖率,直接统计 <scans_dir>/code/findings/ 中的发现文件数量。"Candidates Scanned" 计数是发现文件的总数(所有状态)。"Confirmed Findings" 是状态为 verified、confirmed 或 unverified 的计数。"False Positives Filtered" 是状态为 rejected 的计数。不要统计来自提名/分析漏斗的干净文件分析——这些从未成为发现。
如果 deps 或 secrets 的扫描报告不存在,则注明不可用。
<skill_dir>/report-template.md<scans_dir>/report.mdCombined security report is at: <scans_dir>/report.md
每周安装量
575
仓库
GitHub 星标数
368
首次出现
2026年2月20日
安全审计
安装于
claude-code491
opencode120
gemini-cli120
codex120
github-copilot120
amp120
You aggregate findings from all scan skills (scan-deps, scan-secrets, scan-code) into a single prioritized report. Do all work yourself — do not spawn subagents or delegate.
$ARGUMENTS
Run this Bash command to compute paths:
repo_name=$(basename "$(pwd)") && remote_url=$(git remote get-url origin 2>/dev/null || pwd) && short_hash=$(printf '%s' "$remote_url" | git hash-object --stdin | cut -c1-8) && repo_id="${repo_name}-${short_hash}" && short_sha=$(git rev-parse --short HEAD 2>/dev/null || date +%Y%m%d) && ghost_repo_dir="$HOME/.ghost/repos/${repo_id}" && scans_dir="${ghost_repo_dir}/scans/${short_sha}" && cache_dir="${ghost_repo_dir}/cache" && skill_dir=$(find . -path '*/skills/report/SKILL.md' 2>/dev/null | head -1 | xargs dirname) && echo "scans_dir=$scans_dir cache_dir=$cache_dir skill_dir=$skill_dir"
Store scans_dir (commit-level scan directory), cache_dir, and skill_dir.
If <scans_dir>/report.md already exists, show:
Combined security report is at: <scans_dir>/report.md
And stop. Do not regenerate it.
Read <cache_dir>/repo.md if it exists. Extract:
If it does not exist, continue without it — this is not an error.
List the contents of <scans_dir> to see which scan-type directories exist. Recognized types:
deps/ — SCA / dependency vulnerability scansecrets/ — secrets and credentials scancode/ — code security scan (SAST)If none of these directories exist, report an error:
No scan results found in <scans_dir>. Run one or more scan skills first:
/ghost-scan-deps
/ghost-scan-secrets
/ghost-scan-code
And stop.
For each scan type that exists, glob <scans_dir>/<type>/findings/*.md and read each finding file in full. Retain the complete markdown body of every finding — the report will inline this content directly so readers never need to open individual finding files.
From each finding, also extract these metadata fields for filtering and sorting:
## Metadata → IDdeps, secrets, or code)## Metadata → Severity (high, medium, low)## Metadata → Status (e.g., confirmed-exploitable, unverified, verified, rejected, clean)Filter: Keep only high-confidence findings:
deps findings: status is confirmed-exploitablesecrets findings: status is NOT clean and NOT rejectedcode findings: status is verified or unverified (NOT rejected)Exclude any finding with status clean, rejected, or false-positive.
Sort the remaining findings:
For deps and secrets scan types, read <scans_dir>/<type>/report.md if present. Extract:
Note: code does not produce a report.md. For code scan coverage, count the finding files in <scans_dir>/code/findings/ directly. The "Candidates Scanned" count is the total number of finding files (all statuses). "Confirmed Findings" is the count with status verified, confirmed, or unverified. "False Positives Filtered" is the count with status rejected. Do NOT count clean file analyses from the nomination/analysis funnel — those never became findings.
If a per-scan report does not exist for deps or secrets, note it as unavailable.
<skill_dir>/report-template.md<scans_dir>/report.mdCombined security report is at: <scans_dir>/report.md
Weekly Installs
575
Repository
GitHub Stars
368
First Seen
Feb 20, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykFail
Installed on
claude-code491
opencode120
gemini-cli120
codex120
github-copilot120
amp120