analyze-codebase-workflow
关于
This skill automatically analyzes codebases to detect workflows, data pipelines, and file dependencies using putior's `put_auto()` engine. It generates an annotation plan mapping I/O patterns across 30+ languages, ideal for onboarding to unfamiliar projects or starting putior integration. Use it to understand data flow, audit pipelines, or prepare for source file annotation.
快速安装
Claude Code
推荐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-workflow在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
Analyze Codebase Workflow
Survey arbitrary repository. Auto-detect data flows, file I/O, script dependencies. Produce structured annotation plan for manual refinement.
When Use
- Onboarding onto unfamiliar codebase, need to understand data flow
- Starting putior integration in project with no PUT annotations yet
- Auditing existing project's data pipeline before documentation
- Preparing annotation plan before running
annotate-source-files
Inputs
- Required: Path to repository or source directory to analyze
- Optional: Specific subdirectories to focus on (default: entire repo)
- Optional: Languages to include or exclude (default: all detected)
- Optional: Detection scope: inputs only, outputs only, or both (default: both + dependencies)
Steps
Step 1: Survey Repository Structure
Identify source files and their languages. Understand what putior can analyze.
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()
Use file listing to understand repo composition:
# Count files by extension in the target directory
find /path/to/repo -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn | head -20
Got: List of file extensions present in repo, with counts. Map against get_supported_extensions() to know coverage.
If fail: Repo has no files matching supported extensions? Putior cannot auto-detect workflows. Consider whether language is supported but files use non-standard extensions.
Step 2: Check Language Detection Coverage
For each detected language, verify auto-detection pattern availability.
# 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)
))
}
Got: Pattern counts printed for each language. R has 124 patterns, Python 159, JavaScript 71, etc.
If fail: Language returns no patterns? Supports manual annotations but not auto-detection. Plan to annotate those files manually.
Step 3: Run Auto-Detection
Execute put_auto() on target directory to discover workflow elements.
# 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)))
For large repos, analyze subdirectories incrementally:
# Analyze specific subdirectories
etl_workflow <- put_auto("./src/etl/")
api_workflow <- put_auto("./src/api/")
Got: Data frame with columns including id, label, input, output, source_file. Each row represents detected workflow step.
If fail: Result empty? Source files may not contain recognizable I/O patterns. Try enabling debug logging: workflow <- put_auto("./src/", log_level = "DEBUG") to see which files scanned and which patterns match.
Step 4: Generate Initial Diagram
Visualize auto-detected workflow. Assess coverage and identify gaps.
# 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")
Got: Mermaid flowchart showing detected nodes connected by data flow edges. Nodes labeled with meaningful function/file names.
If fail: Diagram shows disconnected nodes? Auto-detection found I/O patterns but couldn't infer connections. Normal — connections derived from matching output filenames to input filenames. Annotation plan (next step) addresses gaps.
Step 5: Produce Annotation Plan
Generate structured plan documenting what found and what needs manual annotation.
# 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")
Document plan with coverage assessment:
## 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)
Got: Clear plan separating auto-detected files from those needing manual annotation. Specific recommendations for each file.
If fail: put_generate() produces no output? Ensure directory path correct and contains source files in supported languages.
Checks
-
put_auto()executes without errors on target directory - Detected workflow has at least one node (unless repo has no recognizable I/O)
-
put_diagram()produces valid Mermaid code from auto-detected workflow -
put_generate()produces annotation suggestions for files with detected patterns - Annotation plan document created with coverage assessment
Pitfalls
- Scanning too broadly: Running
put_auto(".")on repo root may includenode_modules/,.git/,venv/, etc. Target specific source directories. - Expecting full coverage: Auto-detection finds file I/O and library calls, not business logic. 40-60% coverage rate typical; rest needs manual annotation.
- Ignoring dependencies:
detect_dependencies = TRUEflag catchessource(),import,require()calls that link scripts together. Disabling it loses cross-file connections. - Language mismatch: Files with non-standard extensions (e.g.,
.Rvs.r,.jsxvs.js) may not be detected. Useget_comment_prefix()to check if extension recognized. Note extensionless files likeDockerfileandMakefilesupported via exact filename matching. - Large repos: For repos with 100+ source files, analyze by module/directory to keep diagrams readable.
See Also
install-putior— prerequisite: putior must be installed firstannotate-source-files— next step: add manual annotations based on plangenerate-workflow-diagram— generate final diagram after annotation completeconfigure-putior-mcp— use MCP tools for interactive analysis sessions
GitHub 仓库
相关推荐技能
executing-plans
设计该Skill用于当开发者提供完整实施计划时,以受控批次方式执行代码实现。它会先审阅计划并提出疑问,然后分批次执行任务(默认每批3个任务),并在批次间暂停等待审查。关键特性包括分批次执行、内置检查点和架构师审查机制,确保复杂系统实现的可控性。
requesting-code-review
设计该Skill可在完成任务、实现主要功能或合并代码前自动调度代码审查子代理,确保实现符合需求和计划。它支持通过指定git SHA范围进行精准的代码变更审查,帮助开发者在关键节点及时发现潜在问题。核心原则是"早审查、勤审查",适用于开发流程的各个关键阶段。
connect-mcp-server
设计这个Skill指导开发者如何将MCP服务器连接到Claude Code,支持HTTP、stdio和SSE三种传输协议。它涵盖了从安装配置到认证安全的完整流程,适用于集成GitHub、Notion、数据库等外部服务。当开发者需要添加集成、配置外部工具或提及MCP相关功能时,这个Skill能提供实用的操作指南。
web-cli-teleport
设计该Skill帮助开发者根据任务特性选择Claude Code的Web或CLI界面,并指导如何在两种环境间无缝迁移会话。它能分析任务复杂度、迭代需求等要素,推荐最优工作界面和工作流。关键特性包括会话状态管理、环境切换指导和上下文优化建议。
