Code Implementation
apache/shardingsphere
Implement, fix, refactor, or remove repository code under required scope, non-regression, verification, and review gates.
Add Bruin CLI support for a new ingestr source. An agent skill from bruin-data/bruin.
$ npx skills add bruin-data/bruin --skill add-ingestr-source -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install bruin-data/bruin add-ingestr-source --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/bruin-data/bruin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/add-ingestr-source .claude/skills/add-ingestr-source && 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 "add-ingestr-source" agent skill from https://github.com/bruin-data/bruin/tree/main/.agents/skills/add-ingestr-source into .claude/skills/add-ingestr-source/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-ingestr-source", 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/bruin-data/bruin/tree/main/.agents/skills/add-ingestr-sourceType 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 bruin-data/bruin --skill add-ingestr-source -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install bruin-data/bruin add-ingestr-source --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bruin-data/bruin.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/add-ingestr-source .agents/skills/add-ingestr-source && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "add-ingestr-source" agent skill from https://github.com/bruin-data/bruin/tree/main/.agents/skills/add-ingestr-source into .agents/skills/add-ingestr-source/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-ingestr-source", 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 bruin-data/bruin --skill add-ingestr-source -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install bruin-data/bruin add-ingestr-source --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bruin-data/bruin.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/add-ingestr-source .cursor/skills/add-ingestr-source && 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 "add-ingestr-source" agent skill from https://github.com/bruin-data/bruin/tree/main/.agents/skills/add-ingestr-source into .cursor/skills/add-ingestr-source/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-ingestr-source", 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/bruin-data/bruin.git --path .agents/skills/add-ingestr-source--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 bruin-data/bruin --skill add-ingestr-source -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install bruin-data/bruin add-ingestr-source --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bruin-data/bruin.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/add-ingestr-source .gemini/skills/add-ingestr-source && 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 "add-ingestr-source" agent skill from https://github.com/bruin-data/bruin/tree/main/.agents/skills/add-ingestr-source into .gemini/skills/add-ingestr-source/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-ingestr-source", 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 bruin-data/bruin add-ingestr-sourceInstalls 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 bruin-data/bruin --skill add-ingestr-source -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/bruin-data/bruin.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/add-ingestr-source .github/skills/add-ingestr-source && 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 "add-ingestr-source" agent skill from https://github.com/bruin-data/bruin/tree/main/.agents/skills/add-ingestr-source into .github/skills/add-ingestr-source/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-ingestr-source", 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 bruin-data/bruin --skill add-ingestr-source -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install bruin-data/bruin add-ingestr-source --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bruin-data/bruin.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/add-ingestr-source .opencode/skills/add-ingestr-source && 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 "add-ingestr-source" agent skill from https://github.com/bruin-data/bruin/tree/main/.agents/skills/add-ingestr-source into .opencode/skills/add-ingestr-source/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-ingestr-source", 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.
add-ingestr-sourceAdd Bruin CLI support for a new ingestr source. An agent skill from bruin-data/bruin.
Add Ingestr Source is an agent skill from bruin-data/bruin. Add Bruin CLI support for a new ingestr source. Use when a task asks to implement a new ingestr connection/source type, wire that source into Bruin ingestr assets, update available source tables, add ingestion docs or example assets, regenerate connection schema expectations, or address review feedback for a newly added ingestr source.
Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).
It sits in Databases. The repository describes itself as: Build data pipelines with SQL and Python, ingest data from different sources, add quality checks, and build end-to-end flows. The licence is Apache-2.0.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 2f429d6. 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.
Shell commands in SKILL.md call:
makegojqgitFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
getbruin.comFrom 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.
Add Ingestr Source loads about 1.6k tokens when it runs. Until then it costs about 89 tokens; SKILL.md has 670 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); files beside SKILL.md are not scanned.
The full file from bruin-data/bruin at commit 2f429d6, republished under its Apache-2.0 licence (© bruin-data). 670 words, ~1,608 tokens.
.claude/skills/add-ingestr-source/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.source_table values, incremental behavior, primary keys, and any file/table hints.Add or update these files for a new source named <source>:
pkg/<source>/config.go: the Config struct and GetIngestrURI().pkg/<source>/db.go (or client.go, matching the package you copy from): the Client and NewClient.pkg/config/connections.go: add <Source>Connection with YAML/JSON/mapstructure tags and GetName(). Tag every credential/secret field — anything that must not be printed in logs (API keys, tokens, passwords, client secrets, access keys, etc.) — with sensitive:"true" so it is redacted. For fields that hold a path to a credential file (e.g. a service-account JSON or private-key file), use sensitive_file:"true" instead — sensitive:"true" would mask only the path, while sensitive_file:"true" redacts the file's contents.pkg/config/manager.go: add the connection slice to Connections, then update AddConnection, DeleteConnection, and MergeFrom.pkg/connection/connection.go: import the package, add a Manager map, add Add<Source>ConnectionFromConfig, store it in availableConnections and AllConnectionDetails, and process it in NewManagerFromConfigWithContext.pkg/pipeline/pipeline.go: add a defaultMapping entry "<source>": "<source>-default".pkg/ingestr/sources.go: add SourceTablesRegistry["<source>"].docs/ingestion/<source>.md: document .bruin.yml config, ingestr asset YAML, source tables, options, incremental behavior, and example assets.docs/.vitepress/config.mjs: add the docs sidebar entry.pkg/config/manager_test.go: cover the new connection in AddConnection/DeleteConnection/MergeFrom.pkg/config/testdata/simple.yml: add a sample connection block.pkg/config/testdata/simple_win.yml: add the same block (keep in sync with simple.yml).integration-tests/expectations/expected_connections_schema.json: regenerate after the connection schema changes.Add every required and optional parameter from the source URI — do not stop at the common ones. Take the authoritative list from the ingestr repo (bruin-data/ingestr) source code — the source's URI/DSN parser — not just the docs, and match each param's name and type exactly.
For sources without fixed tables, add representative source_table formats instead of pretending the source has enumerated tables. File/path sources usually need examples for exact paths, globs, and format hints.
Build ingestr URIs with net/url.Values; do not concatenate unescaped query parameters.
Validate required fields in deterministic order using a slice, not a map. This keeps user-facing errors stable and makes tests precise.
type requiredField struct {
key string
value string
}
requiredFields := []requiredField{
{"tenant_id", c.TenantID},
{"client_id", c.ClientID},
}
for _, field := range requiredFields {
field.value = strings.TrimSpace(field.value)
if field.value == "" {
return "", fmt.Errorf("%s: %s must be provided", sourceName, field.key)
}
params.Set(field.key, field.value)
}Use pointer fields for optional numeric values where zero is meaningful, such as max_files: 0. Reject negative limits before adding them to the URI.
Add focused tests for:
pkg/<source>.Add<Source>ConnectionFromConfig registering the client and connection details.Config.AddConnection, Config.DeleteConnection, and Connections.MergeFrom.GetSourceTables("<source>") when source-table examples are added.Regenerate the connection schema expectation after adding a connection type:
go run -tags="no_duckdb_arrow" . internal connections | jq . > integration-tests/expectations/expected_connections_schema.jsonInspect the generated diff. Ordering-only movement can happen, but keep only intentional changes.
Base docs on ingestr's source documentation, not guesses. Include:
.bruin.yml connection config with required and optional fields.source_table syntax has variants.source_table formats for path/query-based sources.Keep examples executable-looking but generic. Use the same destination pattern as nearby ingestion docs unless the source needs something different.
Check the pinned ingestr version before bumping it, usually in pkg/python/uv.go. If the upstream source exists only in an unreleased ingestr PR or commit, wire Bruin support but do not bump to a nonexistent release. Mention the release dependency in the final note or PR when relevant.
During iteration, run focused package tests first. Before finishing app-code changes, follow the repo instructions exactly: run make format and make test.
For docs-only follow-ups, use the smallest relevant validation such as git diff --check, Markdown inspection, or docs build if the repo has a fast docs check.
© bruin-data, 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 1 other file in .agents/skills/add-ingestr-source of bruin-data/bruin.
Open the folder on GitHubat commit 2f429d6
Add Ingestr Source 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 |
|---|---|---|---|---|---|---|
| Add Ingestr Source this skillbruin-data/bruin | 1.8k | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Code Implementationapache/shardingsphere | 21k | — | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| Implement Commandredis/node-redis | 18k | — | ~5k | Automated safety check: Pass | MIT | |
| Clickhouse IohellangleZ/burn-in-cceverywhere-ralph | 112 | 14 repos | ~2.5k | Automated safety check: Pass | None | |
| Analyzing Dataastronomer/agents | 451 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Migration Helperwaynesutton/markdown-site | 628 | 1 repos | ~958 | Automated safety check: Pass | MIT |
apache/shardingsphere
Implement, fix, refactor, or remove repository code under required scope, non-regression, verification, and review gates.
redis/node-redis
Add a new Redis command (or command variant) to node-redis end-to-end — the <NAME.ts Command file, its registration with JSDoc in the package commands/index.ts, and a co-located <NAME.spec.ts with…
hellangleZ/burn-in-cceverywhere-ralph
ClickHouse database patterns, query optimization, analytics, and data engineering best practices for high-performance analytical workloads.
astronomer/agents
Queries the data warehouse with SQL and answers business questions about data.
waynesutton/markdown-site
Plan and execute Convex schema migrations safely, including adding fields, creating tables, and data transformations.
cloudflare/skills
Build and troubleshoot Cloudflare Basin analytics workflows with Basin Pipelines, Basin Catalog, and Basin SQL.
bruin-data/bruin
Create, update, render, and visually verify polished Bruin CLI terminal demos with VHS.
bruin-data/bruin
A skill your agent uses when creating, editing, reviewing, or troubleshooting Bruin semantic layer models, semantic query CLI usage, metric and dimension definitions, joins, segments, filters…
bruin-data/bruin
Create DAC dashboards by writing YAML or TSX dashboard definition files.
bruin-data/bruin
A skill your agent uses when duplicate rows, unstable primary keys, repeated ingestion, or failed uniqueness checks appear in a Bruin asset.
bruin-data/bruin
A skill your agent uses when a Bruin pipeline, asset, or command fails and the cause is not yet clear.
bruin-data/bruin
A skill your agent uses when a pipeline fails because source, destination, or declared asset columns may have changed.
Categories
Add Bruin CLI support for a new ingestr source. An agent skill from bruin-data/bruin. Add Ingestr Source is an agent skill from bruin-data/bruin. Add Bruin CLI support for a new ingestr source.
Add Ingestr Source fits situations like: A task asks to implement a new ingestr connection/source type; wire that source into Bruin ingestr assets; update available source tables; add ingestion docs.
Run `npx skills add bruin-data/bruin --skill add-ingestr-source -a claude-code`. Or copy the skill folder (.agents/skills/add-ingestr-source in bruin-data/bruin) into .claude/skills/add-ingestr-source in your project. Claude Code loads it when a task matches its description.
Run `npx skills add bruin-data/bruin --skill add-ingestr-source -a codex`. Or copy the skill folder (.agents/skills/add-ingestr-source in bruin-data/bruin) into .agents/skills/add-ingestr-source 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 bruin-data/bruin --skill add-ingestr-source -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/add-ingestr-source, .gemini/skills/add-ingestr-source, .github/skills/add-ingestr-source and .opencode/skills/add-ingestr-source in your project.
Going by SKILL.md and its folder, Add Ingestr Source needs the command-line tools its instructions call (make, go, jq and git).
SKILL.md names 1 domain. As links in the text: getbruin.com. 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. Review the folder before installing.
Add Ingestr Source 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.6k tokens (SKILL.md is roughly 6.4k 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 Add Ingestr Source: Code Implementation (apache/shardingsphere, 21k stars), Implement Command (redis/node-redis, 18k stars), Clickhouse Io (hellangleZ/burn-in-cceverywhere-ralph, 112 stars) and Analyzing Data (astronomer/agents, 451 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
bruin-data (a GitHub organization) maintains it in bruin-data/bruin, which has 1,774 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on October 8, 2026.
Source: bruin-data/bruin on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.