mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-05 01:50:27 +08:00
Major Changes: 1. Add classify-folders.sh script - Extract folder classification logic from inline script - Support for code/navigation/skip folder types - Placed in .claude/scripts/ for reusability 2. Optimize /workflow:docs command (docs.md) - Simplify Phase 1: single-step session initialization - Add Path Mirroring Strategy section - Document structure now mirrors source structure - Update to single config.json file (replace multiple .process files) - Fix path detection for Windows/Git Bash compatibility - Update all task templates with mirrored output paths 3. Add parent .gitignore support - detect_changed_modules.sh: parse .gitignore from current or git root - update_module_claude.sh: respect .gitignore patterns when counting files - Unified build_exclusion_filters() function across scripts Key Improvements: - Documentation output: .workflow/docs/ with project structure mirroring - Session init: 4 steps → 1 bash command block - Config files: multiple files → single config.json - Path detection: improved Windows/Git Bash normalization - Gitignore support: current dir → parent dir fallback Related Issue: Fix core directory exclusion in get_modules_by_depth.sh (Note: get_modules_by_depth.sh is in user global config, not in this repo)
36 lines
1.3 KiB
Bash
36 lines
1.3 KiB
Bash
#!/bin/bash
|
|
# Classify folders by type for documentation generation
|
|
# Usage: get_modules_by_depth.sh | classify-folders.sh
|
|
# Output: folder_path|folder_type|code:N|dirs:N
|
|
|
|
while IFS='|' read -r depth_info path_info files_info types_info claude_info; do
|
|
# Extract folder path from format "path:./src/modules"
|
|
folder_path=$(echo "$path_info" | cut -d':' -f2-)
|
|
|
|
# Skip if path extraction failed
|
|
[[ -z "$folder_path" || ! -d "$folder_path" ]] && continue
|
|
|
|
# Count code files (maxdepth 1)
|
|
code_files=$(find "$folder_path" -maxdepth 1 -type f \
|
|
\( -name "*.ts" -o -name "*.tsx" -o -name "*.js" -o -name "*.jsx" \
|
|
-o -name "*.py" -o -name "*.go" -o -name "*.java" -o -name "*.rs" \
|
|
-o -name "*.c" -o -name "*.cpp" -o -name "*.cs" \) \
|
|
2>/dev/null | wc -l)
|
|
|
|
# Count subdirectories
|
|
subfolders=$(find "$folder_path" -maxdepth 1 -type d \
|
|
-not -path "$folder_path" 2>/dev/null | wc -l)
|
|
|
|
# Determine folder type
|
|
if [[ $code_files -gt 0 ]]; then
|
|
folder_type="code" # API.md + README.md
|
|
elif [[ $subfolders -gt 0 ]]; then
|
|
folder_type="navigation" # README.md only
|
|
else
|
|
folder_type="skip" # Empty or no relevant content
|
|
fi
|
|
|
|
# Output classification result
|
|
echo "${folder_path}|${folder_type}|code:${code_files}|dirs:${subfolders}"
|
|
done
|