rudder-profiles-project — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited rudder-profiles-project (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
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.
Create a new Profiles project by discovering real warehouse resources first, then generating the three core YAML files with explicit user confirmation at each decision point.
/rudder-profiles-setup.get_existing_connections().pb init connection in their terminal, wait for confirmation that it completed, then re-check with get_existing_connections().input_table_suggestions() for candidate tables. Call describe_table() on each candidate to confirm columns, types, and timestamps.pb_project.yaml, models/inputs.yaml, and models/profiles.yaml using only discovered names and the exact shapes in references/basic-yaml-templates.md. Derive schema_version from the installed binary (scaffold with pb init pb-project or MCP setup_new_profiles_project(); verify with pb version) — do not hardcode a remembered number. For each event-stream input set contract: { is_event_stream: true, is_append_only: true } plus app_defaults.occurred_at_col (the contract unlocks later incremental migration without a checkpoint-invalidating schema change, and is_append_only is rejected without occurred_at_col). Start with the default ID stitcher (no explicit id_stitcher model) unless the user needs custom edge sources. Add filters: on id_types to exclude junk values ("unknown", "NaN", "", internal test IDs) — the cheapest over-stitching prevention available.references/validation-checklist.md.pb validate access to confirm the warehouse role can read the inputs and write to the output schema. Fix permission gaps here, before compiling.pb compile. If it fails, fix one issue at a time and re-compile.pb run --begin_time <ISO-8601> only after compile succeeds and the user confirms.Never proceed past a gate without explicit user approval:
These are the most common sources of broken projects. Violating any of them will cause compile or run failures:
my_database, example_table, my_connection, or sample_schema. Every resource name must come from MCP discovery or the user.from key, its select MUST use an aggregation function: count, sum, max, min, avg, first_value, or last_value (order-dependent ones need a window: with order_by). A bare column reference in select with from will fail.{{<entity_name>.<var_name>}} — e.g., '{{user.order_count}}' for an entity named user. The first segment is the entity's name from pb_project.yaml, not the literal word entity. Quote the whole select: with single quotes. (The {{user.Var("order_count")}} function form also works but the dot form is preferred.)from: takes a path to a model — inputs/<input_name>, models/<model_name>, or packages/<pkg>/.... pb has no dbt-style ref('...') function.WHERE clauses with date filters in input or profile definitions. Use pb run --begin_time at runtime instead.describe_table() before writing them into YAML. Do not trust user-provided names without verification.pb compile fails, fix one issue at a time and re-run compile before making more edits.pb init connection prompts interactively, let the user complete that step in their terminal.references/basic-yaml-templates.md for file structure and safe defaults.references/validation-checklist.md for the final review before pb compile.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.