Skip to content

OODS lake skills

The skills and agents that help build and run MIP-0075's open ocean data lake: a DuckLake whose catalog and Parquet live in the Cloudflare R2 bucket br-open-ocean-data-storage, written weekly by marola-app's oods module from marola-oods workflows (marola#672). Each one does one or more of five jobs:

Job For the lake
INIT the bucket, tokens and endpoint (a person's, §5.6), the schema as numbered migrations
MANAGE oods maintain: expire snapshots, clean and merge files, backups, size against the free tier
GOV who may write (one writer, the oods-lake group), the two R2 tokens, secrets never persisted, checks never weakened
DEBUG a failed or partial run: fetch_run, the Actions log, time travel to the last good snapshot
CONNECT attaching the catalog READ_ONLY, the TYPE s3 secret on R2's endpoint, reading exports/

Adoption

A skill counts as adopted when a skill or agent in a repo MIP-0075 lands in (marola-oods, marola-app) carries it: a vendored one by its skills.lock row (MIP-0080) naming the same upstream and path, a ported one by the in-house skill it was ported into (oods-lake, whose NOTICE.md credits each source). scripts/refresh.py counts it from the index on every daily run and rewrites the table below and the README's summary; the rest of this file is hand-written.

0 of 13 adopted in MIP-0075's repos. By job: INIT 0/2 · MANAGE 0/6 · GOV 0/5 · DEBUG 0/6 · CONNECT 0/3.

Skill Jobs Upstream Comes in Status Why Caveat
oods-lake INIT, MANAGE, GOV, DEBUG, CONNECT in-house write in marola-oods (marola-dev/marola-oods#23) not yet The lake's own skill: migrations, time travel and recovery, maintenance, checks.sql as a gate, the R2 tokens and bucket rules Stacks on marola-dev/marola-oods#22; its first PR (#24) closed unmerged
oods-lake-reviewer GOV, DEBUG in-house write in marola-oods (agent) not yet Read-only review of a MIP-0075 diff against the lake's invariants: one writer, upload before export, no persistent secret, inlining off, applied migrations never edited, no glob over lake/ Reports, never edits; a person decides
cloudflare INIT, GOV cloudflare/skills (Apache-2.0) vendor into marola-oods not yet Cloudflare's own product map, with references/r2/ (S3 API, tokens, lifecycle, limits, pricing, gotchas) Points at live docs, not facts; R2 setup stays a person's (MIP-0075 §5.6)
s3-explore CONNECT, DEBUG duckdb/duckdb-skills (MIT) vendor into marola-oods not yet Lists the bucket and reads Parquet metadata without downloading data (read_blob without content, parquet_metadata) Its R2 row is a TYPE R2 secret on r2://; the lake uses TYPE s3 on s3:// (§4.4). Its FROM '<glob>' preview returns wrong rows on lake/ after an update: list and read metadata only, query through an attach
attach-db CONNECT duckdb/duckdb-skills (MIT) vendor into marola-oods not yet Attaches a local copy of oods.ducklake and keeps the session for query Its state.sql may hold secrets in plain text: attach READ_ONLY, keep the R2 secret out of it
query DEBUG duckdb/duckdb-skills (MIT) vendor into marola-oods not yet Runs SQL on the attached lake (beach_point, fetch_run, AT (VERSION => n)); sets allow_persistent_secrets=false Read-only by use, not by design: the attach must be READ_ONLY
duckdb-docs DEBUG, MANAGE duckdb/duckdb-skills (MIT) vendor into marola-oods not yet Full-text search over the DuckDB and DuckLake docs, so an answer cites the version the lake pins Downloads the search indexes and installs httpfs and fts locally; never in a job
motherduck-ducklake MANAGE motherduckdb/agent-skills (MIT) port into oods-lake not yet DuckLake maintenance as explicit operations (ducklake_flush_inlined_data, merge_adjacent_files), the single-writer reality, the version matrix Written for MotherDuck: keep the DuckLake parts, drop the product's
iceberg MANAGE gordonmurray/data-engineering-skills (MIT) port into oods-lake not yet The Inspect first, Decide, Safety, Verify shape; retention windows, orphan cleanup, rollback Iceberg, not DuckLake: structure and rules only
hops-table-maintenance MANAGE logicalclocks/hopsworks-api (Apache-2.0) port into oods-lake not yet Evidence from a script, a reviewable plan, approval per destructive step, dry run, before and after Spark and feature groups: the workflow only
b2-cloud-storage GOV, MANAGE backblaze-labs/claude-skill-b2-cloud-storage (MIT) port into oods-lake not yet Object-store safety rules (read-only by default, dry run and an explicit yes before a delete, never public) and the size and cost audit Re-point from B2 to R2: no versioning, no spend cap
troubleshooting-dbt-job-errors DEBUG dbt-labs/dbt-agent-skills (Apache-2.0) port into oods-lake not yet Diagnosing a failed scheduled job from its logs, history and data, and "never modify a test to make it pass" (for checks.sql) dbt Cloud: map its logs and API to the Actions run and fetch_run
security-audit GOV cloudflare/security-audit-skill (MIT) vendor into marola-oods not yet A security review of the ETL workflows and the oods module, which hold the R2 write token Run its full workflow only on an explicit audit request; findings go to a person

Upstream commits and licences were read from fresh clones on 2026-10-10. "Comes in" is a proposal: vendoring is a PR in marola-oods pinned in its skills.lock, porting goes through marola-oods#23.

Looked at and left out

Skill Upstream Why not
wrangler cloudflare/skills The lake uses the AWS CLI and DuckDB's S3 API, not Wrangler; the bucket and tokens are a person's. A fit for marola-site's Worker (#12)
basin cloudflare/skills R2 Iceberg tables through Basin Catalog: a different table format and a paid product path, rejected by MIP-0075 §4.4
install-duckdb duckdb/duckdb-skills Installs extensions from the network; MIP-0075 row 2 pins them by sha256 and a job never downloads code
motherduck-connect, motherduck-security-governance motherduckdb/agent-skills MotherDuck's service, which the lake does not use

Not counted

MIP-0075 is already delivered with the team's workflow skills, which are not lake skills: mip-tasks and mip-reviewer (the devkit) run its task stack, and jar-verifier (marola-app) checks the Kyo signatures §5.4 calls indicative. They are in the catalogue.