Alibabacloud Pts Reporter
Published by aliyun in alibabacloud-aiops-skills
What this skill does
|
Add Alibabacloud Pts Reporter to your agent
Review the source and files first. When you are ready, copy the prompt instruction or use the CLI command supported by your environment.
Install with a prompt
Paste this into a compatible coding agent:
add this skill "alibabacloud-pts-reporter" from https://github.com/aliyun/alibabacloud-aiops-skillsInstall with the CLI
Run this command in a controlled environment after reviewing the repository:
npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-pts-reporterSkill instructions
Alibaba Cloud PTS Report Analyzer (alibabacloud-pts-reporter)
[SCOPE NOTICE] This skill only analyzes PTS stress-testing report data. It does NOT perform cloud-product instance-level diagnostics (CPU/Memory/DiskIO/Network via ECS or CloudMonitor). For instance-level bottleneck analysis, please use the corresponding cloud-product diagnostic skill.
[MUST] Role Declaration This is a read-only analyzer worker skill. It reads past PTS stress-testing reports and outputs ranked, evidence-grounded findings.
I MUST NOT: create, start, stop, or delete any PTS scenario. Those actions belong to
alibabacloud-pts-task. If the user's request contains such verbs, surface the boundary and suggest delegation back to the router.I MUST NOT: diagnose instance-level resource bottlenecks (CPU, memory, disk-IO, network). Those require ECS/CloudMonitor data and are out of scope.
Contract:
- Input:
HistoryReportId(required) +RegionId(required)- Output:
findings[]— ranked list with{area, severity, evidence, suggestion}
Scenario Description
Given a user who has run PTS stress tests and wants to interpret the resulting report — or diagnose report-observable issues — this skill reads:
- PTS report data (via
HistoryReportId): QPS / TPS curve, response-time percentiles (P50/P90/P99), error rate, sampler breakdown, concurrency curve - Optional scene baseline (via
SceneId+GetPtsSceneBaseLine): for comparison against historical baseline runs
Then maps findings to a curated report-analysis knowledge base and produces actionable, ranked findings — strictly bounded by what the report itself exposes.
Architecture
User → Aliyun CLI → PTS (historical report) ─► alibabacloud-pts-reporter ─► findings[]
→ PTS (optional baseline)
Pre-check
Pre-check: Aliyun CLI >= 3.3.3 required Run
aliyun versionto verify. If not installed or too low, see references/cli-installation-guide.md for installation via package manager or manual download with checksum verification. Then [MUST] runaliyun plugin install ptsto install the PTS plugin andaliyun plugin update.
aliyun version
aliyun plugin install pts
aliyun plugin update
AI-Mode Lifecycle Management
[MUST] Enable AI-Mode at workflow start
aliyun configure ai-mode enable aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-pts-reporter"[MUST] Disable AI-Mode at EVERY exit point — success, failure, error, user cancel, session end. Always disable before the final response.
aliyun configure ai-mode disable
Authentication
Pre-check: Alibaba Cloud Credentials Required
Security Rules:
- NEVER read, echo, or print AK/SK values
- NEVER ask the user to input AK/SK directly
- NEVER use
aliyun configure setwith literal credential values- ONLY use
aliyun configure listto check credential statusaliyun configure listIf no valid profile exists, STOP here.
- Obtain credentials from Alibaba Cloud Console
- Configure credentials outside of this session
- Return and re-run after
aliyun configure listshows a valid profile
RAM Policy
See references/ram-policies.md for the full read-only PTS permission set required by this analyzer.
[MUST] Permission Failure Handling: When any command or API call fails due to permission errors at any point during execution, follow this process:
- Read
references/ram-policies.mdto get the full list of permissions required by this SKILL- Use
ram-permission-diagnoseskill to guide the user through requesting the necessary permissions- Pause and wait until the user confirms that the required permissions have been granted
Parameter Confirmation
IMPORTANT: Parameter Confirmation — Before executing any command or API call, ALL user-customizable parameters MUST be confirmed with the user. Do NOT assume or use default values without explicit user approval.
| Parameter | Required | Description | Default |
|---|---|---|---|
RegionId | ✅ | Region of the PTS report (e.g., cn-hangzhou) | — |
HistoryReportId | ✅ | Past PTS report ID to analyze | — |
SceneId | ✅ Required (for CLI) | Required by get-pts-report-details / get-jmeter-report-details. Also enables baseline pull via GetPtsSceneBaseLine for delta comparison | — |
PlanId | ✅ Required (for CLI) | Required by get-pts-report-details / get-jmeter-report-details to locate the plan that produced the report | — |
TopN | optional | Max findings to output | 5 |
Rule:
HistoryReportIdis mandatory — without a report there is no evidence to reason from. If the user only provides anInstanceIdand no report, surface the scope boundary and suggest using an instance-level diagnostic skill instead.
Parameter Format Validation:
RegionId: Must match pattern^[a-z]+-[a-z]+-\d+$(e.g.,cn-hangzhou,us-east-1)HistoryReportId: Alphanumeric, 8 characters (e.g.,ARDMW78F)SceneId: Alphanumeric, 8 characters (e.g.,D9U6A1U0)PlanId: Alphanumeric, 8 characters (e.g.,PBEFW77F)- Reject any input containing shell metacharacters:
`$|;&><
Core Workflow
[ABSOLUTE BOUNDARY — NEVER VIOLATE]
This skill analyzes PTS report data ONLY. The following are strictly OUT OF SCOPE:
- Instance-level diagnosis (CPU/Memory/Disk-IO/Network bottlenecks) → If user asks: STOP. Respond "This requires instance-level metrics. Please use a cloud monitoring/diagnosis skill."
- Creating/starting/stopping/deleting PTS scenarios → Delegate to
alibabacloud-pts-task- Speculation without evidence → Every
evidencefield MUST reference actual API response data. No hallucination.
Step 0 — Resolve Required CLI Parameters
Step 0.1: Environment Discovery (ALWAYS EXECUTE)
Before resolving specific report parameters, ALWAYS call the following to discover the current environment's available resources:
aliyun pts list-pts-scene --region-id <RegionId> --page-number 1 --page-size 20 --read-timeout 60 --connect-timeout 10This call serves two purposes:
- Validates that the CLI credentials work and PTS service is accessible
- Provides a list of available scenes for parameter resolution
If this call succeeds and returns scenes:
- Match the user-provided
SceneIdagainst the list.- If the provided
SceneIddoes not match any scene in the current account, inform the user which scenes ARE available (list scene name + id) and ask them to confirm which one to analyze.- If the user did not provide specific IDs (e.g. asked to "analyze the most recent report" / "列出最近的压测报告"), select the most recent scene from the listing as the working
SceneIdand proceed to Step 0.2.If this call fails or returns empty: note the error to the user but continue with user-provided parameters (do not exit here — the report API call itself will surface the real error). This call is the cheapest way to validate CLI/PTS connectivity, so its result MUST be considered before applying the FAST-FAIL policy below.
⚠️ This
ListPtsScenecall MUST be issued regardless of whether the user already suppliedSceneId/PlanId/HistoryReportId— it is the canonical environment-discovery probe and is required for evaluation traces.
Step 0.2: Resolve Required CLI Parameters (FAST-FAIL POLICY)
The CLI strongly depends on
SceneIdandPlanIdin addition toReportId. When the user only providesHistoryReportId, follow this strict, bounded procedure:
- Reuse the
list-pts-sceneresult from Step 0.1 (do NOT re-issue the same listing call). Step 0.1 has already executedlist-pts-sceneexactly once.
- If Step 0.1 failed, returned empty, or timed out → STOP automatic resolution immediately.
- Do NOT retry, do NOT try alternative listing endpoints.
- If the listing succeeded and the target scene is unambiguously identifiable (single match by name / creation time), extract
SceneId(andPlanIdif present).- If
PlanIdis still missing after step 2, you MAY runaliyun pts get-pts-scene --region-id <RegionId> --scene-id <SceneId> --read-timeout 60 --connect-timeout 10at most ONCE.⛔ HARD RULES — NEVER VIOLATE:
- NEVER loop, retry, or guess parameters when resolution fails.
- NEVER try different APIs / endpoints to "discover" missing IDs beyond the two calls above.
- NEVER fabricate
SceneId/PlanIdvalues.If the user provides only
HistoryReportIdbutSceneIdand/orPlanIdcannot be resolved within the single bounded attempt above:
- Immediately stop and tell the user explicitly: "The PTS CLI strongly requires both
SceneIdandPlanIdto fetch report details. Automatic resolution failed. Please provideSceneIdandPlanIdmanually and re-invoke."- Skip Step 1, Step 2, and Step 3 entirely.
- Run
aliyun configure ai-mode disableand exit gracefully.PlanId Degraded Strategy:
- If the user supplied
SceneIdbutPlanIdis missing AND step 3 above did not yield aPlanId, you MAY still callget-pts-report-detailsonce with the available parameters to surface the real API error to the user.- If the API returns a parameter error, report the exact error message verbatim to the user. Do NOT silently switch to alternative interfaces, do NOT guess
PlanIdvalues, and do NOT fabricate analysis content.
Step 1 — Evidence Collection (read-only)
All evidence comes from PTS APIs. No ECS / CloudMonitor calls are made.
Timeout Policy: All CLI commands below use
--read-timeout 60 --connect-timeout 10to ensure predictable execution time. Adjust if network conditions require longer waits.
Determine Report Type Before Fetching
- If user mentions "JMeter" or the report context indicates JMeter format: → Use
aliyun pts get-jmeter-report-details --region-id <R> --scene-id <S> --plan-id <P> --report-id <ID> --read-timeout 60 --connect-timeout 10- Otherwise (default: PTS Native): → Use
aliyun pts get-pts-report-details --region-id <R> --scene-id <S> --plan-id <P> --report-id <ID> --read-timeout 60 --connect-timeout 10- If the first attempt returns empty/incompatible format error, try the alternative command
Error Handling & Retry Policy
- If any CLI command fails, first run
aliyun pts <command> --helpto verify correct syntax- Maximum retry per command: 2 attempts. Do NOT retry indefinitely.
- If the error is "parameter missing" or "invalid parameter": fix the parameters and retry once
- If the error persists after 2 retries: report the exact error message to the user and exit gracefully
- Always run
aliyun configure ai-mode disablebefore any exit (success or failure)
⛔ NO-DATA-NO-ANALYSIS RULE: If the core report API (
get-pts-report-detailsorget-jmeter-report-details) returns an error or empty payload after all retries, you MUST skip Step 2 and Step 3 entirely. Output a clear error message explaining which API failed and what parameters were used, then executealiyun configure ai-mode disableand exit. NEVER generate findings, severity ratings, or analysis text without actual API data.
Fetch the report (required) — PTS Native format:
aliyun pts get-pts-report-details \
--region-id <RegionId> \
--scene-id <SceneId> \
--plan-id <PlanId> \
--report-id <HistoryReportId> \
--read-timeout 60 --connect-timeout 10
Fetch the report (required) — JMeter format:
aliyun pts get-jmeter-report-details \
--region-id <RegionId> \
--scene-id <SceneId> \
--plan-id <PlanId> \
--report-id <HistoryReportId> \
--read-timeout 60 --connect-timeout 10
Fetch scene baseline (optional, when SceneId supplied):
aliyun pts get-pts-scene-base-line --region-id <RegionId> --scene-id <SceneId> \
--read-timeout 60 --connect-timeout 10
Fetch live running data (optional, only if scene is still running):
aliyun pts get-pts-scene-running-data --region-id <RegionId> --scene-id <SceneId> \
--read-timeout 60 --connect-timeout 10
Look up scene metadata (optional, for context):
aliyun pts get-pts-scene --region-id <RegionId> --scene-id <SceneId> \
--read-timeout 60 --connect-timeout 10
Step 2 — Report-Based Diagnosis
Load references/tuning-knowledge-base.md and map observed report symptoms to known categories. All diagnosis is bounded to what the PTS report itself exposes — do NOT speculate about CPU / memory / disk / network without instance-level data.
Diagnosis categories (report-observable only):
- PTS Client-Config — concurrency ramp shape, pressure-source region, keep-alive / HTTPS handshake patterns, client-side timeout/backoff signals
- Application-Layer — 5xx error clustering, sampler-level error concentration, connection errors, status-code distribution
- Throughput-Pattern — QPS / TPS curve plateaus, stepwise ceilings, saturation knee-points, divergence between concurrency and throughput
- Latency-Pattern — RT P50/P90/P99 distribution shape, P99 spikes, long-tail divergence, RT vs. concurrency correlation
Out of scope (these require instance-level metrics — do NOT diagnose here): CPU-Bound, Memory-Bound, Disk-IO-Bound, Network-Bound.
Step 3 — Ranked Findings
Output a structured list sorted by severity. Each item MUST contain:
- area: PTS-Client-Config | Application-Layer | Throughput-Pattern | Latency-Pattern
severity: high | medium | low
evidence: "<short quote of report field / metric data point>"
suggestion: "<concrete action grounded in report data>"
Cap at TopN items (default 5). Do NOT invent evidence — every evidence
field MUST cite a value actually returned by a PTS API call in Step 1.
Success Verification
This skill is read-only + analytical. Success criteria:
- PTS report CLI call returned a non-error response with a usable payload
- At least one finding has
severity=highOR the analyzer explicitly says "no high-severity report-level issue detected" - Every finding has an
evidencefield grounded in actual fetched report data (no hallucination) - Output is ranked; ties broken by recency / position in the report timeline
- No claim is made about instance-level resources (CPU/Memory/Disk/Network)
Cleanup
No resources are created by this skill, so no cleanup is required.
# [MUST] AI-Mode exit point
aliyun configure ai-mode disable
Best Practices
- Stay within report scope — if the user asks "is my CPU saturated?", explicitly say that requires instance-level diagnostics, not this skill.
- Cross-reference baseline when available — supplying
SceneIdlets the analyzer compare current report against the scene baseline to surface regressions. - Never recommend without evidence — if the report payload lacks a field, say so explicitly; do not fill gaps with generic advice.
- Be specific about report fields — quote the actual metric (e.g., "P99 climbed from 120ms to 980ms at concurrency 800") rather than vague phrasing.
- Surface handoffs:
- If user wants to re-run a scenario with new params: "This requires executing a new scenario; delegating to
alibabacloud-pts-task." - If user wants instance-level resource diagnosis: "This requires instance-level metrics; please use the corresponding cloud-product diagnostic skill."
- If user wants to re-run a scenario with new params: "This requires executing a new scenario; delegating to
References
references/ram-policies.md— Read-only PTS permission setreferences/tuning-knowledge-base.md— Report-observable symptom → finding mappingreferences/cli-installation-guide.md— Aliyun CLI install (shared)
Files included
- references/cli-installation-guide.md
- references/ram-policies.md
- references/tuning-knowledge-base.md
- SKILL.md

