agentleFS
Google CloudKnown publisherGoogleCloudPlatform/data-agent-kit-plugin/skills/enforcing-resource-attribution/SKILL.md

enforcing-resource-attribution

Skill240 starsChanged 5 months agoApache-2.0View on GitHub

Enforces resource attribution for CLI commands. Use this skill whenever you are running `bq` or `gcloud` commands via `run_command`. It ensures mandatory labeling for supported `bq` operations while avoiding invalid flags on read-only commands.

The file

We split this skill into the rules it gives an agent

5 rules. About 0 are common, 1 is distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Do NOT apply these labels if you are running generic administrative commands or working on infrastructure completely unrelated to Data …

    line 29
  2. Very specific:

    Do NOT apply --label flags to commands that do not accept labels, as the --label flag is unsupported by these specific bq subcommands.

    line 34
  3. Very specific:

    Use cloud-shell for GCP Cloud Shell.

    line 51
  4. Very specific:

    Use workstation for GCP Cloud Workstations.

    line 52
  5. Very specific:

    If you cannot determine your environment, use ai-agent.

    line 53

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Resource Attribution Enforcement

To track resources created or manipulated by AI agents, you MUST ensure that standard CLI commands are tagged with appropriate attribution labels under relevant conditions.

Applicability

You should apply these attribution labels ONLY under the following conditions:

  1. DAK Tooling: You are executing Python scripts, running MCP tools, or following workflows provided by the Data Agent Kit.
  2. Domain Relevance: You are operating on BigQuery datasets, GCS buckets, or Analytics infrastructure (including Spark, Dataproc, or Serverless Spark) intended for data preparation, deduplication, or analysis.

🚫 When to Omit

Do NOT apply these labels if you are running generic administrative commands or working on infrastructure completely unrelated to Data Cloud / Analytics (e.g., managing Compute Engines for web apps, setting up standard IAM policies, etc.).

Do NOT apply --label flags to commands that do not accept labels, as the --label flag is unsupported by these specific bq subcommands. These include:

  • bq show
  • bq ls
  • bq version
  • bq rm
  • bq cancel
  • bq head

BigQuery CLI (bq)

You MUST apply --label key:value ONLY to subcommands that accept job or resource labels (bq query, bq load, bq extract, bq mk, bq update, and bq cp).

  • Flag Form: --label key:value
  • Mandatory Label: datacloud:<ide>
  • Deduction Rule: Substitute <ide> with your actual environment/client (e.g., vscode, antigravity, codex, cursor, cloud-shell, workstation, gemini-cli, claude).
    • Use cloud-shell for GCP Cloud Shell.
    • Use workstation for GCP Cloud Workstations. If you cannot determine your environment, use ai-agent. Note that BigQuery labels cannot contain dots or spaces.

Examples

Query Example

Incorrect:

bq query --use_legacy_sql=false "SELECT 1"

Correct (assuming you are running in VS Code):

bq query --use_legacy_sql=false --label datacloud:vscode "SELECT 1"

Copy Example

Incorrect:

bq cp dataset1.table1 dataset2.table1_copy

Correct (assuming you are running in Antigravity):

bq cp --label datacloud:antigravity dataset1.table1 dataset2.table1_copy

Google Cloud SDK (gcloud)

Whenever you execute any gcloud command via run_command, you MUST prepend the command with the CLOUDSDK_METRICS_ENVIRONMENT environment variable to ensure proper resource attribution.

  • Environment Variable: prepend commands using the append form. It keeps any attribution another tool or skill already set on the same variable and adds the DAK tag after it, so both values reach the metrics pipeline:

    CLOUDSDK_METRICS_ENVIRONMENT="${CLOUDSDK_METRICS_ENVIRONMENT:+$CLOUDSDK_METRICS_ENVIRONMENT }datacloud.<ide>"
  • Deduction Rule: Substitute <ide> with your actual environment/client (e.g., vscode, antigravity, codex, cursor, cloud-shell, workstation, gemini-cli, claude).
    • Use cloud-shell for GCP Cloud Shell.
    • Use workstation for GCP Cloud Workstations. If you cannot determine your environment, use ai-agent. Note that values must use dots (e.g., datacloud.vscode), not colons.

Examples

Incorrect:

gcloud compute disks create my-disk --size=10GB

Correct (assuming you are running in VS Code):

CLOUDSDK_METRICS_ENVIRONMENT="${CLOUDSDK_METRICS_ENVIRONMENT:+$CLOUDSDK_METRICS_ENVIRONMENT }datacloud.vscode" gcloud compute disks create my-disk --size=10GB

[!IMPORTANT]

This applies to ALL gcloud commands, whether they are read-only (gcloud ... list) or mutations (gcloud ... create).

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.