agent-skills/skills/hologres-cli/SKILL.md
AI-agent-friendly Hologres CLI with safety guardrails and structured JSON output. Use for database operations, schema inspection, SQL execution, data import/export, Dynamic Table lifecycle management (V3.1+ syntax), and GUC parameter management. Triggers: "hologres cli", "hologres command", "hologres database", "dynamic table", "hologres查询", "hologres guc", "GUC parameter"
npx skillsauth add aliyun/hologres-ai-plugins hologres-cliInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
AI-agent-friendly command-line interface for Hologres with safety guardrails and structured JSON output.
# Requires Python 3.11+
pip install hologres-cli
# Or install a specific version
pip install hologres-cli==0.2.0
Profile-based configuration stored in ~/.hologres/config.json.
# Interactive setup wizard
hologres config
# Or set values directly
hologres config set region_id cn-hangzhou
hologres config set instance_id hgprecn-cn-xxx
hologres config set database mydb
Profile resolution priority: --profile <name> flag > current profile > error (prompts to run hologres config).
pip install hologres-cli
hologres config # Interactive setup
hologres status # Check connection
hologres schema tables # List tables
hologres sql run "SELECT * FROM orders LIMIT 10" # Query data
hologres --profile prod status # Use specific profile
hologres dt list # List Dynamic Tables
| Command | Description |
|---------|-------------|
| hologres status | Check connection status |
| hologres instance <name> | Query instance version/connections |
| hologres warehouse [name] | List or query warehouses |
| hologres schema tables | List all tables |
| hologres schema describe <table> | Show table structure |
| hologres schema dump <schema.table> | Export DDL |
| hologres schema size <schema.table> | Get table storage size |
| hologres table list [--schema S] | List all tables |
| hologres table create -n TABLE -c COLS [options] [--dry-run] | Create a table (supports logical partition V3.1+) |
| hologres table dump <schema.table> | Export DDL for a table |
| hologres table show <table> | Show table structure (columns, types, nullable, defaults, primary key, comments) |
| hologres table size <schema.table> | Get table storage size |
| hologres table properties <table> | Show Hologres-specific table properties (orientation, distribution_key, clustering_key, TTL, etc.) |
| hologres table drop <table> [--if-exists] [--cascade] --confirm | Drop a table (dry-run by default) |
| hologres table truncate <table> --confirm | Truncate (empty) a table (dry-run by default) |
| hologres table alter TABLE [options] [--dry-run] | Alter table properties (add column, rename, TTL, etc.) |
| hologres partition list --table <table> | List partitions of a logical partition table |
| hologres partition create --table <table> | Create partition (no-op for logical tables, returns notice) |
| hologres partition drop --table <table> --partition VALUE --confirm | Drop partition (deletes partition data) |
| hologres partition alter --table <table> --partition <value> --set <key=value> [--dry-run] | Alter partition properties (keep_alive, storage_mode, generate_binlog) |
| hologres partition alter --table <table> --partition <value> --set <key=value> [--dry-run] | Alter partition properties (keep_alive, storage_mode, generate_binlog) |
| hologres view list [--schema S] | List all views |
| hologres view show <view> | Show view definition and structure |
| hologres extension list | List installed extensions |
| hologres extension create <name> [--if-not-exists] | Create (install) a database extension |
| hologres guc show <param> | Show current value of a GUC parameter |
| hologres guc set <param> <value> | Set GUC parameter at database level (persistent) |
| hologres sql run "<query>" | Execute read-only SQL |
| hologres sql run --write "<dml>" | Execute write SQL |
| hologres sql explain "<query>" | Show SQL execution plan |
| hologres data export <table> -f out.csv [-q <query>] [-d <delimiter>] | Export to CSV |
| hologres data import <table> -f in.csv [-d <delimiter>] [--truncate] | Import from CSV |
| hologres data count <table> [-w <where>] | Count rows |
| hologres history [-n <count>] | Show command history |
| hologres ai-guide | Generate AI agent guide |
| hologres ai gen "<prompt>" [--model] | Generate text using AI function |
| hologres ai image-gen "<prompt>" -o volume://vol/path [options] | Generate images to OSS volume using AI function |
| hologres ai t2v "<prompt>" -o volume://vol/path [options] | Generate video from text (text-to-video) |
| hologres ai i2v "<prompt>" --img-url <url\|local_file> -o volume://vol/path [options] | Generate video from first-frame image (image-to-video) |
| hologres ai r2v "<prompt>" --reference-url <url\|local_file> -o volume://vol/path [options] | Generate video from reference images (reference-to-video) |
| hologres ai video-edit "<prompt>" --video <url\|local_file> -o volume://vol/path [options] | Edit video with text instructions |
| hologres volume create <name> --endpoint <ep> --root <root> --rolearn <arn> --access-key <ak> --access-secret <sk> | Create a local volume config (also creates OSS directory placeholder) |
| hologres volume list | List all volumes in current profile |
| hologres volume delete <name> | Delete a volume config |
| hologres volume list-files --volume <name> [--prefix P] [--max-count N] [--net internet\|intranet] | List files in volume |
| hologres volume delete-file --volume <name> --file <path> [--confirm] [--net internet\|intranet] | Delete file from volume (dry-run by default) |
| hologres volume download-file --volume <name> --file <path> -d <dir> [--net internet\|intranet] | Download file from volume |
| hologres volume upload-file --volume <name> --local-file <path> --target-file <path> [--net internet\|intranet] | Upload file to volume |
| hologres volume view volume://<name>/path/file [--net internet\|intranet] | Download file to temp dir and open with system viewer |
| hologres model list [--task T] [--model-type T] [--search S] | List registered external AI models |
| hologres model catalog [--task T] [--search S] | List supported AI model types from the bundled catalog (no DB connection) |
| hologres model create --name N --type T --api-key K [--config J] [--dry-run] | Register an external AI model |
| hologres model delete <model_name> [--confirm] | Delete a registered external AI model (dry-run by default) |
Full lifecycle management for Hologres Dynamic Tables.
| Command | Description |
|---------|-------------|
| hologres dt create | Create a Dynamic Table |
| hologres dt list | List all Dynamic Tables |
| hologres dt show <table> | Show Dynamic Table properties |
| hologres dt ddl <table> | Show DDL (CREATE statement) |
| hologres dt lineage <table> | Show dependency lineage |
| hologres dt lineage --all | Show lineage for all DTs |
| hologres dt storage <table> | Show storage details |
| hologres dt state-size <table> | Show state table size (incremental) |
| hologres dt refresh <table> | Trigger manual refresh |
| hologres dt alter <table> | Alter DT properties |
| hologres dt drop <table> | Drop DT (dry-run by default) |
| hologres dt convert [table] | Convert V3.0 → V3.1 syntax |
# Minimal
hologres dt create -t my_dt --freshness "10 minutes" \
-q "SELECT col1, SUM(col2) FROM src GROUP BY col1"
# With partitioning and serverless
hologres dt create -t ads_report --freshness "5 minutes" --refresh-mode auto \
--logical-partition-key ds --partition-active-time "2 days" \
--partition-time-format YYYY-MM-DD \
--computing-resource serverless --serverless-cores 32 \
-q "SELECT repo_name, COUNT(*) AS events, ds FROM src GROUP BY repo_name, ds"
# Incremental refresh
hologres dt create -t tpch_q1 --freshness "3 minutes" --refresh-mode incremental \
-q "SELECT l_returnflag, l_linestatus, COUNT(*) FROM lineitem GROUP BY 1,2"
# Dry-run (preview SQL without executing)
hologres dt create -t my_dt --freshness "10 minutes" -q "SELECT 1" --dry-run
Key create options:
| Option | Description |
|--------|-------------|
| -t, --table | Table name [schema.]table (required) |
| -q, --query | SQL query for data definition (required) |
| --freshness | Data freshness target, e.g. "10 minutes" (required) |
| --refresh-mode | auto / full / incremental |
| --auto-refresh/--no-auto-refresh | Enable/disable auto refresh |
| --cdc-format | stream (default) / binlog |
| --computing-resource | local / serverless / <warehouse> |
| --serverless-cores | Serverless computing cores |
| --logical-partition-key | Partition column for logical partition |
| --partition-active-time | Active partition window, e.g. "2 days" |
| --partition-time-format | Partition key format, e.g. YYYY-MM-DD |
| --orientation | column / row / row,column |
| --distribution-key | Distribution key columns |
| --clustering-key | Clustering key with sort order |
| --event-time-column | Event time column (Segment Key) |
| --ttl | Data TTL in seconds |
| --refresh-guc | GUC params for refresh (repeatable) |
| --dry-run | Preview SQL without executing |
hologres dt list # List all DTs with refresh info
hologres dt show public.my_dt # Show all properties
hologres dt ddl public.my_dt # Show CREATE statement
hologres dt list -f table # Table format output
hologres dt lineage public.my_dt # Single table lineage
hologres dt lineage --all # All DTs lineage
hologres dt lineage my_dt -f table # Table format
base_table_type: r=table, v=view, m=materialized view, f=foreign table, d=Dynamic Table.
hologres dt storage public.my_dt # Storage breakdown
hologres dt state-size public.my_dt # State table size (incremental DTs)
hologres dt refresh my_dt
hologres dt refresh my_dt --overwrite --partition "ds = '2025-04-01'" --mode full
hologres dt refresh my_dt --dry-run
hologres dt alter my_dt --freshness "30 minutes"
hologres dt alter my_dt --no-auto-refresh
hologres dt alter my_dt --refresh-mode full --computing-resource serverless
hologres dt alter my_dt --refresh-guc timezone=GMT-8:00 --dry-run
hologres dt drop my_dt # Dry-run by default (safety)
hologres dt drop my_dt --confirm # Actually drop
hologres dt drop my_dt --if-exists --confirm
hologres dt convert my_old_dt # Convert single table
hologres dt convert --all # Convert all V3.0 tables
hologres dt convert my_old_dt --dry-run
# List partitions
hologres partition list -t public.logs
# Drop a partition
hologres partition drop -t my_table --partition "2025-04-01" --confirm
# Alter partition properties
hologres partition alter -t public.logs --partition "ds=2025-03-16" --set "keep_alive=TRUE"
hologres partition alter -t my_table --partition "ds=2025-03-16" --set "keep_alive=TRUE" --set "storage_mode=hot" --dry-run
hologres -f json schema tables # JSON (default)
hologres -f table schema tables # Human-readable table
hologres -f csv schema tables # CSV
hologres -f jsonl schema tables # JSON Lines
// Success
{"ok": true, "data": {"rows": [...], "count": 10}}
// Error
{"ok": false, "error": {"code": "ERROR_CODE", "message": "..."}}
All connections automatically set safety GUCs upon creation:
SET hg_experimental_enable_adaptive_execution = on — Enables adaptive execution to prevent OOMSET hg_computing_resource = 'serverless' — Routes queries to the serverless computing poolThese are applied transparently at the connection layer; no user action needed.
Queries without LIMIT returning >100 rows fail with LIMIT_REQUIRED.
# Will fail if >100 rows
hologres sql run "SELECT * FROM large_table"
# Fix: add LIMIT
hologres sql run "SELECT * FROM large_table LIMIT 50"
# Or disable check
hologres sql run --no-limit-check "SELECT * FROM large_table"
Write operations (INSERT, UPDATE, DELETE, DROP, CREATE, ALTER, TRUNCATE, GRANT, REVOKE) require --write flag.
hologres sql run --write "INSERT INTO logs VALUES (1, 'test')"
DELETE/UPDATE without WHERE clause are blocked.
# Blocked
hologres sql run --write "DELETE FROM users"
# Must have WHERE
hologres sql run --write "DELETE FROM users WHERE status='inactive'"
| Code | Description |
|------|-------------|
| CONNECTION_ERROR | Failed to connect |
| QUERY_ERROR | SQL execution error |
| LIMIT_REQUIRED | Need LIMIT clause |
| WRITE_GUARD_ERROR | Write operation without --write flag |
| DANGEROUS_WRITE_BLOCKED | DELETE/UPDATE without WHERE clause |
| WRITE_BLOCKED | Write operation not allowed |
| NOT_FOUND | Table or resource not found |
| INVALID_INPUT | Invalid identifier or input validation failed |
| INVALID_ARGS | Invalid or missing arguments |
| NO_CHANGES | No properties specified to alter |
| EXPORT_ERROR | Data export failed |
| IMPORT_ERROR | Data import failed |
| VIEW_NOT_FOUND | View not found |
| OSS_ERROR | OSS operation failed (e.g. directory placeholder creation on volume create) |
Auto-masks by column name pattern:
138****5678j***@example.com********Disable: hologres sql run --no-mask "SELECT * FROM users LIMIT 10"
| Document | Content | |----------|--------| | commands.md | Complete command reference with DT commands | | ai-volume-model.md | AI generation, volume storage, and model commands | | safety-features.md | Safety guardrails details |
LIMIT for large result sets--dry-run to preview DT SQL before executing--confirm explicitly for destructive operations (table drop, table truncate, dt drop)WHERE clause in DELETE/UPDATEhologres status before batch operationshologres dt lineage to understand DT dependencies before alteringSet HOLOGRES_SKILL environment variable before calling CLI to tag queries with skill origin:
export HOLOGRES_SKILL=hologres-query-optimizer
hologres sql run "SELECT * FROM orders LIMIT 10"
Queries will appear in hg_query_log with application_name = "hologres-cli/hologres-query-optimizer".
This enables per-skill SQL statistics on the Hologres server:
SELECT
split_part(application_name, '/', 2) AS skill,
COUNT(*) AS query_count,
AVG(duration) AS avg_duration_ms
FROM hologres.hg_query_log
WHERE query_start > now() - interval '1 hour'
AND application_name LIKE 'hologres-cli/%'
GROUP BY 1
ORDER BY 2 DESC;
All CLI errors return structured JSON with retryable and hint fields for automatic retry decisions:
{"ok": false, "error": {"code": "...", "message": "...", "retryable": true/false, "hint": "..."}}
| Code | Retryable | When | Agent Action |
|------|-----------|------|--------------|
| CONNECTION_ERROR | Yes | Network/auth failure | Check config, retry after delay |
| CONNECTION_TIMEOUT | Yes | Server busy | Retry after short delay |
| CONFIG_ERROR | No | Invalid config | Run hologres config |
| PROFILE_NOT_FOUND | No | Profile missing | Use hologres config list |
| INVALID_INPUT | No | Bad parameters | Fix input and retry |
| INVALID_ARGS | No | Wrong arguments | Check --help |
| WRITE_GUARD_ERROR | No | Write without flag | Add --write flag |
| DANGEROUS_WRITE_BLOCKED | No | DELETE/UPDATE no WHERE | Add WHERE clause |
| LIMIT_REQUIRED | No | SELECT >100 rows | Add LIMIT or --no-limit-check |
| QUERY_ERROR | Yes | SQL execution failed | Check syntax, retry once |
| QUERY_TIMEOUT | Yes | Query too slow | Simplify query or add filters |
| TABLE_NOT_FOUND | No | Table doesn't exist | Verify with hologres table list |
| NOT_FOUND | No | Resource missing | Run corresponding list command |
| FILE_NOT_FOUND | No | Path invalid | Verify file path |
| OSS_ERROR | Yes | Storage failure | Check credentials, retry |
| NO_CHANGES | No | Nothing to alter | Specify properties to change |
| INTERNAL_ERROR | Yes | Unexpected failure | Retry once, then report bug |
| MODEL_TYPE_NOT_SUPPORTED | No | Wrong model type | Use hologres model list |
tools
Hologres 实例健康诊断与巡检分析。当用户提到实例健康诊断、实例巡检、实例使用状况分析、慢查询分析、报错分析、Warehouse 资源分析、连接数分析、CPU 内存使用分析、查询失败排查等场景时使用。覆盖 Warehouse 资源巡检、FAILED 报错归类分析、CPU/内存粒度慢查询分析三大核心模块,输出结构化诊断报告和优化建议。 所有 SQL 通过 hologres-cli 执行,享有安全护栏、结构化 JSON 输出和自动错误重试能力。
development
Hologres UV/PV computation using Dynamic Tables and RoaringBitmap for real-time deduplication at scale. Use for building incremental UV/PV pipelines, RoaringBitmap-based user deduplication, flexible time-range UV aggregation, and text-to-int UID encoding for bitmap compatibility. Triggers: "hologres uv", "hologres pv", "roaringbitmap", "rb_build_agg", "rb_or_agg", "去重", "UV计算", "用户去重", "bitmap去重", "实时UV", "hg_id_encoding"
development
Hologres DDL schema design and table creation expert. Use for generating CREATE TABLE statements, choosing storage formats (column/row/row-column), configuring table properties (distribution_key, clustering_key, bitmap_columns, event_time_column), designing partition tables, selecting data types, and optimizing table schemas for different query patterns. Triggers: "hologres建表", "hologres create table", "hologres schema", "hologres DDL", "distribution_key", "clustering_key", "bitmap_columns", "event_time_column", "列存", "行存", "行列共存", "分区表", "hologres table design", "表设计", "hologres数据类型"
data-ai
Hologres privilege management using PostgreSQL standard authorization model (expert permission model). Use for creating users, granting/revoking Schema/table/column/view privileges, configuring default privileges for future objects, diagnosing permission issues, and planning role-based access control. Triggers: "hologres权限", "hologres grant", "hologres revoke", "permission denied", "权限管理", "hologres privileges", "hologres authorization", "default privileges", "角色权限", "授权"