tdd
Use when implementing new features or fixing bugs to enforce test-driven development.
Skill by open-metadata
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/open-metadata-tdd
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: testing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/tdd
What's inside
- Skill name
tdd- Description
- Use when implementing new features or fixing bugs to enforce test-driven development. Guides the RED-GREEN-REFACTOR cycle for Java (JUnit), Python (pytest), and TypeScript (Jest/Playwright) in OpenMetadata.
- License
- Apache-2.0
- Instructions
- 131 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Test-Driven Development for OpenMetadata
Enforce RED-GREEN-REFACTOR discipline across all three language stacks.
## When to Use
- Implementing any new feature or behavior
- Fixing bugs (write a test that reproduces the bug first)
- Adding new API endpoints, connectors, or UI components
## The Cycle
### 1. RED - Write a Failing Test
Write the **smallest test** that describes the desired behavior. Run it. It **must fail**. If it passes, your test isn't testing the new behavior.
**Java (JUnit 5):**
```bash
# Write test in openmetadata-service/src/test/ or openmetadata-integration-tests/
mvn test -pl openmetadata-service -Dtest=YourTestClass#yourTestMethod
```
**Python (pytest):**
```bash
source env/bin/activate
cd ingestion
# Write test using pytest style — plain assert, no unittest.TestCase
python -m pytest tests/unit/your_test.py::test_your_function -v
```
**TypeScript (Jest):**
```bash
cd openmetadata-ui/src/main/resources/ui
yarn test path/to/YourComponent.test.ts
```
**Rules for RED:**
- Test one behavior per test
- Use descriptive test names that explain what should happen
- Assert on observable outcomes (API responses, database state, rendered output), not internal method calls
- For Python: use `assert x == y`, not `self.assertEqual(x, y)`
### 2. GREEN - Write the Minimum Code to Pass
Write **only** the code needed to make the test pass. No more.
- Don't add error handling for cases you haven't tested
- Don't generalize — hardcode if that's what the test requires
- Don't clean up or refactor yet
**Run the test again. It must pass.**
### 3. REFACTOR - Clean Up While Green
Now improve the code while keeping tests green:
- Remove duplication
- Improve naming
- Extract methods if needed (but don't over-abstract)
- Run the full test suite for the module to check for regressions
```bash
# Java — format then test
mvn spotless:apply
mvn test -pl openmetadata-service
# Python — format, lint, then test
cd ingestion && make py_format && make py_format_check
python -m pytest tests/unit/your_test.py -v
# TypeScript — lint then test
cd openmetadata-ui/src/main/resources/ui
yarn lint:fix
yarn test path/to/YourComponent.test.ts
```
### 4. Repeat
Go back to RED with the next behavior. Each cycle should take minutes, not hours.
## What to Test Where
| Layer | Test Type | Location | Runner |
|-------|-----------|----------|--------|
| Java REST API | Integration | `openmetadata-integration-tests/` | `mvn verify` |
| Java service logic | Unit | `openmetadata-service/src/test/` | `mvn test` |
| Python connectors | Unit | `ingestion/tests/unit/` | `pytest` |
| Python integration | Integration | `ingestion/tests/integration/` | `pytest` |
| React components | Unit | Co-located `.test.ts` files | `yarn test` |
| UI E2E flows | E2E | `playwright/e2e/` | `yarn playwright:run` |
## Anti-Patterns to Avoid
- **Writing code before the test.** If you catch yourself doing this, stop. Write the test first.
- **Mocking everything.** Mock external boundaries (HTTP clients, third-party APIs), not your own classes. If you need 3+ mocks, write an integration test instead.
- **Testing implementation details.** Don't assert on internal method calls with `verify()`. Assert on outcomes.
- **Giant test methods.** Each test should verify one behavior. Split multi-assertion tests into separate test cases.
- **Skipping REFACTOR.** The refactor step is where code quality happens. Don't skip it.
## OpenMetadata-Specific Patterns
**Java integration tests** use `BaseEntityIT` with `TestNamespace` for isolation and `OpenMetadataClient` for API calls. Prefer this over heavily mocked unit tests for API testing.
**Python connector tests** should test real behavior:
```python
# Good: test the actual parsing logic
def test_parse_table_metadata():
raw = {"name": "users", "columns": [...]}
result = parse_table(raw)
assert result.name == "users"
assert len(result.columns) == 3
# Bad: mock everything and verify calls
def test_parse_table_metadata():
mock_client = MagicMock()
mock_client.get.return_value = {...}
# ... 20 lines of mock setup
verify(mock_client.get).called_once() # proves nothing
```From open-metadata/OpenMetadata, Apache-2.0.
More from open-metadata/OpenMetadata
- 0.862score
openmetadata-pr-review
open-metadata
Reviews OpenMetadata and Collate pull requests as a maintainer deciding whether to merge.
SkillAFreshness: A★ 15.6KClaude Code +9 - 0.860score
systematic-debugging
open-metadata
Use when debugging a failing test, build error, or runtime issue that isn't immediately obvious.
SkillAFreshness: A★ 15.6KClaude Code +9 - 0.860score
pr-checklist
open-metadata
Use when opening or finalizing a GitHub PR for OpenMetadata.
SkillAFreshness: A★ 15.6KClaude Code +9 - 0.860score
planning
open-metadata
Use when starting a non-trivial feature, refactor, or multi-file change.
SkillAFreshness: A★ 15.6KClaude Code +9 - 0.860score
playwright-validation
open-metadata
Use when validating UI changes in a branch require Playwright E2E testing.
SkillAFreshness: A★ 15.6KClaude Code +9 - 0.860score
java-affected-tests
open-metadata
Use before opening or updating an OpenMetadata PR that changes Java, a JSON schema, an index mapping, a SQL migration, seed data or a pom — PR CI no longer…
SkillAFreshness: A★ 15.6KClaude Code +9 - 0.857score
ui-pr-recording
open-metadata
Use during PR creation for a UI feature or feature task.
SkillAFreshness: A★ 15.6KClaude Code +9 - 0.857score
connector-audit
open-metadata
Deep reliability audit for OpenMetadata connectors — runs 7 investigation prompts (metadata, errors, auth, lineage, scale, synthesis, implementation) against…
SkillAFreshness: A★ 15.6KClaude Code +9 - 0.857score
code-review
open-metadata
Use to review code changes with a two-stage process - first checking spec/requirements compliance, then code quality.
SkillAFreshness: A★ 15.6KClaude Code +9 - 0.857score
verification
open-metadata
Use before claiming any task is complete.
SkillAFreshness: A★ 15.6KClaude Code +9 - 0.857score
openmetadata-workflow
open-metadata
Meta-skill loaded at session start.
SkillAFreshness: A★ 15.6KClaude Code +9 - 0.855score
ui-core-components
open-metadata
Use when writing or editing React/TSX in `openmetadata-ui/src/main/resources/ui/src/` or `openmetadata-ui-core-components/`, before reaching for a raw `<div>`…
SkillAFreshness: A★ 15.6KClaude Code +9
Compare and alternatives
Featured in
Signals
- Stars
- 15,567
- Forks
- 2,481
- Open issues
- 677
- Contributors
- 519
- Last commit (this folder)
- Apr 28, 2026 (6 months ago)
- Last release
- Oct 21, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/open-metadata/OpenMetadata
- Website
- open-metadata.org
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
More from open-metadata
- 0.862score
openmetadata-pr-review
open-metadata
Reviews OpenMetadata and Collate pull requests as a maintainer deciding whether to merge.
SkillAFreshness: A★ 15.6KClaude Code +9 - 0.860score
planning
open-metadata
Use when starting a non-trivial feature, refactor, or multi-file change.
SkillAFreshness: A★ 15.6KClaude Code +9 - 0.860score
pr-checklist
open-metadata
Use when opening or finalizing a GitHub PR for OpenMetadata.
SkillAFreshness: A★ 15.6KClaude Code +9 - 0.860score
systematic-debugging
open-metadata
Use when debugging a failing test, build error, or runtime issue that isn't immediately obvious.
SkillAFreshness: A★ 15.6KClaude Code +9 - 0.860score
playwright-validation
open-metadata
Use when validating UI changes in a branch require Playwright E2E testing.
SkillAFreshness: A★ 15.6KClaude Code +9 - 0.860score
java-affected-tests
open-metadata
Use before opening or updating an OpenMetadata PR that changes Java, a JSON schema, an index mapping, a SQL migration, seed data or a pom — PR CI no longer…
SkillAFreshness: A★ 15.6KClaude Code +9
Cite this page
tdd skill. Agent Mart. https://agentmart.dev/skills/open-metadata-tdd (last updated 2026-10-24)