Install
$ agentstack add skill-tranfu-labs-tranfu-skills-project-init-docs ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
项目初始化文档(AI 协作基线)
使用这个技能:当用户在代码仓库里说"初始化"时,分析真实仓库,并搭建一套让 AI 能安全协作、先设计再实现的知识与规格基线。
任务不是拷贝空白模板,而是把真实仓库的事实——语言、命令、目录、模块、业务域、部署方式——写进一套固定的目录契约。基线建立后,任何 AI 拿到 AGENTS.md 就知道结构/命令/禁区,拿到 DEPLOY.md 就知道部署到哪/怎么建/怎么发/怎么退/怎么验,拿到 module-map.md 就知道依赖边界,拿到 openspec/ 和 docs/adr/ 就知道"先设计再实现"的契约与既有决策,拿到 docs/wireframes/ 就知道每个页面当前的版式事实。
两套事实源并列:openspec/specs//spec.md 是行为事实源,docs/wireframes/ 是版式事实源。两者都靠 openspec/changes/ 流转更新——改业务逻辑的 change 写 spec-delta/,改页面版式的 change 写 wireframes.md(本项目扩展,按需新建),归档时分别回流到 specs/ 和 docs/wireframes/。归档动作由 openspec/changes/AGENTS.md 统一定义(由本 skill 生成),不在每个 change 的 tasks.md 重复。
核心原则
- 内容来自真实仓库:命令来自真实脚本(package.json scripts / Makefile / justfile 等),模块来自真实源码目录,业务域来自真实代码。探测不到的,标注
TODO: 需人工确认,绝不编造命令或依赖。 - 幂等:已存在的文件默认不做破坏性覆盖。只补全缺失小节,或报告差异交由用户决定。覆盖任何已存在文件前,必须先读它、向用户说明、得到确认。
- 目录级说明一律用 AGENTS.md + CLAUDE.md,绝不用 README:需要解释"怎么在这个目录工作"时,写一个本地
AGENTS.md(真实内容)+ 一个CLAUDE.md(仅一行See AGENTS.md ...,路径相对该目录)。 - 命名产物保留专用名:
module-map.md、spec.md、ADR 文件是具名契约产物,不被AGENTS.md取代。 - 正文用用户语言(默认中文);文件路径与各文件的小节标题是固定契约,不翻译、不改写。
不触发
- 代码层初始化:
git init/npm init/create-react-app/cargo new/ 任何脚手架命令。 - 只新建单个文档(如"帮我写个 README / 写个贡献指南")。
- 编写业务代码或修 bug。
- 对某个已存在文件做局部小修改——那是普通编辑,不是初始化。
脚本与引用文件
确定性骨架由脚本铺设,AI 只填真实仓库事实。脚本在仓库根运行:
scripts/probe.sh [domain...]:只读探针,扫描全部基线目标,输出路由表状态路径类别(状态 = MISSING/EMPTY/PRESENT,类别 = static/repo-fact)。不写盘。scripts/fill.sh:基线产物的唯一事实源。--list列目标清单;--auto [domain...]对所有缺失/为空目标自动填充;`` 只填单个目标。已存在且非空的目标一律 SKIP,绝不覆盖。
产物分两类:
- static(纯静态):所有
CLAUDE.md指针、openspec/changes/AGENTS.md+_template/、docs/adr/AGENTS.md+0000-record-architecture-decisions.md;以及线框图的docs/wireframes/{AGENTS.md,CLAUDE.md,legend.md,_template/page.md}。内容与仓库无关,缺失/为空时由fill.sh写死,AI 不手敲。 - repo-fact(真实事实):根
AGENTS.md、根DEPLOY.md、docs/architecture/module-map.md、openspec/specs//spec.md;以及线框图的docs/wireframes/flow.md(页面流转图,默认铺)和docs/wireframes/pages/.md(探测到路由时追加)。缺失/为空时fill.sh只铺骨架(repo-fact 文件铺「小节标题 +TODO」,页面文件铺「比例尺+断点框+注释表」模板,flow.md 铺「流程示例+TODO 步骤表」),真实命令/模块/业务规则/部署事实/页面版式/流转关系仍由 AI 填正文。
线框图默认随基线一起铺(不做 UI 判定,与 adr/、changes/ 同级):静态骨架(AGENTS.md/CLAUDE.md/legend.md/_template/page.md)与 flow.md 骨架无条件生成;页面文件按真实路由用 --pages 追加。是否保留由仓库根 AGENTS.md 的「线框图」一节决定——初始化只负责铺好并写下这条规则,等以后项目性质明确(如确认为无界面的工具/库类)再照根 AGENTS.md 删除 docs/wireframes/。静态线框图全文存放在 assets/wireframes/,由 fill.sh cat 过去。
小节契约放在 references/file-templates.md,是契约的逐字组成部分。填 repo-fact 正文前必须先读它。static 文件全文以 scripts/fill.sh(含其引用的 assets/wireframes/)为准,不在别处另存。
工作流
为下面的步骤建立一个 TODO 清单,并在每步完成后更新状态。
- 探测仓库
- 语言/框架:
package.json、pyproject.toml/requirements.txt、go.mod、Cargo.toml、pom.xml、build.gradle等。 - 目录结构:顶层与关键源码目录。
- 真实命令:安装/构建/测试/运行/lint,来自真实脚本与配置,而非猜测。
- 模块:顶层源码目录或包边界。
- 业务域:从代码组织(领域目录、服务、模型)归纳出真实业务域,作为
openspec/specs/的 ``。 - 部署方式:探测
Dockerfile/docker-compose*.yml/.github/workflows/*.yml(尤其含deploy/release/publish的)/.gitlab-ci.yml/Jenkinsfile/.circleci/config.yml/vercel.json/netlify.toml/fly.toml/render.yaml/railway.toml/app.yaml/serverless.yml/Procfile/k8s//kubernetes//helm/;以及.env.example/.env.sample/ config 样例;确定部署形态(VPS / 容器编排 / 平台即服务 / Serverless / 纯发布库),供DEPLOY.md填正文。探测不到就整节留TODO,绝不编造平台或命令。 - 页面:检测前端框架/路由(Next.js
app/·pages/、React Router、Vue Router、SvelteKitsrc/routes、多个顶层.html等)。检测到则从真实路由归纳页面名,作为--pages的入参。线框图静态骨架默认都会铺,不在此判定 UI 与否、不跳过;是否最终保留留给根AGENTS.md的规则在后续决定。
- 确认范围与边界
- MUST 在执行任何文件写入前,向用户输出执行前小结:探测到的技术栈、模块、业务域、部署形态(若探测到)、页面清单(若探测到路由),和计划生成的文件清单(含默认生成的
DEPLOY.md与docs/wireframes/)。 - 边界异常时降级处理:空仓库/非代码仓库 → 生成最小
AGENTS.md并把无法填充处标注TODO,必要时向用户要上下文;探测不到命令或模块 → 标注TODO: 需人工确认,绝不编造。 - 业务域过多:当探测到的业务域超过 8 个时,MUST 先向用户列出业务域清单并请其确认范围,再生成
spec.md,绝不静默批量写入。 - 页面过多:当探测到的路由/页面超过 12 个时,MUST 先列页面清单请用户确认范围,再生成页面文件,绝不静默批量写入(静态骨架照常默认铺)。
- 若任何已存在文件会被触及,先读它并向用户说明,确认后再处理。
- 跑探针,拿路由表
scripts/probe.sh [--pages ],得到每个目标的状态 × 类别。docs/wireframes/静态骨架默认就在路由表里;探测到路由就带--pages追加各页面文件,没探测到就只铺静态骨架。后续按表分流,不再凭记忆判断哪些文件该建。
- 按路由表分流填充
static + MISSING/EMPTY→scripts/fill.sh直接写死,AI 不碰。repo-fact + MISSING/EMPTY→scripts/fill.sh铺骨架(小节标题 + TODO),正文留到第 5 步。* + PRESENT→ 不动文件,登记进第 6 步的「需人工/AI 核对」清单(读现有 → 只补缺失小节 / 报差异 → 覆盖前确认)。- 便捷:缺失/为空的目标可一次
scripts/fill.sh --auto [--pages ]全部铺好(PRESENT 自动 SKIP,幂等安全)。
- 填 repo-fact 骨架的正文
- 先读
references/file-templates.md的小节契约。 - 根
AGENTS.md:把「项目概览/项目结构/常用命令/编码规范/禁止事项」的TODO替换成真实事实(修改前后检查两节脚本已写死,保留)。 - 根
DEPLOY.md:按 7 节契约(部署目标 / 环境要求 / 环境变量 / 构建与部署命令 / 部署流程 / 回滚 / 健康检查)填真实事实;命令抄真实Dockerfile/ CI workflow / scripts,环境变量只列名字与用途(NEVER 写真实值/密钥)。探测不到的字段留TODO: 需人工确认,绝不用 `、docker push这类占位符。纯库/SDK 项目## 部署目标` 写成「发布到 npm/PyPI/…(发布不是部署)」并指向真实发布配置。 docs/architecture/module-map.md:按真实模块复制扩展骨架那一节,逐个填职责边界/入口/上游/下游/禁止依赖。openspec/specs//spec.md:填域定位、可验证的业务规则、场景、可验证行为;探测不到的保留TODO: 需人工确认,不硬造。docs/wireframes/pages/.md(探测到路由时):按真实路由填字符图——页首写比例尺+断点清单,每个断点框写真实 px 与显示列尺寸(显示列数 = 真实px ÷ 比例尺,全角字符按 2 列、歧义/半角按 1 列;用 Pythoneast_asian_width校验,禁用awk length、codepoint、wc -L),区块/容器照legend.md与消歧义规则画并打编号,注释表逐条对应;版式推不出的标TODO,不硬造。docs/wireframes/flow.md:按用户流程分节(登录流程、忘记密码流程…)填页面流转图,节点=真实页面(指向其page.md)、同页态用虚线框、边打编号对应步骤表;流程推不出的标TODO,不硬造。- 根
AGENTS.md的「线框图」一节是脚本写死的双重契约(版式事实源定位 + 无界面项目的删除规则),保留不删——它既告诉后续 AI「docs/wireframes/与specs/并列、靠 change 流转更新」,又指导项目性质明确后决定是否删除docs/wireframes/。
- 核对 PRESENT 文件 + 幂等校验 + 产出清单
- 对第 4 步登记的 PRESENT 文件:读现有内容,只补缺失小节或报差异,覆盖前经用户确认。
- 核对验收标准,输出 WROTE / SKIP / 待 AI 填正文 / 标注 TODO 的文件清单。
验收标准
AGENTS.md、CLAUDE.md、DEPLOY.md、docs/architecture/module-map.md、openspec/specs//spec.md、openspec/changes/、docs/adr/全部就位。- 各文件的小节标题与
references/file-templates.md的约定标题逐字一致;repo-fact 文件填完正文后,除标注TODO: 需人工确认处外不含占位符(如 `、npm run)。static 模板(_template/、骨架里的/` 等)的占位符是设计如此,不在此限。 DEPLOY.md含 7 节固定契约(部署目标 / 环境要求 / 环境变量 / 构建与部署命令 / 部署流程 / 回滚 / 健康检查),命令来自真实 Dockerfile / CI workflow / scripts;## 环境变量只出现变量名与一句话用途,NEVER 出现真实值或密钥;探测不到的整节留TODO: 需人工确认,绝不编造平台或命令。- 每个
CLAUDE.md只含指向同目录AGENTS.md的一行。 - 目录级说明文件都是
AGENTS.md+CLAUDE.md,无 README 充当目录指南。 - 已存在文件未被破坏性覆盖;无法填充处显式标注
TODO,无编造命令/依赖。 docs/wireframes/{AGENTS.md,CLAUDE.md,legend.md,_template/page.md,flow.md}默认就位(不分 UI 与否);探测到路由时每个pages/.md有页首比例尺+断点声明、每框尺寸条,且每框实际显示列宽 = 真实px ÷ 比例尺(桌面 120 / 平板 64 / 手机 31,全角按 2 列、歧义/半角按 1 列,用 Pythoneast_asian_width量,对不上即不合格);容器均按消歧义规则标明身份;编号与注释表一一对应、无孤儿编号。flow.md按用户流程分节,节点为真实页面并指向其page.md,每节图中编号与步骤表一一对应、无孤儿编号。- 根
AGENTS.md含脚本写死的「线框图」一节(版式事实源定位 + 默认生成说明 + 无界面项目的删除规则),保留未删。 openspec/changes/AGENTS.md含脚本写死的四个小节——## 变更工作流、## 目录内容(含wireframes.md可选项)、## 推进顺序、## 归档;「归档」节三步并列:移动 change 目录、合并 spec-delta、若有wireframes.md则回流到docs/wireframes/——其中第 3 步只针对有wireframes.md的 change,归档动作 NEVER 写进单个 change 的tasks.md。
失败路径
- 非代码仓库 / 空仓库:不要假装有结构。生成最小
AGENTS.md,把结构/命令/模块小节标注TODO: 需人工确认,并提示用户补充。 - 命令或模块探测不到:标注
TODO: 需人工确认,绝不编造。 - 部署配置探测不到 / 非可部署项目:
DEPLOY.md仍生成 7 节骨架,探测不到的整节留TODO: 需人工确认;纯库/SDK/工具包/CLI 类项目## 部署目标填成「发布到 npm/PyPI/crates.io/…(发布不是部署)」并指向真实发布配置(如.github/workflows/publish.yml、.npmrc);NEVER 因为"不是 web 应用"跳过DEPLOY.md——发布流程本身也值得写清楚。 - 目标文件已存在:默认跳过覆盖。读出现有内容,只补缺失小节或报告差异,覆盖前必须经用户确认。
- 业务域不清晰:建一个起步
spec.md并标注TODO,不硬造业务规则。 - 路由探测不到 / 项目性质未明:不传
--pages,只铺docs/wireframes/静态骨架(含_template/page.md),pages/留空,并依赖根AGENTS.md的「线框图」规则供后续决定保留还是删除——init 阶段不替用户判断、不删除。 - 后续确认为无界面的工具/库类:照根
AGENTS.md的「线框图」规则删除整个docs/wireframes/并删除该节(这是后续编辑,不在 init 范围内)。
用户在一个 Node + TypeScript 仓库里说"初始化"。
流程:
- 探测到
package.json(scripts: build/test/lint)、src/下有auth/、orders/、payments/三个领域目录;同时探测到app/下有login/、dashboard/路由 → 页面 = login/dashboard(没探测到路由就只铺线框图静态骨架、不带--pages)。 - 执行前小结:"栈=Node+TS;模块=auth/orders/payments;页面=login/dashboard;将生成 AGENTS.md、CLAUDE.md、module-map.md、specs/{auth,orders,payments}/spec.md、changes/、adr/、docs/wireframes/(默认)"。
scripts/probe.sh auth orders payments --pages login dashboard→ 全部 MISSING。scripts/fill.sh --auto auth orders payments --pages login dashboard:static 全部写死(各 CLAUDE.md、changes/adr 的 AGENTS.md、_template/、0000 ADR、docs/wireframes/静态骨架);repo-fact 铺骨架(根 AGENTS.md、module-map.md、三个 spec.md、flow.md、两个 page.md)。- 填 repo-fact 骨架正文:根
AGENTS.md常用命令抄真实 scripts、禁止事项写入"payments 不得依赖 orders 的内部模块"、保留脚本写死的「线框图」删除规则;module-map.md三个模块各填一节;三个spec.md据真实代码写业务规则与场景;两个page.md按真实路由填字符图;flow.md按登录流程等用户流程画页面流转。 - 输出清单,标注 payments 的计费规则为
TODO: 需人工确认(代码未明确)。
错误:用户说"初始化"后,直接拷一套带占位符(`、npm run )的空白模板写盘,并新建 openspec/changes/README.md` 解释工作流。
为什么错:内容没有来自真实仓库(命令是占位符而非真实 scripts),违反"内容来自真实仓库";用 README 当目录指南,违反"目录级说明一律用 AGENTS.md + CLAUDE.md"。
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: tranfu-labs
- Source: tranfu-labs/tranfu-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.