让 Claude Code 真正读懂你的项目:claude-code-setup 插件实战指南
1. 为什么需要这个插件?
大部分人装完 Claude Code 后,直接让它帮忙写个脚本,用着用着就觉得一般。不是模型能力不够,而是 Claude 没有掌握项目的全貌。
Claude Code 默认能访问你的文件系统,但它缺少一个关键环节:项目上下文的主动发现。
它知道你有一个 extractor.py,但它不知道这个文件在整个架构里的角色、不知道你的编码规范、不知道你已有哪些工具链。
就像一个聪明的实习生,代码全给他了,但没人告诉他项目怎么跑、规则是什么、坑在哪。
claude-code-setup 填补的就是这个空白。
2. 插件做了什么
它不是一个简单的推荐列表生成器。它的工作流程是:
- 深度扫描:读取
pyproject.toml、package.json、Cargo.toml等项目配置文件,识别技术栈和依赖 - 结构分析:遍历
src/、tests/、data/等目录,理解项目的模块划分和架构模式 - 模式匹配:发现你已有的工具(测试框架、lint 配置、CI/CD)、未使用的能力(空白的
.claude/目录)、可自动化的重复劳动 - 生成推荐:基于分析结果,给出 5 个维度的定制化建议——每一条都带着"为什么这对你的项目有用"的解释
- 逐条确认:不自动应用任何东西,每条推荐让你自己决定是否启用
它的核心价值在于:不是给你通用的 AI 建议,而是理解你的代码之后,给你量身定做的方案。
3. 安装与使用
装完 Claude Code 后,在项目目录里执行:
# 一条命令安装
/plugin install claude-code-setup@claude-plugins-official
# 触发项目分析
recommend automations for this project
插件不会瞎猜——它会实际读你的项目文件:
🔍 扫描 resume-parser/
├─ ✅ 检测到: Poetry, FastAPI, Pydantic, scikit-learn
├─ ✅ 发现: PDF 解析 (pypdf), NLP (spacy), 向量数据库 (chromadb)
├─ ✅ 识别: auth 中间件, 异步 worker, 测试 fixtures
├─ ✅ 注意到: .env.example, Dockerfile, GitHub Actions CI
💡 正在生成定制化推荐...
关键:插件不自动应用任何东西。它会解释每条推荐为什么重要,让你逐条选择是否启用。
4. 五大能力详解
4.1. MCP Server — 让 Claude 操作工具,不只是谈论
MCP Server 让 Claude 直接调用你的工具栈。
配置样例(写入 .claude/settings.json):
{
"mcpServers": {
"python-repl": {
"command": "uvx",
"args": ["mcp-server-python", "--project", "."],
"description": "在项目的 virtualenv 里执行 Python 代码"
},
"filesystem": {
"command": "uvx",
"args": ["@modelcontextprotocol/server-filesystem", "/resume-parser"],
"description": "安全的、限定范围的文件操作"
},
"chromadb": {
"command": "uvx",
"args": ["mcp-server-chroma", "--path", "./data/vectors"],
"description": "查询简历嵌入向量进行语义搜索"
}
}
}
有 MCP 后,你说"解析这份新简历 PDF,提取技能,匹配 senior-engineer 画像",Claude 会:
- 通过 Python REPL MCP 调用 pypdf 提取文本
- 运行你的
normalizer.py清洗数据 - 查询 ChromaDB 做语义匹配
- 返回结构化的匹配分数
没有 MCP:Claude 只会描述怎么做。有了 MCP:直接做给你看。
4.2. Skill — 固化编码规范
Skill 是用自然语言写的操作手册,把团队的编码模式固化到 .claude/skills/ 下。
<!-- .claude/skills/resume-parsing.md -->
## 本项目中的简历解析
1. 始终以 `src/parser/extractor.py::ResumeExtractor` 作为入口
2. 用 `dateutil.parser` + `src/utils/dates.py` 标准化日期
3. 用 Pydantic 对照 `data/schemas/resume_v2.json` 校验输出
4. 以 `logger.debug()` 记录解析置信度,附上下文
5. 不要硬编码字段映射 — 用 `src/config/field_aliases.py`
## ML 集成规则
- 新特征必须经过 `src/ml/feature_engineering.py`
- 嵌入必须用 `src/ml/embeddings.py` 中的封装
- 始终缓存向量结果到 `data/cache/embeddings/`
之后让 Claude “添加从简历头部提取 GitHub 个人主页的功能”,它会:
- 按你的类结构编辑
extractor.py - 在 Pydantic schema 中增加校验
- 更新 config 的字段别名
- 在
tests/unit/test_extractor.py中写测试
4.3. Hook — 关键节点自动守门
Hook 是 Python/bash 脚本,在 Claude 工作流的特定时刻自动触发。
pre-edit hook — 修改文件前拦截不安全操作:
# .claude/hooks/pre-edit.py
import sys, json, re
from pathlib import Path
data = json.load(sys.stdin)
file_path = Path(data.get("file_path", ""))
PROTECTED_PATTERNS = [
r"src/parser/_generated/.*", # 自动生成的解析器
r"data/samples/.*\.pdf", # 原始简历文件
r"\.env.*", # 密钥
]
if any(re.match(p, str(file_path)) for p in PROTECTED_PATTERNS):
print(json.dumps({"block": True, "reason": f"⚠️ {file_path} 受保护。请使用 CLI 工具"}))
if file_path.suffix == ".py":
print(json.dumps({"post_action": {"command": ["ruff", "check", "--fix", str(file_path)]}}))
print(json.dumps({"block": False}))
post-test hook — 测试失败时自动分析:
# .claude/hooks/post-test.sh
pytest "$@" --tb=short -q
if [ $? -ne 0 ]; then
echo "🔍 正在用 Claude 分析失败原因..."
echo "分析这些测试失败并建议修复方案:" $(cat pytest-failures.log)
fi
4.4. Subagent — 领域专用 Agent
与其让通用 Claude 包办一切,不如启动专为此任务打造的 Agent。
Claude Code 的 Subagent 是放在 .claude/agents/ 下的 Markdown 文件(YAML frontmatter 定义名称与职责):
<!-- .claude/agents/resume-validator.md -->
---
name: resume-validator
description: 专门校验简历解析输出的 Agent。检查 schema 合规性、数据质量、
字段缺失、日期格式不一致、可疑的技能夸大。复用 skills/pydantic-validation.md
与 skills/data-quality-checks.md 中的规则,当修改 src/parser/** 或相关测试时
主动使用,也可通过 /validate-parse 命令触发。
---
执行 /validate-parse src/parser/extractor.py,它会:
- 检查所有 Pydantic model 有
validate_assignment=True - 验证 PDF 的错误处理
- 确保边界情况测试覆盖
- 返回可操作的建议
4.5. 斜杠命令 — 把复杂流程变成一行
把多步工作流打包成自定义命令:
<!-- .claude/commands/benchmark-parser.md -->
运行端到端解析基准测试:
1. 从 `data/samples/benchmark/` 加载 10 份样例简历
2. 用 `ResumeExtractor` + 计时埋点逐份解析
3. 计算: 平均延迟、内存峰值、字段完整率 %
4. 与 `data/baselines/v1.2.json` 中的基线对比
5. 生成 Markdown 报告到 `reports/benchmark-$(date).md`
6. 如果性能衰退 >5%, 通过 `src/monitoring/alerts.py` 告警
用法: /benchmark-parser --samples=20 --compare=v1.2
输出效果:
/benchmark-parser
✅ 已加载 20 份样例 (PDF:12, DOCX:5, TXT:3)
⏱️ 平均解析时间: 1.24s (±0.3s) — ✅ 在基线范围内
🧠 字段完整率: 98.7% (↑1.2% vs v1.2)
⚠️ 检测到衰退: PDF 解析内存峰值 +7.1%
🔍 建议: Profile `pypdf` 图片提取逻辑 extractor.py:142
📄 报告已保存: reports/benchmark-20260507.md
5. 完整推荐链
触发 recommend automations 后,插件会输出一份完整的推荐清单:
🔌 MCP Server:
→ python-repl MCP (检测到 Poetry virtualenv)
→ chromadb MCP (检测到向量搜索)
📚 Skill:
→ resume-parsing.md (标准化提取逻辑)
→ ml-feature-engineering.md (可复现 pipeline)
🪝 Hook:
→ pre-edit schema-guard (保护 Pydantic 模型)
→ post-test coverage-check (强制覆盖率 ≥90%)
🤖 Subagent:
→ resume-validator (数据质量保障)
→ security-auditor (扫描日志中 PII 泄露)
⚡ Slash Command:
→ /benchmark-parser (性能衰退追踪)
→ /deploy-check (生产前校验)
6. 安装前后对比
之前:.claude/ 只有空的 settings.json
> "给解析器加上 LinkedIn URL 提取功能"
Claude:
- 瞎猜你的类结构,用泛型正则(国际格式直接翻车)
- 忘了更新 Pydantic schema,没加测试,日志也漏了
之后:.claude/ 有完整的配置体系
.claude/
├── settings.json ← MCP: python-repl, filesystem, chromadb
├── skills/
│ ├── resume-parsing.md
│ └── ml-feature-engineering.md
├── hooks/
│ ├── pre-edit-schema-guard.py
│ └── post-test-coverage-check.sh
├── agents/
│ ├── resume-validator.md
│ └── security-auditor.md
└── commands/
├── benchmark-parser.md
└── deploy-check.md
> "给解析器加上 LinkedIn URL 提取功能"
Claude:
✅ 用你的 FieldExtractor 基类编辑 extractor.py
✅ 在共享库中添加正则 + fallback
✅ 更新 ResumeSchema
✅ 添加 pytest 用例
✅ 用 logger.debug() 记录提取置信度
✅ 编辑后自动运行 ruff + mypy
✅ 建议: "要加入基准测试套件吗?(/benchmark-parser)"
7. 插件生态命令
/plugin discover --tag=python # 浏览 Python 相关插件
/plugin install <name>@<source> # 安装插件
/plugin list # 查看已激活插件
/plugin update --tag=python # 更新插件
8. 五分钟上手
npm install -g @anthropic-ai/claude-code
cd your-project
claude
/plugin install claude-code-setup@claude-plugins-official
recommend automations for this project
# 建议先启用 python-repl MCP + 项目 skill
# 再加 hook + subagent
8.1. 安全提醒
插件可执行代码、访问文件系统、安装依赖。请始终:
- 安装前审查源码(点击插件源码链接)
- 先用
--dry-run预览推荐 - 用虚拟环境(
uv venv、poetry shell)做隔离
社区插件像对待 PyPI 包一样:审查、测试、再信任。