[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6990XEVMEJHSPDPB0GNQKG8":3,"skill-same:01M6990XEVMEJHSPDPB0GNQKG8":85},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":6,"ownerHtmlUrl":57,"ownerBlogUrl":58,"ownerDescription":59,"updatedAt":60,"install":61,"resources":74},"01M6990XEVMEJHSPDPB0GNQKG8","cloud-monitoring-list-time-series-request",null,"Generates valid Cloud Monitoring ListTimeSeries requests and aggregation specifications from metric descriptors and resource parameters. Use when asked to create, generate, format, or build ListTimeSeries requests, JSON payloads, filter expressions, or aligner\u002Freducer aggregations for Cloud Monitoring metrics and charts. Don't use for metric discovery or metric selection.","google\u002Fskills","google","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1342004?v=4","01M698VYEFDM0VJBZDYYJ2T83S","Google","01M698WR0H76ENHE587T9EJT89",24122,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fcloud-monitoring-list-time-series-request\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"request","monitoring","time series","cloud","list","series","cloud monitoring list time series request","cloud monitoring","time","use","when","for","filter","selection","reducer","payloads","discovery","Charts","create","valid","2026-11-10 10:12:30",false,"---\nname: cloud-monitoring-list-time-series-request\nmetadata:\n  version: \"1.0.1\"\n  category: CloudObservabilityAndMonitoring\ndescription: >-\n  Generates valid Cloud Monitoring ListTimeSeries requests and aggregation\n  specifications from metric descriptors and resource parameters. Use when asked\n  to create, generate, format, or build ListTimeSeries requests, JSON payloads,\n  filter expressions, or aligner\u002Freducer aggregations for Cloud Monitoring\n  metrics and charts. Don't use for metric discovery or metric selection.\n---\n\n# Cloud Monitoring ListTimeSeries Request Generator\n\nUse this skill to translate any Cloud Monitoring metric descriptor into valid,\nproduction-ready `ListTimeSeries` REST API query parameters (`name`, `filter`,\n`interval.startTime`, `interval.endTime`, `aggregation.*`, `view`).\n\n## Attribution\n\n**MUST READ**: Before executing any `gcloud`, REST API, or MCP command, you\nMUST read [Usage Attribution](references\u002Fattribution.md). For commands executed\ndirectly in the terminal (never in generated scripts, Terraform, or user code),\nprefix `gcloud` with\n`CLOUDSDK_METRICS_REQUEST_ATTRIBUTION=\"agent-skills\u002F1.0 (skill:cloud-monitoring-list-time-series-request)\"`\nand append `agent-skills\u002F1.0 (skill:cloud-monitoring-list-time-series-request)` to `User-Agent` headers.\n\n## CRITICAL RULES\n\n*   **Mandatory Project ID Clarification**: You MUST ensure the GCP Project ID\n    is present in the user prompt, input payload, or environment context (such\n    as via `gcloud config get-value project`). If the Project ID is missing and\n    cannot be resolved, you MUST ask the user to clarify it before generating or\n    executing `ListTimeSeries` requests. Do NOT use placeholders for project\n    names.\n\n## Workflow\n\n### Inspect Metric Metadata\n\n1.  **Use Provided Metric Metadata First**: If the user's prompt already\n    includes metric metadata such as `metric.type`, `metricKind`, `valueType`,\n    resource types, or label keys, use those values directly instead of calling\n    API tools.\n2.  **Discover Missing Metadata**: If exact metric descriptors including\n    `metric.type`, `metricKind`, and `valueType` are missing or underspecified,\n    resolve the target metric's descriptor using one of these paths:\n    *   **Vague Query**: If the prompt is vague, such as asking for VM CPU\n        usage, use the `cloud-monitoring-metric-selection` skill first to\n        identify the specific metric type.\n    *   **Known Metric Type**: If you already have the specific metric type name\n        such as `compute.googleapis.com\u002Finstance\u002Fcpu\u002Futilization`, but need its\n        descriptor, call the `list_metric_descriptors` MCP tool. If the tool is\n        missing, refer to the `cloud-monitoring-metric-selection` skill to\n        configure the Cloud Monitoring MCP server.\n    *   **Fallback**: If the MCP tool cannot be configured, fall back to making\n        a direct Cloud Monitoring API call.\n3.  **Identify Key Fields**: From the retrieved descriptor, identify key schema\n    attributes:\n    *   **`type`**: The Cloud Monitoring metric type string.\n    *   **`metricKind`**: `GAUGE`, `DELTA`, or `CUMULATIVE`.\n    *   **`valueType`**: `INT64`, `DOUBLE`, `DISTRIBUTION`, or `BOOL`.\n    *   **`monitoredResourceTypes`**: Compatible `resource.type` strings, for\n        example `[\"cloudsql_database\", \"cloudsql_instance\"]`. If multiple\n        resource types are listed, select the specific `resource.type` that\n        matches the target granularity of the user's request.\n\n--------------------------------------------------------------------------------\n\n### Construct Monitoring Filter\n\nThe `filter` parameter is a mandatory string in Cloud Monitoring syntax that\nrestricts the query to a single `metric.type` and optional resource and metric\nlabels:\n\n1.  **Single Metric Type Restriction**: Every `filter` MUST specify exactly one\n    `metric.type` clause using an equality operator. For example:\n    *   `metric.type = \"compute.googleapis.com\u002Finstance\u002Fcpu\u002Futilization\"`\n2.  **Monitored Resource Type Filter**: MUST include the `resource.type` filter\n    when the target resource granularity is known, preventing collisions across\n    services that share metric types or sub-resources. For example:\n    *   `metric.type = \"cloudsql.googleapis.com\u002Fdatabase\u002Fcpu\u002Futilization\" AND\n        resource.type = \"cloudsql_database\"`\n3.  **Preserve User Literals and IDs**: You MUST use literal resource names,\n    IDs, zones, and project parameters provided by the user without alteration.\n    Do NOT override or replace user-specified identifiers with active resources\n    found during metric metadata discovery unless explicitly requested.\n\n4.  **Label Type Prefixing**:\n\n    *   Prefix resource-level dimensions, such as instance ID, zone, project,\n        database ID, or subscription ID, with the `resource.labels.` prefix. For\n        example:\n        *   `resource.labels.instance_id = \"123456789\"`\n        *   `resource.labels.database_id = \"my-project:my-instance\"`\n    *   Prefix metric-level dimensions, such as state, command, response code,\n        or instance name metadata when stored on the metric, with the\n        `metric.labels.` prefix. For example:\n        *   `metric.labels.state != \"free\"`\n        *   `metric.labels.instance_name = \"instance-1\"`\n\n5.  **Resource Name versus ID Resolution**:\n\n    *   If the user specifies a human-readable GCE VM instance name such as\n        `\"instance-1\"`, but `resource.labels.instance_id` expects a numeric ID,\n        you MUST filter using either `metric.labels.instance_name =\n        \"instance-1\"` or `metadata.system_labels.name = \"instance-1\"`.\n    *   Do NOT use `resource.metadata.name` or `resource.metadata.*`. This\n        prefix is invalid in Cloud Monitoring filter syntax.\n    *   Do NOT assign a string instance name directly to\n        `resource.labels.instance_id` unless the resource type explicitly uses\n        string IDs.\n\n6.  **Database Identifier Labels**: Database labels such as `database_id` for\n    Cloud SQL and Spanner, or `dataset_id` for BigQuery, use composite keys\n    formatted as `\u003Cproject_id>:\u003Cinstance_name>`. For example:\n    `resource.labels.database_id = \"my-project:foo\"`.\n\n7.  **Ops Agent Metrics State Label Filtering**: For\n    `agent.googleapis.com\u002Fmemory\u002Fpercent_used` and\n    `agent.googleapis.com\u002Fdisk\u002Fpercent_used` metrics, you MUST use\n    `metric.labels.state != \"free\"`. Do NOT filter by `metric.labels.state =\n    \"used\"`.\n\n--------------------------------------------------------------------------------\n\n### Choose Aggregation Structure\n\nSelect the `perSeriesAligner`, `crossSeriesReducer`, `groupByFields`, and\n`alignmentPeriod` according to the metric properties and visualization goal:\n\n1.  **Consult the Aggregations Reference**: You MUST include both\n    `perSeriesAligner` and `crossSeriesReducer` in the `aggregation` query\n    parameters of every request. Read and follow the\n    [Cloud Monitoring ListTimeSeries Basic Aggregations Reference](references\u002Fbasic_aggregations.md)\n    to select the exact `perSeriesAligner` and `crossSeriesReducer` combinations\n    for your metric's Metric Kind and Value Type pairing, and to apply mandatory\n    SRE rules for utilization metrics, counters, distributions, and state-based\n    gauges such as memory filtered by `state != \"free\"`.\n2.  **Grouping Fields and Resource Granularity**: When `crossSeriesReducer` is\n    specified as anything other than `REDUCE_NONE`, list the exact labels to\n    preserve. When querying multi-instance resources like VMs, databases, or\n    subscriptions, include the primary resource identifier in `groupByFields`.\n    For example, use `resource.labels.instance_id` for VMs or\n    `resource.labels.database_id` for databases. This prevents collapsing\n    separate resource streams into a single global aggregate.\n3.  **Alignment Period Determination**: Calculate the query lookback duration\n    from `endTime` minus `startTime`, ensuring `startTime` precedes `endTime`.\n    If `endTime \u003C= startTime`, flag an error before computing duration. Set\n    `alignmentPeriod` according to Cloud Console default fine granularity\n    standards:\n    *   **Duration \u003C= 110 minutes**: Set `alignmentPeriod = \"60s\"`.\n    *   **Duration \u003C= 23 hours**: Set `alignmentPeriod = \"300s\"`.\n    *   **Duration \u003C= 6 days**: Set `alignmentPeriod = \"3600s\"`.\n    *   **Duration \u003C= 23 days**: Set `alignmentPeriod = \"10800s\"`.\n    *   **Duration \u003C= 80 days**: Set `alignmentPeriod = \"21600s\"`.\n    *   **Duration \u003C= 180 days**: Set `alignmentPeriod = \"43200s\"`.\n    *   **Duration \u003C= 350 days**: Set `alignmentPeriod = \"86400s\"`.\n    *   **Duration \u003C= 500 days**: Set `alignmentPeriod = \"172800s\"`.\n    *   **Omission Rule**: `alignmentPeriod` is omitted only when\n        `perSeriesAligner` is set to `ALIGN_NONE`.\n\n--------------------------------------------------------------------------------\n\n### Format Valid Request\n\nPresent the generated `ListTimeSeries` REST query parameters. For example:\n\n```json\n{\n  \"name\": \"projects\u002F\u003Cproject_id>\",\n  \"filter\": \"metric.type = \\\"\u003Cmetric_type>\\\" AND resource.type = \\\"\u003Cresource_type>\\\"\",\n  \"interval\": {\n    \"startTime\": \"\u003Ciso_8601_start>\",\n    \"endTime\": \"\u003Ciso_8601_end>\"\n  },\n  \"aggregation\": {\n    \"alignmentPeriod\": \"60s\",\n    \"perSeriesAligner\": \"ALIGN_RATE\",\n    \"crossSeriesReducer\": \"REDUCE_SUM\",\n    \"groupByFields\": [\n      \"resource.labels.zone\"\n    ]\n  },\n  \"view\": \"FULL\"\n}\n```\n\n*   **Aggregation Requirements**: Populate the `aggregation` parameters with the\n    `perSeriesAligner`, `crossSeriesReducer`, `alignmentPeriod`, and optional\n    `groupByFields` values determined during aggregation selection.\n*   **Interval Requirements**: `startTime` and `endTime` MUST be valid RFC 3339\n    and ISO 8601 timestamps such as `\"YYYY-MM-DDTHH:MM:SSZ\"`. If not explicitly\n    provided by the user, dynamically compute a one-hour lookback interval\n    ending at the current time, where `endTime` is the present moment and\n    `startTime` is one hour prior. Do NOT hardcode static dates from examples.\n*   **Alignment Period Requirement**: Determine `alignmentPeriod` from the\n    lookback duration of `endTime` minus `startTime` using the mapping above.\n    For the default one-hour lookback interval, `alignmentPeriod` is `\"60s\"`.\n*   **View Requirement**: MUST default to `\"FULL\"` when time series data points\n    are needed, or `\"HEADERS\"` when inspecting metadata and series identities\n    only.\n\n--------------------------------------------------------------------------------\n\n### Validate Request via list_timeseries MCP Tool\n\nYou MUST validate the generated request parameters against live Cloud Monitoring\ntelemetry before returning the final output. Call the `list_timeseries` MCP tool\npassing all generated query parameters (`name`, `filter`, `interval`,\n`aggregation`). When validating you MUST set `view=\"HEADERS\"` to minimize\nlatency and payload size while verifying request structure. A response without\nAPI errors confirms that your filter and aggregation settings are valid.\n\nIf the `list_timeseries` tool is unavailable, fall back to a direct API call.\n\n--------------------------------------------------------------------------------\n\n## References\n\n*   [Cloud Monitoring ListTimeSeries Basic Aggregations Reference](references\u002Fbasic_aggregations.md)\n*   [Cloud Monitoring Monitored Resource Types Reference](https:\u002F\u002Fdocs.cloud.google.com\u002Fmonitoring\u002Fapi\u002Fresources.md.txt)\n*   [Cloud Monitoring Filter Syntax](https:\u002F\u002Fdocs.cloud.google.com\u002Fmonitoring\u002Fapi\u002Fv3\u002Ffilters.md.txt)\n*   [Cloud Monitoring REST API Reference: projects.timeSeries.list](https:\u002F\u002Fdocs.cloud.google.com\u002Fmonitoring\u002Fapi\u002Fref_v3\u002Frest\u002Fv3\u002Fprojects.timeSeries\u002Flist.md.txt)\n","# Cloud Monitoring ListTimeSeries Request Generator\n\nUse this skill to translate any Cloud Monitoring metric descriptor into valid,\nproduction-ready `ListTimeSeries` REST API query parameters (`name`, `filter`,\n`interval.startTime`, `interval.endTime`, `aggregation.*`, `view`).\n\n## Attribution\n\n**MUST READ**: Before executing any `gcloud`, REST API, or MCP command, you\nMUST read [Usage Attribution](references\u002Fattribution.md). For commands executed\ndirectly in the terminal (never in generated scripts, Terraform, or user code),\nprefix `gcloud` with\n`CLOUDSDK_METRICS_REQUEST_ATTRIBUTION=\"agent-skills\u002F1.0 (skill:cloud-monitoring-list-time-series-request)\"`\nand append `agent-skills\u002F1.0 (skill:cloud-monitoring-list-time-series-request)` to `User-Agent` headers.\n\n## CRITICAL RULES\n\n*   **Mandatory Project ID Clarification**: You MUST ensure the GCP Project ID\n    is present in the user prompt, input payload, or environment context (such\n    as via `gcloud config get-value project`). If the Project ID is missing and\n    cannot be resolved, you MUST ask the user to clarify it before generating or\n    executing `ListTimeSeries` requests. Do NOT use placeholders for project\n    names.\n\n## Workflow\n\n### Inspect Metric Metadata\n\n1.  **Use Provided Metric Metadata First**: If the user's prompt already\n    includes metric metadata such as `metric.type`, `metricKind`, `valueType`,\n    resource types, or label keys, use those values directly instead of calling\n    API tools.\n2.  **Discover Missing Metadata**: If exact metric descriptors including\n    `metric.type`, `metricKind`, and `valueType` are missing or underspecified,\n    resolve the target metric's descriptor using one of these paths:\n    *   **Vague Query**: If the prompt is vague, such as asking for VM CPU\n        usage, use the `cloud-monitoring-metric-selection` skill first to\n        identify the specific metric type.\n    *   **Known Metric Type**: If you already have the specific metric type name\n        such as `compute.googleapis.com\u002Finstance\u002Fcpu\u002Futilization`, but need its\n        descriptor, call the `list_metric_descriptors` MCP tool. If the tool is\n        missing, refer to the `cloud-monitoring-metric-selection` skill to\n        configure the Cloud Monitoring MCP server.\n    *   **Fallback**: If the MCP tool cannot be configured, fall back to making\n        a direct Cloud Monitoring API call.\n3.  **Identify Key Fields**: From the retrieved descriptor, identify key schema\n    attributes:\n    *   **`type`**: The Cloud Monitoring metric type string.\n    *   **`metricKind`**: `GAUGE`, `DELTA`, or `CUMULATIVE`.\n    *   **`valueType`**: `INT64`, `DOUBLE`, `DISTRIBUTION`, or `BOOL`.\n    *   **`monitoredResourceTypes`**: Compatible `resource.type` strings, for\n        example `[\"cloudsql_database\", \"cloudsql_instance\"]`. If multiple\n        resource types are listed, select the specific `resource.type` that\n        matches the target granularity of the user's request.\n\n--------------------------------------------------------------------------------\n\n### Construct Monitoring Filter\n\nThe `filter` parameter is a mandatory string in Cloud Monitoring syntax that\nrestricts the query to a single `metric.type` and optional resource and metric\nlabels:\n\n1.  **Single Metric Type Restriction**: Every `filter` MUST specify exactly one\n    `metric.type` clause using an equality operator. For example:\n    *   `metric.type = \"compute.googleapis.com\u002Finstance\u002Fcpu\u002Futilization\"`\n2.  **Monitored Resource Type Filter**: MUST include the `resource.type` filter\n    when the target resource granularity is known, preventing collisions across\n    services that share metric types or sub-resources. For example:\n    *   `metric.type = \"cloudsql.googleapis.com\u002Fdatabase\u002Fcpu\u002Futilization\" AND\n        resource.type = \"cloudsql_database\"`\n3.  **Preserve User Literals and IDs**: You MUST use literal resource names,\n    IDs, zones, and project parameters provided by the user without alteration.\n    Do NOT override or replace user-specified identifiers with active resources\n    found during metric metadata discovery unless explicitly requested.\n\n4.  **Label Type Prefixing**:\n\n    *   Prefix resource-level dimensions, such as instance ID, zone, project,\n        database ID, or subscription ID, with the `resource.labels.` prefix. For\n        example:\n        *   `resource.labels.instance_id = \"123456789\"`\n        *   `resource.labels.database_id = \"my-project:my-instance\"`\n    *   Prefix metric-level dimensions, such as state, command, response code,\n        or instance name metadata when stored on the metric, with the\n        `metric.labels.` prefix. For example:\n        *   `metric.labels.state != \"free\"`\n        *   `metric.labels.instance_name = \"instance-1\"`\n\n5.  **Resource Name versus ID Resolution**:\n\n    *   If the user specifies a human-readable GCE VM instance name such as\n        `\"instance-1\"`, but `resource.labels.instance_id` expects a numeric ID,\n        you MUST filter using either `metric.labels.instance_name =\n        \"instance-1\"` or `metadata.system_labels.name = \"instance-1\"`.\n    *   Do NOT use `resource.metadata.name` or `resource.metadata.*`. This\n        prefix is invalid in Cloud Monitoring filter syntax.\n    *   Do NOT assign a string instance name directly to\n        `resource.labels.instance_id` unless the resource type explicitly uses\n        string IDs.\n\n6.  **Database Identifier Labels**: Database labels such as `database_id` for\n    Cloud SQL and Spanner, or `dataset_id` for BigQuery, use composite keys\n    formatted as `\u003Cproject_id>:\u003Cinstance_name>`. For example:\n    `resource.labels.database_id = \"my-project:foo\"`.\n\n7.  **Ops Agent Metrics State Label Filtering**: For\n    `agent.googleapis.com\u002Fmemory\u002Fpercent_used` and\n    `agent.googleapis.com\u002Fdisk\u002Fpercent_used` metrics, you MUST use\n    `metric.labels.state != \"free\"`. Do NOT filter by `metric.labels.state =\n    \"used\"`.\n\n--------------------------------------------------------------------------------\n\n### Choose Aggregation Structure\n\nSelect the `perSeriesAligner`, `crossSeriesReducer`, `groupByFields`, and\n`alignmentPeriod` according to the metric properties and visualization goal:\n\n1.  **Consult the Aggregations Reference**: You MUST include both\n    `perSeriesAligner` and `crossSeriesReducer` in the `aggregation` query\n    parameters of every request. Read and follow the\n    [Cloud Monitoring ListTimeSeries Basic Aggregations Reference](references\u002Fbasic_aggregations.md)\n    to select the exact `perSeriesAligner` and `crossSeriesReducer` combinations\n    for your metric's Metric Kind and Value Type pairing, and to apply mandatory\n    SRE rules for utilization metrics, counters, distributions, and state-based\n    gauges such as memory filtered by `state != \"free\"`.\n2.  **Grouping Fields and Resource Granularity**: When `crossSeriesReducer` is\n    specified as anything other than `REDUCE_NONE`, list the exact labels to\n    preserve. When querying multi-instance resources like VMs, databases, or\n    subscriptions, include the primary resource identifier in `groupByFields`.\n    For example, use `resource.labels.instance_id` for VMs or\n    `resource.labels.database_id` for databases. This prevents collapsing\n    separate resource streams into a single global aggregate.\n3.  **Alignment Period Determination**: Calculate the query lookback duration\n    from `endTime` minus `startTime`, ensuring `startTime` precedes `endTime`.\n    If `endTime \u003C= startTime`, flag an error before computing duration. Set\n    `alignmentPeriod` according to Cloud Console default fine granularity\n    standards:\n    *   **Duration \u003C= 110 minutes**: Set `alignmentPeriod = \"60s\"`.\n    *   **Duration \u003C= 23 hours**: Set `alignmentPeriod = \"300s\"`.\n    *   **Duration \u003C= 6 days**: Set `alignmentPeriod = \"3600s\"`.\n    *   **Duration \u003C= 23 days**: Set `alignmentPeriod = \"10800s\"`.\n    *   **Duration \u003C= 80 days**: Set `alignmentPeriod = \"21600s\"`.\n    *   **Duration \u003C= 180 days**: Set `alignmentPeriod = \"43200s\"`.\n    *   **Duration \u003C= 350 days**: Set `alignmentPeriod = \"86400s\"`.\n    *   **Duration \u003C= 500 days**: Set `alignmentPeriod = \"172800s\"`.\n    *   **Omission Rule**: `alignmentPeriod` is omitted only when\n        `perSeriesAligner` is set to `ALIGN_NONE`.\n\n--------------------------------------------------------------------------------\n\n### Format Valid Request\n\nPresent the generated `ListTimeSeries` REST query parameters. For example:\n\n```json\n{\n  \"name\": \"projects\u002F\u003Cproject_id>\",\n  \"filter\": \"metric.type = \\\"\u003Cmetric_type>\\\" AND resource.type = \\\"\u003Cresource_type>\\\"\",\n  \"interval\": {\n    \"startTime\": \"\u003Ciso_8601_start>\",\n    \"endTime\": \"\u003Ciso_8601_end>\"\n  },\n  \"aggregation\": {\n    \"alignmentPeriod\": \"60s\",\n    \"perSeriesAligner\": \"ALIGN_RATE\",\n    \"crossSeriesReducer\": \"REDUCE_SUM\",\n    \"groupByFields\": [\n      \"resource.labels.zone\"\n    ]\n  },\n  \"view\": \"FULL\"\n}\n```\n\n*   **Aggregation Requirements**: Populate the `aggregation` parameters with the\n    `perSeriesAligner`, `crossSeriesReducer`, `alignmentPeriod`, and optional\n    `groupByFields` values determined during aggregation selection.\n*   **Interval Requirements**: `startTime` and `endTime` MUST be valid RFC 3339\n    and ISO 8601 timestamps such as `\"YYYY-MM-DDTHH:MM:SSZ\"`. If not explicitly\n    provided by the user, dynamically compute a one-hour lookback interval\n    ending at the current time, where `endTime` is the present moment and\n    `startTime` is one hour prior. Do NOT hardcode static dates from examples.\n*   **Alignment Period Requirement**: Determine `alignmentPeriod` from the\n    lookback duration of `endTime` minus `startTime` using the mapping above.\n    For the default one-hour lookback interval, `alignmentPeriod` is `\"60s\"`.\n*   **View Requirement**: MUST default to `\"FULL\"` when time series data points\n    are needed, or `\"HEADERS\"` when inspecting metadata and series identities\n    only.\n\n--------------------------------------------------------------------------------\n\n### Validate Request via list_timeseries MCP Tool\n\nYou MUST validate the generated request parameters against live Cloud Monitoring\ntelemetry before returning the final output. Call the `list_timeseries` MCP tool\npassing all generated query parameters (`name`, `filter`, `interval`,\n`aggregation`). When validating you MUST set `view=\"HEADERS\"` to minimize\nlatency and payload size while verifying request structure. A response without\nAPI errors confirms that your filter and aggregation settings are valid.\n\nIf the `list_timeseries` tool is unavailable, fall back to a direct API call.\n\n--------------------------------------------------------------------------------\n\n## References\n\n*   [Cloud Monitoring ListTimeSeries Basic Aggregations Reference](references\u002Fbasic_aggregations.md)\n*   [Cloud Monitoring Monitored Resource Types Reference](https:\u002F\u002Fdocs.cloud.google.com\u002Fmonitoring\u002Fapi\u002Fresources.md.txt)\n*   [Cloud Monitoring Filter Syntax](https:\u002F\u002Fdocs.cloud.google.com\u002Fmonitoring\u002Fapi\u002Fv3\u002Ffilters.md.txt)\n*   [Cloud Monitoring REST API Reference: projects.timeSeries.list](https:\u002F\u002Fdocs.cloud.google.com\u002Fmonitoring\u002Fapi\u002Fref_v3\u002Frest\u002Fv3\u002Fprojects.timeSeries\u002Flist.md.txt)\n",{"name":5,"metadata":49,"description":7},{"version":50,"category":51},"1.0.1","CloudObservabilityAndMonitoring","main","bb9b3f464aae37af360d079c1d863524955b0363","skills\u002Fcloud\u002Fcloud-monitoring-list-time-series-request",2005,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills","https:\u002F\u002Fgithub.com\u002Fgoogle","https:\u002F\u002Fopensource.google\u002F","Google ❤️ Open Source","2026-11-14 01:51:35",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add google\u002Fskills --skill cloud-monitoring-list-time-series-request",{"tool":67,"command":68},"bunx","bunx skills add google\u002Fskills --skill cloud-monitoring-list-time-series-request",{"tool":70,"command":71},"pnpm","pnpm dlx skills add google\u002Fskills --skill cloud-monitoring-list-time-series-request","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fcloud-monitoring-list-time-series-request\u002FSKILL.md",true,[75,81],{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"references\u002Fattribution.md","REFERENCE","参考文档",1963,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fcloud-monitoring-list-time-series-request\u002Freferences\u002Fattribution.md",{"path":82,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fbasic_aggregations.md",10678,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fcloud-monitoring-list-time-series-request\u002Freferences\u002Fbasic_aggregations.md",[86,122,151,180,207,231],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":98,"publishedAt":44},"01M6998S2EZKD3GEJ7F943RZTE","sign-in-with-google-web","Implement, configure, and secure Sign In With Google (SiwG) using Google Identity Services (GIS \u002F `https:\u002F\u002Faccounts.google.com\u002Fgsi\u002Fclient`) across web architectures. Use when creating Google sign-in buttons, implementing Google One Tap with FedCM, integrating GIS in React\u002FNext.js\u002FAngular\u002FHTML, verifying ID tokens on backend runtimes (Python\u002FNode.js\u002FGo\u002FJava), enforcing Google Workspace domain restrictions (`hd`), securing client-side ID tokens via WebCrypto nonces or encrypted IndexedDB, embedding in cross-origin iframes via the Intermediate Iframe API (`https:\u002F\u002Faccounts.google.com\u002Fgsi\u002Fintermediate`), configuring Content Security Policy (CSP), COOP, and Permissions Policy (`identity-credentials-get`) headers, or handling sign-out and revocation. Don't use for legacy Google Sign-In (`gapi.auth2`), Google Cloud IAM service accounts, or Android\u002FiOS native Credential Manager.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fidentity\u002Fsign-in-with-google-web\u002FSKILL.md",[92,95],{"categoryNo":93,"categoryName":94,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":96,"categoryName":97,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",[9,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121],"sign in with google web","sign","with","web","android","go","security","google workspace","google cloud","implement","policy","python","implementing","react","iam","permissions","buttons","secure","manager","identity","architectures","domain","runtimes",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":135,"publishedAt":44},"01M6998PHPDCAD684VW5WRG83D","dpop-adoption","Implement and debug OAuth 2.0 DPoP (RFC 9449) refresh token sender-constraining for WebCrypto, Node.js ES6, and browser runtimes integrating with Google's OAuth platform. Use when configuring non-extractable asymmetric key pairs (P-256), generating DPoP Proof JWTs for authorization code exchange and token refresh, or handling 400 use_dpop_nonce challenge retry loops at oauth2.googleapis.com\u002Ftoken. Don't use for unconstrained OAuth 2.0 flows (where refresh tokens are not bound to a client key pair), or for Google Cloud IAM \u002F service account authentication.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fidentity\u002Fdpop-adoption\u002FSKILL.md",[128,129,130],{"categoryNo":96,"categoryName":97,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":131,"categoryName":132,"taxonomyType":133,"taxonomyTypeDesc":134},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[136,137,9,107,138,139,140,141,142,143,113,144,145,146,147,148,149,118,121,150,34],"dpop adoption","adoption","es6","retry","authentication","flows","challenge","code","browser","loops","at","node","token","pair","platform",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":163,"publishedAt":44},"01M6998M72TC73EEAQH4XC7EXW","retrieving-developer-knowledge","Searches, retrieves, and synthesizes official Google developer documentation across Google Cloud, AI\u002FGemini, Android, Chrome, Web, Flutter, Go, Firebase, and other Google developer platforms. Integrates with the Developer Knowledge MCP server (search_documents, get_documents, answer_query) or the Developer Knowledge REST API fallback. Use when searching for gcloud CLI commands, API syntax, IAM permissions, official documentation, architectural comparisons, or product choice overviews. Don't use for local filesystem lookups or non-Google documentation.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdevelopers\u002Fretrieving-developer-knowledge\u002FSKILL.md",[157,158,161,162],{"categoryNo":96,"categoryName":97,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":159,"categoryName":160,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":131,"categoryName":132,"taxonomyType":133,"taxonomyTypeDesc":134},[164,165,166,167,107,168,169,170,171,172,173,174,175,34,176,177,178,113,179,114],"retrieving developer knowledge","knowledge","developer","MCP","mcp server","official","developer documentation","get","search","local","choice","documents","query","api","across","documentation",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":184,"categories":185,"keywords":186,"publishedAt":44},"01M6998J2CZEXS9BES9S3WWFKC","migrate-to-rust","Clones, analyzes, plans, and migrates legacy codebases (C++, Fortran, Java, Python, C, Shell) from a GitHub URL or local directory to a modern, high-performance, deterministic, 100% Safe Rust architecture, tracking live telemetry across every task bucket, test failure\u002Ffix cycle, and Profile-Guided Optimization (PGO) stage, and producing a first-person AI storytelling report and interactive HTML infographic. Use when migrating a GitHub repository or local codebase to Rust, porting legacy C++, Fortran, Python, or Java workloads to memory-safe Rust, designing Struct-of-Arrays (SoA) or SIMD Rust architectures, or optimizing Rust ports with LLVM PGO. Don't use for unrelated non-Rust refactoring or single-line syntax questions.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdevelopers\u002Fmigrate-to-rust\u002FSKILL.md",[],[187,188,189,190,191,192,193,194,110,195,196,197,198,199,200,173,201,202,203,34,204,205,178,206],"migrate to rust","rust","migrate","github","memory","performance","directory","safe","ports","llvm","soa","cycle","porting","fix","arrays","infographic","high-performance","URL","architecture","unrelated",{"skillNo":208,"name":209,"nameZh":6,"description":210,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":211,"categories":212,"keywords":216,"publishedAt":44},"01M6998GCC3K29WZ82KXMB9E02","finding-google-skills","Google platform decision and setup guidance, loaded on demand from Google's skill catalog. Use when a developer is choosing or setting up part of their stack, such as where to run a service, a database, storage, messaging, authentication, analytics, ads, or AI model serving, and a Google product is a reasonable candidate - whether or not a vendor is named - or when a request names a Google product or API. Brings in the matching Google skill so the answer can weigh Google options, their trade-offs, and when they are not the right fit. Skip when the stack is already settled on another provider and no Google product is named, or the task involves no platform choice.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdevelopers\u002Ffinding-google-skills\u002FSKILL.md",[213,214,215],{"categoryNo":96,"categoryName":97,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":131,"categoryName":132,"taxonomyType":133,"taxonomyTypeDesc":134},[9,217,218,219,220,150,221,222,223,224,225,140,226,227,228,174,33,229,34,230,177],"finding google skills","storage","as","messaging","model","trade-offs","provider","answer","fit","catalog","up","decision","database","candidate",{"skillNo":232,"name":233,"nameZh":6,"description":234,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":235,"categories":236,"keywords":239,"publishedAt":44},"01M6998DWNHTH0BS6W1CY8ZXMP","workload-manager-basics","Use this skill to manage Google Cloud Workload Manager evaluations, rules, scanned resources, and validation results by using public client libraries and the REST API. Use when you need to inspect workload best-practice rules, create and run evaluations for Google Cloud general best practices, SAP, SQL Server, or custom organizational rules, review violations, export results to BigQuery, or automate Workload Manager through client libraries because no service-specific public CLI or MCP server is available. Don't use for general Google Compute Engine instance management, VPC configuration, or standard IAM auditing.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fcloud\u002Fworkload-manager-basics\u002FSKILL.md",[237,238],{"categoryNo":96,"categoryName":97,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[240,241,117,242,9,167,243,107,168,244,245,246,247,34,248,177,113,42,249,250,251],"workload manager basics","workload","basics","cli","review","vpc","resources","inspect","you","libraries","server","run"]