--- name: dorodango description: "Iteratively polish code through successive quality passes run in fresh subagents." version: 1.9.3 alwaysApply: false category: workflow tags: - polishing - iterative-refinement - code-quality - convergence progressive_loading: true dependencies: hub: [] modules: - modules/pass-definitions.md complexity: intermediate model_hint: standard estimated_tokens: 400 --- # Dorodango Polishing Workflow Named after the Japanese art of polishing a ball of dirt into a high-gloss sphere. Applied to code: take the initial implementation (the "mud ball") and refine it through successive quality passes until it shines. ## When To Use - After initial implementation is complete and tests pass - Code works but needs refinement across multiple quality dimensions - Preparing code for review or release - Resuming a previous polishing session ## When NOT To Use - Code does not compile or pass basic tests (fix first) - Single-dimension improvement needed (use the specific skill directly: pensive:code-refinement, etc.) - Greenfield design phase (use brainstorming instead) ## Pass Sequence Four quality dimensions, each a self-contained pass: 1. **Correctness** - run tests, fix failures 2. **Clarity** - code readability and structure 3. **Consistency** - naming, patterns, style alignment 4. **Polish** - documentation, error messages, edges See `modules/pass-definitions.md` for detailed scope of each pass type. ## Convergence Model - Each pass targets one dimension - A pass that finds `issues_found: 0` marks that dimension as **converged** - Convergence is irreversible per run; a converged dimension is not re-run - When all 4 dimensions converge, polishing is complete - Maximum 10 total passes (hard limit) - If not converged after 10 passes, surface state to human with recommendation to split into smaller units ## State Persistence State tracked in `.attune/dorodango-state.json`: ```json { "target": "plugins/foo", "started_at": "2026-03-18T12:00:00Z", "pass_count": 3, "passes": [ { "type": "correctness", "issues_found": 2, "issues_fixed": 2 }, { "type": "clarity", "issues_found": 5, "issues_fixed": 5 }, { "type": "consistency", "issues_found": 0 } ], "converged_dimensions": ["consistency"], "converged": false } ``` This file enables resume across sessions. On resume, skip converged dimensions and continue from the next unconverged dimension. ## Subagent Isolation Each pass dispatches a self-contained subagent to prevent context accumulation. The subagent receives: - Target directory/files - Pass type and scope (from pass-definitions module) - Previous pass results (summary only, not full context) Subagent dispatch is optional for targets under 100 lines of code; in-session review is sufficient for small files. ## Workflow 1. Initialize state file (or load existing) 2. Determine next unconverged dimension 3. Dispatch subagent for that dimension 4. Record results in state file 5. If dimension converged (0 issues), mark it 6. If all dimensions converged or 10 passes reached, stop 7. Otherwise, proceed to next dimension ## Cross-References - `pensive:code-refinement` - used in clarity pass - `conserve:code-quality-principles` - KISS/YAGNI/SOLID - `imbue:latent-space-engineering` - frame pass prompts with emotional framing for better results