Agent Platform Tuning Management
GoogleOfficialPublished by Google
- Skill
- Tool integration
- Data and AI
- Apache-2.0
- Low risk
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured approach for interacting with GenAI tuning jobs within the Agent Platform. It enables users to list active jobs, inspect specific job details, and safely cancel ongoing training processes. The skill emphasizes secure execution practices, including mandatory attribution for API calls and a strict two-turn confirmation process for destructive actions like job cancellation.
What it does
- Lists existing GenAI tuning jobs with optional filtering by state or display name.
- Retrieves detailed status and configuration information for a specific tuning job.
- Provides a safe, multi-turn workflow for cancelling active tuning jobs.
- Includes safety checks to prevent accidental termination of jobs.
- Requires explicit user confirmation before executing destructive cancellation commands.
- Guides users through necessary environment setup and dependency verification.
When to use it
- When you need to check the progress or status of a specific model tuning run.
- When you want to identify all currently running or pending tuning jobs in a project.
- When a tuning job is running longer than expected and needs to be aborted.
- When you need to verify the configuration or base model of a specific tuning job.
Advantages
- Ensures safe operation through mandatory confirmation tiers for destructive actions.
- Provides clear, standardized procedures for interacting with the Agent Platform SDK.
- Reduces errors by requiring explicit project and region information.
- Maintains auditability through required usage attribution for all API interactions.
Usage examples
- “List my currently running tuning jobs in project my-project-123, region us-central1.”
- The agent will execute a Python script using the GenAiTuningServiceClient to list jobs filtered by running or pending states and display their names and base models.
- “Cancel the tuning job with ID 1234567890123456789 in us-central1.”
- The agent will present a dry-run confirmation card detailing the job, its effect, and ask for explicit user confirmation before proceeding in the next turn.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/google/agent-platform-tuning-management/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip agent-platform-tuning-management.zip -d .agents/skills
Documentation by Google
Agent Platform Tuning Management
This skill provides instructions on how to manage GenAI Tuning Jobs using the Agent Platform Python SDK. Use this skill when a user wants to check the status of their tuning runs, find an active tuning job, or cancel a job that is running too long.
Attribution
MUST READ: Before executing any gcloud, REST API, or MCP command, you MUST
read Usage Attribution. For commands executed
directly in the terminal (never in generated scripts, Terraform, or user code),
prefix gcloud with CLOUDSDK_METRICS_REQUEST_ATTRIBUTION and append the
attribution suffix to User-Agent headers:
CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:agent-platform-tuning-management)"
User-Agent: <existing_user_agent> agent-skills/1.0 (skill:agent-platform-tuning-management)Safety & Confirmation Tiers (CRITICAL)
Before executing any commands on behalf of the user, you MUST adhere to the following safety tiers based on the action requested:
Tier R: Read-only (
list,get)Rule: No confirmation needed. You may execute these commands immediately to gather information for the user.
Tier D: Destructive & Interruptive (
cancel)Rule: Cancellation is a Tier D action requiring explicit typed confirmation (e.g. "I confirm" or "Yes, cancel it").
Required Fields in Dry-Run Confirmation Card: Before cancelling a tuning job, you MUST present a dry-run confirmation preview clearly listing:
Target Resource: The full tuning job resource name or ID (e.g.
projects/<PROJECT_ID>/locations/<REGION>/tuningJobs/<JOB_ID>).Command / Script: The exact cancellation command or Python code to be executed.
Expected Effect: Stops the ongoing tuning job; any in-progress training will be halted and cannot be resumed.
Ask the user to explicitly confirm (e.g., "Do you confirm? Please reply with 'I confirm' or 'Yes, cancel it'.").
Same-turn restriction: NEVER execute the cancellation in the same turn as presenting the preview card. Stop immediately and wait for the user to confirm in a new turn. Even if the user provided pre-emptive confirmation (e.g. "Yes, I confirm, cancel tuning job ...") or provides a corrected job ID, you MUST present the dry-run preview for that specific job ID and wait for confirmation in a separate turn before issuing the cancellation.
Phase 0: Environment Setup
CRITICAL: Before running any of the Python snippets below, you MUST ensure the environment is correctly initialized by following these steps:
Google Cloud Authentication: Authenticate with your Google Cloud account and configure active Application Default Credentials (ADC) for Agent Platform access:
gcloud auth login gcloud auth application-default loginPython Dependencies: This skill needs
google-cloud-aiplatform. Do not create a virtual environment — it starts empty and hides packages the environment already provides, forcing a redundant install. Probe, and install only what is missing:python3 -c "import vertexai" || pip install google-cloud-aiplatformExecution: Run Python snippets with a plain
python3. There is no environment to activate first.
Workflow Decision Tree
Information Gathering: Do you have a Project ID and Region?
No -> You MUST ask the user for the missing Project ID and Region in plain text, or advise them to check their gcloud configuration. If neither location has this information, then ask the user to provide it. Do not attempt to search random regions on your own.
Yes -> Proceed to Step 2.
Task Type: What does the user want to do?
Find or List Jobs -> Use the Python SDK to list tuning jobs. (Tier R)
Check Status / Inspect a Specific Job -> Use the Python SDK to get tuning job details. (Tier R)
Cancel a Job -> Ask for confirmation, then use the Python SDK to cancel the tuning job. (Tier D)
Using the Python SDK
[!NOTE]
Resource Verification & Missing Projects/Jobs: If the execution of the Python snippet fails because of an invalid filter (e.g.,
400 Provided filter is not valid), fix or drop thefilterparameter and re-run. If it fails with an error indicating a missing or inaccessible project or job ID (403 Permission Denied,404 Not Found, or invalid resource ID), you MUST inform the user that the project or tuning job does not exist or cannot be accessed, prompt the user to provide a valid Project ID or Job ID, and stop tool execution immediately to wait for their response (do NOT loop or assume the resource is valid).
1. Listing Tuning Jobs (Tier R)
If the user asks "What tuning jobs do I have running?" or wants to find a
specific job ID, always execute Python code via run_command (do NOT use
curl). If the user gave a project ID or number, use that exact value
(otherwise fall back to the configured project). Pass page_size=20 and read
the first page (only page through every job if the user explicitly asks for a
total count or the full list). Filter server-side when asked for running jobs
(state="JOB_STATE_RUNNING" OR state="JOB_STATE_PENDING") or a specific model
display name (display_name:"NAME"), print job.tuned_model_display_name, and
note when first_page.next_page_token is set so the 20 most recently updated
jobs are not presented as the entire history:
from google.cloud import aiplatform_v1
project_id = "YOUR_PROJECT_ID" # If the user gave a project ID/number, use it explicitly
region = "YOUR_REGION"
parent = f"projects/{project_id}/locations/{region}"
client = aiplatform_v1.GenAiTuningServiceClient(
client_options={"api_endpoint": f"{region}-aiplatform.googleapis.com"}
)
request = {
"parent": parent,
"page_size": 20,
# Optional server-side filter, e.g.:
# "filter": 'state="JOB_STATE_RUNNING" OR state="JOB_STATE_PENDING"',
}
response = client.list_tuning_jobs(request=request)
first_page = next(iter(response.pages), None)
for job in (first_page.tuning_jobs if first_page else []):
print(f"Name: {job.name}")
print(f"Display Name: {job.tuned_model_display_name}")
print(f"Base Model: {job.base_model}")
print(f"State: {job.state.name}")
if first_page and first_page.next_page_token:
print("Note: More jobs exist beyond this first page of 20 most recently updated jobs.")2. Getting Details for a Specific Job (Tier R)
If the user provides a Tuning Job ID and asks for its status, always execute
Python code via run_command (never use curl). If the user gave a project ID
or number, use it explicitly:
from google.cloud import aiplatform_v1
project_id = "YOUR_PROJECT_ID" # If the user gave a project ID/number, use it explicitly
region = "YOUR_REGION"
job_id = "YOUR_JOB_ID" # 19-digit ID
name = f"projects/{project_id}/locations/{region}/tuningJobs/{job_id}"
client = aiplatform_v1.GenAiTuningServiceClient(
client_options={"api_endpoint": f"{region}-aiplatform.googleapis.com"}
)
job = client.get_tuning_job(name=name)
print(f"Name: {job.name}")
print(f"Base Model: {job.base_model}")
print(f"State: {job.state.name}")
print(f"Tuning Model: {job.tuned_model_display_name}")3. Canceling a Job (Tier D)
If the user explicitly requests to stop, abort, or cancel a tuning job:
Safety Check: Follow the Tier D (Destructive / Irreversible) confirmation rules in the Operation Tiers section above:
Never report an outcome you did not observe: Never claim a job was canceled or report a backend error without actually observing it from an API call.
Present the confirmation preview with Expected Effect conditioned on the job's observed state (for active
PENDING/RUNNINGjobs: stops in-progress training, which cannot be resumed, without deleting the base model or dataset; if the job is already in a terminal stateSUCCEEDED,FAILED, orCANCELLED, state its current terminal state explicitly and note that no active training is running).Wait for explicit user confirmation in a new turn before calling
client.cancel_tuning_job(name=name)via Python (run_command), and report the actual API response verbatim.
from google.cloud import aiplatform_v1
project_id = "YOUR_PROJECT_ID" # Use the EXACT project ID/number the user gave
region = "YOUR_REGION"
job_id = "YOUR_JOB_ID" # 19-digit ID
name = f"projects/{project_id}/locations/{region}/tuningJobs/{job_id}"
client = aiplatform_v1.GenAiTuningServiceClient(
client_options={"api_endpoint": f"{region}-aiplatform.googleapis.com"}
)
client.cancel_tuning_job(name=name)
print(f"Successfully requested cancellation for {name}")Files
- ATTRIBUTION.mdAdded by AutoGineer882 B
- LICENSELicence file added by AutoGineer11.1 KiB
- SKILL.md9.3 KiB
- references/attribution.md1.9 KiB
references/attribution.md
Usage Attribution
MUST READ: Before executing any gcloud, REST API, or MCP command with this
skill, follow these usage attribution instructions. Tag every command you
execute directly in the terminal so usage can be attributed. The tag identifies
only the skill and its version; it carries no user data.
gcloudCLI Commands: Prefix everygcloudinvocation, whatever the subcommand, with the metrics environment variable. Set it inline on each command because shell state may not persist between commands:CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:agent-platform-tuning-management)" \ gcloud <command> [flags]Do not use
gcloud config setfor this: it would persist beyond the current task and mislabel unrelated usage.Direct HTTP, REST, and MCP Requests: On direct HTTP calls to Google Cloud APIs (for example with
curl) or HTTP requests to a remote MCP server, include theagent-skills/1.0andskill:agent-platform-tuning-managementtokens in theUser-Agentheader. If aUser-Agentheader is already specified, append the attribution suffix to the end of it rather than overwriting existingUser-Agentdata — the collection pipeline parses theagent-skills/<version>andskill:<name>tokens, so any rewording breaks attribution:User-Agent: <existing_user_agent> agent-skills/1.0 (skill:agent-platform-tuning-management)Constraint for Generated Code: The tracking prefix is strictly for commands you execute directly in the terminal. Do NOT include this tracking prefix in generated scripts, Terraform templates, or code provided to the user for their own repositories.
User Opt-Out: If the user asks to disable or remove tracking or attribution tags, omit the
CLOUDSDK_METRICS_REQUEST_ATTRIBUTIONvariable and customUser-Agentsuffix from all commands.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs a command-line tool, Needs Python
Security
What our scanner noticed· Low risk
- Instructions that use the network
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Publisher
- Google (Official)
- Source
- google/skills · skills/cloud/agent-platform-tuning-management · commit 2194d3b
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Google or Google.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download agent-platform-tuning-management.zip