
Project Init
- 33 installs
- 543 repo stars
- Updated August 5, 2026
- cat-xierluo/legal-skills
Initialize a project by reading the global CLAUDE.md, analyzing the project, and generating a project-specific CLAUDE.md and docs/ context.
About
Reads the global ~/.claude/CLAUDE.md, analyzes the actual project, and generates a project-specific CLAUDE.md and docs/ context. A developer uses it when saying 'initialize project' or entering a new project that needs quick Claude Code configuration.
- Generates project CLAUDE.md and docs/ context
- Builds from the global protocol plus project analysis
Project Init by the numbers
- 33 all-time installs (skills.sh)
- Ranked #1,808 of 3,282 Productivity & Planning skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/cat-xierluo/legal-skills --skill project-initAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 33 |
|---|---|
| repo stars | ★ 543 |
| Last updated | August 5, 2026 |
| Repository | cat-xierluo/legal-skills ↗ |
What it does
Initialize a project by reading the global CLAUDE.md, analyzing the project, and generating a project-specific CLAUDE.md and docs/ context.
Files
Project Init
读取全局协议,分析项目,生成上下文。
工作流程
Step 1: 读取全局协议
读取 ~/.claude/CLAUDE.md(及其 @include 引用的文件),理解全局协作协议。这是生成项目上下文的基准——项目文档的格式和结构应对齐全局协议中的定义(如文档体系、SOP、DECISIONS 格式等)。
Step 2: 读取配置
读取本 skill 目录下的 config/profiles.yaml,获取:
skill_sources: Skill 源仓库路径profiles: 各项目类型的检测规则和 Skill 列表
Step 3: 检测项目类型
1. 调用 scripts/init.sh detect <project_dir> 获取指示文件列表。 2. 按配置中 profiles 的定义顺序评估 detect 规则:
any_of: 任一文件存在即匹配has_skill_md: 根目录或skills/子目录下存在 SKILL.mdextensions: 指定扩展名文件数 >=min_countdir_patterns: 任一目录名存在即匹配
3. 第一个命中的 profile 即为检测结果。未命中则使用 default_profile。
Step 4: 分析项目
在生成任何文件之前,先分析项目实际情况:
- 读取
package.json/pyproject.toml/Cargo.toml等获取技术栈 - 扫描目录结构了解项目架构(
src/、app/、lib/等) - 读取已有的 README.md 或代码了解项目用途
- 检查是否已有
.claude/、CLAUDE.md、docs/等
将这些信息汇总,作为后续生成上下文的素材。
Step 5: 展示计划并确认
向用户展示检测结果和生成计划,必须等待确认。
Step 6: 创建 .claude/ 和安装 Skill
mkdir -p .claude/skills/对 profile 中 skills 字段列出的每个 Skill,通过调用 skill-manager Skill 以符号链接方式安装到项目的 .claude/skills/ 目录。skill-manager 会自动处理路径解析、去重和版本追踪。
Step 7: 生成 AGENTS.md 和 CLAUDE.md
不是复制模板,而是基于全局协议 + 项目分析结果生成项目特定的 AGENTS.md。
参考 references/CLAUDE.md 中各项目类型的结构指南和生成范例,结合 Step 4 的分析结果,生成包含真实项目信息的内容,写入 AGENTS.md。
references/CLAUDE.md 包含所有项目类型的段落定义、结构模板和脱敏范例,无需参考其他外部文件。
CLAUDE.md 不重复写内容,仅写入:
@include ./AGENTS.md这样 Claude Code 和 Codex 共享同一份项目协议,只维护一个源文件。
已有 AGENTS.md 时展示 diff,让用户决定覆盖/合并/跳过。已有 CLAUDE.md 但内容不是纯 @include 时,同样展示 diff。
Step 8: 生成 settings.json
直接复制 references/settings-template.json。已有则跳过。
Step 9: 创建 .codex/ 目录
bash scripts/init.sh codex "<project_dir>"创建 .codex/ 目录结构:
config.toml:从references/codex-config.toml复制rules/default.rules:从references/codex-default.rules复制skills:符号链接 →../.claude/skills(与.claude/skills/共享,不重复安装)
已有则跳过。.codex/skills 软链确保 Codex 能直接访问 .claude/skills/ 中已安装的 Skill。
Step 10: 生成 docs/ 文档
不是复制空模板,而是基于全局协议的文档体系定义 + 项目分析结果生成有实际内容的文档。
参考 references/CLAUDE.md 中各项目类型的段落定义,结合项目选择的协作文档体系,生成包含项目初始信息的文档:
- docs/ROADMAP.md: 项目愿景(从 README/package.json 提取)、初始阶段规划
- docs/DECISIONS.md: 第一条决策记录(项目初始化的技术选型)
- 任务清单文件: 仅当项目选择文件化任务源时创建;文件名和格式由项目上下文决定
- docs/ARCHITECTURE.md: 从目录结构和技术栈生成初始架构描述
- DESIGN.md: 仅包含前端的项目,从
references/DESIGN.md了解九段式结构,结合实际技术栈生成
仅创建不存在的文件。
Step 11: 创建 .gitignore
从 references/.gitignore 复制。已有则跳过。
Step 12: Skill 脚手架(仅 skill-project 类型)
bash scripts/init.sh scaffold "<project_dir>" "<skill_name>"创建 references/、scripts/、assets/、SKILL.md、LICENSE.txt。
配置说明
编辑 config/profiles.yaml 自定义。
幂等性
符号链接相同目标 → 跳过;文件已存在 → 不覆盖。
Changelog
All notable changes to this project will be documented in this file.
[v1.1.2] - 2026-06-12
Changed
- Skill 开发项目: 将默认验收工具从
skill-architect更新为skill-lint,同步 skill 项目 profile 与触发边界说明。
[v1.1.1] - 2026-06-03
Changed
- TASKS.md 模板: 任务编号从
#改为显式的Task-NNN格式(Task-001、Task-002…),跨文档全局唯一。原ISS-NNN写法不再使用,因多个 Task 常对应同一 Issue/PR,容易造成 1:1 映射的歧义。
[v1.1.0] - 2026-06-01
Changed
- 精简项目类型为 4 种: 开发项目、Skill 开发、法律文档、内容写作;移除前端和数据分析两个 profile
- 开发项目: 新增 git-workflow、release-workflow、multi-agent-orchestration、cross-agent-coordination、agent-email;移除 skill-lint、repo-research
- 法律文档项目: 用 legal-ocr 替代 mineru-ocr + paddle-ocr;新增 pdf-processor、pdf-organizer、img2pdf、yuandian-law-search
- 移除 private-skills 和 myagents 技能源,仅保留 legal-skills
[v1.0.0] - 2026-05-16
Added
- 项目类型检测: 自动识别 6 种项目类型(开发、Skill、前端、数据分析、法律文档、内容写作)
- 配置驱动: YAML 格式配置文件,支持自定义项目类型、Skill 列表和检测规则
- Skill 安装: 委托 skill-manager 处理符号链接创建
- CLAUDE.md 生成指南: 6 种项目类型的段落定义、结构模板和脱敏范例(simple / development / frontend / comprehensive-development / data-analysis / skill-project),通过
@include ~/.claude/CLAUDE.md引入全局协议 - 大型项目可选段落: 架构分层、禁止事项、测试层级、并行调度、实施范围说明等结构模板,按需组装
- 项目文档模板: ROADMAP.md、DECISIONS.md、TASKS.md、ARCHITECTURE.md、DESIGN.md、CHANGELOG.md,格式对齐全局协议
- settings 模板: 权限配置参考模板
- .gitignore 模板: 通用 gitignore 模板
- Skill 项目脚手架: 目录结构 + SKILL.md 模板 + LICENSE.txt
- 示例配置: profiles.example.yaml 供其他用户自定义
# project-init 配置示例
# 复制本文件为 profiles.yaml 并根据需要自定义
#
# 用法:cp profiles.example.yaml profiles.yaml
# ── 技能源 ──────────────────────────────────────────────
# 键名(如 legal-skills)供下方 profiles.*.skills 引用;
# 值为技能目录的本地绝对路径(支持 ~ 展开)。
skill_sources:
legal-skills: ~/Library/Application Support/maoscripts/skills/legal-skills/skills
# ── 配置文件 ──────────────────────────────────────────────
# 每个配置都是一个识别模板:通过 detect 规则自动匹配项目类型,
# 并为匹配的项目注入技能、文档和 Claude 指令。
profiles:
# ── 开发项目 ──────────────────────────────────────────
development:
display_name: 开发项目
detect:
any_of: # 文件名匹配(项目根目录)
- package.json
- pyproject.toml
- Cargo.toml
- go.mod
- requirements.txt
- Gemfile
- pom.xml
- build.gradle
- composer.json
- Makefile
skills:
legal-skills:
- git-batch-commit # 智能 Git 批量提交
- git-workflow # Git 全生命周期工作流
- release-workflow # GitHub 发布工作流
- multi-agent-orchestration # 多 Agent 并行编排
- cross-agent-coordination # 跨平台 Agent 协调
- agent-email # Agent 邮件通信
claude_md: development
docs:
- docs/ROADMAP.md
- docs/DECISIONS.md
# ── Skill 开发项目 ────────────────────────────────────
skill-project:
display_name: Skill 开发项目
detect:
has_skill_md: true
skills:
legal-skills:
- skill-lint
- skill-manager
- git-batch-commit
claude_md: skill-project
scaffold:
- references
- scripts
- assets
docs:
- CHANGELOG.md
- DECISIONS.md
# ── 法律文档项目 ──────────────────────────────────────
legal-document:
display_name: 法律文档项目
detect:
extensions:
- .docx
- .pdf
- .doc
min_count: 3
skills:
legal-skills:
# OCR 与文档处理
- legal-ocr
- pdf-processor
- pdf-organizer
- img2pdf
- md2word
- legal-text-format
# 语音转文字
- funasr-transcribe
- tingwu-asr
# 法律检索
- yuandian-law-search
- zhihe-legal-research
# 案件管理
- new-case
- court-sms
# 合同与诉讼
- litigation-analysis
- contract-review
- contract-copilot
- legal-proposal-generator
- legal-qa-extractor
# 知识产权
- patent-analysis
- code2patent
- trademark-assistant
# 常年法律顾问
- opc-legal-counsel
# 证据处理
- video-screenshot
- video-compressor
# 内容获取
- wechat-article-fetch
- piclist-upload
claude_md: simple
# ── 内容写作项目 ──────────────────────────────────────
content-writing:
display_name: 内容写作项目
detect:
dir_patterns:
- blog
- posts
- articles
- content
- drafts
skills:
legal-skills:
- de-ai-polish
- wechat-article-fetch
claude_md: simple
# ── 默认配置 ──────────────────────────────────────────────
default_profile: development
MIT License
Copyright (c) 2026 杨卫薪律师(微信ywxlaw)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
# Dependencies
node_modules/
vendor/
.venv/
venv/
env/
# Build
dist/
build/
target/
*.egg-info/
# IDE
.idea/
.vscode/
*.swp
*.swo
# OS
.DS_Store
Thumbs.db
# Environment
.env
.env.local
.env.*.local
# Logs
*.log
npm-debug.log*
# Testing
coverage/
htmlcov/
.pytest_cache/
# Claude Code
.claude/settings.local.json
ARCHITECTURE.md 生成指南
Claude 应基于项目目录结构和技术栈分析生成。
范例参考: 读取 references/example-funes-AGENTS.md 中的架构分层与命令边界部分,理解如何描述系统分层。
应从项目分析中提取:
- 依赖文件 → 技术选型表(层级 / 技术 / 说明)
- src/ 目录扫描 → 核心模块列表及职责描述
- 入口文件分析 → 数据流描述(Mermaid 或 ASCII)
- 前后端分离的项目 → 分别描述各层的职责和边界
质量目标: 让新协作者读完后能理解"代码在哪里、各部分做什么、数据怎么流动"。
CHANGELOG.md 生成指南
生成初始版本条目:[Unreleased] + 初始化记录。
格式: 版本号 → 日期 → 分类(Added / Fixes / Refactoring) 条目用 bold title: **描述:** 详情
AGENTS.md 生成指南
本文件定义各项目类型 AGENTS.md 应包含的段落和生成方式。 Claude 应基于全局协议 ~/.claude/CLAUDE.md 和项目分析结果生成真实内容,不是复制模板。
生成后,CLAUDE.md 仅写入 @include ./AGENTS.md,不重复内容。两个文件共享同一份项目协议。
---
simple
适用于:法律文档项目、内容写作项目。
仅引入全局协议:
@include ~/.claude/CLAUDE.md---
development
适用于:通用开发项目。
应从项目分析中提取的真实信息:
- 项目名称和简介(README / package.json description)
- 技术栈(package.json dependencies / pyproject.toml / Cargo.toml)
- 开发命令(package.json scripts / Makefile)
- 目录结构(扫描 src/ lib/ app/ 等关键目录)
结构:
# {{PROJECT_NAME}}
@include ~/.claude/CLAUDE.md
## 项目简介
[从 README 或代码分析得出]
## 技术栈
[从依赖文件提取]
## 开发命令
[从 scripts 提取实际命令]
## 文件清单
[对齐全局协议的文档体系表格]
## 关键设计决策
[从代码和文档分析得出]
## 项目特定规则
[基于项目特点生成的协作规则]生成范例(脱敏):
# {{PROJECT_NAME}} 项目协作指南
## 项目简介
{{PROJECT_NAME}} 是一个 {{一句话描述项目用途}}。
技术栈:{{从依赖文件提取,如:框架 + 语言 + 构建工具 + 关键库}}
## 基本约定
- 全程使用中文回复与写作
- 遵循 `docs/ROADMAP.md` 路线图驱动开发
- 重要决策记录到 `docs/DECISIONS.md`
- 用户可见变更写入 `CHANGELOG.md`
## 文件清单
| 文档 | 位置 | 职责 |
|------|------|------|
| README.md | 根目录 | 项目介绍、快速开始 |
| CHANGELOG.md | 根目录 | 版本变更记录 |
| ARCHITECTURE.md | docs/ | 系统架构、数据流、模块说明 |
| ROADMAP.md | docs/ | 路线图、阶段任务、进度日志 |
| DECISIONS.md | docs/ | 技术决策记录 + 工作日志 |
| TASKS.md | docs/ | 待办事项、缺陷、技术债 |
## 开发命令
\```bash
npm install # 安装依赖
npm run dev # 启动开发模式
npm run build # 构建生产版本
\```
## 关键设计决策
- {{从代码/文档中提取的已确定技术选型}}
- {{关键架构决策,每条一行}}---
frontend
适用于:前端 UI 项目。
在 development 基础上增加:
额外提取:
- 样式方案(tailwind.config / css modules)
- 组件库(dependencies 中的 UI 库)
- 设计系统位置(DESIGN.md)
额外结构:
## 设计规范
- 设计系统:DESIGN.md
- 组件库:[从依赖提取]
- 响应式策略:[分析得出]
## 目录结构约定
[从实际 src/ 结构提取]---
comprehensive-development
适用于:结构复杂的大型开发项目(多层级架构、多 Agent 协作、有完整测试体系)。
在 development 基础上,以下段落按需组装。生成时从项目分析中提取真实内容填入对应结构,不是复制空模板。
可选段落清单
| 段落 | 触发条件 | 说明 |
|---|---|---|
| 开发前置阅读 | 项目文档体系完整时 | 列出 AI 开始工作前必须阅读的文件及优先级 |
| 架构分层与边界 | 多层级项目(前端+后端、多层模块) | 定义层级职责、修改范围和跨层调用规则 |
| 产品原则 | 产品级项目 | 3–6 条核心产品约束 |
| 待办事项分组与并行调度 | 多 Agent 协作场景 | 按文件重叠度、依赖链、并行安全度三维分组 |
| 分支与 Worktree 工作流 | 项目有稳定性承诺时 | 分支命名、Worktree 并行、PR 工作流 |
| 禁止事项 | 所有项目 | 表格形式:禁止操作 → 后果 → 正确做法 |
| 测试层级 | 有测试体系的项目 | L1/L2/L3 测试矩阵和运行时机 |
| 开发默认约定 | 所有项目 | 技术栈选择、持久化策略、多语言等全局默认值 |
| 实施前范围说明 + 实施后影响回报 | 所有项目 | AI 改动前后的范围说明规范 |
段落结构模板
开发前置阅读
## 开发前置阅读
每次开始开发前(无论新功能还是修改),MUST 按以下优先级阅读项目文档:
1. `AGENTS.md`(本文件)— 协作规则、架构边界、禁止事项
2. `docs/ARCHITECTURE.md` — 系统分层、数据流
3. `DESIGN.md` — 前端开发遵循的设计规范(如有前端)
4. `docs/ROADMAP.md` — 当前阶段任务与完成状态
5. `docs/DECISIONS.md` — 最近决策和工作日志
6. 项目自选任务源文件(如适用)— 待办事项追踪架构分层与边界
## 架构分层
{{PROJECT_NAME}} 的代码分为 {{N}} 个明确层级,AI 在判断改动范围时必须按此归类:
\```
{{层 1 名称}}({{路径}})
├── {{关键文件}} ← {{职责}}
└── ...
│
▼
{{层 2 名称}}({{路径}})
├── {{关键文件}} ← {{职责}}
└── ...
\```
### 层级职责
| 层级 | 职责 | 可修改范围 |
|------|------|-----------|
| **{{层名}}** | {{职责}} | {{什么情况下可以改}} |
### 边界规则
- {{跨层调用的唯一路径,如"前端不得直接调用底层 API,必须通过中间层"}}
- {{新增命令/接口时必须同步更新的文件}}禁止事项
## 禁止事项
| 禁止 | 后果 | 正确做法 |
|------|------|----------|
| {{具体操作}} | {{为什么不能做}} | {{应该怎么做}} |测试层级
## 测试层级
| 层级 | 测什么 | 命令 | 覆盖范围 |
|------|--------|------|----------|
| **L1:{{名称}}** | {{范围}} | `{{命令}}` | {{覆盖模块}} |
| **L2:{{名称}}** | {{范围}} | `{{命令}}` | {{覆盖模块}} |
### 运行时机
| 场景 | L1 | L2 |
|------|----|----|
| 修改了 {{模块}} | MUST | — |
| 修改了 {{模块}} | — | MUST |
| 合并 PR 前 | MUST | MUST |待办事项分组与并行调度
## 待办事项分组与并行调度
三维度分组评估:
| 维度 | 说明 | 判定规则 |
|------|------|----------|
| 文件重叠度 | 涉及相同文件/组件的待办事项 | 重叠 → 必须同分支处理 |
| 依赖链 | B 需要 A 的产出才能工作 | 有依赖 → 同分支顺序完成 |
| 并行安全度 | 不同组的文件集是否完全不重叠 | 无重叠 → 可并行 worktree |实施范围说明
## 实施范围说明
### 实施前:范围说明
- **目标**:用户想改什么
- **涉及文件**:哪些文件最可能会动
- **保护范围**:哪些模块这次不应改动
### 实施后:影响回报
- 实际改了哪些文件
- 哪些核心模块保持不变
- 是否引入了新的数据字段、状态或接口---
data-analysis
适用于:数据分析 / Notebook 项目。
应提取的真实信息:
- Python 环境(requirements.txt / conda env)
- 主要分析库(pandas, matplotlib 等)
- 数据位置
- Notebook 命名/组织方式
结构:
# {{PROJECT_NAME}}
@include ~/.claude/CLAUDE.md
## 分析环境
[从依赖文件提取]
## 数据源
[从目录结构和文件分析]
## 项目特定规则
[Notebook 约定、图表样式等]
## 常用命令
[从 Makefile / scripts 提取]
## 目录结构约定
[从实际结构提取]---
skill-project
适用于:Claude Code Skill 开发项目。
在 legal-skills monorepo 内:
@include ./AGENTS.md独立 skill 项目:
@include ~/.claude/CLAUDE.md
## Skill 开发规范
- 本项目是一个 Claude Code Skill
- 目录结构遵循 skill-standards 规范
- SKILL.md 不超过 500 行,代码块超过 20 行放入 scripts/
- references/、scripts/、assets/ 必须扁平(无嵌套子目录)
- description 必须包含触发场景和负向条件# Project-local Codex configuration.
#
# This is the Codex-side counterpart of `.claude/settings.local.json`.
# It opens normal local file operations, shell execution, and web search for
# trusted sessions in this repository. Destructive shell commands are still
# constrained by `.codex/rules/default.rules` and by the project AGENTS.md.
approval_policy = "never"
sandbox_mode = "danger-full-access"
network_access = "enabled"
web_search = "live"
[tools]
web_search = { context_size = "high" }
view_image = true
# Project-local Codex execution policy.
#
# This file is for command permissions, not agent instructions. Codex loads
# project-local rules from <repo>/.codex/rules/ when the project is trusted.
# Common read/search/list commands.
prefix_rule(pattern=["pwd"], decision="allow")
prefix_rule(pattern=["ls"], decision="allow")
prefix_rule(pattern=["find"], decision="allow")
prefix_rule(pattern=["rg"], decision="allow")
prefix_rule(pattern=["grep"], decision="allow")
prefix_rule(pattern=["cat"], decision="allow")
prefix_rule(pattern=["sed"], decision="allow")
prefix_rule(pattern=["awk"], decision="allow")
prefix_rule(pattern=["nl"], decision="allow")
prefix_rule(pattern=["head"], decision="allow")
prefix_rule(pattern=["tail"], decision="allow")
prefix_rule(pattern=["wc"], decision="allow")
prefix_rule(pattern=["test"], decision="allow")
prefix_rule(pattern=["stat"], decision="allow")
prefix_rule(pattern=["file"], decision="allow")
# Common safe workspace setup.
prefix_rule(pattern=["mkdir", "-p"], decision="allow")
# Read-only Git inspection.
prefix_rule(pattern=["git", "status"], decision="allow")
prefix_rule(pattern=["git", "log"], decision="allow")
prefix_rule(pattern=["git", "show"], decision="allow")
prefix_rule(pattern=["git", "diff"], decision="allow")
prefix_rule(pattern=["git", "branch", "--list"], decision="allow")
prefix_rule(pattern=["git", "branch", "-vv"], decision="allow")
prefix_rule(pattern=["git", "for-each-ref"], decision="allow")
prefix_rule(pattern=["git", "rev-parse"], decision="allow")
prefix_rule(pattern=["git", "merge-base"], decision="allow")
prefix_rule(pattern=["git", "cherry"], decision="allow")
prefix_rule(pattern=["git", "worktree", "list"], decision="allow")
# Normal branch/worktree workflow.
prefix_rule(pattern=["git", "checkout"], decision="allow")
prefix_rule(pattern=["git", "worktree", "add"], decision="allow")
prefix_rule(pattern=["git", "worktree", "remove"], decision="allow")
prefix_rule(pattern=["git", "branch", "-d"], decision="allow")
prefix_rule(pattern=["git", "branch", "-D"], decision="prompt")
prefix_rule(pattern=["git", "add"], decision="allow")
prefix_rule(pattern=["git", "commit"], decision="allow")
prefix_rule(pattern=["git", "push"], decision="allow")
# GitHub PR workflow.
prefix_rule(pattern=["gh", "api"], decision="allow")
prefix_rule(pattern=["gh", "pr", "list"], decision="allow")
prefix_rule(pattern=["gh", "pr", "view"], decision="allow")
prefix_rule(pattern=["gh", "pr", "diff"], decision="allow")
prefix_rule(pattern=["gh", "pr", "status"], decision="allow")
prefix_rule(pattern=["gh", "pr", "create"], decision="allow")
prefix_rule(pattern=["gh", "pr", "check"], decision="allow")
prefix_rule(pattern=["gh", "pr", "comment"], decision="allow")
prefix_rule(pattern=["gh", "pr", "review"], decision="allow")
# tmux worker orchestration.
prefix_rule(pattern=["tmux", "list-sessions"], decision="allow")
prefix_rule(pattern=["tmux", "new-session"], decision="allow")
prefix_rule(pattern=["tmux", "capture-pane"], decision="allow")
prefix_rule(pattern=["tmux", "display-message"], decision="allow")
prefix_rule(pattern=["tmux", "has-session"], decision="allow")
prefix_rule(pattern=["tmux", "send-keys"], decision="allow")
prefix_rule(pattern=["tmux", "kill-session"], decision="allow")
# Keep destructive operations blocked even in a trusted project.
prefix_rule(pattern=["git", "reset", "--hard"], decision="forbidden")
prefix_rule(pattern=["git", "clean", "-fdx"], decision="forbidden")
prefix_rule(pattern=["git", "push", "--force"], decision="forbidden")
prefix_rule(pattern=["git", "push", "--force-with-lease"], decision="prompt")
prefix_rule(pattern=["rm", "-rf", "/"], decision="forbidden")
prefix_rule(pattern=["rm", "-rf", "/*"], decision="forbidden")
prefix_rule(pattern=["rm", "-rf", "~"], decision="forbidden")
prefix_rule(pattern=["rm", "-rf", "~/*"], decision="forbidden")
DECISIONS.md 生成指南
Claude 应基于全局协议中定义的 ADR 格式生成。
范例参考: 读取 references/example-funes-AGENTS.md 中对 DECISIONS 格式的定义,理解 ADR 的标准写法。
结构: 第一部分决策记录 + 第二部分工作日志
初始决策记录:
[DEC-001]应记录项目初始化的核心技术选型(框架、语言、架构模式等,从依赖文件和目录结构提取)- 格式严格遵循:Background → Options → Decision → Rationale → Impact
- Options 应列出至少 2 个实际可选项(不是"选项A/选项B"占位符)
工作日志: 首条记录本次初始化操作
DESIGN.md 生成指南
仅前端项目生成。采用九段式结构(参考 Funes 的 DESIGN.md):
1. Visual Theme & Atmosphere 2. Color Palette & Roles(CSS Token 表) 3. Typography 4. Layout Architecture(ASCII 布局图) 5. Component Specs 6. Interaction Rules 7. Content Rules 8. Depth & Elevation 9. Responsive Behavior
应从项目分析中提取:
- 依赖中的 UI 库 / CSS 框架 → 组件库和样式方案
- tailwind.config → 色彩系统
- 目录结构 → 布局架构
ROADMAP.md 生成指南
Claude 应基于全局协议中定义的 ROADMAP 格式 + 项目分析结果生成。
范例参考: 读取 references/example-funes-AGENTS.md 中对 ROADMAP 格式的定义,以及真实项目中的 docs/ROADMAP.md 内容,理解成熟文档的质量水平。
必须对齐全局协议的文档体系:
- 项目愿景(一两句话)
- 当前状态(版本 + 阶段 + 分支)
- 已完成阶段摘要表
- 遗留项 / 下一步方向(
- [ ]/- [x]) - 进度日志(倒序)
应从项目分析中提取:
- 项目名称 / README description → 愿景
- 技术栈和目录结构 → 初始阶段任务规划
- 已有代码量 → 合理的阶段划分
{
"permissions": {
"deny": [
"Bash(rm -rf /)",
"Bash(rm -rf /*)",
"Bash(rm -rf ~)",
"Bash(rm -rf ~/*)",
"Bash(dd * of=/dev/*)",
"Bash(mkfs*)",
"Bash(git push --force * main*)",
"Bash(git push --force * master*)",
"Bash(git reset --hard*)",
"Bash(git clean -fdx*)"
],
"allow": [
"Bash",
"Read",
"Edit",
"Write",
"NotebookEdit",
"Glob",
"Grep",
"WebFetch",
"WebSearch",
"Skill",
"mcp__plugin_context7",
"mcp__github",
"mcp__playwright",
"mcp__MiniMax",
"mcp__zai-mcp-server",
"mcp__pencil"
]
},
"alwaysThinkingEnabled": true
}
TASKS.md 生成指南
生成空的待办事项登记簿,格式对齐全局协议。
表格列: 编号 | 状态 | 事项 | 严重度 | 建议 编号格式: Task-001、Task-002 …… 顺序递增,跨文档全局唯一。 状态用 emoji: 🔴 待处理 / 🟡 处理中 / 🟢 已完成
关于编号前缀: 任务编号使用 Task-NNN,不要用 ISS-NNN。一个 Issue 或 PR 经常对应多个 Task 改动(拆分提交、范围扩展等),ISS 前缀会暗示 1:1 映射造成歧义。
#!/bin/bash
# project-init - 目录脚手架与项目检测
# 子命令:scaffold, detect
# Skill 安装委托 skill-manager/scripts/install.sh 处理
set -e
# --- scaffold: 创建 Skill 目录骨架 ---
# 用法: init.sh scaffold <project_dir> [skill_name]
handle_scaffold() {
local project_dir="$1"
local skill_name="${2:-$(basename "$project_dir")}"
# 创建标准目录
for dir in references scripts assets; do
if [ ! -d "$project_dir/$dir" ]; then
mkdir -p "$project_dir/$dir"
echo "OK: 创建目录: $dir/"
else
echo "OK: 目录已存在: $dir/"
fi
done
# 创建 SKILL.md(仅在不存在时)
if [ ! -f "$project_dir/SKILL.md" ]; then
cat > "$project_dir/SKILL.md" << SKILLEOF
---
name: ${skill_name}
description: |
描述。本技能应在...时使用。不要用于:...
license: MIT License - 详见 LICENSE.txt
---
# ${skill_name}
## 概述
[描述技能的功能]
## 工作流程
[定义工作流步骤]
SKILLEOF
echo "OK: 创建 SKILL.md"
else
echo "OK: SKILL.md 已存在,跳过"
fi
# 创建 LICENSE.txt(仅在不存在时)
if [ ! -f "$project_dir/LICENSE.txt" ]; then
cat > "$project_dir/LICENSE.txt" << 'LICENSEOF'
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
LICENSEOF
echo "OK: 创建 LICENSE.txt"
else
echo "OK: LICENSE.txt 已存在,跳过"
fi
}
# --- codex: 创建 .codex/ 目录结构 ---
# 用法: init.sh codex <project_dir>
handle_codex() {
local project_dir="$1"
local script_dir="$(cd "$(dirname "$0")/.." && pwd)"
# 创建 .codex 目录
mkdir -p "$project_dir/.codex/rules"
# 复制 config.toml
if [ ! -f "$project_dir/.codex/config.toml" ]; then
cp "$script_dir/references/codex-config.toml" "$project_dir/.codex/config.toml"
echo "OK: 创建 .codex/config.toml"
else
echo "OK: .codex/config.toml 已存在,跳过"
fi
# 复制 rules/default.rules
if [ ! -f "$project_dir/.codex/rules/default.rules" ]; then
cp "$script_dir/references/codex-default.rules" "$project_dir/.codex/rules/default.rules"
echo "OK: 创建 .codex/rules/default.rules"
else
echo "OK: .codex/rules/default.rules 已存在,跳过"
fi
# 创建 skills 软链 → ../.claude/skills
if [ ! -e "$project_dir/.codex/skills" ]; then
ln -s ../.claude/skills "$project_dir/.codex/skills"
echo "OK: 创建 .codex/skills → ../.claude/skills"
else
echo "OK: .codex/skills 已存在,跳过"
fi
}
# --- detect: 输出当前目录的指示文件列表 ---
# 用法: init.sh detect <project_dir>
handle_detect() {
local project_dir="$1"
echo "=== 文件指示器 ==="
# 包管理文件
for f in package.json pyproject.toml Cargo.toml go.mod requirements.txt Gemfile pom.xml build.gradle composer.json Makefile; do
if [ -f "$project_dir/$f" ]; then
echo "FOUND: $f"
fi
done
# 前端配置
for f in tailwind.config.js tailwind.config.ts next.config.js next.config.ts vite.config.ts nuxt.config.ts; do
if [ -f "$project_dir/$f" ]; then
echo "FOUND: $f"
fi
done
# SKILL.md
if [ -f "$project_dir/SKILL.md" ]; then
echo "FOUND: SKILL.md (根目录)"
fi
# 检查 skills/ 目录下是否有 SKILL.md
if [ -d "$project_dir/skills" ]; then
for d in "$project_dir/skills"/*/; do
if [ -f "$d/SKILL.md" ]; then
echo "FOUND: skills/$(basename "$d")/SKILL.md"
fi
done
fi
# 目录指示器
for d in src/components components pages app blog posts articles content drafts notebooks data analysis; do
if [ -d "$project_dir/$d" ]; then
echo "FOUND_DIR: $d/"
fi
done
# Jupyter notebook
local ipynb_count
ipynb_count=$(find "$project_dir" -maxdepth 2 -name "*.ipynb" 2>/dev/null | wc -l | tr -d ' ')
if [ "$ipynb_count" -gt 0 ]; then
echo "FOUND: *.ipynb (${ipynb_count} files)"
fi
# 文档文件统计
local docx_count pdf_count
docx_count=$(find "$project_dir" -maxdepth 2 -name "*.docx" 2>/dev/null | wc -l | tr -d ' ')
pdf_count=$(find "$project_dir" -maxdepth 2 -name "*.pdf" 2>/dev/null | wc -l | tr -d ' ')
if [ "$docx_count" -gt 0 ] || [ "$pdf_count" -gt 0 ]; then
echo "FOUND: .docx(${docx_count}) .pdf(${pdf_count})"
fi
}
# --- 主入口 ---
ACTION="${1:-}"
case "$ACTION" in
scaffold)
if [ -z "$2" ]; then
echo "用法: $0 scaffold <project_dir> [skill_name]"
exit 1
fi
handle_scaffold "$2" "${3:-}"
;;
detect)
if [ -z "$2" ]; then
echo "用法: $0 detect <project_dir>"
exit 1
fi
handle_detect "$2"
;;
codex)
if [ -z "$2" ]; then
echo "用法: $0 codex <project_dir>"
exit 1
fi
handle_codex "$2"
;;
*)
echo "project-init 脚本"
echo ""
echo "用法:"
echo " $0 scaffold <project_dir> [skill_name] 创建 Skill 目录骨架"
echo " $0 detect <project_dir> 检测项目指示文件"
echo " $0 codex <project_dir> 创建 .codex/ 目录结构"
echo ""
echo "注意: Skill 安装请使用 skill-manager/scripts/install.sh"
;;
esac