Use when starting a non-trivial feature, refactor, or multi-file change. Forces structured design thinking before writing any code - brainstorm approaches, get approval, then create a step-by-step implementation plan.
Structured workflow for planning implementation before writing code. Prevents wasted effort from diving in without a clear direction.
bootstrap/sql/migrations/)openmetadata-spec/ JSON schemas)Present 2-3 approaches with trade-offs:
## Approach A: [Name]
- How it works: [1-2 sentences]
- Pros: [bullet list]
- Cons: [bullet list]
- Files affected: [list]
- Risk: [low/medium/high]
## Approach B: [Name]
...
## Recommendation: [A or B] because [reason]
Wait for user approval before proceeding.
Once an approach is approved, break it into ordered tasks:
OpenMetadata task ordering pattern:
1. JSON Schema changes (openmetadata-spec/)
2. Run: make generate (regenerate Pydantic models)
3. Java backend changes (openmetadata-service/)
4. Run: mvn spotless:apply && mvn test-compile
5. Python ingestion changes (ingestion/)
6. Run: cd ingestion && make lint && make unit_ingestion_dev_env
7. Frontend changes (openmetadata-ui/.../ui/)
8. Run: yarn lint && yarn test
9. Database migrations if needed (bootstrap/sql/)
10. Full verification: mvn test or relevant integration tests
openmetadata-spec/.