analyze-codebase-workflow
À propos
Cette compétence analyse n'importe quelle base de code pour détecter automatiquement les workflows, les pipelines de données et les dépendances de fichiers en utilisant le moteur put_auto() de putior. Elle génère un plan d'annotation qui cartographie les modèles d'E/S détectés aux fichiers sources, prenant en charge plus de 30 langages et 902 modèles de détection. Utilisez-la lors de l'intégration pour comprendre le flux de données dans une base de code non familière, ou pour préparer l'intégration de putior et l'annotation des fichiers sources.
Installation rapide
Claude Code
Recommandénpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/analyze-codebase-workflowCopiez et collez cette commande dans Claude Code pour installer cette compétence
Documentation
分析代码库工作流
调查任意仓库以自动检测数据流、文件 I/O 和脚本依赖,然后生成结构化的注解计划供手动完善。
适用场景
- 加入陌生代码库,需要了解数据流
- 在没有 PUT 注解的项目中开始 putior 集成
- 在文档化之前审计现有项目的数据管道
- 在运行
annotate-source-files之前准备注解计划
输入
- 必需:要分析的仓库或源代码目录路径
- 可选:要聚焦的特定子目录(默认:整个仓库)
- 可选:要包含或排除的语言(默认:所有检测到的)
- 可选:检测范围:仅输入、仅输出或两者(默认:两者 + 依赖)
步骤
第 1 步:调查仓库结构
识别源文件及其语言,以了解 putior 可以分析什么。
library(putior)
# List all supported languages and their extensions
list_supported_languages()
list_supported_languages(detection_only = TRUE) # Only languages with auto-detection
# Get supported extensions
exts <- get_supported_extensions()
使用文件列表了解仓库组成:
# Count files by extension in the target directory
find /path/to/repo -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn | head -20
预期结果: 仓库中存在的文件扩展名列表及计数。将这些与 get_supported_extensions() 对照以了解覆盖率。
失败处理: 如果仓库中没有匹配支持扩展名的文件,putior 无法自动检测工作流。考虑该语言是否受支持但文件使用了非标准扩展名。
第 2 步:检查语言检测覆盖率
对每种检测到的语言,验证自动检测模式的可用性。
# Check which languages have auto-detection patterns (18 languages, 902 patterns)
detection_langs <- list_supported_languages(detection_only = TRUE)
cat("Languages with auto-detection:\n")
print(detection_langs)
# Get pattern counts for specific languages found in the repo
for (lang in c("r", "python", "javascript", "sql", "dockerfile", "makefile")) {
patterns <- get_detection_patterns(lang)
cat(sprintf("%s: %d input, %d output, %d dependency patterns\n",
lang,
length(patterns$input),
length(patterns$output),
length(patterns$dependency)
))
}
预期结果: 打印每种语言的模式计数。R 有 124 个模式,Python 159 个,JavaScript 71 个等。
失败处理: 如果某语言返回零模式,它支持手动注解但不支持自动检测。计划手动注解这些文件。
第 3 步:运行自动检测
在目标目录上执行 put_auto() 以发现工作流元素。
# Full auto-detection
workflow <- put_auto("./src/",
detect_inputs = TRUE,
detect_outputs = TRUE,
detect_dependencies = TRUE
)
# Exclude build scripts and test helpers from scanning
workflow <- put_auto("./src/",
detect_inputs = TRUE,
detect_outputs = TRUE,
detect_dependencies = TRUE,
exclude = c("build-", "test_helper")
)
# View detected workflow nodes
print(workflow)
# Check node count
cat(sprintf("Detected %d workflow nodes\n", nrow(workflow)))
对大型仓库,增量分析子目录:
# Analyze specific subdirectories
etl_workflow <- put_auto("./src/etl/")
api_workflow <- put_auto("./src/api/")
预期结果: 一个数据框,包含 id、label、input、output、source_file 等列。每行代表一个检测到的工作流步骤。
失败处理: 如果结果为空,源文件可能不包含可识别的 I/O 模式。尝试启用调试日志:workflow <- put_auto("./src/", log_level = "DEBUG") 以查看哪些文件被扫描以及哪些模式匹配。
第 4 步:生成初始图表
可视化自动检测的工作流以评估覆盖率并识别差距。
# Generate diagram from auto-detected workflow
cat(put_diagram(workflow, theme = "github"))
# With source file info for traceability
cat(put_diagram(workflow, show_source_info = TRUE))
# Save to file for review
writeLines(put_diagram(workflow, theme = "github"), "workflow-auto.md")
预期结果: 一个 Mermaid 流程图,展示由数据流边连接的检测节点。节点应标有有意义的函数/文件名。
失败处理: 如果图表显示断开的节点,自动检测找到了 I/O 模式但无法推断连接。这是正常的——连接是通过将输出文件名与输入文件名匹配来推导的。注解计划(下一步)将解决这些差距。
第 5 步:生成注解计划
生成结构化计划,记录发现了什么以及什么需要手动注解。
# Generate annotation suggestions
put_generate("./src/", style = "single")
# For multiline style (more readable for complex workflows)
put_generate("./src/", style = "multiline")
# Copy suggestions to clipboard for easy pasting
put_generate("./src/", output = "clipboard")
用覆盖率评估记录计划:
## Annotation Plan
### Auto-Detected (no manual work needed)
- `src/etl/extract.R` — 3 inputs, 2 outputs detected
- `src/etl/transform.py` — 1 input, 1 output detected
### Needs Manual Annotation
- `src/api/handler.js` — Language supported but no I/O patterns matched
- `src/config/setup.sh` — Only 12 shell patterns; complex logic missed
### Not Supported
- `src/legacy/process.f90` — Fortran not in detection languages
### Recommended Connections
- extract.R output `data.csv` → transform.py input `data.csv` (auto-linked)
- transform.py output `clean.parquet` → load.R input (needs annotation)
预期结果: 一个清晰的计划,将自动检测的文件与需要手动注解的文件分开,并为每个文件提供具体建议。
失败处理: 如果 put_generate() 不产生输出,确保目录路径正确且包含支持语言的源文件。
验证清单
-
put_auto()在目标目录上无错误执行 - 检测到的工作流至少有一个节点(除非仓库没有可识别的 I/O)
-
put_diagram()从自动检测的工作流生成有效的 Mermaid 代码 -
put_generate()为有检测到模式的文件生成注解建议 - 创建了带覆盖率评估的注解计划文档
常见问题
- 扫描范围过广:在仓库根目录运行
put_auto(".")可能包含node_modules/、.git/、venv/等。应针对特定源代码目录 - 期望完全覆盖:自动检测找到文件 I/O 和库调用,而非业务逻辑。40-60% 的覆盖率是典型的;其余需要手动注解
- 忽略依赖:
detect_dependencies = TRUE标志捕获将脚本链接在一起的source()、import、require()调用。禁用它会丢失跨文件连接 - 语言不匹配:具有非标准扩展名的文件(如
.Rvs.r、.jsxvs.js)可能不被检测。使用get_comment_prefix()检查扩展名是否被识别。注意像Dockerfile和Makefile这样的无扩展名文件通过精确文件名匹配支持 - 大型仓库:对于 100+ 源文件的仓库,按模块/目录分析以保持图表可读
相关技能
install-putior— 前置条件:必须先安装 putiorannotate-source-files— 下一步:根据计划添加手动注解generate-workflow-diagram— 注解完成后生成最终图表configure-putior-mcp— 使用 MCP 工具进行交互式分析会话
Dépôt GitHub
Compétences associées
qmd
Développementqmd est un outil CLI de recherche et d'indexation locale qui permet aux développeurs d'indexer et de rechercher dans des fichiers locaux en utilisant une recherche hybride combinant BM25, des embeddings vectoriels et du reranking. Il prend en charge à la fois une utilisation en ligne de commande et un mode MCP (Model Context Protocol) pour l'intégration avec Claude. L'outil utilise Ollama pour les embeddings et stocke les index localement, ce qui le rend idéal pour rechercher dans de la documentation ou des bases de code directement depuis le terminal.
subagent-driven-development
DéveloppementCette compétence exécute des plans de mise en œuvre en déployant un nouveau sous-agent pour chaque tâche indépendante, avec une revue de code entre les tâches. Elle permet une itération rapide tout en maintenant des contrôles de qualité grâce à ce processus de revue. Utilisez-la lorsque vous travaillez sur des tâches principalement indépendantes au sein d'une même session pour assurer une progression continue avec des vérifications de qualité intégrées.
mcporter
DéveloppementLa compétence mcporter permet aux développeurs de gérer et d'appeler des serveurs Model Context Protocol (MCP) directement depuis Claude. Elle fournit des commandes pour lister les serveurs disponibles, appeler leurs outils avec des arguments, et gérer l'authentification ainsi que le cycle de vie du démon. Utilisez cette compétence pour intégrer et tester les fonctionnalités des serveurs MCP dans votre flux de travail de développement.
adk-deployment-specialist
DéveloppementCette compétence déploie et orchestre des agents Vertex AI ADK en utilisant le protocole A2A, gérant la découverte d'AgentCard, la soumission de tâches, et prenant en charge des outils tels que le bac à sable d'exécution de code et la banque de mémoire. Elle permet de construire des systèmes multi-agents avec des modèles d'orchestration séquentiels, parallèles ou en boucle en Python, Java ou Go. Utilisez-la lorsqu'on vous demande de déployer des agents ADK ou d'orchestrer des flux de travail d'agents sur Google Cloud.
