Systematic Debugging for OpenMetadata
SkillDev toolsA skill that guides an AI agent through a four phase root cause analysis when a failing test, build error, or runtime issue is not immediately obvious. It makes the agent gather evidence and reproduce the error, rank hypotheses, verify the cause with the smallest experiment, and only then change code. It is meant for debugging work where random fix attempts have not worked.
Then ask your AI: use the Systematic Debugging for OpenMetadata skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Have an AI agent that can load skills and run shell commands in your project.
What your AI can do with it
- Runs a four phase debugging process: evidence, hypotheses, verification, fix
- Forbids code changes until the root cause is confirmed
- Reproduces failures with commands for Java, Python, TypeScript, and E2E tests
- Checks recent commits and diffs to see what changed
- Ranks two to three possible causes by likelihood before testing
- Includes a table of common root causes and escalation rules after repeated failed fixes
Getting started
- Have an AI agent that can load skills and run shell commands in your project.
- Add the skill to the agent's skill directory or configuration.
- Invoke it with a description of the error or the failing test as the argument.
- Let the agent complete Phase 1 evidence gathering before it proposes any code change.
What this skill tells your AI
The instructions your AI receives, as published by open-metadata/openmetadata in skills/systematic-debugging/SKILL.md and read by Ahel’s review.
Structured 4-phase debugging process. Stops you from guessing and forces root cause identification.
When to Use
- Test failures with unclear cause
- Build errors after dependency or schema changes
- Runtime exceptions in backend, frontend, or ingestion
- Issues that persist after 2+ fix attempts
Phase 1: Gather Evidence
Do not change any code yet. Only observe and collect data.
- Read the full error — not just the last line. Stack traces, build logs, test output.
- Reproduce reliably:
# Java mvn test -pl <module> -Dtest=FailingTest#failingMethod # Python source env/bin/activate && cd ingestion python -m pytest tests/unit/path/to/test.py::test_name -v # TypeScript cd openmetadata-ui/src/main/resources/ui yarn test path/to/test.spec.ts # E2E yarn playwright:run --grep "test name" - Check what changed recently:
git log --oneline -20 git diff HEAD~5 -- <relevant-directory> - Document findings: Write down the exact error, when it started, and what you've observed.
Phase 2: Form Hypotheses
Based on the evidence, list 2-3 possible causes ranked by likelihood:
1. [Most likely] Schema change in X broke generated model Y
Evidence: error mentions field Z, git log shows schema modified 3 commits ago
2. [Possible] Dependency version mismatch after recent upgrade
Evidence: ClassNotFoundException for new API
3. [Unlikely] Test environment state pollution
Evidence: test passes in isolation but fails in suite
Do not jump to fixing yet. Verify the top hypothesis first.
Phase 3: Verify Root Cause
Test your top hypothesis with the smallest possible experiment:
- Read the suspected code — don't guess what it does
- Add targeted logging or use a debugger if needed
- Check one hypothesis at a time — don't make multiple changes simultaneously
Common OpenMetadata Root Causes
| Symptom | Likely Cause | Verification |
|---|---|---|
ImportError in Python | Models not regenerated after schema change | make generate then retry |
TypeScript compile error on generated types | Schema changed, types not rebuilt | yarn parse-schema then retry |
Java NullPointerException in entity | Missing field in Flyway migration | Check bootstrap/sql/migrations/ |
| Test passes alone, fails in suite | Shared state mutation between tests | Run with --forked (Java) or -x (pytest) |
404 Not Found on API endpoint | Missing @Path annotation or route config | Check resource class registration |
| UI component renders blank | Missing i18n key | Check locale/languages/en-us.json |
Connection refused in integration test | Docker service not running | docker compose -f docker/development/docker-compose.yml ps |
Phase 4: Fix and Verify
Now — and only now — write the fix:
- Fix only the root cause. Don't "improve" surrounding code.
- Run the failing test — it must pass now.
- Run the broader test suite for the affected module to check for regressions.
- Explain why the fix works in your commit message or response.
Escalation Rules
- After 3 failed fix attempts: Stop trying random fixes. Re-examine your hypotheses. The root cause is likely different from what you think.
- After 5 failed attempts: Question your assumptions about the architecture. Read more broadly — adjacent modules, recent PRs, dependency changelogs.
- If the fix requires changing test infrastructure: Pause and discuss with the user. The problem might be in the test setup, not the code.
Anti-Patterns
- Shotgun debugging: Changing multiple things at once hoping something works.
- Symptom treating: Adding
try/catchorif nullchecks to suppress errors instead of fixing the cause. - Blame the framework: Before assuming a bug in Dropwizard, Pydantic, or React, verify your own code is correct.
- Skipping reproduction: "I think I know what it is" — prove it with a failing test first.
Signals
- GitHub stars
- 15k
- Forks
- 2k
- Last commit
- Oct 2026
Questions
- What is systematic debugging?
- It is a skill that guides an agent through a four phase root cause analysis for failing tests, build errors, and runtime issues, instead of letting it make random fix attempts.
- When should I use this skill?
- Use it for test failures with unclear cause, build errors after dependency or schema changes, runtime exceptions in backend, frontend, or ingestion, and issues that persist after two or more fix attempts.
- Does it change code before finding the cause?
- No. Phase 1 forbids code changes and only gathers evidence. The agent must verify the root cause with the smallest experiment before it fixes anything.
Advanced
- Item type
- skill
- Key
systematic-debugging-open-metadata- Source
- github.com/open-metadata/openmetadata
github.com/open-metadata/openmetadata
Related picks
Skill · a5c-ai
The pick for Java110-java-maven-best-practices
Skill · jabrena
The pick for Javadbos-python
Skill · sickn33
The pick for Pythonpython-design-patterns
Skill · wshobson
The pick for Pythonsetup-ts-deep-modules
Skill · mattpocock
The pick for TypeScripttypescript-providers
Skill · composiohq
The pick for TypeScript