What Programming Languages Does the google/skills Repository Support?

The google/skills repository officially supports eight programming languages: Python, Java, Go, Node.js (JavaScript), Ruby, PHP, .NET (C#), and Perl.

The google/skills repository provides curated "skill" bundles for Google Cloud and Google Ads services, enabling developers to integrate Google APIs using their preferred programming language. Each skill includes language-specific reference guides located in dedicated references/ directories, with the core skill definition documented in SKILL.md files listing available language implementations.

Complete List of Supported Programming Languages

The repository maintains dedicated reference files for each supported language. The primary languages include:

These eight languages align with Google's official client library support for Cloud services, covering the primary enterprise and web development ecosystems.

How Language Support Is Structured

Language support follows a consistent directory pattern across all skills. Each skill bundle contains a root SKILL.md file that serves as the entry point, along with a references/ subdirectory containing language-specific markdown files named according to the language identifier (e.g., python.md, java.md, go.md).

According to the source code structure, the file skills/analytics/google-analytics-data-api-basics/SKILL.md defines the core skill description and links to each language reference. Additionally, cross-cutting guidance appears in files like skills/cloud/workload-manager-basics/references/client-library-usage.md, which documents how each language maps to appropriate Google Cloud client libraries, and skills/cloud/workload-manager-basics/references/setup-prerequisites.md, which lists required SDKs and environment variables for all supported languages.

Language-Specific Implementation Examples

The repository provides working code patterns for each language. Below are minimal "Hello World" style implementations demonstrating authentication and API usage.

Python Example (Google Analytics Data API)

from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import DateRange, Metric, RunReportRequest

client = BetaAnalyticsDataClient()
request = RunReportRequest(
    property="properties/123456",
    date_ranges=[DateRange(start_date="2023-01-01", end_date="today")],
    metrics=[Metric(name="activeUsers")],
)
response = client.run_report(request)
print(response)

This pattern appears in skills/analytics/google-analytics-data-api-basics/references/python.md, demonstrating the standard flow of importing the client library, constructing a request, and handling the response.

Java Example (Google Cloud Spanner)

import com.google.cloud.spanner.DatabaseId;
import com.google.cloud.spanner.Spanner;
import com.google.cloud.spanner.SpannerOptions;

SpannerOptions options = SpannerOptions.newBuilder().build();
Spanner spanner = options.getService();
DatabaseId db = DatabaseId.of("my-project", "my-instance", "my-database");

// Example query
try (ResultSet rs = spanner
        .singleUse()
        .executeQuery(Statement.of("SELECT * FROM Users LIMIT 10"))) {
    while (rs.next()) {
        System.out.println(rs.getString("UserName"));
    }
}

As documented in skills/analytics/google-analytics-data-api-basics/references/java.md, Java implementations utilize the Builder pattern for service initialization and try-with-resources for connection management.

Node.js Example (Google Ads API)

const {GoogleAdsClient} = require('google-ads-node');

const client = new GoogleAdsClient({
  client_id: 'YOUR_CLIENT_ID',
  client_secret: 'YOUR_CLIENT_SECRET',
  refresh_token: 'YOUR_REFRESH_TOKEN',
});

async function listCampaigns() {
  const response = await client.search(
    `SELECT campaign.id, campaign.name FROM campaign ORDER BY campaign.id`);
  console.log(response);
}

listCampaigns();

This Node.js implementation from skills/analytics/google-analytics-data-api-basics/references/nodejs.md illustrates asynchronous/await patterns typical of the JavaScript client libraries.

Summary

  • The google/skills repository supports eight programming languages: Python, Java, Go, Node.js, Ruby, PHP, .NET (C#), and Perl.
  • Language-specific documentation resides in references/{language}.md files within each skill directory.
  • The core skill definition in SKILL.md files links to all available language implementations for that particular skill.
  • Code examples follow consistent patterns across languages: import client libraries, authenticate, construct requests, and process responses.
  • Cross-language setup requirements are documented in skills/cloud/workload-manager-basics/references/setup-prerequisites.md.

Frequently Asked Questions

Does the google/skills repository support all Google Cloud client library languages?

Yes, the repository supports the complete set of languages for which Google publishes official Cloud client libraries. This includes Python, Java, Go, Node.js, Ruby, PHP, and .NET (C#), plus Perl for specific Google Ads API integrations.

Is Perl supported for all skills or only specific Google services?

Perl support appears primarily within the Google Ads API skills, specifically in skills/ads/google-ads-api-quickstart/references/perl.md. While the repository architecture supports adding Perl references to any skill, current implementation focuses on legacy ad-tech integrations where Perl remains prevalent.

How do I find the reference guide for my programming language in a specific skill?

Navigate to the skill's directory (e.g., skills/analytics/google-analytics-data-api-basics/) and open the references/ subdirectory. Each supported language has a dedicated markdown file named after the language identifier, such as python.md, java.md, or nodejs.md. The root SKILL.md file in each directory also lists all available language references with direct links.

Are the code examples identical across all supported languages?

No, the implementations vary to follow idiomatic patterns for each language. While the underlying API calls remain consistent, Python uses synchronous client methods with type hints, Java implements Builder patterns and try-with-resources blocks, and Node.js utilizes asynchronous Promise-based APIs. Each reference file adapts the general workflow to language-specific best practices.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →