{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"lucky8197-dsh-git-hygiene","slug":"lucky8197-dsh-git-hygiene","rank":993,"url":"https://github.com/lucky8197/dsh-git-hygiene","name":"lucky8197/dsh-git-hygiene","category":"git","description":{"zh":"Git 卫生巡检：只读扫描已合并/过期分支、大文件、未跟踪文件与未提交修改，输出体检报告与清理建议，不自动删除任何东西。","en":"Git hygiene checker: read-only scan of merged and stale branches, oversized tracked files, untracked files and uncommitted work, with cleanup suggestions (it never deletes anything)."},"stars":2,"starsCheckedAt":"2026-08-21","repository":{"owner":"lucky8197","repo":"dsh-git-hygiene","requestedRef":null,"subpath":""},"npm":null,"downloads":null,"installMode":"github-source","upstreamInstall":"dsh plugin --profile web add github:lucky8197/dsh-git-hygiene","tarball":null,"added":"2026-08-15","page":"https://awesome-dsh-plugin.com/p/lucky8197/dsh-git-hygiene/","screenshots":[],"discovery":{"provider":"awesome-dsh-plugin","channel":"plugins.json","indexUrl":"https://github.com/awesome-dsh-plugin/awesome-dsh-plugin","selection":"all curated entries"}},"report":{"sourceId":"lucky8197-dsh-git-hygiene","slug":"lucky8197-dsh-git-hygiene","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:30:37.832Z","scanStatus":"static-complete","verdict":"pass","score":99,"commit":"05a56bace438ba7630b7a1797190694b143770b6","commitDate":"2026-08-15T15:15:41Z","artifactDigest":"sha256:8f48bc9610515f7245fa81be75d2ff0d97785dff1b8b7dcdf00a8d430a8da7a8","downloadUrl":"https://github.com/lucky8197/dsh-git-hygiene/archive/05a56bace438ba7630b7a1797190694b143770b6.tar.gz","installMode":"github-source","installCommand":"dsh plugin --profile web add github:lucky8197/dsh-git-hygiene","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"dsh-git-hygiene","packageVersion":"0.1.0","bundle":{"patch":"./cordis.patch.yml"},"client":null,"lifecycleScripts":{},"peerDependencies":["@deepseek-ai/cordis"]},"identity":{"status":"not-published","installMode":"github-source","upstreamNpm":null,"manifestName":"dsh-git-hygiene","nameMatch":null,"npm":null,"repositoryMatch":"not-checked","provenance":"not-checked","tarballHost":null},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"git-hygiene","name":"dsh-git-hygiene","path":"cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":0,"clientPlatform":null,"parseErrors":[]},"capabilities":["environment","filesystem","host-bundle","subprocess"],"outboundHosts":[{"host":"api.github.com","count":3}],"findings":[{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"lib/types/git.js","pathClass":"source","line":7,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"3e8118c6d12bc4b3c2181604"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/build-win.mjs","pathClass":"source","line":6,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"5af91d2c7c65668673ff9720"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/build-win.mjs","pathClass":"source","line":6,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"a1dfc6cb284810ee18162fd3"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/setup-dsh-deps.mjs","pathClass":"source","line":25,"evidence":"execFileSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"d9a0aeea9020cddbb50f8e54"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/setup-dsh-deps.mjs","pathClass":"source","line":25,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"9624a14da6edc67e8605f4d3"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"src/git.ts","pathClass":"source","line":7,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"bdc87ed605fa8a9fcf276b39"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/helpers.ts","pathClass":"test-example-docs","line":4,"evidence":"execFileSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"f707400c6ce027083542c942"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/helpers.ts","pathClass":"test-example-docs","line":4,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"fe88f715a70cf949ceedf6d8"}],"counts":{"critical":0,"high":0,"medium":0,"low":6},"rawCounts":{"critical":0,"high":0,"medium":0,"low":8},"vulnerabilities":[],"coverage":{"source":"complete","manifest":"complete","bundleConfig":"complete","dependencies":"lockfile-present","vulnerabilities":"complete","identity":"complete","artifact":"not-compared","llmReview":"not-needed","dynamicRuntime":"not-run","humanReview":"not-run"},"inventory":{"filesScanned":29,"bytesScanned":81079,"truncated":false,"lockfiles":["package-lock.json"],"pathClasses":{"markdown":2,"cordis":1,"source":18,"data":2,"manifest":1,"script":2,"test-example-docs":3}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"]},"timeline":[{"scannedAt":"2026-08-22T08:30:37.832Z","commit":"05a56bace438ba7630b7a1797190694b143770b6","policyVersion":"HT-DSH-0.2.2","verdict":"pass","status":"static-complete"},{"scannedAt":"2026-08-21T11:33:50.676Z","commit":"05a56bace438ba7630b7a1797190694b143770b6","policyVersion":"HT-DSH-0.2.1","verdict":"pass","status":"static-complete"},{"scannedAt":"2026-08-21T11:02:39.007Z","commit":"05a56bace438ba7630b7a1797190694b143770b6","policyVersion":"HT-DSH-0.2.0","verdict":"pass","status":"static-complete"}],"events":[{"kind":"policy-change","from":"HT-DSH-0.2.1","to":"HT-DSH-0.2.2","commit":"05a56bace438ba7630b7a1797190694b143770b6","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:30:37.832Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"05a56bace438ba7630b7a1797190694b143770b6","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:33:50.676Z"},{"kind":"first-scan","from":null,"to":"pass","commit":"05a56bace438ba7630b7a1797190694b143770b6","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T11:02:39.007Z"}]}