huawei-cloud-skill-audit

v2026.09.24

Audit Huawei Cloud skills for quality, security, and compliance using a three-check pipeline: skillspector (AI security) and gitleaks (credential leak). Generates structured reports with issue details and fix strategies. Triggers include: "审计技能","技能审计","检查技能质量","扫描技能问题","技能安全审计", "audit skill","check skill quality","scan skills for issues","skill audit", "华为云技能审计","技能合规检查","skill gate","质量门禁","技能检查", "audit huawei cloud skill","verify skill compliance","技能质量检查","跑审计","安全扫描".

GitHub
安装命令
npx skhub add huaweicloud/huawei-cloud-skill-audit
Markdown
SKILL.md

Huawei Cloud Skill Audit

Three-check security pipeline for auditing Huawei Cloud skills — security gate.


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

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

> **⚠️ Mandatory: every `hcloud` command in this skill MUST be wrapped with `skill-quality-cli run --skill-name huawei-cloud-skill-audit -- ` — bare `hcloud` calls are strictly forbidden.**

> **⚠️ 强制要求:执行本 skill 的任何 hcloud 命令必须用 `skill-quality-cli run --skill-name huawei-cloud-skill-audit -- ` 包裹,禁止裸调 hcloud。**

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

Scan a single Huawei Cloud skill directory or a folder of skills, run three security gates, and generate a structured report with issue details and fix strategies.

Three checks:

#ToolCheck ContentImplementation
1skillspectorAI skill security scanner: 51 rules / 609 patterns across 17 categories (prompt injection, data exfiltration, privilege escalation, supply chain, behavioral AST, taint tracking, MCP analysis, YARA)Built-in (pure Python, 51 rules + AST analysis)
2gitleaksCredential leak scan: 42 rules detecting hardcoded API keys, passwords, private keys, tokensBuilt-in (pure Python, 42 rules + Shannon entropy)
3runtime_securityCWE high-risk runtime patterns: 36 rules (command injection, deserialization, credential theft, sandbox escape, persistence, destructive ops, mining) + 3 skill-quality rules (Q001-Q003)Built-in (pure Python, level-independent, all rules always run)

Dependency: Quality telemetry is collected automatically via skill-quality-cli (installed by scripts/ensure_cli.sh if absent).

Prerequisites

  1. Python 3.10+ — for the built-in skillspector and gitleaks checks
  2. Node.js + npx — Optional; only needed for manual markdownlint-cli2 --fix during remediation
  3. hcloud CLI — For Huawei Cloud service verification (optional, used in verification only)
  4. Huawei Cloud AK/SK — Not required for audit itself, but needed if verifying skill functionality after audit

skillspector and gitleaks are built-in (pure Python) — no external binary or pip install needed. External binaries are used as fallback if available on PATH.

To skip fallback auto-install of external binaries, use --no-install flag.


  • skill-quality-cli — ensured by bash scripts/ensure_cli.sh (idempotent, skips if present)
    • Upgrade: run skill-quality-cli upgrade manually (no auto-upgrade)
    • Disable telemetry report: set SKILL_QUALITY_DISABLE=1

Workflow

Input (skill path or folder)
    │
    ├── Discover Skills ──── Find SKILL.md in target or subdirectories
    │
    ├── Run Three Checks ────
    │   1. skillspector → AI security scan (51 rules, 609 patterns)
    │   2. gitleaks → Credential leak detection
    │   3. runtime_security → CWE high-risk runtime patterns (36 + 3 rules)
    │
    ├── Build Report ────
    │   Section 1: Scanned Skills
    │   Section 2: Issue Summary (by severity)
    │   Section 3: Issue Details (per-issue)
    │   Section 4: Fix Strategies (per rule/category)
    │
    └── Gate Verdict ──── PASS or FAIL

Scan Levels

LevelAnalyzersSpeedUse Case
criticalCRITICAL severity rules only (P5 harmful content)FastStrictest gate
highCRITICAL + ERROR severity rules + AST (exec/eval/os.system/反序列化)FastBlock high-risk issues
quickPattern matching only (all static regex rules)FastQuick pre-commit check
standardAll static analyzers (high 基础上放开 WARNING/INFO 级 AST + taint tracking)MediumCI/CD gate
deepStandard + MCP analysis (least privilege, tool poisoning, rug pull)SlowerPre-release full audit

Severity filtering applies only to SkillSpector (rule selection per scan level). gitleaks bundles only critical/high rules, so all of them run at every scan level. runtime_security is level-independent: all 39 rules (36 CWE + Q001-Q003) always run, and its CRITICAL findings always block the gate.

AST 分析在 high/standard/deep 均执行(high 为默认档, 必须带 AST, 否则 eval/exec/pickle.loads 等执行类检测可被直接绕过)。high 档楼层过滤保留 critical/high 级发现, 因此默认档阻断: AST1/2/5/9/10(exec/eval/os.system/getattr 反射/反序列化全部 ERROR 级); WARNING 级(AST3/4/6/7: compile/subprocess/动态 import 等)仅在 standard/deep 可见。.py 解析失败不再静默——产出 ERROR 级 AST-SYNTAX 发现并阻断 gate(fail-closed, 防恶意写坏代码规避 AST)。


KooCLI Command Format Standard

This skill audits skill directories locally and does not directly invoke hcloud CLI commands. When verifying a skill's functionality after audit, the standard KooCLI format applies — the line below is an illustrative template, not a runnable command:

bash scripts/hcloud-run.sh <Service> <Operation> --cli-region=<region> [--key=value ...]   # 强制入口:一切 hcloud 经 hcloud-run.sh 包装执行

Core Commands

The examples below use real, always-existing directories (. = current directory, .. = parent directory) so every command is executable as-is: run from inside a skill directory to audit that single skill, or from a parent folder to audit all skills under it. Any existing skill directory path works the same way.

Scan a single skill

# Run from inside the skill directory
skill-quality-cli run --skill-name huawei-cloud-skill-audit -- python3 scripts/skill_audit.py --target .
# 等效直接执行(不经 CLI 包装,无质量上报)
python3 scripts/skill_audit.py --target .

Scan a folder of skills

# Run from the parent folder that contains the skills
skill-quality-cli run --skill-name huawei-cloud-skill-audit -- python3 scripts/skill_audit.py --target ..
# 等效直接执行(不经 CLI 包装,无质量上报)
python3 scripts/skill_audit.py --target ..

Scan with specific level

skill-quality-cli run --skill-name huawei-cloud-skill-audit -- python3 scripts/skill_audit.py --target .. --scan-level quick
# 等效直接执行(不经 CLI 包装,无质量上报)
python3 scripts/skill_audit.py --target .. --scan-level quick

Selective check execution

skill-quality-cli run --skill-name huawei-cloud-skill-audit -- python3 scripts/skill_audit.py --target .. --checks skillspector
python3 scripts/skill_audit.py --target .. --checks skillspector
skill-quality-cli run --skill-name huawei-cloud-skill-audit -- python3 scripts/skill_audit.py --target .. --skip-checks gitleaks
python3 scripts/skill_audit.py --target .. --skip-checks gitleaks

Run with custom tool paths

Custom binary locations can be overridden with --skillspector, --gitleaks and --node-bin (see Parameter Confirmation; default auto-install location is ~/.local/bin/):

skill-quality-cli run --skill-name huawei-cloud-skill-audit -- python3 scripts/skill_audit.py --target .. --scan-level standard
# 等效直接执行(不经 CLI 包装,无质量上报)
python3 scripts/skill_audit.py --target .. --scan-level standard

Available --scan-level values: high (default), critical, quick, standard, deep. Available --checks: skillspector, gitleaks, runtime_security. Use --skip-checks to exclude specific checks.


Parameter Confirmation

ParameterRequiredDescriptionExample
--targetYesSingle skill dir or parent folder of skills/path/to/skill-dir
--output-dirNoReport output directory (default: parent of target)--output-dir ./reports
--scan-levelNoScan depth: high/critical/quick/standard/deep (default: high)--scan-level deep
--checksNoComma-separated checks to run (default: all); valid values are only skillspector, gitleaks, runtime_security. Mutually exclusive with --skip-checks--checks skillspector
--skillspectorNoSkillSpector binary path override--skillspector ~/.local/bin/skillspector
--gitleaksNogitleaks binary path override (auto-installs to ~/.local/bin when missing)--gitleaks ~/.local/bin/gitleaks
--skip-checksNoComma-separated checks to skip; mutually exclusive with --checks--skip-checks gitleaks
--no-installNoSkip auto-install of tools--no-install

Report Structure

Report is saved as skill-gate-report-<timestamp>.txt in the parent directory of the scanned path.

InputReport saved to
/repo/skills/huawei-cloud-ecs-manage/repo/skills/skill-gate-report-<timestamp>.txt
/repo/skills/repo/skill-gate-report-<timestamp>.txt

Four sections:

  1. Scanned Skills — list of all skills found
  2. Issue Summary — count by severity (CRITICAL/ERROR/WARNING) with rule breakdown (INFO excluded)
  3. Issue Details — per-issue: skill name, rule, line number, snippet, message
  4. Fix Strategies — actionable remediation for each unique rule/category

Fix Strategies Reference

skillspector

RuleFix
P1-P8 (Prompt Injection / System Prompt Leakage)Do not embed user-controllable input in system prompts; use template variables with explicit escaping
E1-E5 (Data Exfiltration)Remove external URLs; use env vars for API endpoints; restrict network access in tool definitions
PE1-PE5 (Privilege Escalation)Avoid sudo/root commands; use capability-based permissions; do not disable security controls
AST (Behavioral AST: AST1-AST7/9/10)Replace exec()/eval() with safer alternatives; use importlib with allowlists
YR1-YR4 (YARA)Remove reverse shell/webshell patterns; move server functionality to separate controlled service
SC1/SC2/SC3/SC7 (Supply Chain)Pin dependency versions with hashes; update vulnerable dependencies
EA1-EA4 (Excessive Agency)Scope tool permissions to the minimum required for the task
MP1-MP3, OH1-OH3 (Memory Poisoning / Output Handling)Validate memory writes and tool output before use
RA1-RA2, AS1-AS3 (Rogue Agent / Agent Snooping)Restrict agent delegation and session data access
SSRF1-SSRF3 (Server-Side Request Forgery)Validate/allowlist external endpoints before requests
TM1-TM4 (Tool Misuse)Validate tool parameters; never concatenate untrusted input into shell commands

gitleaks

RuleFix
private-keyRemove hardcoded private key; load from file or secret manager at runtime; add key file to .gitignore
(other rules)Replace hardcoded credential with environment variable or secret manager reference; see https://gitleaks.io/docs/secrets

Remediation Workflow (audit -> fix -> verify)

After running the audit and getting a FAIL, follow this sequence:

  1. Fix issues by hand — Apply the fixes from the report's Fix Strategies section, or the skillspector/gitleaks rule tables above.
  2. Re-run the full audit to verify PASS.

Markdown style and SKILL.md spec issues are not audited by this skill; use external tools like markdownlint-cli2 --fix only if you need to fix markdown style separately.


CI/CD Integration

jobs:
  skill-gate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.12'
      - name: Run audit
        run: python3 scripts/skill_audit.py --target . --output-dir .
      - name: Upload report
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: skill-gate-report
          path: skill-gate-report-*.txt

Configuration Files

The built-in checks use their bundled rule sets — no external config required:

  • scripts/checks/skillspector_rules.json — skillspector rules (51 rules / 609 patterns)
  • scripts/checks/gitleaks_rules.json — gitleaks rules (42 rules)

.markdownlint.json and skillcheck.toml shipped with the skill directory are not consumed by this audit; they are only for external markdownlint/skillcheck tooling.


Security Scanning

Why skillspector static-only mode has limitations

skillspector runs with --no-llm mode (static analysis only). Gaps:

AnalyzerWhat it detectsWhat it MISSES in --no-llm mode
Pattern matching (P1-P8, E1-E5, PE1-PE5, EA1-EA4, MP1-MP3, OH1-OH3, RA1-RA2, AS1-AS3, SSRF1-SSRF3, TM1-TM4)Prompt injection, data exfiltration, privilege escalation, agency/poisoning patternsLLM-generated obfuscated variants
AST analysis (AST1-AST7/9/10)exec()/eval() calls, dynamic imports, reflective getattr, unsafe deserializationRuntime-evaluated strings
YARA rules (YR1-YR4)Reverse shell, webshell patternsEncoded/obfuscated payloads
Supply chain (SC1/SC2/SC3/SC7)Vulnerable/pinned dependency issuesTransitive dependency exploits

Complementary tools

ToolDetectsInstall
skillspector (built-in, --no-llm)Prompt injection, reverse shell, command injection, data exfiltration, privilege escalation, supply chainAuto-installed
gitleaks (built-in)42 rules: API keys, passwords, private keys, tokensAuto-installed
gitcode-security-scannerGeneric keyword credentials, Chinese keywords, SQL injection, debug leakageFrom DTSE-SKILL repo

Recommended: Run both huawei-cloud-skill-audit AND gitcode-security-scanner for complete coverage.


Output Format

Report is a plain text file with four sections (Scanned Skills, Issue Summary, Issue Details, Fix Strategies) followed by a Gate Verdict (PASS/FAIL).


Verification Method

Run audit

skill-quality-cli run --skill-name huawei-cloud-skill-audit -- python3 scripts/skill_audit.py --target .
# 等效直接执行(不经 CLI 包装,无质量上报)
python3 scripts/skill_audit.py --target .

Verify fix

# Fix issues from the report's Fix Strategies section, then re-run audit
skill-quality-cli run --skill-name huawei-cloud-skill-audit -- python3 scripts/skill_audit.py --target .
# 等效直接执行(不经 CLI 包装,无质量上报)
python3 scripts/skill_audit.py --target .

Check gate verdict

# Gate Verdict: PASS = all checks passed
# Gate Verdict: FAIL = one or more checks have issues

Reference Documents

  • references/iam-policies.md — IAM permissions required for skill audit
  • references/verification-method.md — Detailed verification procedures
  • references/acceptance-criteria.md — Acceptance criteria for audit PASS
  • references/security-audit-guide.md — Security audit guide and fix strategies
  • references/gitcode-security-scanner.md — Complementary scanner usage guide
  • scripts/ensure_cli.sh — Idempotent skill-quality-cli installer (auto-installs if absent)

Best Practices

  • Run audit before accepting any Huawei Cloud skill contribution
  • Fix issues per the report's Fix Strategies, then always re-run full audit to verify PASS
  • For large repos, scan individual skills one at a time to avoid huge reports
  • Run both huawei-cloud-skill-audit and gitcode-security-scanner for complete security coverage

Notes

  • This skill only generates audit reports and fix strategies; it never modifies any skill file automatically. Fixes are applied manually by the user per the report's Fix Strategies or the Remediation Workflow; re-run the audit to verify after fixing.
  • Three-check pipeline runs sequentially; each check is independent
  • API endpoints are strictly prohibited from being inferred
  • Credentials (AK/SK) are read from environment variables; hardcoding is prohibited
  • If AK/SK is missing for post-audit verification, prompt the user; do not skip
  • Resources created during testing must be tracked; output manual cleanup instructions if any remain
  • INFO-level issues are excluded from the report; only CRITICAL/ERROR/WARNING appear
  • gitleaks --no-git mode scans current file contents only, not git history
  • gitleaks does not detect Chinese keyword credentials; use gitcode-security-scanner for those

Edge Cases

ScenarioHandling
Skill directory does not existReport error and terminate
Target has no SKILL.md and no subdirs with SKILL.mdReport error: no skills found
Built-in rules file missingAuto-download fallback binary (skillspector/gitleaks)
Python version < 3.12External skillspector binary not available; builtin still works
Large repo produces huge reportScan individual skills; use head/tail to read summary
gitleaks false positiveAdd to .gitleaksignore file
skillspector exit code 1Risk score > 50; treated as finding source, not hard failure

Design Principles

  • Two-Check Pipeline — Each check is independent and contributes to the overall gate verdict
  • Auto-Install — Missing tools are installed automatically on first run
  • Chain Verification — All enabled checks must pass for gate verdict PASS
  • Agent-proof — Write operations require user confirmation; automatic gate bypassing is not allowed
  • Data-Driven — Report is structured text with clear severity levels and fix strategies
  • Batch Repeatable — Same skill can be audited repeatedly; each run writes a fresh timestamped report
  • Credential Security — No hardcoded AK/SK; read from environment variables
  • Least Privilege — IAM policies follow minimum required permissions
发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

MIT

源路径

skills/devtools/common/huawei-cloud-skill-audit

默认分支

master

最新提交

f690d6e

Tree SHA

a8c0aba