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)
Scan to join WeChat group