repo-audit-tool 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/HANDOFF.md CHANGED
@@ -27,12 +27,17 @@
27
27
  |---|---|
28
28
  | 主仓(本仓) | `ninjasin-labs/repo-audit/`(独立 git 仓) |
29
29
  | 分支 | master |
30
- | commits | 6(`11eaf65` → `bca65ff` → `cbb7e40` → `de44f20` → `abea615` → `43e9245`) |
30
+ | commits | 10(`11eaf65` → `bca65ff` → `cbb7e40` → `de44f20` → `abea615` → `43e9245` → `eea507a` → `45fbfb9` → `b3a2e8f` → `ef967fd` → `4318ae1`) |
31
31
  | 远端 | **已建** — `https://github.com/NinjaSln-labs/repo-audit`(公开) |
32
+ | npm | **已发布** — `repo-audit-tool` v1.2.0(latest) |
32
33
  | 废弃仓 | `dsh-ecosystem/research/scaffold-templates/`(历史快照,勿改) |
33
34
 
34
35
  ### 最近完成(一行式)
35
36
 
37
+ - `4318ae1` docs(release): PUBLISHING.md 更新 — 反映 Trusted Publisher 流程
38
+ - `ef967fd` chore(release): 发布 repo-audit-tool@1.2.0 到 npm
39
+ - `b3a2e8f` chore(release): 发布准备 — 改名 + bin 可执行 + PUBLISHING.md
40
+ - `45fbfb9` fix(engine): C 优化补充 — fallback_field 逗号分隔字符串检测
36
41
  - `43e9245` fix(ci): 适配 repo-audit — 移除 dsh-demo 模板残留(CI 首次跑通)
37
42
  - `abea615` fix(engine): json_field monorepo 感知 + fallback_field 数组格式修复
38
43
  - `de44f20` fix(docs): 补充 AGENTS.md — 修复 CLAUDE.md 悬空引用 + 多文档断链
@@ -59,7 +64,8 @@
59
64
  1. ~~**发布到 GitHub 远端**~~ ✅ `NinjaSln-labs/repo-audit` 已公开(2026-09-06)
60
65
  2. ~~**json_field workspace 支持**~~ ✅ `abea615` 修复(含 fallback_field 数组格式预存 bug)
61
66
  3. ~~**验证 CI**~~ ✅ `43e9245` 修复 dsh-demo 模板残留,CI 首次跑通
62
- 4. **可选**:npm 发布(需 npm 端配置 OIDC trusted publisher
67
+ 4. ~~**npm 发布**~~ `repo-audit-tool@1.2.0` 已发布(latest
68
+ 5. **下一步**:npmjs.com 配置 Trusted Publisher → Repository: `NinjaSln-labs/repo-audit`, Workflow: `publish.yml`, Branch: `master`
63
69
 
64
70
  ### 外部依赖来源
65
71
 
@@ -102,6 +108,7 @@ done
102
108
  | 人类使用手册 | `docs/repo-audit/HUMAN-GUIDE.md` |
103
109
  | Agent 操作协议 | `docs/repo-audit/AGENT-GUIDE.md` |
104
110
  | AI 协作纪律 | `AGENTS.md` |
111
+ | 发布流程 | `PUBLISHING.md` |
105
112
  | 工具自审 | `docs/repo-audit/SELF-AUDIT.md` |
106
113
  | 全仓影子回归 | `docs/repo-audit/SHADOW-AUDIT-20260906-v3.md` |
107
114
  | 反馈闭环(fuyao) | `docs/repo-audit/FEEDBACK-fuyao-nomad.md` |
package/PUBLISHING.md CHANGED
@@ -1,10 +1,10 @@
1
- # 发布记录:@ninjasln-labs/repo-audit
1
+ # 发布记录:repo-audit-tool
2
2
 
3
3
  ## 发布状态(2026-09-06 更新)
4
4
 
5
5
  | 项 | 状态 |
6
6
  |---|---|
7
- | npm | `@ninjasln-labs/repo-audit` v1.2.0(未发布,待首次发布) |
7
+ | npm | `repo-audit-tool` v1.2.0(已发布,latest) |
8
8
  | GitHub | `NinjaSln-labs/repo-audit` master;发版 tag `v*` |
9
9
  | 本地验证 | 自审计 100/A,验证链 4/4,测试 3/3,CI 全绿 |
10
10
 
@@ -12,6 +12,8 @@
12
12
 
13
13
  - **1.2.0** — 开源就绪:补充 AGENTS.md、CI/publish workflow 适配、json_field monorepo 感知、
14
14
  fallback_field 数组格式修复、英文 README、参数类型校验、占位符残留扫描(2026-09-06)
15
+ - 首次发布:`npm publish --access public`(手动 bootstrap)
16
+ - 后续发布:Trusted Publisher(OIDC)由 CI 自动发布
15
17
 
16
18
  ## 发布通道(npm OIDC Trusted Publishing)
17
19
 
@@ -23,7 +25,7 @@
23
25
  ```sh
24
26
  npm version patch --no-git-tag-version
25
27
  V="$(node -p "require('./package.json').version")"
26
- git commit -am "chore: release @ninjasln-labs/repo-audit v$V — <一句话主旨>"
28
+ git commit -am "chore: release repo-audit-tool v$V — <一句话主旨>"
27
29
  git tag v$V
28
30
  git push && git push --tags
29
31
  # CI 接手:审计 → 验证链 → 测试 → 版本守卫 → npm publish
@@ -34,29 +36,25 @@ git push && git push --tags
34
36
  ```sh
35
37
  npm version prerelease --preid=next --no-git-tag-version
36
38
  V="$(node -p "require('./package.json').version")"
37
- git commit -am "chore: canary @ninjasln-labs/repo-audit v$V" && git tag v$V
39
+ git commit -am "chore: canary repo-audit-tool v$V" && git tag v$V
38
40
  git push && git push --tags
39
- # 实测通过 → 晋级 latest:npm dist-tag add @ninjasln-labs/repo-audit@x.y.z latest
41
+ # 实测通过 → 晋级 latest:npm dist-tag add repo-audit-tool@x.y.z latest
40
42
  ```
41
43
 
42
- ## 首次发布前置(一次性)
44
+ ## 首次发布(已完成)
43
45
 
44
- 1. **npm 包创建**:npmjs.com Create Package → `@ninjasln-labs/repo-audit`(需先创建 `ninjasln-labs` org
45
- 2. **Trusted Publisher 配置**:包设置 → Trusted Publisher → 填 GitHub repo `NinjaSln-labs/repo-audit`
46
- + workflow `publish.yml` + branch `master`(逐字段一致)
47
- 3. **首次 bootstrap**:首版可手动发布:
48
- ```sh
49
- npm login # 交互登录 + 2FA
50
- npm publish --access public
51
- ```
52
- 随后立即切 Trusted Publishing 由 CI 发布
53
- 4. **验证发布成功**:`npm view @ninjasln-labs/repo-audit dist-tags` + npm 页 provenance 徽章
46
+ 1. **npm 包创建**:`npm publish --access public`(v1.2.0,2026-09-06
47
+ 2. **Trusted Publisher 配置**(下一步):npmjs.com包设置 → Trusted Publisher →
48
+ - Repository: `NinjaSln-labs/repo-audit`
49
+ - Workflow: `publish.yml`
50
+ - Branch: `master`
51
+ 3. **验证**:`npm view repo-audit-tool dist-tags` → `{ latest: '1.2.0' }` ✓
54
52
 
55
53
  ## 发布后验证
56
54
 
57
- - 确认 latest 已更新(`npm view @ninjasln-labs/repo-audit dist-tags`)
55
+ - 确认 latest 已更新(`npm view repo-audit-tool dist-tags`)
58
56
  - provenance 徽章(npm 包页面)
59
- - 实机安装路径实测:`npm install -g @ninjasln-labs/repo-audit` → `repo-audit --repo .`
57
+ - 实机安装路径实测:`npm install -g repo-audit-tool` → `repo-audit --repo .`
60
58
 
61
59
  ## 维护要点
62
60
 
package/README.en.md CHANGED
@@ -55,10 +55,11 @@ repo-audit/
55
55
 
56
56
  ## 📚 Documentation
57
57
 
58
- - [Human Guide](docs/repo-audit/HUMAN-GUIDE.md) — Full usage documentation
59
- - [Agent Guide](docs/repo-audit/AGENT-GUIDE.md) — Machine-readable operation protocol
60
- - [Audit Methodology](AUDIT.md)
61
- - [Best Practices](BEST-PRACTICES.md)
58
+ - [Human Guide](https://github.com/NinjaSln-labs/repo-audit/blob/master/docs/repo-audit/HUMAN-GUIDE.md) — Full usage documentation
59
+ - [Agent Guide](https://github.com/NinjaSln-labs/repo-audit/blob/master/docs/repo-audit/AGENT-GUIDE.md) — Machine-readable operation protocol
60
+ - [Audit Methodology](https://github.com/NinjaSln-labs/repo-audit/blob/master/AUDIT.md)
61
+ - [Best Practices](https://github.com/NinjaSln-labs/repo-audit/blob/master/BEST-PRACTICES.md)
62
+ - [GitHub Pages](https://ninjasln-labs.github.io/repo-audit/) — Online documentation
62
63
 
63
64
  ## 🛠️ Development
64
65
 
package/README.md CHANGED
@@ -55,10 +55,11 @@ repo-audit/
55
55
 
56
56
  ## 📚 文档
57
57
 
58
- - [人类手册](docs/repo-audit/HUMAN-GUIDE.md) — 完整使用说明
59
- - [Agent 手册](docs/repo-audit/AGENT-GUIDE.md) — 机器可读的操作协议
60
- - [审计方法论](AUDIT.md)
61
- - [最佳实践标准](BEST-PRACTICES.md)
58
+ - [人类手册](https://github.com/NinjaSln-labs/repo-audit/blob/master/docs/repo-audit/HUMAN-GUIDE.md) — 完整使用说明
59
+ - [Agent 手册](https://github.com/NinjaSln-labs/repo-audit/blob/master/docs/repo-audit/AGENT-GUIDE.md) — 机器可读的操作协议
60
+ - [审计方法论](https://github.com/NinjaSln-labs/repo-audit/blob/master/AUDIT.md)
61
+ - [最佳实践标准](https://github.com/NinjaSln-labs/repo-audit/blob/master/BEST-PRACTICES.md)
62
+ - [GitHub Pages](https://ninjasln-labs.github.io/repo-audit/) — 在线文档
62
63
 
63
64
  ## 🛠️ 开发
64
65
 
@@ -0,0 +1,161 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>repo-audit 文档</title>
7
+ <style>
8
+ :root { --bg: #0d1117; --card: #161b22; --border: #30363d; --text: #e6edf3; --muted: #8b949e; --accent: #58a6ff; --accent-hover: #79c0ff; --green: #3fb950; }
9
+ * { margin: 0; padding: 0; box-sizing: border-box; }
10
+ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background: var(--bg); color: var(--text); line-height: 1.6; }
11
+ .container { max-width: 960px; margin: 0 auto; padding: 2rem 1rem; }
12
+ header { text-align: center; padding: 3rem 0 2rem; }
13
+ h1 { font-size: 2.5rem; margin-bottom: 0.5rem; }
14
+ h1 a { color: var(--text); text-decoration: none; }
15
+ .subtitle { color: var(--muted); font-size: 1.1rem; margin-bottom: 1.5rem; }
16
+ .badges { display: flex; gap: 0.5rem; justify-content: center; flex-wrap: wrap; }
17
+ .badge { display: inline-flex; align-items: center; gap: 0.3rem; padding: 0.25rem 0.6rem; border-radius: 999px; font-size: 0.8rem; font-weight: 600; }
18
+ .badge-npm { background: #f70a45; color: white; }
19
+ .badge-ci { background: var(--accent); color: white; }
20
+ .badge-node { background: #339933; color: white; }
21
+ .badge-license { background: #555; color: white; }
22
+ .badge-zero { background: var(--green); color: white; }
23
+ .badge-count { background: var(--muted); color: white; }
24
+
25
+ .cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem; margin: 2rem 0; }
26
+ .card { background: var(--card); border: 1px solid var(--border); border-radius: 8px; padding: 1.5rem; transition: border-color 0.2s; }
27
+ .card:hover { border-color: var(--accent); }
28
+ .card h2 { font-size: 1.2rem; margin-bottom: 0.5rem; color: var(--accent); }
29
+ .card p { color: var(--muted); font-size: 0.9rem; margin-bottom: 1rem; }
30
+ .card a { display: inline-block; color: var(--accent); text-decoration: none; font-weight: 600; font-size: 0.9rem; }
31
+ .card a:hover { color: var(--accent-hover); text-decoration: underline; }
32
+
33
+ .quickstart { background: var(--card); border: 1px solid var(--border); border-radius: 8px; padding: 1.5rem; margin: 2rem 0; }
34
+ .quickstart h2 { font-size: 1.3rem; margin-bottom: 1rem; color: var(--accent); }
35
+ pre { background: #0d1117; border: 1px solid var(--border); border-radius: 6px; padding: 1rem; overflow-x: auto; font-size: 0.9rem; }
36
+ code { font-family: 'SF Mono', Monaco, Inconsolata, monospace; }
37
+ code:not(pre code) { background: #21262d; padding: 0.2rem 0.4rem; border-radius: 4px; font-size: 0.85em; }
38
+
39
+ .stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; margin: 2rem 0; }
40
+ .stat { background: var(--card); border: 1px solid var(--border); border-radius: 8px; padding: 1.5rem; text-align: center; }
41
+ .stat-value { font-size: 2rem; font-weight: 700; color: var(--accent); }
42
+ .stat-label { font-size: 0.85rem; color: var(--muted); margin-top: 0.3rem; }
43
+
44
+ .feedback { background: #1a1a2e; border: 1px solid #4c4c8a; border-radius: 8px; padding: 1.5rem; margin: 2rem 0; }
45
+ .feedback h2 { color: #a78bfa; }
46
+ .feedback p { color: var(--muted); }
47
+
48
+ footer { text-align: center; padding: 2rem 0; color: var(--muted); font-size: 0.85rem; border-top: 1px solid var(--border); margin-top: 2rem; }
49
+ footer a { color: var(--accent); text-decoration: none; }
50
+ footer a:hover { text-decoration: underline; }
51
+
52
+ .nav-bar { display: flex; justify-content: space-between; align-items: center; padding: 0.75rem 0; margin-bottom: 1rem; border-bottom: 1px solid var(--border); }
53
+ .nav-links { display: flex; gap: 1rem; }
54
+ .nav-links a { color: var(--muted); text-decoration: none; font-size: 0.9rem; }
55
+ .nav-links a:hover { color: var(--accent); }
56
+ </style>
57
+ </head>
58
+ <body>
59
+ <div class="container">
60
+
61
+ <div class="nav-bar">
62
+ <a href="https://github.com/NinjaSln-labs/repo-audit" style="font-weight:700;color:var(--text);text-decoration:none;">repo-audit</a>
63
+ <div class="nav-links">
64
+ <a href="repo-audit/HUMAN-GUIDE.md">使用手册</a>
65
+ <a href="repo-audit/AGENT-GUIDE.md">Agent 手册</a>
66
+ <a href="../AUDIT.md">审计方法论</a>
67
+ <a href="../BEST-PRACTICES.md">最佳实践</a>
68
+ <a href="../REPO-CLASSIFICATION.md">分类检测</a>
69
+ <a href="../PUBLISHING.md">发布流程</a>
70
+ </div>
71
+ </div>
72
+
73
+ <header>
74
+ <h1><a href="https://github.com/NinjaSln-labs/repo-audit">repo-audit</a></h1>
75
+ <p class="subtitle">仓库标准化审计工具 + 工程脚手架生成器(零依赖)</p>
76
+ <div class="badges">
77
+ <span class="badge badge-npm">npm repo-audit-tool</span>
78
+ <span class="badge badge-ci">CI 全绿</span>
79
+ <span class="badge badge-node">Node ≥18</span>
80
+ <span class="badge badge-zero">零依赖</span>
81
+ <span class="badge badge-license">MIT</span>
82
+ <span class="badge badge-count">19 条规则 · 18 种分类</span>
83
+ </div>
84
+ </header>
85
+
86
+ <div class="stats">
87
+ <div class="stat"><div class="stat-value">100/A</div><div class="stat-label">自审计评分</div></div>
88
+ <div class="stat"><div class="stat-value">18</div><div class="stat-label">仓库分类</div></div>
89
+ <div class="stat"><div class="stat-value">15+</div><div class="stat-label">LLM 提供商</div></div>
90
+ <div class="stat"><div class="stat-value">0</div><div class="stat-label">npm 依赖</div></div>
91
+ </div>
92
+
93
+ <div class="cards">
94
+ <div class="card">
95
+ <h2>📖 人类使用手册</h2>
96
+ <p>安装、快速开始、参数说明、环境变量、审计维度、故障排查、与 scaffold 配合</p>
97
+ <a href="repo-audit/HUMAN-GUIDE.md">→ HUMAN-GUIDE.md</a>
98
+ </div>
99
+ <div class="card">
100
+ <h2>🤖 Agent 操作手册</h2>
101
+ <p>调用协议、输出解析、标准操作流程、错误处理、决策树、授权路径</p>
102
+ <a href="repo-audit/AGENT-GUIDE.md">→ AGENT-GUIDE.md</a>
103
+ </div>
104
+ <div class="card">
105
+ <h2>🔍 审计方法论</h2>
106
+ <p>评分体系、规则设计、维度划分、分类检测逻辑</p>
107
+ <a href="../AUDIT.md">→ AUDIT.md</a>
108
+ </div>
109
+ <div class="card">
110
+ <h2>📏 最佳实践</h2>
111
+ <p>工程仓库应满足的标准化检查项,按维度分类</p>
112
+ <a href="../BEST-PRACTICES.md">→ BEST-PRACTICES.md</a>
113
+ </div>
114
+ <div class="card">
115
+ <h2>🏷️ 分类检测</h2>
116
+ <p>18 种仓库类型识别逻辑,置信度评分,自动检测规则</p>
117
+ <a href="../REPO-CLASSIFICATION.md">→ REPO-CLASSIFICATION.md</a>
118
+ </div>
119
+ <div class="card">
120
+ <h2>🚀 脚手架生成</h2>
121
+ <p>从零生成符合规范的工程脚手架,支持 6 种分类</p>
122
+ <a href="../templates/README.md">→ templates/README.md</a>
123
+ </div>
124
+ </div>
125
+
126
+ <div class="quickstart">
127
+ <h2>⚡ 快速开始</h2>
128
+ <pre><code># 全局安装
129
+ npm install -g repo-audit-tool
130
+
131
+ # 审计仓库
132
+ repo-audit --repo /path/to/repo
133
+
134
+ # JSON 输出
135
+ repo-audit --repo /path/to/repo --format json
136
+
137
+ # 生成脚手架
138
+ node templates/scaffold.mjs --type dsh-plugin --name my-plugin</code></pre>
139
+ </div>
140
+
141
+ <div class="feedback">
142
+ <h2>💬 反馈通道</h2>
143
+ <p>工具内置 <code>--feedback</code> 命令,一键创建 GitHub Issue(自动预填上下文)。也可通过以下方式反馈:</p>
144
+ <pre><code># 工具内反馈(自动预填审计结果)
145
+ repo-audit --feedback "问题描述"
146
+
147
+ # GitHub Issues
148
+ https://github.com/NinjaSln-labs/repo-audit/issues
149
+
150
+ # Bug 报告(预填模板)
151
+ https://github.com/NinjaSln-labs/repo-audit/issues/new?template=bug_report.yml</code></pre>
152
+ </div>
153
+
154
+ <footer>
155
+ <p>Made with ❤️ by <a href="https://github.com/NinjaSln-labs">NinjaSln-labs</a> · MIT License · 2026</p>
156
+ <p><a href="https://github.com/NinjaSln-labs/repo-audit">GitHub</a> · <a href="https://www.npmjs.com/package/repo-audit-tool">npm</a></p>
157
+ </footer>
158
+
159
+ </div>
160
+ </body>
161
+ </html>
@@ -471,4 +471,57 @@ node repo-audit.mjs --repo <path> --format json \
471
471
 
472
472
  ---
473
473
 
474
- *Agent 操作手册 v1.2 · 2026-09-06(新增 monorepo 感知 P6 + .auditrc.yaml 豁免)
474
+ ## 十、反馈通道
475
+
476
+ ### 10.1 Agent 检测协议
477
+
478
+ Agent 可通过 GitHub Issues API 检测用户反馈:
479
+
480
+ ```bash
481
+ # 列出未处理的反馈(label: audit-feedback + state: open)
482
+ gh issue list --repo NinjaSln-labs/repo-audit --label audit-feedback --state open --json number,title,createdAt,body
483
+
484
+ # 获取单条反馈详情
485
+ gh issue view <NUMBER> --repo NinjaSln-labs/repo-audit --json title,body,labels,createdAt
486
+
487
+ # 反馈已处理,关闭 Issue
488
+ gh issue close <NUMBER> --repo NinjaSln-labs/repo-audit --comment "已处理:[处理说明]"
489
+ ```
490
+
491
+ **标签语义**:
492
+ - `audit-feedback` — 所有工具反馈(Agent 过滤条件)
493
+ - `feedback` — 通用反馈(与 audit-feedback 同时存在)
494
+ - `bug` — Bug 报告
495
+ - `enhancement` — 功能建议
496
+ - `documentation` — 文档问题
497
+
498
+ ### 10.2 Agent 创建反馈
499
+
500
+ Agent 可通过 CLI 或 API 创建反馈 Issue:
501
+
502
+ ```bash
503
+ # CLI 方式(自动预填环境信息)
504
+ node repo-audit.mjs --feedback "在 xxx 场景下出现 yyy 问题"
505
+
506
+ # API 方式(更灵活)
507
+ gh issue create --repo NinjaSln-labs/repo-audit \
508
+ --title "Feedback: <简要标题>" \
509
+ --body "<Markdown 正文>" \
510
+ --label "feedback,audit-feedback"
511
+ ```
512
+
513
+ ### 10.3 反馈处理流程
514
+
515
+ ```
516
+ 用户反馈 → audit-feedback label → Agent 检测 → 分类处理 → 关闭 Issue
517
+ ↓ ↓
518
+ GitHub Issues 修复 / 文档 / 不采纳
519
+ ```
520
+
521
+ **处理优先级**:
522
+ 1. `critical` — 工具崩溃/数据损坏(24h 内响应)
523
+ 2. `major` — 功能严重受损(72h 内响应)
524
+ 3. `minor` — 功能部分受损(1 周内响应)
525
+ 4. `info` — 建议改进(排期处理)
526
+
527
+ *Agent 操作手册 v1.3 · 2026-09-06(新增反馈通道 §10)
@@ -746,4 +746,34 @@ grep -rE '<commit-SHA>|dsh-demo|demo-v' .github/workflows/ && echo "✗ 有残
746
746
  `npm ci`(无 lockfile)、`scripts/verify.mjs`(路径错误)、`main` 分支(实际 master)、
747
747
  `<commit-SHA>`(占位符未替换)四项同时失败,workflow 不触发。
748
748
 
749
+ ### 12.8 反馈通道
750
+
751
+ **工具内反馈**(推荐,自动预填环境信息):
752
+ ```bash
753
+ repo-audit --feedback "在 monorepo 项目中 DOC-003b 规则误报"
754
+ ```
755
+ 效果:自动创建 GitHub Issue,包含反馈内容 + 工具版本 + Node.js 版本 + 平台信息。
756
+ Agent 可通过 `gh issue list --repo NinjaSln-labs/repo-audit --label audit-feedback` 检测反馈。
757
+
758
+ **GitHub Issues**:
759
+ - [Bug 报告](https://github.com/NinjaSln-labs/repo-audit/issues/new?template=bug_report.yml) — 预填复现步骤/实际输出/期望输出
760
+ - [功能反馈](https://github.com/NinjaSln-labs/repo-audit/issues/new?template=feedback.yml) — 建议/文档问题/性能问题
761
+ - [全部 Issues](https://github.com/NinjaSln-labs/repo-audit/issues)
762
+
763
+ **其他渠道**:
764
+ - Discord/Slack:见 GitHub Discussions
765
+ - 邮件:info@ninjasln-labs.com(仅安全问题)
766
+
767
+ **Agent 反馈检测协议**:
768
+ ```bash
769
+ # 检测新反馈
770
+ gh issue list --repo NinjaSln-labs/repo-audit --label audit-feedback --state open --json number,title,createdAt
771
+
772
+ # 获取反馈详情
773
+ gh issue view <NUMBER> --repo NinjaSln-labs/repo-audit
774
+
775
+ # 反馈已处理
776
+ gh issue close <NUMBER> --repo NinjaSln-labs/repo-audit --comment "已处理,感谢反馈"
777
+ ```
778
+
749
779
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "repo-audit-tool",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "仓库标准化审计工具 + 工程脚手架生成器(零依赖)",
5
5
  "type": "module",
6
6
  "main": "repo-audit.mjs",
package/repo-audit.mjs CHANGED
@@ -37,11 +37,11 @@ const DEFAULT_OUTPUT_DIR = 'audit-report'
37
37
  const KNOWN_FLAGS = new Set([
38
38
  '--repo', '--type', '--format', '--output',
39
39
  '--llm-provider', '--llm-model', '--llm-base-url', '--strict',
40
- '--rules', '--dim', '--help', '-h'
40
+ '--rules', '--dim', '--help', '-h', '--feedback'
41
41
  ])
42
42
  const VALUE_FLAGS = new Set([
43
43
  '--repo', '--type', '--format', '--output',
44
- '--llm-provider', '--llm-model', '--llm-base-url', '--rules', '--dim'
44
+ '--llm-provider', '--llm-model', '--llm-base-url', '--rules', '--dim', '--feedback'
45
45
  ])
46
46
 
47
47
  function parseArgs(argv) {
@@ -106,6 +106,7 @@ function usage() {
106
106
  --strict 严格模式:Critical/Major 发现即 exit 1
107
107
  --rules <file> 自定义规则文件(可多次)
108
108
  --dim <domain> 只审计指定维度(可多次,如 --dim security --dim docs)
109
+ --feedback <msg> 提交反馈(创建 GitHub Issue,自动预填环境信息)
109
110
  --help, -h 显示此帮助
110
111
 
111
112
  环境变量:
@@ -1406,6 +1407,43 @@ async function main() {
1406
1407
  process.exit(0)
1407
1408
  }
1408
1409
 
1410
+ // Feedback 通道:创建 GitHub Issue(Agent 可检测)
1411
+ if (args.flags['--feedback']) {
1412
+ const message = args.flags['--feedback'] || '(未提供反馈内容)'
1413
+ const label = 'feedback'
1414
+ const body = `## 反馈内容
1415
+
1416
+ ${message}
1417
+
1418
+ ---
1419
+
1420
+ ## 环境信息
1421
+
1422
+ - **工具版本**: ${readFileSync('package.json', 'utf-8').match(/"version":\s*"([^"]+)"/)?.[1] || 'unknown'}
1423
+ - **Node.js**: ${process.version}
1424
+ - **平台**: ${process.platform} ${process.arch}
1425
+ - **时间**: ${new Date().toISOString()}
1426
+
1427
+ ## 标签
1428
+
1429
+ - ${label}
1430
+ - audit-feedback
1431
+ `
1432
+ // 尝试通过 gh CLI 创建 Issue
1433
+ const { execSync } = await import('node:child_process')
1434
+ try {
1435
+ const result = execSync(
1436
+ `gh issue create --repo NinjaSln-labs/repo-audit --title "Feedback: ${message.slice(0, 60)}" --body "${body.replace(/"/g, '\\"').replace(/\n/g, '\\n')}" --label "${label},audit-feedback"`,
1437
+ { encoding: 'utf-8', timeout: 30000 }
1438
+ )
1439
+ console.error(`✓ 反馈已提交: ${result.trim()}`)
1440
+ } catch (e) {
1441
+ console.error(`✗ gh CLI 不可用,请手动提交反馈:`)
1442
+ console.error(` https://github.com/NinjaSln-labs/repo-audit/issues/new?labels=${label},audit-feedback&body=${encodeURIComponent(body)}`)
1443
+ }
1444
+ process.exit(0)
1445
+ }
1446
+
1409
1447
  const repoPath = resolve(args.flags['--repo'] || '.')
1410
1448
  const forceType = args.flags['--type']
1411
1449
  const format = args.flags['--format'] || 'both'