Split large implementation plan documents into digestible, hierarchical structures with descriptive names. Use when refactoring monolithic planning docs, organizing phase documentation, or creating contributor-friendly task breakdowns. Triggers: "split this plan", "organize phases", "break down implementation docs", "create task hierarchy".
Overall
score
100%
Does it follow best practices?
Validation for skill structure
| Source Type | Approach | Tool Usage |
|---|---|---|
| Flat .md phase files | Manual workflow (Steps 1-8) | Use validate-structure.ts after split |
| JSON plan definition | Automation | Run generate-structure.ts, then validate |
| Existing structure | Validation only | Run validate-structure.ts |
Edge Cases:
| Scenario | Action |
|---|---|
| Source has mixed phase/step naming | Normalize to one convention first (all phases OR all steps) |
| Existing structure conflicts with plan | Create new structure, migrate content, delete old |
| Circular dependencies detected | Flatten to sequential order, document the constraint |
| Phase file contains both activities and steps | Split into separate directories per type |
| Items reference non-existent parents | Create placeholder parent or renumber children |
Resources are ONLY loaded when needed. Do NOT load all resources by default.
ALWAYS load scripts/validate-structure.ts when:
ALWAYS load scripts/generate-structure.ts when:
Load templates/*.yaml ONLY when:
Load schemas/*.json ONLY when:
Flatten when:
Subdivide when:
Rule of thumb: 3-7 items per group is the sweet spot. Below 3 feels sparse; above 10 forces scanning.
Descriptive names age well:
step-1-extract-movement-logic/ # GOOD: survives refactors
step-1-refactor-game-code/ # BAD: vague, becomes meaninglessVerb-first for actions, noun-first for outcomes:
activity-1-analyze-codebase/ # Action-oriented
activity-1-analysis-complete/ # Outcome-oriented (preferred for tracking)Avoid temporal names:
step-1-initial-setup/ # BAD: "initial" becomes misleading later
step-1-project-bootstrap/ # GOOD: timelessWhen source uses inconsistent naming:
Before splitting, verify:
Ask yourself:
Use the heuristics above for naming/grouping decisions. Apply these steps in order:
docs/refactoring/phases/
├── phase-{number}-{name}/
│ ├── README.md
│ └── activities/ # OR steps/
│ ├── README.md
│ └── activity-{number}-{description}/
│ ├── README.md
│ └── activity-{number}.{sub}-*.mdMax depth: 4 levels (phase → activities/steps → group → leaf). Deeper = flatten.
Each leaf file: title, description, checklist, acceptance criteria, status.
Every non-leaf directory needs README explaining purpose + listing children. 3 lines minimum.
Format: {type}-{number}-{kebab-description}. Use naming heuristics from above.
Items with same prefix (1.x, 2.x) go in same parent. See grouping heuristics.
Update README links after restructuring. Verify with validate-structure.ts.
Remove flat files only after validation passes.
step-1/ # NEVER
activity-2/ # NEVERWHY: Contributors cannot navigate without opening every file — descriptive names enable comprehension at a glance.
step-1-extract/
├── step-1.1-extract-movement.md
├── step-1.2-extract-collision.md
└── step-2.1-create-libs.md # NEVER - wrong parent group
step-2-create-structure/
└── step-2.2-configure-nx.md # Orphaned - should be with 2.1WHY: Users expect step-1.x items together; mixing groups forces searching multiple locations for related work.
phase-1/
└── activities/
└── activity-1/
└── steps/
└── step-1/
└── sub-steps/ # NEVER - too deepWHY: Maximum 4 levels deep — flatten intermediate levels if needed to prevent tedious navigation.
WHY: Every directory must explain its purpose; a missing README creates a dead end that forces blind exploration.
step-1-stuff/ # NEVER
step-2-misc/ # NEVER
activity-1-things/ # NEVERWHY: Generic names provide zero information, forcing users to open files just to understand the context.
Before marking complete:
See references/example-transformation.md for before/after structure comparison. Load only when you need a concrete example.
Problem: One phase has grown unmanageably large.
Solutions:
Anti-pattern: Just adding more nesting. Deep hierarchies with 50 siblings are still unusable.
Problem: Source mixes step-X.Y and activity-X.Y patterns.
Solutions:
steps for implementation phases, activities for analysis phasesRecovery: After choosing, run validate-structure.ts to catch stragglers.
Problem: Previous split left some flat files and some hierarchical directories.
Diagnosis:
# Find flat phase files still in root
ls docs/refactoring/phases/*.md
# Find directories missing READMEs
find docs/refactoring/phases -type d -exec test ! -f {}/README.md \; -printRecovery:
git diff HEAD~5 --name-only | grep phases/Problem: README links to ./step-2.1-foo.md but file is actually at ./step-2-foo/step-2.1-bar.md.
Solutions:
Validation: Run validate-structure.ts to detect broken links automatically.
Generate from JSON plan:
bun run scripts/generate-structure.ts --plan plan.json
bun run scripts/generate-structure.ts --example # Show JSON formatValidate existing structure:
bun run scripts/validate-structure.ts docs/refactoring/phases
# Exit codes: 0 = valid, 1 = invalidChecks: READMEs present, descriptive names, required sections, valid links, proper hierarchy.
Install with Tessl CLI
npx tessl i pantheon-ai/implementation-plan-splitter@0.1.1