用途
standardize-project 用于审计一个已有代码仓库是否符合 TheFocus.AI 标准,并在获得批准后执行标准化迁移。其核心原则是:先检查,再提出计划,最后才改动;绝不盲目覆盖项目现有配置,目标是让仓库既满足标准,又仍按团队预期的方式工作。
如果只需要只读的映射报告(哪些指南适用、例外与差距、不做迁移),应改用 standards-map,或先运行它再回到本技能执行应用。
目标与事实来源
开始前必须先确定目标仓库。若未提供,应询问并停止。每次读取和编辑都要使用明确路径,避免审计一个仓库却误改另一个。
标准位于 The-Focus-AI/standards。在给出任何建议前需阅读:AGENTS.md、best-practices/GDE-009-technology-defaults.md、best-practices/GDE-008-skills.md、STD-007 与 STD-008(密钥与部署),以及适用的部署指南——best-practices/GDE-010-vercel-deployment.md、best-practices/GDE-005-gcp-deployment.md 或 best-practices/GDE-004-gce-gaia-runtime.md。此外还有 best-practices/GDE-002-clerk.md、best-practices/GDE-007-pi-extensions.md、best-practices/GDE-003-fnox-secrets.md,以及 default-project 模板(仅用于缺失文件的示例)。
若标准与目标项目自身指令冲突,应指出冲突并询问,不得静默选择一方。
审计顺序
- 智能体指令——AGENTS.md、CLAUDE.md、.cursor/rules 及等价物。
- 工具链——mise.toml、.tool-versions、包管理器文件、锁文件、脚本。
- 密钥——.env、.env.*、fnox.toml、.fnox/、CI 密钥引用、README 安装步骤。
- pi 设置——.pi/settings.json、packages、本地会话/缓存忽略项。
- 技能——skills-lock.json、.agents/skills/、.pi/skills/。
- 工作流——README、docs、GitHub remote、跟踪器使用、spec/ticket 文档、wayfinder 地图。
- Git 卫生——.gitignore、已提交的生成文件、已提交密钥风险。
改动前必须输出的内容
- 当前状态:已存在什么、缺失什么。
- 合规差距:每项对应到要求它的标准文件。
- 拟议差异:要创建或编辑的确切文件及预期改动。
- 密钥迁移计划:仅发现的键名,绝不包含值,以及使用哪个 1Password 保险库和服务账户。
- 需在目标项目中运行的命令。
- 需要的问题与批准:尤其在触碰密钥或部署之前。
除非用户要求立即执行,否则在用户批准前不得应用改动。
应用迁移
mise
使用 mise use 添加工具,绝不手工编辑:
mise use node@22 npm:pnpm fnox gh ripgrep fd
mise use npm:@earendil-works/pi-coding-agent
mise use npm:markdownlint-cli2
以增量方式合并任务并保留项目专属任务。适用时必需:install、setup、dev、lint、test、deploy、secrets:check、secrets:list。若缺失,添加 [env] 与 _.file = ".fnox/env"。
fnox 与 1Password
遵循 best-practices/GDE-003-fnox-secrets.md。目标终态:
- 每个项目一个专用 1Password 保险库。
- 一个仅能访问该保险库的受限服务账户。
- .fnox/env 仅存放 OP_SERVICE_ACCOUNT_TOKEN,除引导值外不放其他内容。
- fnox.toml 将环境变量映射到 1Password 条目。
- 明文 env 文件在确认后隔离到 .fnox/migrated-env/ 或替换为 .env.example。
- .fnox/、.env、.env.* 加入 gitignore——.env.example 除外。
绝不打印、提交或粘贴密钥值。在计划和对话中只使用键名。
技能
使用 skills add 安装缺失技能(由 mise 固定版本),绝不手工复制技能目录。优先使用 --skill <folder> 而非添加整个上游仓库。规范集合见 best-practices/GDE-008-skills.md 和锁定的 skills-lock.json。
迁移时移除已弃用的 to-prd 和 to-issues 条目。将标题式锁键替换为 kebab-case。确保规划工作流技能存在并在项目智能体指令中被引用。
pi
合并 .pi/settings.json——项目本地会话加上所需 packages。不要删除项目专属 pi 配置。
智能体指令
以增量方式更新或创建目标的 AGENTS.md。它应告知未来的智能体:在哪里读取项目上下文、工具链通过 mise、密钥通过 fnox 和 1Password、规划工作流如何运行、问题如何跟踪,以及哪些命令可证明项目健康。
验证
在目标项目中运行可用的命令:
mise trust && mise install && mise tasks
mise run install && mise run lint && mise run test
fnox check
若某命令无法运行,说明原因及剩余事项。以未验证声明结束的审计只是半个审计。
注意事项
- 先检查再提议。基于对仓库的假设写出的计划会浪费它索要的评审。
- 增量而非替换。项目专属任务和 pi 设置有其存在理由。
- 密钥是最危险的部分。移动前获得明确批准,并在之后验证项目仍能启动。
- 无法修复的差距仍是一项发现。应报告而非悄悄丢弃。