design-sync
DESIGN.md Synchronization Check
Verify that DESIGN.md accurately reflects the current codebase architecture.
Current Directory Structure
!ls -la internal/ | grep '^d'
DESIGN.md Directory Section
!sed -n '/^## Directory Structure/,/^## /p' DESIGN.md | head -50
Critical File References from DESIGN.md
!grep -oE 'internal/[a-z/]+\.go:[0-9]+-[0-9]+' DESIGN.md | sort -u
Recent Changes Since Last DESIGN.md Update
!git log --since="$(git log -1 --format=%ai DESIGN.md 2>/dev/null || echo '1 month ago')" --name-only --oneline -- 'internal/**/*.go' | grep -E '^internal/' | sort -u
Current Package Import Graph
!go list -f '{{.ImportPath}}: {{join .Imports ", "}}' ./internal/... 2>/dev/null | grep 'lazyworktree/internal' | head -30
DESIGN.md Metadata
!head -20 DESIGN.md | grep -E '(Last updated|Version)'
Theme Fields Documented vs Actual
!echo "=== Documented theme fields ===" && grep -A 20 'type Theme struct' DESIGN.md | grep -oE '^\s+[A-Z][a-zA-Z]+' | wc -l && echo "=== Actual theme fields ===" && grep -A 30 'type Theme struct' internal/app/theme.go | grep -oE '^\s+[A-Z][a-zA-Z]+' | wc -l
Analysis Instructions
Based on the data above, check for:
1. Directory Structure Drift
- Are there new directories under
internal/not documented in DESIGN.md? - Have documented directories been removed or renamed?
- Compare the actual directory listing with the documented structure section
2. Critical File References
- Extract all
file:line-rangereferences from DESIGN.md (e.g.,app.go:77-210) - For each reference:
- Verify the file still exists at that path
- Check if line numbers still point to the documented code section
- If lines have shifted due to refactoring, report the new correct line numbers
- Report any broken references or significant drift
3. Recent Architectural Changes
- Review files changed since the last DESIGN.md update
- Identify if changes affect documented abstractions:
- BubbleTea Model/Update/View pattern
- Git service semaphore implementation
- Screen manager stack
- Theme system
- Config cascade
- Flag changes to critical files that may require DESIGN.md updates
4. Import Graph Consistency
- Compare current package imports with the documented dependency graph
- Flag new internal dependencies not mentioned in DESIGN.md
- Flag removed dependencies still documented
- Check for circular dependencies (which violate documented patterns)
5. Theme System Accuracy
- Verify the count of theme fields matches between documentation and actual code
- If counts differ, identify which fields are missing from documentation
6. Staleness Check
- Report if DESIGN.md hasn't been updated in >90 days
- Suggest updating the "Last updated" date if structural changes were made
Report Format
Provide output as:
✅ Up to Date
- List specific aspects that are still accurate and synchronized
⚠️ Needs Minor Updates
- Line number corrections (e.g.,
app.go:77-210 → app.go:87-220) - New directories to add to documentation
- Minor import graph changes
- Theme field count discrepancies
🔴 Needs Major Updates
- New abstractions or components not documented
- Documented components removed or significantly changed
- Architecture decisions that have changed
- Broken file references
📝 Recommended Actions
- Specific edits with DESIGN.md line numbers to update
- New sections to add (with suggested content outline)
- Sections to remove or rewrite
- Line number corrections for all file references
Usage Workflow
When to Invoke /design-sync
Proactive triggers (before committing):
- Added new package under
internal/ - Refactored critical files (app.go, service.go, model.go, etc.)
- Changed architecture pattern (Model-Update-View, semaphore, etc.)
- Added new screen type or theme field
- Modified config cascade or precedence rules
Periodic triggers:
- Quarterly maintenance review
- Before major release
- After merging large architectural PRs
- When DESIGN.md feels outdated
Recommended Workflow
# 1. Make architectural changes
# 2. Run design-sync skill
/design-sync
# 3. Review output for needed updates
# 4. Update DESIGN.md based on recommendations
# 5. Update "Last updated" date in DESIGN.md
# 6. Re-run to verify
/design-sync # Should now show ✅ Up to Date
# 7. Commit changes together