mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-11 02:33:51 +08:00
feat: optimize docs workflow and add gitignore support to scripts
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)
This commit is contained in:
35
.claude/scripts/classify-folders.sh
Normal file
35
.claude/scripts/classify-folders.sh
Normal file
@@ -0,0 +1,35 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user