|
| 1 | +# 可移植性与社区生态提升方法论 |
| 2 | + |
| 3 | +> 本文档记录了 ai-coding-kit 从「内部工具」到「社区可复用项目」的 4 阶段实践(P0–P3)。 |
| 4 | +> 其他项目可直接复用「优先级与 ROI 矩阵」「问题诊断清单」「里程碑模板」。 |
| 5 | +
|
| 6 | +--- |
| 7 | + |
| 8 | +## 问题诊断清单 |
| 9 | + |
| 10 | +在开始改造前,用以下清单快速扫描项目薄弱点: |
| 11 | + |
| 12 | +| 维度 | 检查项 | 诊断手段 | |
| 13 | +|------|--------|----------| |
| 14 | +| **平台覆盖** | 支持几个 AI 编码平台?目标用户用哪些? | 统计 `SYNC_TARGETS` 或平台配置数 | |
| 15 | +| **语言锁定** | 内容是否强制单一语言?是否阻断了非母语用户? | grep 输出语言相关规则 | |
| 16 | +| **安装体验** | 用户如何安装?是否有包管理器支持? | 检查是否存在 `brew`/`npm`/`pip` 等入口 | |
| 17 | +| **版本管理** | 是否有 Git Tag / Release Notes?用户能否 pin 版本? | `git tag --list` | |
| 18 | +| **CI/CD** | 是否有自动化质量门禁?每次变更是否自动校验? | 检查 `.github/workflows/` | |
| 19 | +| **贡献体系** | 外部贡献者是否知道如何参与? | 检查 `CONTRIBUTING.md` / `CODEOWNERS` | |
| 20 | +| **文档可发现性** | 用户能否通过搜索引擎找到文档? | Google 搜索项目名 | |
| 21 | +| **硬编码路径** | 是否存在个人机器路径?其他人 clone 后能否直接运行? | `grep -r '/Users/' --include="*.sh"` | |
| 22 | + |
| 23 | +--- |
| 24 | + |
| 25 | +## 优先级与 ROI 矩阵 |
| 26 | + |
| 27 | +| 优先级 | 任务 | 工作量 | 影响面 | ROI | 适用于 | |
| 28 | +|--------|------|--------|--------|-----|--------| |
| 29 | +| **P0** | CI 自动验证流水线(规则一致性 / 场景校验 / 新鲜度审计 / 硬编码扫查) | 2h | 每次 PR 自动拦截回归 | 🔴 极高 | 所有含自动化脚本的项目 | |
| 30 | +| **P0** | 清理硬编码路径 + CI grep 守卫 | 0.5h | 消除"clone 后报错" | 🔴 极高 | 存在 shell 脚本或个人路径配置的项目 | |
| 31 | +| **P1** | CONTRIBUTING.md + CODEOWNERS | 1h | 打通社区参与通道 | 🟠 高 | 所有公开仓库 | |
| 32 | +| **P1** | i18n 分层:元指令层英文化 + 治理层翻译 | 4h | 解锁国际用户 | 🟠 高 | 内容驱动型项目(Agent Skill / 文档 / 规则体系) | |
| 33 | +| **P2** | Git Tag + Release Notes + CHANGELOG | 1h | 外部可 pin 版本 | 🟡 中 | 所有发布型项目 | |
| 34 | +| **P2** | Homebrew Formula / npm package / 包管理器分发 | 2h | 扩大安装渠道 | 🟡 中 | CLI 工具 / 可安装技能包 | |
| 35 | +| **P3** | VitePress / Docusaurus 文档站 + GitHub Pages 部署 | 3h | 搜索引擎可发现,降低学习曲线 | 🟢 锦上添花 | 含技术文档的公开仓库 | |
| 36 | +| **P3** | 多语言文档站(中/英) | 2h | 覆盖非英语开发群体 | 🟢 锦上添花 | 文档量大的项目 | |
| 37 | + |
| 38 | +### ROI 计算逻辑 |
| 39 | + |
| 40 | +- **P0(立即止血)**:不改则持续漏血。CI 缺失 → 每个合并都可能引入回归;硬编码路径 → 每个新贡献者 clone 后第一步就失败。 |
| 41 | +- **P1(快速见效)**:改动小但打开流量入口。国际化让潜在用户数放大 10–100 倍;CONTRIBUTING 让外部开发者从"看了不会做"变为"照着文档即可提交 PR"。 |
| 42 | +- **P2(基础设施)**:不是紧急项但一旦上线就会持续产生价值(每个新用户都会走包管理器安装)。 |
| 43 | +- **P3(放大收益)**:锦上添花,适合 P0+P1 完成后再做。文档站让内容可被 Google 索引,带来有机用户增长。 |
| 44 | + |
| 45 | +--- |
| 46 | + |
| 47 | +## 实施指南 |
| 48 | + |
| 49 | +### P0 — CI 自动验证 |
| 50 | + |
| 51 | +**核心原则**:每次 PR 都应触发自动化校验,无需人工介入。 |
| 52 | + |
| 53 | +```yaml |
| 54 | +# .github/workflows/validate.yml 关键 Job |
| 55 | +validate: |
| 56 | + - 规则 ID 双向一致性(定义文件 ↔ 入口文件) |
| 57 | + - 场景规格校验(JSON/Markdown schema) |
| 58 | + - 参考文件新鲜度审计(last-verified 日期扫描) |
| 59 | + - 使用台账校验 |
| 60 | + - 演进流水线完整校验(跳过需运行时环境的步骤) |
| 61 | + |
| 62 | +hardcoded-paths: |
| 63 | + - 扫描所有提交文件,正则匹配 '/Users/' 个人路径 |
| 64 | + - 白名单排除模板路径(如 '/Users/you/...') |
| 65 | +``` |
| 66 | +
|
| 67 | +**适用条件**:项目有自动化脚本(shell/python)即可,不挑语言栈。 |
| 68 | +
|
| 69 | +### P0 — 硬编码路径清理 |
| 70 | +
|
| 71 | +**常见硬编码模式**: |
| 72 | +
|
| 73 | +```bash |
| 74 | +# ❌ 坏 |
| 75 | +PROJECT_PATH="/Users/song/Desktop/iOS/MyApp" |
| 76 | +# ✅ 好 |
| 77 | +PROJECT_PATH="${PROJECT_PATH:-~/path/to/your/project}" |
| 78 | +``` |
| 79 | + |
| 80 | +**CI 挡板**: |
| 81 | + |
| 82 | +```bash |
| 83 | +find . -type f -not -path './.git/*' -print0 \ |
| 84 | + | xargs -0 grep -n '/Users/' \ |
| 85 | + | grep -v '/Users/you/' \ |
| 86 | + | grep -v '/Users/YourName/' |
| 87 | +``` |
| 88 | + |
| 89 | +### P1 — i18n 分层架构 |
| 90 | + |
| 91 | +**核心设计**:不移动现有文件,以镜像层叠加。 |
| 92 | + |
| 93 | +``` |
| 94 | +project/ |
| 95 | +├── SKILL.md # 元指令层 → 英文(路由/优先级/判据) |
| 96 | +├── references/ # 中文源文件(不移动) |
| 97 | +│ └── rule_index.md |
| 98 | +└── i18n/ |
| 99 | + └── en-US/ # 英文镜像层 |
| 100 | + └── references/ |
| 101 | + └── rule_index.md |
| 102 | +``` |
| 103 | + |
| 104 | +**翻译优先级**: |
| 105 | +1. 治理层文件(rule_index / self_evolution / cognitive_adversary_mode)—— 理解体系运作的入口 |
| 106 | +2. 架构概述(architecture_and_network / architecture_analysis)—— 高频引用 |
| 107 | +3. 其余领域 reference —— 按引用频率排序 |
| 108 | + |
| 109 | +**IR-001 语义升级**: |
| 110 | +``` |
| 111 | +旧: 强制中文输出 |
| 112 | +新: 输出语言与用户输入语言一致(auto-match) |
| 113 | +``` |
| 114 | + |
| 115 | +### P1 — 贡献指南 |
| 116 | + |
| 117 | +`CONTRIBUTING.md` 必备板块: |
| 118 | + |
| 119 | +```markdown |
| 120 | +## 新增 Reference(提案驱动) |
| 121 | +1. 创建 proposal |
| 122 | +2. 实现 + 校验 |
| 123 | +3. 提交 PR |
| 124 | + |
| 125 | +## 翻译贡献 |
| 126 | +1. 在 i18n/{locale}/ 创建对应文件 |
| 127 | +2. 保持结构一致 |
| 128 | +3. CI 自动校验中英文件数量 |
| 129 | + |
| 130 | +## Commit 规范 |
| 131 | +feat / fix / ref / evolve / chore / docs |
| 132 | +``` |
| 133 | + |
| 134 | +### P2 — 包管理器分发 |
| 135 | + |
| 136 | +**Homebrew Formula 要素**: |
| 137 | + |
| 138 | +```ruby |
| 139 | +class MyProject < Formula |
| 140 | + desc "One-line description" |
| 141 | + homepage "https://github.com/user/repo" |
| 142 | + url "https://github.com/user/repo/archive/refs/tags/v1.0.0.tar.gz" |
| 143 | + license "MIT" |
| 144 | + |
| 145 | + def install |
| 146 | + prefix.install Dir["*"] |
| 147 | + bin.install_symlink prefix/"run.sh" => "myproject" |
| 148 | + end |
| 149 | +end |
| 150 | +``` |
| 151 | + |
| 152 | +**npm package.json 要素**: |
| 153 | + |
| 154 | +```json |
| 155 | +{ |
| 156 | + "name": "@scope/pkg", |
| 157 | + "version": "1.0.0", |
| 158 | + "bin": { "myproject": "./run.sh" }, |
| 159 | + "files": ["src/", "run.sh", "README.md"], |
| 160 | + "keywords": ["relevant", "search", "terms"] |
| 161 | +} |
| 162 | +``` |
| 163 | + |
| 164 | +### P3 — 文档站 |
| 165 | + |
| 166 | +**VitePress 最小启动**: |
| 167 | + |
| 168 | +```bash |
| 169 | +mkdir docs && cd docs |
| 170 | +# 创建 .vitepress/config.ts + index.md |
| 171 | +npm install -D vitepress |
| 172 | +npm run docs:dev # 本地预览 |
| 173 | +npm run docs:build # 构建静态站 |
| 174 | +``` |
| 175 | + |
| 176 | +**GitHub Pages 自动部署**: |
| 177 | + |
| 178 | +```yaml |
| 179 | +# .github/workflows/deploy-docs.yml |
| 180 | +on: |
| 181 | + push: |
| 182 | + paths: ['docs/**', 'package.json'] |
| 183 | + |
| 184 | +jobs: |
| 185 | + build: |
| 186 | + steps: |
| 187 | + - uses: actions/setup-node@v4 |
| 188 | + with: { node-version: 22 } |
| 189 | + - run: npm ci && npm run docs:build |
| 190 | + - uses: actions/upload-pages-artifact@v3 |
| 191 | + |
| 192 | + deploy: |
| 193 | + needs: build |
| 194 | + steps: |
| 195 | + - uses: actions/deploy-pages@v4 |
| 196 | +``` |
| 197 | +
|
| 198 | +**前置条件**:GitHub 仓库 Settings → Pages → Source → GitHub Actions(启用一次)。 |
| 199 | +
|
| 200 | +--- |
| 201 | +
|
| 202 | +## 里程碑模板 |
| 203 | +
|
| 204 | +| 周 | 目标 | 产出 | |
| 205 | +|----|------|------| |
| 206 | +| **W1 — 止住出血点** | CI + 硬编码清理 + CONTRIBUTING | 每次 PR 自动校验 + 任何人 clone 后可直接运行 | |
| 207 | +| **W2 — 打开国际通道** | i18n 分层 + SKILL.md 英文化 | 非母语用户可直接使用 | |
| 208 | +| **W3 — 正式发布** | Git Tag + CHANGELOG + Homebrew + 文档站上线 | 通过 `brew install` 或 `npm i` 安装,文档可被搜索 | |
| 209 | + |
| 210 | +--- |
| 211 | + |
| 212 | +## 常见反模式 |
| 213 | + |
| 214 | +| 反模式 | 为什么不行 | 正确做法 | |
| 215 | +|--------|-----------|----------| |
| 216 | +| 先做文档站再做 CI | 文档站引流的用户看到 broken 项目就流失了 | CI 先于文档站 | |
| 217 | +| 翻译全部 references 再发布 | 30+ 份文件翻译周期长,阻塞发布 | 先翻治理层 3 份,其余渐进 | |
| 218 | +| 只打 Tag 无 Release Notes | 用户不知道新版本有什么变化 | Tag + CHANGELOG 同时发布 | |
| 219 | +| Homebrew Formula 含硬编码 sha256 | 每个版本都要手动更新 | 首次留空,提示用户 `shasum` 补填 | |
| 220 | + |
| 221 | +--- |
| 222 | + |
| 223 | +## 适用场景判断 |
| 224 | + |
| 225 | +| 项目特征 | 适用优先级 | |
| 226 | +|----------|-----------| |
| 227 | +| 只有 README 没有文档站 | **P3** 文档站,P3 多语言 | |
| 228 | +| 只有英文内容没有中文 | **P1** i18n 分层(反方向:en-US → zh-CN) | |
| 229 | +| 有 CI 但没有规则校验 | **P0** 补充业务规则校验 Job | |
| 230 | +| 无 CHANGELOG 无版本号 | **P2** Git Tag + CHANGELOG | |
| 231 | +| 有 shell 脚本但无包管理器 | **P2** Homebrew / npm | |
| 232 | +| 公开仓库无贡献指南 | **P1** CONTRIBUTING + CODEOWNERS | |
| 233 | + |
| 234 | +--- |
| 235 | + |
| 236 | +> 最后更新:2026-07-05 · ai-coding-kit v3.0.0 |
0 commit comments