clickhouse/clickhouse.entityframeworkcore-review
Review a pull request, branch, or diff for the ClickHouse Entity Framework Core provider. Use when the user asks to review a PR, branch, commit range, or working tree diff for correctness, safety, performance, tests, documentation, and project compliance.
npx skills add https://github.com/ClickHouse/ClickHouse.EntityFrameworkCore --skill review
$0 (optional): PR number, branch name, or diff spec, such as 123, my-feature-branch, HEAD~3..HEAD, or working-tree./.github/workflows/* files during review unless the user specifically asks to review CI.If a PR number is given:
If a branch name is given:
main unless PR metadata indicates another base.If a diff spec is given:
git diff HEAD~3..HEAD.If no argument is given:
For each modified non-workflow file, read enough surrounding code to understand the behavior, not just the changed hunk.
{name:StoreType} parameters, 1/0 boolean literals, concat() for string concatenation, explicit UNION ALL or UNION DISTINCT, and ClickHouse-compatible LIMIT/OFFSET.join_use_nulls and connection-string settings.ifNull(..., 0).COUNT() returning UInt64.Array, Map, Tuple, Variant, Dynamic, Json, geo types) often require store-type-driven resolution. Watch for ambiguous CLR-only inference.List<T>, and supported collection interfaces.InsertBinaryAsync behavior and correct batching.BulkInsertAsync<T>() should not accidentally track entities or use slow row-by-row SQL.RETURNING, foreign keys, and transactional assumptions are not ClickHouse-compatible. Flag accidental reliance on them.ORDER BY, PARTITION BY, PRIMARY KEY, TTL, codecs, comments, and skipping-index behavior must be tested through generated SQL and, when practical, real ClickHouse execution.SaveChanges insert batching, and bulk insert.test/EFCore.ClickHouse.Tests are appropriate for real ClickHouse behavior, type round-trips, inserts, migrations, and query execution.test/EFCore.ClickHouse.FunctionalTests are appropriate for EF relational-harness/Northwind-style query coverage.scripts/coverage-summary.py and scripts/coverage-uncovered.py when coverage matters. Focus on changed runtime code, not trivial Clone() overrides or no-op plumbing.Useful commands:
dotnet build
dotnet test test/EFCore.ClickHouse.Tests/EFCore.ClickHouse.Tests.csproj
dotnet test test/EFCore.ClickHouse.FunctionalTests/EFCore.ClickHouse.FunctionalTests.csproj
dotnet test --filter FullyQualifiedName~TypeMapping
dotnet test --collect:"XPlat Code Coverage"
python3 scripts/coverage-summary.py "test/**/coverage.cobertura.xml" "test/**/TestResults/**/coverage.cobertura.xml"
python3 scripts/coverage-uncovered.py "test/**/coverage.cobertura.xml" "test/**/TestResults/**/coverage.cobertura.xml" ClickHouseTypeMappingSource.cs
/.github/workflows/*.Blockers:
Majors:
Nits:
Use the repository's normal review style: findings first, ordered by severity, with file and line references. Be terse and evidence-based. Omit optional sections that have nothing notable.
If there are blockers, majors, or risk-reducing nits, start with findings:
## Findings
- [Blocker] `path/to/File.cs:123` - Issue and impact.
Suggested fix.
- [Major] `path/to/File.cs:456` - Issue and impact.
Suggested fix.
Then include these sections as relevant. Summary, Review Checklist, and Final Verdict are mandatory:
## Summary
One paragraph describing what the change does and the high-level verdict.
## Missing Context
- Critical context that was unavailable.
## Tests And Evidence
- What was run or inspected.
- Concrete missing tests, if any.
## Performance And Safety
- Hot-path, concurrency, resource, or failure-mode concerns.
## User-Lens Review
- Surprising behavior, docs gaps, or likely future breaking-change risk.
## Code Coverage
- Whether changed runtime paths are covered.
- Concrete coverage gaps and exact tests to add.
## Extras
- README, CHANGELOG, RELEASENOTES, examples, or migration notes that are required or missing.
## Review Checklist
| Check | Status | Notes |
|---|---|---|
| EF Core query/materialization semantics preserved? | Yes / No / N/A | |
| ClickHouse SQL dialect respected? | Yes / No / N/A | |
| Type mapping paths covered: parse, literal, parameter, read, binary insert? | Yes / No / N/A | |
| Insert/bulk insert behavior preserved? | Yes / No / N/A | |
| Migrations/DDL behavior valid for ClickHouse? | Yes / No / N/A | |
| Async/cancellation/resource disposal correct? | Yes / No / N/A | |
| Existing tests preserved? | Yes / No | |
| New tests cover important edge cases? | Yes / No / N/A | |
| Coverage reviewed for changed runtime paths? | Yes / No / N/A | |
| Docs/release notes updated for user-visible behavior? | Yes / No / N/A | |
## Final Verdict
Status: Approve / Request changes / Block
Minimum required actions:
- ...
If there are no blockers or majors, say so clearly and mention any residual validation gaps.
Take clickhouse/clickhouse.entityframeworkcore-review from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.