chore: add three development skills (add-sql-dialect, add-cel-feature, release-cel2sql)#119
Merged
richardwooding merged 1 commit intofeat/add-skill-authoring-skillfrom Apr 27, 2026
Conversation
…, release-cel2sql) The Spark dialect work (#117), the v3.7.0/v3.7.1 release flow, and the 5+ CEL feature PRs in the recent history are all heavily procedural, multi-file, and easy to mess up in subtle ways. Captures each pattern as a Claude Code skill following the discipline established by skill-authoring (#118): - add-sql-dialect (~25 file touches in lockstep): SKILL.md + dialect-method matrix across the 6 existing dialects, exhaustive touchpoints checklist, check_testcase_coverage.py script (verifies every WantSQL has the new dialect or a SkipDialect reason), and a gen_expected_sql.go.tmpl build-tagged template that prints actual SQL for every shared test case. - add-cel-feature (5+ recent PRs): SKILL.md + converter-file-map (which file owns which CEL surface area) + dialect-method-checklist (steps when adding a method to dialect.Dialect, with a worked WriteEpochExtract example). Reuses check_testcase_coverage.py. - release-cel2sql (every release): SKILL.md + semver-decision tree with the SIV /v4 caveat + prepare_release.py script that splits [Unreleased] into a versioned section dated today and prints the branch/commit/tag commands. Errors out cleanly when [Unreleased] is empty (the v3.6.0 → v3.7.0 backfill footgun is now caught). All three pass `python .claude/skills/skill-authoring/scripts/lint_skill.py` with 0 errors / 0 warnings. check_testcase_coverage.py self-tests correctly across all six existing dialects (spark, duckdb, postgresql, bigquery: full coverage; mysql, sqlite: real gaps in array/comprehension tests). prepare_release.py self-tests against a synthetic CHANGELOG.md. Branched off feat/add-skill-authoring-skill (#118) so the linter is locally available; the skill-authoring content is unchanged from #118 so this branch needs no rebase touch-ups beyond the standard merge once #118 lands. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
e97201e
into
feat/add-skill-authoring-skill
1 check passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Stacks on #118 (
skill-authoring) and adds three further skills under.claude/skills/that capture the most-recurring procedural work in this repo. Each skill follows the authoring discipline that skill-authoring codifies: progressive disclosure, ≤200-line SKILL.md, third-person specific descriptions, scripts for deterministic work.add-sql-dialectcheck_testcase_coverage.pyscript catches silently-skipped tests; thegen_expected_sql.go.tmpltemplate avoids hand-typing 64 expected SQL outputs.add-cel-featurecheck_testcase_coverage.py.release-cel2sqlprepare_release.pyerrors out when[Unreleased]is empty, splits it into a dated versioned section, and prints the exact branch/commit/PR/tag commands.Verification
python .claude/skills/skill-authoring/scripts/lint_skill.py .claude/skills/add-sql-dialect→ 0 errors, 0 warnings.... .claude/skills/add-cel-feature→ 0/0.... .claude/skills/release-cel2sql→ 0/0.python .claude/skills/add-sql-dialect/scripts/check_testcase_coverage.py spark→OK: dialect.spark has coverage in all 64 shared test case(s).duckdb,postgresql,bigquery.mysqlandsqlitecorrectly report real coverage gaps in array/comprehension/parameterized tests.prepare_release.pyself-tested against a syntheticCHANGELOG.md— correctly errors on empty[Unreleased], correctly rewrites populated[Unreleased]to a dated versioned section.Out of scope (deliberate)
backport-from-fork— exercised once (feat: backport features and fix from observeinc/cel2sql fork #113); pattern is fork-specific. Wait for a second backport before generalizing.bump-dep-with-vuln-fix— Dependabot already handles routine bumps; the interesting cases (transitivedocker/docker, Go stdlib vuln chasing) are infrequent.bench-compare-locally— already a single Makefile target; ceremony around one command.Stacking note
Branched off
feat/add-skill-authoring-skill(#118) so the linter is locally available for verification. Once #118 merges, this PR can rebase againstmaincleanly — theskill-authoring/files are unchanged here.🤖 Generated with Claude Code