huaweicloud/huaweicloud-skills

huawei-cloud-vod-collector

Invoke this skill to capture poor experiences and distill them into high-value requirements (Voice of Developer).

View source
Original skill document

Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.

VoD (Voice of Developer) Collector Skill

Script execution: All scripts are located in <SKILL_DIR>/scripts/. You must use skill action=exec to execute them. Do not run them directly in a shell. <SKILL_DIR> = directory containing this SKILL.md. .vod/ is relative to CWD (project working directory).

Overview

The VoD (Voice of Developer) Collector captures poor developer experiences and issues encountered while using Huawei Cloud tools or services. It prepares high-quality requirements or issue reports (GitCode issues) for product and engineering teams.

Core Commands

Common CLI examples grouped by function (all scripts under <SKILL_DIR>/scripts/):

  • Capture
bash
python <SKILL_DIR>/scripts/md_io.py write-feedback --output .vod/feedbacks/
python <SKILL_DIR>/scripts/vod_sanitize.py file --path <file>
  • Extract / Edit (use write-feedback to update fields or edit feedback files directly)
  • Deliver
bash
python <SKILL_DIR>/scripts/vod_deliver.py deliver --feedback-id <id> --feedbacks-dir .vod/feedbacks
python <SKILL_DIR>/scripts/vod_deliver.py update-status --feedback-id <id> --status delivered --feedbacks-dir .vod/feedbacks
  • Auto-login (only when deliver returns need_login)
bash
bash <SKILL_DIR>/scripts/vod_install.sh
python <SKILL_DIR>/scripts/vod_deliver.py server-start
curl -s -X POST http://localhost:8080/login/start
python <SKILL_DIR>/scripts/vod_deliver.py login-wait --session-id <session_id>
python <SKILL_DIR>/scripts/vod_deliver.py server-stop --pid <pid>

Parameters

The following parameters can be configured by users or integrators:

  • --feedbacks-dir: Path for storing feedbacks, default is .vod/feedbacks/.
  • --atomgit-home / ATOMCODE_HOME: AtomGit-GO configuration directory, default ~/.atomcode.
  • delivery.channels.gitcode.repo_url: Target repository URL — read only from assets/config.yaml.template.
  • capture.dedup_window_sec: In-session deduplication window in seconds.
  • storage.max_feedbacks_per_session: Maximum stored feedbacks per session (default 5).
  • Logging/Debug: Optional flags inside scripts to enable additional logging or debug modes.

Before delivery or auto-login, ensure the repo_url is provided via assets/config.yaml.template and is not inferred from git remote.

References

See additional implementation details and integration guides in the repository:


Prerequisites

Python dependencies

Install required Python packages before running any scripts:

bash
pip install -r <SKILL_DIR>/requirements.txt

Workflow

Phase 1: Capture

Triggered by hooks (tool errors, user rejection, proactive reports). Generates raw feedback.

1.1 Generate Raw Feedback

  • Write the feedback filepython <SKILL_DIR>/scripts/md_io.py write-feedback --output .vod/feedbacks/ (see --help for all params)
  • Sanitize — secrets are redacted automatically by write-feedback. To manually sanitize an existing file: python <SKILL_DIR>/scripts/vod_sanitize.py file --path <file>

1.2 Deduplication

  • In-session (during write): Same session_id + command + error_type within capture.dedup_window_sec → increment recurrence_count instead of writing a new file.
  • Cross-session (before Phase 3 delivery): Scan 10 recent feedbacks via LLM for duplicates.

Phase 2: Extract

Enrich feedback with context using LLM, then write all fields directly into the feedback file.

Each field maps to a specific section in the markdown file:

  • `error_stack` — Extract traceback/exit code from error context → ## Error Information → error_stack
  • `user_intent` — What the user wanted to do (e.g. "create OBS bucket"), NOT how → ## Context → user_intent
  • `scenario` — Reconstruct what the user was doing → ## User Report → scenario
  • `expected_behavior` — What the user expected. From dialog if explicit, otherwise infer from error → ## User Report → expected_behavior
  • `product_name` — Priority: annotation > agentaction > errormessage → Title prefix 【Product】
  • `environment` — Platform, OS, session ID, Python version → ## Context → environment
  • `dialog_context` — 3-5 key turns around the problem point, preserve original language → ## Context → dialog_context

Use write-feedback again to update fields, or edit the markdown file directly.


Phase 3: Deliver

3.1 Sync to GitCode Issue

⚠️ repo_url comes only from assets/config.yaml.templatedelivery.channels.gitcode.repo_url. Never use git remote, never ask the user.

Single delivery — submit one feedback as a GitCode Issue:

bash
python <SKILL_DIR>/scripts/vod_deliver.py deliver \
  --feedback-id <id> \
  --feedbacks-dir .vod/feedbacks

Update status — mark a feedback as delivered (or other status):

bash
python <SKILL_DIR>/scripts/vod_deliver.py update-status \
  --feedback-id <id> --status delivered --feedbacks-dir .vod/feedbacks

Auto-login — when deliver returns "need_login": true, perform the following:

CRITICAL: Before installation, MUST tell the user:

  • This login uses the open-source project AtomGit-GO (MIT license).
  • Source: https://gitcode.com/weixin_45218422/AtomGit-GO
  1. Check & install: Execute bash <SKILL_DIR>/scripts/vod_install.sh (Linux/macOS) or powershell <SKILL_DIR>/scripts/vod_install.ps1 (Windows).
  1. Start server: python <SKILL_DIR>/scripts/vod_deliver.py server-start → get pid from JSON output
  1. Initiate QR login: curl -s -X POST http://localhost:8080/login/start → get login_url, qr_code, session_id from JSON
  1. Show QR to user: Display the login_url and ASCII qr_code. Say: "🔐 First-time login requires AtomGit authorization. Scan the QR code or open the URL in your browser."
  1. Wait for authorization: python <SKILL_DIR>/scripts/vod_deliver.py login-wait --session-id <session_id> — blocks until scanned (up to 60s). Do NOT ask the user whether they scanned; just wait.
  1. On SCAN_SUCCESS, proceed to step 7.

CRITICAL: After successful authorization, MUST output the Security Notice:

  • Security Notice: After authorization, the access token will be saved to ~/.atomcode/auth.toml (owner-readable only, mode 0600). Anyone with file access can impersonate you — do not share this file.
  • Note: Stored only in the local AI Shell environment. It will not be uploaded to any external server.
  • Deletion: Manually delete the file, or it will be cleaned up when the environment resources are reclaimed.
  1. Stop server: python <SKILL_DIR>/scripts/vod_deliver.py server-stop --pid <pid>
  1. Re-run the original deliver command.

Behavioral Constraints

  • Cancel: Clean up current file only. Never delete .vod/ or other records.
  • Decline: Skip silently, do not suppress future triggers.
  • Validation: Only product/service issues. No empty/minimal content ("test", "hello").
  • Session limit: Max storage.max_feedbacks_per_session (default 5). Exceeded → inform user.
  • Updates: In-place only. ID immutable. State machine: open → promoted → resolved or open → discarded.
  • Auto-init: .vod/ created on first use. Never overwritten.

Storage

  • Path: <CWD>/.vod/feedbacks/
  • Format: VOD-YYYYMMDD-NNNN.md

CLI Reference

ParameterDescription
--atomgit-home <path>AtomGit-GO config dir (default: ~/.atomcode or $ATOMCODE_HOME)
--feedback-id <id>Feedback ID to deliver/update
--feedbacks-dir <path>Path to .vod/feedbacks/

Token Configuration

  • Token from open-source AtomGit-GO, saved in plaintext to ~/.atomcode/auth.toml (mode 0600)
  • Override: --atomgit-home <path>
  • Missing/expired → script returns "need_login": true → follow Phase 3.1 auto-login
  • Never write token to any file outside ~/.atomcode/auth.toml
from this repository

More skills

All skills
huaweicloud
Community

huawei-cloud-billing-scout

Huawei Cloud BSS billing (not AWS/Azure/other clouds; refuses pricing quotes, real-name review, and any non-billing scope): balance, spend, attribution, reconciliation, coupons, stored-value cards, enterprise/partner billing. One-page briefing via hcloud. Use only when the user explicitly mentions 华为云 / Huawei Cloud / BSS and 余额/账单/对账/资源包/代金券/储值卡/企业或伙伴账务; refuses pay, renew, refund, delete.

installs
242
GitHub stars
20
Updated
31 ago
huaweicloud
Community

huawei-cloud-cci-instance-management

Huawei Cloud CCI Container Instance Lifecycle Management Overview Manage Huawei Cloud CCI (Cloud Container Instance) full lifecycle using hcloud CLI (KooCLI). CCI is a serverless container service — no cluster management needed, just create a Namespace, define a Network, then deploy workloads directly. Architecture : hcloud CLI → CCI OpenAPI → Namespace / Network / Deployment / StatefulSet / Pod / EIPPool / Service / Ingress Constraints and Rules Security Rules Two step confirmation : All destructive operations (delete Namespace/Network/Deployment/StatefulSet/Pod/EIPPool) require explicit user confirmation — preview command, resource details, and risk warning first; execute only after user confirms. Credential security : Never expose AK/SK values in conversation, commands, or output. Only use hcloud configure list to check credential status (presence only). Prefer profile mode or environ

installs
242
GitHub stars
20
Updated
31 ago
huaweicloud
Community

huawei-cloud-computing-query

Queries Huawei Cloud computing resources (ECS/BMS/IMS/AS), Covers ECS instances, flavors, keypairs, quotas, server groups, block devices, NICs, VNC console, BMS bare metal servers/flavors/quotas, IMS images/OS versions/members/quotas, and AS scaling groups/configs/policies/activity logs/lifecycle hooks/warm pools/quotas. No write operations. Use this skill when the user needs to query ECS instance details, list flavors, check BMS availability, browse images, or view auto-scaling group/policy status. Triggers: 弹性云服务器, ECS, 裸金属, BMS, 镜像, IMS, 弹性伸缩, AS, 伸缩组, 伸缩策略, 规格查询, flavor, instance, image, scaling.

installs
242
GitHub stars
20
Updated
31 ago
huaweicloud
Community

huawei-cloud-find-skills

Invoke this skill to search, discover, browse, find and install any Huawei Cloud (华为云) agent skill.Triggers include: "华为云","华为云有什么skill","华为云相关skill","华为云agent skill 市场","华为云skill类目","explore Huawei Cloud skills","show Huawei Cloud skill categories","does a Huawei Cloud skill exist for...","which Huawei Cloud skills exist","搜索华为云技能","有没有管理ECS/OBS/RDS的skill","帮我找 XX 华为云skill","介绍 XX Skill 内容","华为云 XX Skill 具体做什么","安装华为云Skill".

installs
242
GitHub stars
20
Updated
31 ago