Write Script Bigquery
windmill-labs/windmill
MUST use when writing BigQuery queries.
Scaffold, build, and verify a neocarta source or format connector against the connector contract.
$ npx skills add neo4j-labs/neocarta --skill neocarta-add-source-connector -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install neo4j-labs/neocarta neocarta-add-source-connector --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/neo4j-labs/neocarta.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/neocarta-add-source-connector .claude/skills/neocarta-add-source-connector && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "neocarta-add-source-connector" agent skill from https://github.com/neo4j-labs/neocarta/tree/main/.claude/skills/neocarta-add-source-connector into .claude/skills/neocarta-add-source-connector/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "neocarta-add-source-connector", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/neo4j-labs/neocarta/tree/main/.claude/skills/neocarta-add-source-connectorType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add neo4j-labs/neocarta --skill neocarta-add-source-connector -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install neo4j-labs/neocarta neocarta-add-source-connector --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/neo4j-labs/neocarta.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/neocarta-add-source-connector .agents/skills/neocarta-add-source-connector && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "neocarta-add-source-connector" agent skill from https://github.com/neo4j-labs/neocarta/tree/main/.claude/skills/neocarta-add-source-connector into .agents/skills/neocarta-add-source-connector/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "neocarta-add-source-connector", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add neo4j-labs/neocarta --skill neocarta-add-source-connector -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install neo4j-labs/neocarta neocarta-add-source-connector --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/neo4j-labs/neocarta.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/neocarta-add-source-connector .cursor/skills/neocarta-add-source-connector && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "neocarta-add-source-connector" agent skill from https://github.com/neo4j-labs/neocarta/tree/main/.claude/skills/neocarta-add-source-connector into .cursor/skills/neocarta-add-source-connector/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "neocarta-add-source-connector", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/neo4j-labs/neocarta.git --path .claude/skills/neocarta-add-source-connector--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add neo4j-labs/neocarta --skill neocarta-add-source-connector -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install neo4j-labs/neocarta neocarta-add-source-connector --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/neo4j-labs/neocarta.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/neocarta-add-source-connector .gemini/skills/neocarta-add-source-connector && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "neocarta-add-source-connector" agent skill from https://github.com/neo4j-labs/neocarta/tree/main/.claude/skills/neocarta-add-source-connector into .gemini/skills/neocarta-add-source-connector/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "neocarta-add-source-connector", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install neo4j-labs/neocarta neocarta-add-source-connectorInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add neo4j-labs/neocarta --skill neocarta-add-source-connector -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/neo4j-labs/neocarta.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/neocarta-add-source-connector .github/skills/neocarta-add-source-connector && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "neocarta-add-source-connector" agent skill from https://github.com/neo4j-labs/neocarta/tree/main/.claude/skills/neocarta-add-source-connector into .github/skills/neocarta-add-source-connector/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "neocarta-add-source-connector", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add neo4j-labs/neocarta --skill neocarta-add-source-connector -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install neo4j-labs/neocarta neocarta-add-source-connector --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/neo4j-labs/neocarta.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/neocarta-add-source-connector .opencode/skills/neocarta-add-source-connector && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "neocarta-add-source-connector" agent skill from https://github.com/neo4j-labs/neocarta/tree/main/.claude/skills/neocarta-add-source-connector into .opencode/skills/neocarta-add-source-connector/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "neocarta-add-source-connector", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
neocarta-add-source-connectorScaffold, build, and verify a neocarta source or format connector against the connector contract.
Neocarta Add Source Connector is an agent skill from neo4j-labs/neocarta. Scaffold, build, and verify a neocarta source or format connector against the connector contract. Use when asked to add/create/scaffold/write a new connector (BigQuery, Dataplex, query log, CSV, OSI, etc.), port a data source into neocarta, or check that a connector conforms to the standard.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `connector-contract.md` and `scripts/driver.py`).
It sits in Databases, covering Data warehousing and CSV and tabular files. It works with Google BigQuery. The repository describes itself as: Library built for generating semantic layer graphs for query routing, query generation and data discovery. The licence is Apache-2.0.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit ba6bf79. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
uvmakeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Neocarta Add Source Connector loads about 1.9k tokens when it runs. Until then it costs about 81 tokens; SKILL.md has 721 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from neo4j-labs/neocarta at commit ba6bf79, republished under its Apache-2.0 licence (© neo4j-labs). 721 words, ~1,905 tokens.
.claude/skills/neocarta-add-source-connector/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Build a new connector under neocarta/connectors/ that satisfies the connector
contract. This file is the operational loop for authoring one; the full prose
standard lives in
connector-contract.md
(read it before designing a connector). The contract is also made executable in
neocarta/connectors/_base.py (runtime-checkable
SourceConnectorProtocol / FormatConnectorProtocol) and enforced per-connector
by a test_conformance.py. Drive the whole loop with the driver:
.claude/skills/neocarta-add-source-connector/scripts/driver.py, run through uv.
All paths below are relative to the repo root.
Building the connector library package and wiring it into the neocarta CLI are
separate PRs. This skill covers only the library connector — the package under
neocarta/connectors/, its tests, and its README. Do not add a CLI subcommand
(neocarta/_cli/) in the same PR. CLI integration lands in a follow-up PR.
The managed environment only — no system packages needed for scaffold/verify.
uv sync --all-groupsRunning the integration tests (a real ingest into Neo4j) additionally needs
Docker — the suite spins up a Neo4j testcontainer (tests/integration/conftest.py).
# See every connector and its detected kind (source/format):
uv run .claude/skills/neocarta-add-source-connector/scripts/driver.py list
# Scaffold a new flat source connector (creates package + conformance test):
uv run .claude/skills/neocarta-add-source-connector/scripts/driver.py scaffold salesforce
# A data-type sub-connector (sub-folder under a parent source):
uv run .claude/skills/neocarta-add-source-connector/scripts/driver.py scaffold salesforce/schema
# A format connector (adds the export() orchestrator):
uv run .claude/skills/neocarta-add-source-connector/scripts/driver.py scaffold acme_yaml --format
# Verify any connector against the contract (static checks + conformance pytest):
uv run .claude/skills/neocarta-add-source-connector/scripts/driver.py verify salesforce<pkg> is a path under neocarta/connectors/. --class-name overrides the
derived class name; --force overwrites a non-empty package dir.
scaffold writes a conformant skeleton: __init__.py, connector.py (all
stage methods with the state-guard + deprecation-shim wiring already correct),
extract.py, transform.py, README.md, and
tests/unit/connectors/<pkg>/test_conformance.py. The skeleton passes verify
as-is — you then fill the TODOs in extract/transform/load.
verify reports import + protocol conformance (source vs format, via
issubclass), __all__ minimalism, README.md presence, inline-id-f-string and
stray-print() warnings, then runs the connector's test_conformance.py. It exits
non-zero on any FAIL. Warnings (e.g. an id f-string or a print()) don't fail the
run but should be fixed.
scaffold the package (flat, sub-connector, or --format).extract.py (populate the extractor cache, expose @property
accessors, decorate extract_*_info methods with @log_stage), transform.py
(build data_model objects via generate_id helpers), and the load() body
(call self.loader.load_* for your node / relationship types). Fill
_TRANSFORM_COUNTS so log_transform_counts reports per-type counts — see
logging conventions in contract §16.README.md (see contract §12).verify until green. Add behavior-specific unit tests beyond conformance.CHANGELOG.md.make test-unit # all unit tests
make fmt && make lint # ruff format + lint — must be clean before PR
make test-it # integration: real ingest into a Neo4j testcontainer (Docker)Both the driver and the code it scaffolds are held to the project's
select = ["ALL"] ruff rules — a freshly scaffolded connector is lint-clean and
format-clean as generated, so make lint stays green before you've written any
implementation. The stub extract() / export() bodies raise
NotImplementedError until you implement them.
The full standard — connector kinds, directory layout, the public stage API,
constructor-vs-method config, filtering, versioning, errors/warnings, loader
scoping, lifecycle, __init__ exports, the required README, and id generation —
lives in
connector-contract.md.
Read it before designing a connector. _base.py and every
test_conformance.py cite it as the canonical reference.
None in the skeleton
(extract(self, source: str | None = None), ingest, run). This is
deliberate: the conformance test calls connector.run() argless to assert the
DeprecationWarning, mirroring how CSVConnector (whose inputs live on the
constructor) is tested. Replace source with the real signature/type once the
source inputs are known — but if you make an arg required, update the generated
run test to pass one.__init__,
per-call inputs on extract/ingest.__init__.py: scaffolding foo/schema leaves a stub
foo/__init__.py — add the from .schema import FooSchemaConnector re-export
yourself (see bigquery/__init__.py).version / SUPPORTED_VERSIONS or export —
format-connector only.*Extractor/*Transformer/*Loader out
of __all__ is enforced by both verify and the conformance test.print() (§16): progress goes through the module logger
(logging.getLogger(__name__)). Decorate the real extract_*_info methods with
@log_stage, fill _TRANSFORM_COUNTS so log_transform_counts reports per-type
counts, and let the loader log its own per-pattern write counts. Never log SQL,
row values, or secrets — counts, labels, targets, and elapsed only. The scaffold
generates this wiring, and verify warns on any stray print().verify FAIL: DID NOT WARN ... connector.run() / missing 1 required positional argument —
your run()/ingest() require a positional the conformance test doesn't pass.
Either default the arg to None or update the generated test to pass one.list shows (no exported connector) (e.g. databricks) — the package's
__init__.py doesn't export a *Connector in __all__ yet (work in progress).verify FAIL: cannot import ... — missing optional dep for that source
(e.g. google.cloud.bigquery). uv sync --all-groups pulls the lot.© neo4j-labs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (scripts) in .claude/skills/neocarta-add-source-connector of neo4j-labs/neocarta.
Open the folder on GitHubat commit ba6bf79
Neocarta Add Source Connector next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Neocarta Add Source Connector this skillneo4j-labs/neocarta | 147 | — | ~1.9k | Automated safety check: Pass | Apache-2.0 | |
| Write Script Bigquerywindmill-labs/windmill | 18k | — | ~2.2k | Automated safety check: Pass | Custom licence | |
| Bigquery Sentimentinfometa/workbuddyskills | 348 | — | ~3.3k | Automated safety check: Warn | None | |
| Foundationsopenshift-eng/ai-helpers | 120 | — | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| Ga4 Bigquery Schemacognyai/claude-code-marketing-skills | 104 | — | ~4.7k | Automated safety check: Notes | None | |
| Gx Ga4 Expertcriptogus/agent-evolve-network | 288 | — | ~749 | Automated safety check: Pass | MIT |
windmill-labs/windmill
MUST use when writing BigQuery queries.
infometa/workbuddyskills
Core skill for game sentiment querying and analysis. An agent skill from infometa/workbuddyskills.
openshift-eng/ai-helpers
A skill your agent uses when executing any BigQuery CI data query — provides the shared safety protocol, cost controls, bq CLI patterns, and caching workflow
cognyai/claude-code-marketing-skills
GA4 BigQuery Export Schema Reference — complete field reference, nested structures, query patterns, and performance tips
criptogus/agent-evolve-network
Configure GA4 properties, GTM, custom events, conversions, audiences, and BigQuery export.
AltimateAI/data-engineering-skills
Delegates dbt and warehouse tasks such as lineage, migrations and cost attribution to the altimate-code CLI agent and relays its answer back.
neo4j-labs/neocarta
Scaffold, wire, and verify a neocarta CLI command that wraps a source/format connector (the neocarta <source <verb integration that follows building the library connector).
Works with
Categories
Scaffold, build, and verify a neocarta source or format connector against the connector contract. Neocarta Add Source Connector is an agent skill from neo4j-labs/neocarta. Scaffold, build, and verify a neocarta source or format connector against the connector contract.
Neocarta Add Source Connector fits situations like: asked to add/create/scaffold/write a new connector (BigQuery; port a data source into neocarta; check that a connector conforms to the standard.
Run `npx skills add neo4j-labs/neocarta --skill neocarta-add-source-connector -a claude-code`. Or copy the skill folder (.claude/skills/neocarta-add-source-connector in neo4j-labs/neocarta) into .claude/skills/neocarta-add-source-connector in your project. Claude Code loads it when a task matches its description.
Run `npx skills add neo4j-labs/neocarta --skill neocarta-add-source-connector -a codex`. Or copy the skill folder (.claude/skills/neocarta-add-source-connector in neo4j-labs/neocarta) into .agents/skills/neocarta-add-source-connector in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add neo4j-labs/neocarta --skill neocarta-add-source-connector -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/neocarta-add-source-connector, .gemini/skills/neocarta-add-source-connector, .github/skills/neocarta-add-source-connector and .opencode/skills/neocarta-add-source-connector in your project.
Going by SKILL.md and its folder, Neocarta Add Source Connector needs Python for the scripts in its folder and the command-line tools its instructions call (uv and make). Our summary lists: Python 3; Docker.
SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Neocarta Add Source Connector is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Neocarta Add Source Connector: Write Script Bigquery (windmill-labs/windmill, 18k stars), Bigquery Sentiment (infometa/workbuddyskills, 348 stars), Foundations (openshift-eng/ai-helpers, 120 stars) and Ga4 Bigquery Schema (cognyai/claude-code-marketing-skills, 104 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
neo4j-labs (a GitHub organization) maintains it in neo4j-labs/neocarta, which has 147 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 9, 2026.
Source: neo4j-labs/neocarta on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.