Huawei Cloud Vod Collector
|
- Skill ID
- huaweicloud/huaweicloud-skills/huawei-cloud-vod-collector
- Publisher
- huaweicloud
- Repository
- huaweicloud-skills
- Installs
- 302
- Files
- 23
- Synced
- Sep 16, 2026
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 useskill action=execto 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.shThe script detects whetherskill-quality-cliis 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-feedbackto 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
deliverreturnsneed_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 fromassets/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.txtWorkflow
Phase 1: Capture
Triggered by hooks (tool errors, user rejection, proactive reports). Generates raw feedback.
1.1 Generate Raw Feedback
- Write the feedback file —
python <SKILL_DIR>/scripts/md_io.py write-feedback --output .vod/feedbacks/(see--helpfor 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_typewithincapture.dedup_window_sec→ incrementrecurrence_countinstead 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_urlcomes only fromassets/config.yaml→delivery.channels.gitcode.repo_url. Never usegit 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/feedbacksUpdate 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/feedbacksAuto-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
- Check & install: Execute
bash <SKILL_DIR>/scripts/vod_install.sh(Linux/macOS) orpowershell <SKILL_DIR>/scripts/vod_install.ps1(Windows).
- Start server:
python <SKILL_DIR>/scripts/vod_deliver.py server-start→ getpidfrom JSON output
- Initiate QR login:
curl -s -X POST http://localhost:8080/login/start→ getlogin_url,qr_code,session_idfrom JSON
- Show QR to user: Display the
login_urland ASCIIqr_code. Say: "🔐 First-time login requires AtomGit authorization. Scan the QR code or open the URL in your browser."
- 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.
- 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.
- Stop server:
python <SKILL_DIR>/scripts/vod_deliver.py server-stop --pid <pid>
- Re-run the original
delivercommand.
Behavioral Constraints
- Cancel: Clean up current file only. Never delete
.vod/or other records.
