datasqrl/sqrl/configure-sqrl
Claude Code and agent skill by datasqrl/sqrl
- community
- ext:[{"type":"config","description":"Configuration overrides"}]
Checking that the SKILL.md file is still in the repository.
Use when configuring a DataSQRL project's `*-package.json` files. Use for engine selection (Flink, Postgres, Kafka, Iceberg and its query engines DuckDB, Snowflake, Spark SQL, Redshift, Trino), API protocols, compiler options, runtime settings, or deployment/infrastructure settings.
Install
npx vskill@latest install datasqrl/sqrl/configure-sqrlSemi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard
SKILL.md
Update the configuration of a DataSQRL project by editing its *-package.json files or creating new ones. Read Configuration Files first (how the files are split and layered), then look up the key you need under Configuration Content.
The configuration supports environment placeholders in the configuration fields that process them. Read Environment Variables before adding credentials or tokens: the normal and secret forms have different compile-time behavior, and support is not universal across every configuration field.
Configuration Files
Base Config and Environment Overlays
For projects that need multiple deployment profiles, split configuration into a base (shared) and thin per-environment overlays to reduce duplication. This is a recommended project convention: SQRL accepts any ordered list of package JSON files and has no special meaning for the filenames or environment names.
- `<project>-shared-package.json` is the base config file that includes common settings to every environment which could be
version,enabled-engines,script.main,script.api, and theengines/compilersettings. - `<project>-<env>-package.json` (one per environment
-test,-prod,-local,-dev) — add or overwrite ONLY what differs from the base configuration file (e.g.script.config.environment,test-runner, an engine override). Note that-devis a local development environment, like-local.
Example for the base config and environment overlays: The lending360 project with a test and a production environment:
`lending360-shared-package.json` — the base: everything both environments share.
`lending360-test-package.json` the test overlay: ONLY what test changes.
`lending360-prod-package.json` the production overlay.
Rules for writing the configuration files:
- Merging is per field, last file wins. In the example above, the test overlay's
table.exec.source.idle-timeout: "0 s"replaces the base's"30 s", whileexecution.runtime-mode: "STREAMING"from the base is kept. An overlay does not replace the wholeengines.flink.configobject. - `test-runner` belongs only in the `-test` overlay.
- Every independently compiled or tested project and sub-project MUST have a named package file for each environment it uses:
<project-or-sub-project>-<env>-package.json(for example,fraud_store-test-package.json). Do not use an unqualified standalone package file for a deployable sub-project. The name lets the agent's package-discovery fallback identify the package that belongs to each build. - If settings are common across environments or sibling sub-projects, share them through a
*-shared-package.jsonbase; keep only environment- or sub-project-specific settings in the named package files. - Fix duplicated configuration: move common settings to
<project>-shared-package.jsonand retain only differing fields in<project>-<env>-package.json.
Sub-projects (multiple deployments in one project)
One project folder may hold several sub-projects, meaning separate deployments over the same source files, each with its own configuration.
Every sub-project has its own per-environment overlays and layers them under a base. The base is either its own or shared with sibling sub-projects. Never combine sub-project specific configurations from different sub-projects.
| File | Role | |
|---|---|---|
<sub-project>-shared-package.json | own base — enabled-engines, script.main, script.api, settings common to all of this sub-project's environments. Use one base per sub-project when the settings the sub-projects share differ (e.g. different engine sets). | |
<project>-shared-package.json | shared base — only what is common to every sub-project layering under it (version, common engines/compiler settings, enabled-engines if identical). Whatever differs — at least script.main — is declared in the sub-project's own files, so the base stays valid for each of them. | |
<sub-project>-test-package.json | test overlay — test-runner with its own snapshot-folder, plus test-only overwrites | |
<sub-project>-prod-package.json | production overlay — production script.config, API protocols, deployment sizing and prod-only overwrites |
An available examples directory may include a useful multi-deployment reference. For example, healthcare-study/ in datasqrl-examples illustrates separate stream, API, and analytics deployments alongside a shared data catalog; use it only when it is present and relevant.
Example with one shared base for two sub-projects that differ only in their main script and snapshot folder:
Each sub-project's -test-package.json is its own test run. To setup a test and run, invoke the /test-sqrl skill.
How to Compile/Test
Compile
Compile by layering base then overlay (merged last-wins):
The -b <sub-project> flag gives each sub-project its own build folder inside build/, so a compile keeps sub-project's build artifacts intact.
Test Invoke the /test-sqrl skill for which test packages to run and how.
Configuration Content
Engines (enabled-engines, engines)
Enable the minimal set of engines the project actually uses — nothing more. Enabled engines determine what pipeline and deployment artifacts SQRL produces; some engines also provision or run services. Start from flink and add an engine only when a concrete capability below requires it. At the end of the implementation, always check your engine set whether if is minimal or not, and prune engines that are no longer used.
Enable each engine only if its trigger is present:
| Engine | Enable ONLY IF | Omit when | |
|---|---|---|---|
| flink | always — streaming/batch data processor | never omit | |
| postgres | the API serves data from database-backed tables (query/point-lookup endpoints, full-text or vector search) | there is no served DB query — e.g. the only output is a data-lake or EXPORT | |
| kafka | there is a SUBSCRIBE subscription or a CREATE TABLE annotated with /*+engine(kafka)*/ hint | the API is plain request/response with no subscriptions or mutations | |
| iceberg | a table is written to a data lake — must be paired with at least one Iceberg query engine (the two rows below) | there is no data-lake output | |
| duckdb | iceberg is enabled and the project serves an API, runs tests or runs locally over the Iceberg tables — the only full query engine, the one the server queries | iceberg is not used — never enable duckdb on its own | |
| snowflake, sparksql, redshift, trino | iceberg is enabled and the project needs to query Iceberg tables through that external engine( shallow query engines): the compiler only generates that engine's table definitions and views | iceberg is not used, or the project does not use that external engine | |
| vertx | the project exposes a GraphQL/REST/MCP API | it is a pure ETL/export pipeline with no served API |
Common minimal recipes (pick the smallest that fits, then adjust):
- API over a database, no streaming pub/sub →
["flink", "postgres", "vertx"] - API with subscriptions or mutations →
["flink", "postgres", "kafka", "vertx"] - Data lake queried from Snowflake, no API → base
["flink", "iceberg", "duckdb"]for tests and local runs, prod overlay["flink", "iceberg", "snowflake"] - API over a data lake →
["flink", "iceberg", "duckdb", "vertx"] - API over a data lake that Redshift also queries →
["flink", "iceberg", "duckdb", "redshift", "vertx"] - Catalog / schema test →
["flink", "postgres", "vertx"]
Only enable iceberg plus query engines and postgres if both high-volume & high latency and low latency querying is needed in the same project.
Iceberg query engines come in two kinds. duckdb is the full engine: it is connected to the server and runs the API queries and the tests. snowflake, sparksql, redshift and trino are shallow engines: the compiler generates table definitions and query SQL to run separately in those external engines, and they are not integrated with the DataSQRL server. Read iceberg-query.md before choosing between them.
Configuring the selected engines
Enabled engines are configured under the engines field. Engine settings that hold for every environment go in the base <project>-shared-package.json; only the ones that differ go in an environment overlay, checkout Base Config and Environment Overlays.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingagent/skills/configure-sqrl/SKILL.md
Popularity
- Repository stars
- 231
- Repository forks
- 30
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Extension points
configConfiguration overrides
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/datasqrl/sqrl/configure-sqrl)