# CLAUDE.md — trae-workspace-tool

Python CLI 工具，把 Trae IDE 企业内网工作区资产注入目标项目。P0 支持 `internal-basic` profile 和 `ops` pack。

## 项目结构

```
src/trae_workspace_tool/
  cli.py          # argparse 入口；init / doctor / list-profiles / list-packs
  generator.py    # 安装与 doctor 检查逻辑
  models.py       # Asset / Profile / Pack / ValidationIssue
  registry.py     # 静态 profile / pack registry
  templates.py    # 生成文件模板
tests/
  test_generator.py
pyproject.toml    # hatchling；requires-python = ">=3.13"
requirements.txt  # 运行时刻意为空，禁止引入三方依赖
```

## 常用命令

```bash
# 测试
uv run pytest -q

# 类型检查 / lint
uv run ty check src tests
uv run ruff check src tests

# CLI（uv 自动处理 venv）
uv run trae-workspace-tool list-profiles
uv run trae-workspace-tool list-packs
uv run trae-workspace-tool init --target /tmp/demo-project
uv run trae-workspace-tool doctor --target /tmp/demo-project
```

## 硬性规则

- **运行时零三方依赖**：`requirements.txt` 故意为空，不得引入任何 `import` 非标准库的运行时依赖
- **registry 是 doctor 的来源**：新增 profile / pack 资产必须注册为 `Asset`，并补充 validator 或测试，避免 doctor 漏检
- 新模板函数放在 `templates.py` 底部，返回 `str`
- 生成的 Rules 文件必须含 `alwaysApply: true`；Skills 文件必须含 `name:` frontmatter
- 生成的维护脚本默认 dry-run，禁止删除/移动/重启/修改配置

## 测试约定

- 新功能必须有对应测试（用 `tmp_path` fixture，不依赖真实文件系统）
- 维护脚本变更需更新 `test_generated_maintenance_script_*` 系列用例
- registry 变更需覆盖 list、unknown profile/pack、重复 asset path、doctor invalid
- 修改前后尽量保持 `pytest -q` 全部通过再提交

## Python 版本

`requires-python = ">=3.13"`，使用 3.13+ 语法特性是允许的。
