Skip to content

Commit 2547150

Browse files
catlog22claude
andcommitted
feat: optimize documentation task grouping strategy with document count limit
- Change primary constraint to ≤7 documents per task (previously ≤5) - Prefer grouping 2 top-level directories for context sharing via single Gemini analysis - Add intelligent conflict resolution: split groups when exceeding doc limit - Update Phase 4 decomposition algorithm with detailed grouping examples - Add doc_count field to phase2-analysis.json group assignments 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent bcebd22 commit 2547150

File tree

1 file changed

+54
-22
lines changed

1 file changed

+54
-22
lines changed

.claude/commands/memory/docs.md

Lines changed: 54 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ argument-hint: "[path] [--tool <gemini|qwen|codex>] [--mode <full|partial>] [--c
1010
Lightweight planner that analyzes project structure, decomposes documentation work into tasks, and generates execution plans. Does NOT generate documentation content itself - delegates to doc-generator agent.
1111

1212
**Execution Strategy**:
13-
- **Dynamic Task Grouping**: Level 1 tasks dynamically grouped by directory count (max 2 dirs/task, ≤5 docs/task)
13+
- **Dynamic Task Grouping**: Level 1 tasks grouped by top-level directories with document count limit
14+
- **Primary constraint**: Each task generates ≤7 documents (API.md + README.md count)
15+
- **Optimization goal**: Prefer grouping 2 top-level directories per task for context sharing
16+
- **Conflict resolution**: If 2 dirs exceed 7 docs, reduce to 1 dir/task; if 1 dir exceeds 7 docs, split by subdirectories
17+
- **Context benefit**: Same-task directories analyzed together via single Gemini call
1418
- **Parallel Execution**: Multiple Level 1 tasks execute concurrently for faster completion
1519
- **Pre-computed Analysis**: Phase 2 performs unified analysis once, stored in `.process/` for reuse
1620
- **Efficient Data Loading**: All existing docs loaded once in Phase 2, shared across tasks
@@ -133,25 +137,47 @@ bash(cat .workflow/WFS-docs-{timestamp}/.process/phase2-analysis.json | jq '.exi
133137

134138
### Phase 4: Decompose Tasks
135139

136-
**Task Hierarchy** (Dynamic based on directory count):
140+
**Task Hierarchy** (Dynamic based on document count):
137141

138142
```
139-
Small Projects (≤3 dirs):
140-
Level 1: IMPL-001 (all directories, single task)
143+
Small Projects (total ≤7 docs):
144+
Level 1: IMPL-001 (all directories in single task, shared context)
141145
Level 2: IMPL-002 (README, full mode only)
142146
Level 3: IMPL-003 (ARCHITECTURE+EXAMPLES), IMPL-004 (HTTP API, optional)
143147
144-
Large Projects (≥4 dirs, Example: 7 dirs):
145-
Level 1: IMPL-001 to IMPL-004 (parallel groups, 2 dirs/task)
146-
├─ IMPL-001: Group 1 (dirs 1-2)
147-
├─ IMPL-002: Group 2 (dirs 3-4)
148-
├─ IMPL-003: Group 3 (dirs 5-6)
149-
└─ IMPL-004: Group 4 (dir 7)
150-
Level 2: IMPL-005 (README, depends on Level 1, full mode only)
151-
Level 3: IMPL-006 (ARCHITECTURE+EXAMPLES), IMPL-007 (HTTP API, optional)
148+
Medium Projects (Example: 7 top-level dirs, 12 total docs):
149+
Step 1: Count docs per top-level dir
150+
├─ dir1: 2 docs, dir2: 3 docs → Group 1 (5 docs)
151+
├─ dir3: 4 docs, dir4: 2 docs → Group 2 (6 docs)
152+
├─ dir5: 1 doc → Group 3 (1 doc, can add more)
153+
154+
Step 2: Create tasks with ≤7 docs constraint
155+
Level 1: IMPL-001 to IMPL-003 (parallel groups)
156+
├─ IMPL-001: Group 1 (dir1 + dir2, 5 docs, shared context)
157+
├─ IMPL-002: Group 2 (dir3 + dir4, 6 docs, shared context)
158+
└─ IMPL-003: Group 3 (remaining dirs, ≤7 docs)
159+
Level 2: IMPL-004 (README, depends on Level 1, full mode only)
160+
Level 3: IMPL-005 (ARCHITECTURE+EXAMPLES), IMPL-006 (HTTP API, optional)
161+
162+
Large Projects (single dir >7 docs):
163+
Step 1: Detect oversized directory
164+
└─ src/modules/: 12 subdirs → 24 docs (exceeds limit)
165+
166+
Step 2: Split by subdirectories
167+
Level 1: IMPL-001 to IMPL-004 (split oversized dir)
168+
├─ IMPL-001: src/modules/ subdirs 1-3 (6 docs)
169+
├─ IMPL-002: src/modules/ subdirs 4-6 (6 docs)
170+
└─ IMPL-003: src/modules/ subdirs 7-12 (12 docs) → further split
152171
```
153172

154-
**Benefits**: Parallel execution, failure isolation, progress visibility, load balancing (max 2 dirs/task).
173+
**Grouping Algorithm**:
174+
1. Count total docs for each top-level directory
175+
2. Try grouping 2 directories (optimization for context sharing)
176+
3. If group exceeds 7 docs, split to 1 dir/task
177+
4. If single dir exceeds 7 docs, split by subdirectories
178+
5. Create parallel Level 1 tasks with ≤7 docs each
179+
180+
**Benefits**: Parallel execution, failure isolation, progress visibility, context sharing, document count control.
155181

156182
**Commands**:
157183

@@ -167,16 +193,22 @@ bash(grep -r "router\.|@Get\|@Post" src/ 2>/dev/null && echo "API_FOUND" || echo
167193
```
168194

169195
**Data Processing**:
170-
1. Parse directory list and create groups (max 2 dirs/group):
171-
- ≤3 dirs: Single group with all directories
172-
- ≥4 dirs: Multiple groups, 2 dirs each
173-
2. Use **Edit tool** to update `phase2-analysis.json` adding groups field:
196+
1. Count documents for each top-level directory (from folder_analysis):
197+
- Code folders: 2 docs each (API.md + README.md)
198+
- Navigation folders: 1 doc each (README.md only)
199+
2. Apply grouping algorithm with ≤7 docs constraint:
200+
- Try grouping 2 directories, calculate total docs
201+
- If total ≤7 docs: create group
202+
- If total >7 docs: split to 1 dir/group or subdivide
203+
- If single dir >7 docs: split by subdirectories
204+
3. Use **Edit tool** to update `phase2-analysis.json` adding groups field:
174205
```json
175206
"groups": {
176-
"count": 2,
207+
"count": 3,
177208
"assignments": [
178-
{"group_id": "001", "directories": ["src/modules", "src/utils"]},
179-
{"group_id": "002", "directories": ["lib/core"]}
209+
{"group_id": "001", "directories": ["src/modules", "src/utils"], "doc_count": 5},
210+
{"group_id": "002", "directories": ["lib/core"], "doc_count": 6},
211+
{"group_id": "003", "directories": ["lib/helpers"], "doc_count": 3}
180212
]
181213
}
182214
```
@@ -465,8 +497,8 @@ api_id=$((group_count + 3))
465497
"groups": {
466498
"count": 4,
467499
"assignments": [
468-
{"group_id": "001", "directories": ["src/modules", "src/utils"]},
469-
{"group_id": "002", "directories": ["lib/core", "lib/helpers"]}
500+
{"group_id": "001", "directories": ["src/modules", "src/utils"], "doc_count": 6},
501+
{"group_id": "002", "directories": ["lib/core", "lib/helpers"], "doc_count": 7}
470502
]
471503
},
472504
"statistics": {

0 commit comments

Comments
 (0)