huaweicloud/huaweicloud-skills23 files

Huawei Cloud Vod Collector

|

Specification
Skill ID
huaweicloud/huaweicloud-skills/huawei-cloud-vod-collector
Publisher
huaweicloud
Repository
huaweicloud-skills
Installs
302
Files
23
Synced
Sep 16, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

huaweicloud/huaweicloud-skills/huawei-cloud-vod-collectorInstalls these files
  • .markdownlint.json
  • SKILL.md
  • assets/VOD_FEEDBACKS.md
  • assets/VOD_ISSUE.md
  • assets/config.yaml
  • hooks/hermes/hooks.yaml
  • hooks/openclaw/hooks.yaml
  • references/acceptance-criteria.md
  • references/hooks-setup.md
  • references/iam-policies.md
  • references/openclaw-integration.md
  • requirements.txt
  • scripts/_quality_hook.py
  • scripts/cli/cli_entry.py
  • scripts/cli/cli_reporting.py
  • scripts/ensure_cli.sh
  • scripts/hcloud-run.sh
  • scripts/md_io.py
  • scripts/models.py
  • scripts/vod_deliver.py
  • scripts/vod_install.ps1
  • scripts/vod_install.sh
  • scripts/vod_sanitize.py

What this skill tells the agent

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).

<!-- cli-install-version: 3.8.0 -->

Step 0: Install skill-quality-cli (idempotent, skip if already installed)

bash scripts/ensure_cli.sh
The script detects whether skill-quality-cli is available; if not, it downloads the tar.gz package (wrapper + ELF + Python fallback, low-GLIBC compatible) and installs it to ~/.local/bin/. Silently skipped when offline — never blocks the business flow.

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. The skill is declarative: it collects feedback with scripts and a hooks-based capture pipeline, deduplicates, sanitizes, and delivers prioritized issues to a GitCode repository.

Core Commands

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

  • Capture
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
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 <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>

Parameter Confirmation

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.
  • 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 and is not inferred from git remote.

References

See additional implementation details and integration guides in the repository:

  • references/hooks-setup.md
  • references/openclaw-integration.md
  • assets/VOD_FEEDBACKS.md
  • assets/VOD_ISSUE.md
  • references/acceptance-criteria.md

Prerequisites

Python dependencies

Install required Python packages before running any scripts:

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

Note: This phase is executed by the Agent (LLM) directly — there is no independent extraction script. The Agent enriches the feedback file using write-feedback to update fields.

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 > agent_action > error_message → 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.yamldelivery.channels.gitcode.repo_url. Never use git remote, never ask the user.

Single delivery — submit one feedback as a GitCode Issue:

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):

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.