Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/googlecloudplatform/cortex-framework/create_data_productnpx skills add GoogleCloudPlatform/cortex-framework --skill create_data_productgit clone --depth 1 https://github.com/GoogleCloudPlatform/cortex-frameworkWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00021 | $0.02897 |
| Opus 5 | $0.00010 | $0.01448 |
| Sonnet 5 | $0.00004 | $0.00579 |
| Haiku 4.5 | $0.00002 | $0.00290 |
Grade A, and why
create-data-product scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 120 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Creating a New Data Product
CRITICAL OPERATIONAL RULE: You are an end-to-end deployment agent, not just a code generator. Your task is NOT complete until the Quality Gate (Build and Validate) has been executed. You MUST NOT stop after writing the files.
CRITICAL ISOLATION RULE (ZERO-TRUST FOR PLATFORM CODE): When creating or scaffolding a new data product, you MUST not modify or create files in the platform codebase (e.g., cortex-framework-core/src/common/, src/common/). Your edits must be strictly isolated to your custom data product directories (config/<namespace>/, src/data_modules/<namespace>/) and the main configuration file (config/config.yaml). Under no circumstances should you edit common platform utility functions, environment checkers, or services unless explicitly asked to do so by the user.
Step 1: Plan and Confirm
- Determine SAP Source Version (CRITICAL): You MUST explicitly ask and establish with the user whether the data product is designed for ECC, S/4HANA, or Both. Without this knowledge, proper implementation is impossible.
- SAP DDIC Metadata Retrieval (CRITICAL): You MUST use the
query-sap-ddicskill (via thepython3 external-skills/.agents/skills/query_sap_ddic/scripts/query_sap_ddic.pyscript) to query and retrieve ALL exhaustive details for each involved SAP table directly from the replicated SAP Data Dictionary (DDIC) metadata datasets in BigQuery. - Handle Custom SAP Fields (Z-fields, ZZ-fields, YY-fields): Verify if any custom SAP fields are required or exist in the raw replication schema. You MUST use the
query-sap-ddicskill to lookup their metadata structure, ABAP technical types, lengths, and check tables, and explicitly document their mapping in your implementation plan. - Handle Schema Differences Explicitly: Analyze the retrieved schema specs and explicitly identify and list any structural, field name, or data type differences between ECC and S/4HANA. Your implementation plan must explicitly handle these differences (e.g., using separate folders like
annotations/ecc/vsannotations/s4/, or conditional logic in the SQL definitions). - Identify and Validate Foundations: Check available data foundations in
src/data_modules/<namespace>/<source>/foundations/sap/andconfig/<namespace>/<source>/foundations/sap/. You MUST verify all required tables exist insrc/data_modules/<namespace>/<source>/foundations/sap/table_settings.default.yaml. If any tables are missing, explicitly document them in your implementation plan and define a sub-plan to manually scaffold them:- Developer Role (extending the codebase): Modify
table_settings.default.yamldirectly to add the missing tables. - End User/Deployer Role (configuring a target deployment): Do NOT modify
table_settings.default.yamldirectly. Instead, make a copy oftable_settings.default.yamlwith a custom name (e.g.,table_settings.yaml), add the missing tables to it, and reference this new file in the activeconfig.yamlusing thetableSettingsproperty. Ensure any new tables are inserted at the correct position to preserve alphabetical sorting bytableNamewithins4,ecc, andcommon. Fetch their schema via DDIC lookup skills, and generate theirannotations.yamlfiles in the foundation directory.
- Developer Role (extending the codebase): Modify
- Verify Custom Namespace: In accordance with the Cortex V7 Extensibility Guide, custom development MUST be placed in a custom namespace (e.g.,
custom,myorg) rather than the standardcortexnamespace to prevent conflicts and ensure clean upgrades.- If a custom namespace has not been specified, you MUST explicitly ask the user to provide a custom namespace name before proposing the plan.
- If the user explicitly instructs you to use the standard
cortexnamespace, you MUST warn them that modifying the standard namespace is against extensibility best practices and risks being overwritten during future upgrades. Obtain explicit confirmation before proceeding with thecortexnamespace.
- Propose Name: Suggest a descriptive name using snake_case.
- Legacy Model Reference: If legacy specifications or references are available, check if the data product models an existing or similar legacy data model.
- Research Field Mappings: Research the relevant field mappings between the data foundation and the new data product models, including the reasoning for each mapping, so the user can adjust them if needed.
- Evaluate Need for ABAP Source Code (CRITICAL): Depending on the user-provided requirements, your general understanding of SAP systems, the target version (ECC/S4HANA), and the business logic/modeling goals, evaluate if custom or standard ABAP program details are necessary to model the data product correctly (e.g. to replicate complex transaction statuses, calculations, or custom business rules). If required, you MUST explicitly ask the user for the relevant ABAP program names, specifications, or source code blocks.
- Propose Unit Tests Structure: Formulate the strategy for verifying the product via automated testing by proposing a dedicated Python unit test. Specify the target
pytestpaths and the relational assertions required to validate the compiled SQL joins, filters, and primary transformations. - Propose Plan: You MUST read the template file using your file reading tool at
assets/plan_template.md. The plan you propose MUST exactly follow the markdown headings and structure outlined in that file. Do not invent your own structure. - WAIT for user confirmation on the plan before writing any code.
What ships with it
9 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 120 lines · 21 tokens per session scan A c46a9744636d
create-data-product is a skill published in the GitHub repository GoogleCloudPlatform/cortex-framework (10 stars, last pushed 6d ago), licensed Apache-2.0. It adds 21 tokens to every session and 2,897 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
google-mobile-ads-android-migrate-to-next-gen
Migrates Android applications from the old, legacy Google Mobile Ads (GMA) SDK (com.google.android.gms:play-services-ads) to the new GMA Next-Gen SDK (com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk). Provides comprehensive mapping tables for imports, classes, and method signatures to help determine…
agent-platform-tuning
Agent Platform Model Tuning. Use when you need to fine-tune open models or Gemini models using Agent Platform infrastructure. Don't use for model training outside Agent Platform, model deployment to endpoints (use agent-platform-deploy), or managing serving endpoints (use agent-platform-endpoint-management).
application-design-center-design-deploy
Processes GCP infrastructure design and deployment workflows within Application Design Center (ADC). Use when: - Designing GCP infrastructure with Terraform. - Validating local HCL. - Performing best-practice plan scans. - Importing templates to Application Design Center (ADC). - Deploying templates. - Troubleshooting…
cloud-run-basics
Manages Cloud Run services, jobs, and worker pools. Use when you need to deploy applications responding to HTTP requests (services), run event-triggered or scheduled tasks (jobs), or handle always-on pull-based background processing (worker pools).
google-analytics-data-api-basics
Manages Google Analytics reporting data, enables the Analytics Data API via the Cloud CLI, and creates reports using the Google Analytics Data API (v1beta). Use when you need to interact with Google Analytics properties, run customized analytics reports, query metrics (like activeUsers, screenPageViews) and dimensions…
agent-platform-rag-engine-management
Manage and query Agent Platform RAG Engine Corpora and retrieve grounded contexts using the Google GenAI SDK. Use when listing RAG corpora or files, inspecting a corpus, retrieving contexts, or generating content grounded in a RAG corpus. Do not use for standard database queries (use SQL/Spanner skills), Google…