Alibabacloud Dms Skill
by @sdk-team
Alibaba Cloud DMS Database Read/Write Skill. Use this skill to search for target databases in DMS and execute SQL queries and data modifications. Triggers: "...
clawhub install alibabacloud-dms-skillπ About This Skill
name: alibabacloud-dms-skill description: | Alibaba Cloud DMS Database Read/Write Skill. Use this skill to search for target databases in DMS and execute SQL queries and data modifications. Triggers: "DMS query", "database query", "execute SQL", "search database", "DMS SQL", "insert data", "update data".
Alibaba Cloud DMS Database Read/Write
Search for target databases and execute SQL queries and data modifications via Alibaba Cloud DMS OpenAPI.
Scenario Description
This skill implements the following workflow:
1. Search Target Database β Search databases by keyword to get Database ID 2. Execute SQL Query β Execute SQL statements on the target database
Architecture
User Request β Search Database β Get Database ID β Execute SQL β Return Results
Prerequisites
AI-Mode Lifecycle (MUST follow in order)
This skill MUST run inside an AI-Mode session. Treat the following five steps as a strict lifecycle β do not skip, reorder, or interleave the setup steps with command execution:
1. aliyun configure ai-mode enable # Enable AI-Mode
2. aliyun configure ai-mode set-user-agent AlibabaCloud-Agent-Skills/alibabacloud-dms-skill # Register skill User-Agent
3. aliyun configure set --auto-plugin-install true && aliyun plugin update # Plugin update
4. # Execute commands
5. aliyun configure ai-mode disable # Disable AI-Mode (Cleanup)
Steps 1β3 belong to setup (this section). Step 4 is covered by Core Workflow. Step 5 is covered by Cleanup.
Pre-checks
> Pre-check 0: Aliyun CLI >= 3.3.3 required
> Run aliyun version to verify >= 3.3.3. If not installed or version too low,
> run curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash to install/update,
> or see references/cli-installation-guide.md for installation instructions.
> Pre-check 1: Enable AI-Mode
> [MUST] run aliyun configure ai-mode enable to enable AI-Mode before any other configuration or command.
> This activates the AI-Mode session that downstream OpenAPI services use to recognize agent-issued traffic.
> Pre-check 2: Register skill User-Agent under AI-Mode
> [MUST] run aliyun configure ai-mode set-user-agent AlibabaCloud-Agent-Skills/alibabacloud-dms-skill
> to register this skill's identifier as the AI-Mode User-Agent for the current session.
> Run this immediately after ai-mode enable and before any plugin update or DMS command.
> Pre-check 3: Aliyun CLI plugin update required
> [MUST] run aliyun configure set --auto-plugin-install true to enable automatic plugin installation.
> [MUST] run aliyun plugin update to ensure that any existing plugins are always up-to-date.
> Plugin update MUST happen AFTER AI-Mode is enabled and the User-Agent is registered, so the plugin manager itself reports the correct identifier.
brew install jqaliyun configure> Pre-check 4: Alibaba Cloud Credentials Required
>
> Security Rules:
> - NEVER read, echo, or print AK/SK values (e.g., echo $ALIBABA_CLOUD_ACCESS_KEY_ID is FORBIDDEN)
> - NEVER ask the user to input AK/SK directly in the conversation or command line
> - NEVER use aliyun configure set with literal credential values
> - ONLY use aliyun configure list to check credential status
>
>
> aliyun configure list
>
> Check the output for a valid profile (AK, STS, or OAuth identity).
>
> If no valid profile exists, STOP here.
> 1. Obtain credentials from Alibaba Cloud Console
> 2. Configure credentials outside of this session (via aliyun configure in terminal or environment variables in shell profile)
> 3. Return and re-run after aliyun configure list shows a valid profile[MUST] Per-command CLI User-Agent β In addition to the AI-Mode User-Agent registered in Pre-check 2,
every aliyun CLI command invocation in step 4 MUST also include:
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-dms-skill
The per-command flag and the AI-Mode session-level setting are complementary β both MUST be present so the identifier is sent on every request even if the AI-Mode session expires.
RAM Permissions
> [MUST] RAM Permission Pre-check: Verify that the current user has the following RAM permissions before execution.
> See references/ram-policies.md for the complete permission list.
Parameter Confirmation
> IMPORTANT: Parameter Confirmation β Before executing any command or API call, > ALL user-customizable parameters (e.g., database keyword, SQL statement, db-id, etc.) > MUST be confirmed with the user. Do NOT assume or use default values without explicit user approval.
| Parameter | Required/Optional | Description | Default | |-----------|------------------|-------------|---------| | keyword | Required | Database search keyword (1-128 chars, alphanumeric) | - | | db-id | Required | Database ID (positive integer, obtained from search) | - | | sql | Required | SQL statement to execute (1-10000 chars) | - | | logic | Optional | Whether to use logic database mode | false | | force | Optional | Confirm write operations (INSERT/UPDATE/DELETE) | false | | dry-run | Optional | Preview write operations without executing | false |
Core Workflow
Task 1: Search Target Database
Search for databases by keyword to get the Database ID:
./scripts/search_database.sh --json
Example:
# Search for databases containing "mydb"
./scripts/search_database.sh mydb --json
The output includes database_id, schema_name, db_type, host, port, etc.
Task 2: Execute SQL Query
Execute SQL using the Database ID obtained in the previous step:
./scripts/execute_query.sh --db-id --sql ""
#### Write Operation Protection
For write operations (INSERT/UPDATE/DELETE), the script implements protective pre-check:
| Parameter | Description |
|-----------|-------------|
| --force | Required to confirm and execute write operations |
| --dry-run | Preview write operations without executing |
DDL Operations (DROP/TRUNCATE/ALTER/RENAME) are completely blocked β these must be executed via DMS Console.
Examples:
# Read operations (no confirmation needed)
./scripts/execute_query.sh --db-id 78059000 --sql "SHOW TABLES"
./scripts/execute_query.sh --db-id 78059000 --sql "SELECT * FROM users LIMIT 10" --jsonWrite operations - preview first (recommended)
./scripts/execute_query.sh --db-id 78059000 --sql "INSERT INTO users (name) VALUES ('test')" --dry-runWrite operations - execute with confirmation
./scripts/execute_query.sh --db-id 78059000 --sql "INSERT INTO users (name) VALUES ('test')" --force
./scripts/execute_query.sh --db-id 78059000 --sql "UPDATE users SET name='test' WHERE id=1" --force
./scripts/execute_query.sh --db-id 78059000 --sql "DELETE FROM users WHERE id=1" --forceLogic database mode
./scripts/execute_query.sh --db-id 78059000 --sql "SELECT 1" --logic
Complete Example
# 1. Search database (assuming searching for "order")
./scripts/search_database.sh order --json
Example output:
[{"DatabaseId": "78059000", "SchemaName": "order_db", ...}]
2. Execute query
./scripts/execute_query.sh --db-id 78059000 --sql "SELECT COUNT(*) FROM orders"
Success Verification
After executing SQL, check the returned results:
1. Script return code is 0 2. Output contains query results (column names and row data) 3. No error messages
# Verify query success
./scripts/execute_query.sh --db-id --sql "SELECT 1" --json
Expected output: [{"Success": true, "RowCount": 1, ...}]
Cleanup
This skill performs read and write operations but does not create persistent resources, so no database resources need to be released.
However, the AI-Mode lifecycle requires an explicit teardown step:
> [MUST] Disable AI-Mode after all tasks complete
> Run aliyun configure ai-mode disable once all DMS commands in this skill session have finished
> (success or failure). This terminates the AI-Mode session and prevents the registered
> AlibabaCloud-Agent-Skills/alibabacloud-dms-skill User-Agent from leaking into subsequent unrelated CLI usage.
aliyun configure ai-mode disable
Write Operation Safety
| Operation Type | Behavior |
|---------------|----------|
| SELECT / SHOW / DESC | Execute directly |
| INSERT / UPDATE / DELETE | Require --force or --dry-run |
| DROP / TRUNCATE / ALTER / RENAME | Blocked β use DMS Console |
Available Scripts
| Script | Description |
|--------|-------------|
| scripts/search_database.sh | Search databases by keyword |
| scripts/execute_query.sh | Execute SQL queries |
> Note: Scripts use aliyun-cli credentials configured via aliyun configure.
Best Practices
1. Confirm database β Verify the target database before executing SQL
2. Use --json parameter β Facilitates programmatic processing of output
3. Preview write operations β Always use --dry-run first for INSERT/UPDATE/DELETE
4. Explicit confirmation β Use --force only after reviewing the preview
5. Avoid DDL operations β DROP/TRUNCATE/ALTER/RENAME are blocked; use DMS Console instead
Reference Links
| Document | Description | |----------|-------------| | references/cli-installation-guide.md | CLI Installation Guide | | references/ram-policies.md | RAM Permission Policies | | references/related-apis.md | Related API List | | references/acceptance-criteria.md | Acceptance Criteria |
βοΈ Configuration
AI-Mode Lifecycle (MUST follow in order)
This skill MUST run inside an AI-Mode session. Treat the following five steps as a strict lifecycle β do not skip, reorder, or interleave the setup steps with command execution:
1. aliyun configure ai-mode enable # Enable AI-Mode
2. aliyun configure ai-mode set-user-agent AlibabaCloud-Agent-Skills/alibabacloud-dms-skill # Register skill User-Agent
3. aliyun configure set --auto-plugin-install true && aliyun plugin update # Plugin update
4. # Execute commands
5. aliyun configure ai-mode disable # Disable AI-Mode (Cleanup)
Steps 1β3 belong to setup (this section). Step 4 is covered by Core Workflow. Step 5 is covered by Cleanup.
Pre-checks
> Pre-check 0: Aliyun CLI >= 3.3.3 required
> Run aliyun version to verify >= 3.3.3. If not installed or version too low,
> run curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash to install/update,
> or see references/cli-installation-guide.md for installation instructions.
> Pre-check 1: Enable AI-Mode
> [MUST] run aliyun configure ai-mode enable to enable AI-Mode before any other configuration or command.
> This activates the AI-Mode session that downstream OpenAPI services use to recognize agent-issued traffic.
> Pre-check 2: Register skill User-Agent under AI-Mode
> [MUST] run aliyun configure ai-mode set-user-agent AlibabaCloud-Agent-Skills/alibabacloud-dms-skill
> to register this skill's identifier as the AI-Mode User-Agent for the current session.
> Run this immediately after ai-mode enable and before any plugin update or DMS command.
> Pre-check 3: Aliyun CLI plugin update required
> [MUST] run aliyun configure set --auto-plugin-install true to enable automatic plugin installation.
> [MUST] run aliyun plugin update to ensure that any existing plugins are always up-to-date.
> Plugin update MUST happen AFTER AI-Mode is enabled and the User-Agent is registered, so the plugin manager itself reports the correct identifier.
brew install jqaliyun configure> Pre-check 4: Alibaba Cloud Credentials Required
>
> Security Rules:
> - NEVER read, echo, or print AK/SK values (e.g., echo $ALIBABA_CLOUD_ACCESS_KEY_ID is FORBIDDEN)
> - NEVER ask the user to input AK/SK directly in the conversation or command line
> - NEVER use aliyun configure set with literal credential values
> - ONLY use aliyun configure list to check credential status
>
>
> aliyun configure list
>
> Check the output for a valid profile (AK, STS, or OAuth identity).
>
> If no valid profile exists, STOP here.
> 1. Obtain credentials from Alibaba Cloud Console
> 2. Configure credentials outside of this session (via aliyun configure in terminal or environment variables in shell profile)
> 3. Return and re-run after aliyun configure list shows a valid profile[MUST] Per-command CLI User-Agent β In addition to the AI-Mode User-Agent registered in Pre-check 2,
every aliyun CLI command invocation in step 4 MUST also include:
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-dms-skill
The per-command flag and the AI-Mode session-level setting are complementary β both MUST be present so the identifier is sent on every request even if the AI-Mode session expires.
π Tips & Best Practices
1. Confirm database β Verify the target database before executing SQL
2. Use --json parameter β Facilitates programmatic processing of output
3. Preview write operations β Always use --dry-run first for INSERT/UPDATE/DELETE
4. Explicit confirmation β Use --force only after reviewing the preview
5. Avoid DDL operations β DROP/TRUNCATE/ALTER/RENAME are blocked; use DMS Console instead