data-pipeline — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited data-pipeline (Agent Skill) and scored it 45/100 (orange). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 1 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
A base64 string of 128+ characters appears in a documentation file. Encoded prompt injection hides the hostile instruction in base64 — invisible to keyword filters — and relies on the agent's ability to decode it at runtime. There is no normal authoring reason to embed a multi-hundred-byte base64 blob in skill docs.
*.sig, SIGNATURES) outside the documentation.Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Pipelines fail silently: a retry double-counts, a partial write corrupts a table, a schema drift poisons a dashboard, and nobody notices until the numbers are wrong. This skill bakes correctness in at build time. It complements sbc-qa-data-integrity-audit (which detects these after the fact) and the Supabase plugin (DB/Edge Functions/RLS).Any job that moves, transforms, or aggregates data: ingestion/ETL/ELT, scheduled aggregations, edge-function workers, pg_cron jobs, queue consumers, webhook processors, backfills, materialized-view refreshes.
INSERT ... ON CONFLICT (natural_key) DO UPDATE (upsert), not blind INSERT.now() or a random id.count = count + 1 on a path that can retry.any-cast them downstream.pipeline_runs table or logs), don't just console.log.Raw → land source data unchanged, append-only, with ingested_at + source id
Staged → cleaned, typed, validated, deduped (1 row per natural key)
Curated → business entities, joined/enriched, the query surface
Aggregated→ rollups / metrics / materialized views for dashboardsEach layer is rebuildable from the one before it. Never transform-in-place on raw; never let dashboards read raw.
--from, --to / date partition), not "everything since forever". The same code runs the nightly slice and the historical backfill.try/catch {} that swallows errors is banned.count = count + 1 / balance = balance + x on a retryable path → not idempotent.SELECT * into a typed model without a contract → schema drift time bomb.pg_try_advisory_lock / "skip if running".pg_cron is at-least-once and can overlap under load → make the SQL/function idempotent and guard with an advisory lock.full-stack-ship-discipline.audit-db-schema — the schema/constraints the pipeline writes into.supabase-postgres-best-practices — Postgres-level query/index tuning (official Supabase plugin).full-stack-ship-discipline — deploy + verify functions/cron/policies on the remote.workflow-spec-workflow-spec-tdd — spec the contract + test idempotency/edge cases before coding.sbc-qa-data-integrity-audit — post-hoc detection of the failures this prevents.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.