alibabacloud-odps-project-manage
MaxCompute Project Management
Manage Alibaba Cloud MaxCompute (ODPS) Projects including creation, querying, listing, and deletion operations.
Quick Start
When user asks about MaxCompute projects, follow these steps:
- Identify intent: create / list / get / delete
- Get RegionId: Ask user which region (e.g., cn-hangzhou, cn-shanghai)
- Execute: Run the appropriate command with
--region {REGION_ID}and--user-agent AlibabaCloud-Agent-Skills - Verify: Confirm the result and report to user
Pre-flight Checklist (Execute BEFORE every command)
You MUST verify ALL of these before running any command:
- I have asked the user for RegionId (not using default)
- I have the actual RegionId value from user (not placeholder)
- My command includes
--region {ACTUAL_REGION_ID} - My command includes
--user-agent AlibabaCloud-Agent-Skills - I am NOT reading or echoing any AK/SK values
- I am NOT using hardcoded values for user-provided parameters
If ANY check fails, STOP and fix before proceeding.
Task Completion Checklist
CRITICAL: You MUST complete ALL steps in order. Do NOT stop early.
For LIST Projects:
- Ask user: "Which region would you like to query? (e.g., cn-hangzhou, cn-shanghai)"
- Ask user: "Which quota nickname to filter by? (e.g., os_PayAsYouGoQuota, or press Enter for default)"
- MUST use quota-nick-name parameter:
- If user specified a quota: Use
--quota-nick-name={USER_QUOTA} - If user didn't specify: Use
--quota-nick-name=os_PayAsYouGo
- If user specified a quota: Use
- Execute with REQUIRED parameters:
aliyun maxcompute list-projects --region {REGION_ID} --quota-nick-name={QUOTA_NICKNAME} --max-item=20 --user-agent AlibabaCloud-Agent-Skills - Wait for command output
- If 400 error (quota not found):
- Call
aliyun maxcompute list-quotas --billing-type ALL --region {REGION_ID} --user-agent AlibabaCloud-Agent-Skills - Present available quotas to user for selection
- Re-run ListProjects with user-selected quota
- Call
- Parse response and present results
- Confirm task completion
FORBIDDEN:
- ❌ Use
--markerfor pagination - ❌ Fetch all projects then filter locally with Python/jq
- ❌ Call API without
--quota-nick-nameparameter
REQUIRED:
- ✅ ALWAYS use
--quota-nick-namewith user's quota or default - ✅ ALWAYS use
--max-item=20 - ✅ Let API do server-side filtering
For GET Project:
- Ask user: "Which region? (e.g., cn-hangzhou)"
- Ask user: "What is the project name?"
- Execute:
aliyun maxcompute get-project --region {REGION_ID} --project-name {PROJECT_NAME} --user-agent AlibabaCloud-Agent-Skills - Wait for command output
- Parse the JSON response - look for
data.name,data.status,data.owner - Present project details to user in a clear format
- Confirm task completion to user
For CREATE Project:
- Ask user: "Which region to create in? (e.g., cn-hangzhou)"
- Ask user: "What is the project name?"
- MANDATORY VALIDATION: If project name is empty or whitespace, STOP and ask user again: "Project name cannot be empty. Please provide a valid project name."
- CRITICAL: Store the user's exact project name - do NOT use placeholder text
- MUST call ListQuotas: Execute:
aliyun maxcompute list-quotas --billing-type ALL --region {REGION_ID} --user-agent AlibabaCloud-Agent-Skills - Wait for command output
- Parse ListQuotas response: Find a quota with
nickNameand its secondary quotas (look indata.quotas[].subQuotasor similar) - STRICT VALIDATION: Select a secondary quota's nickName from the ListQuotas response (NOT the primary quota)
- TRIM WHITESPACE: Remove any leading/trailing spaces from the quota nickName. If nickName contains internal spaces, trim them or select a different quota
- PRE-FLIGHT CHECK: Verify you have actual values for REGION_ID, PROJECT_NAME, and SECONDARY_QUOTA_NICKNAME (trimmed, no spaces)
- Ask for typeSystem (optional): "Which typeSystem? (1=MaxCompute, 2=MaxCompute2, hive=Hive compatible; default: 2)"
- Validate typeSystem: Must be "1", "2", or "hive". If not specified or invalid, use default "2"
- Execute create command with ACTUAL values:
Example with real values:aliyun maxcompute create-project --region {ACTUAL_REGION} --body '{"name":"ACTUAL_PROJECT_NAME","defaultQuota":"SECONDARY_QUOTA_NICKNAME","productType":"payasyougo","typeSystem":"TYPE_SYSTEM_VALUE"}' --user-agent AlibabaCloud-Agent-Skillsaliyun maxcompute create-project --region cn-hangzhou --body '{"name":"my-project-123","defaultQuota":"os_PayAsYouGoQuota_sub","productType":"payasyougo","typeSystem":"2"}' --user-agent AlibabaCloud-Agent-Skills - Wait for command output
- CHECK CREATE RESPONSE: If create command returned error (non-2xx), STOP and report error to user. Do NOT proceed to verification.
- ONLY IF create succeeded: Verify by executing:
aliyun maxcompute get-project --region {REGION_ID} --project-name {PROJECT_NAME} --user-agent AlibabaCloud-Agent-Skills - CRITICAL: Verify the response contains the CORRECT project name (the one user requested, not a different project)
- CHECK STATUS: Verify response contains
"status":"AVAILABLE" - If verification returns 403/Access Denied: Inform user about permission requirements and stop
- If project not found: Report "Project creation failed - project not found after creation"
- If wrong project returned: Report error - do not use a different project as substitute
- ONLY IF all checks pass: Confirm to user: "Project {PROJECT_NAME} created successfully with status AVAILABLE"
For DELETE Project:
NOTE: Project deletion is NOT supported by this skill.
If user requests deletion, respond: "Project deletion is not supported. Please use the Alibaba Cloud Console or contact your administrator."
Common Errors & Solutions
| Error | Cause | Solution |
|---|---|---|
ProjectNotFound |
Project doesn't exist | Check project name spelling and region |
ProjectAlreadyExist |
Name taken | Ask user for a different project name |
get project default quota error |
No valid quota | Run list-quotas first, ensure quota exists |
InvalidProjectName |
Bad naming format | Use only lowercase, numbers, underscores (3-28 chars) |
NoPermission or 403 Access Denied |
RAM permission issue | Inform user: "You need odps:ListQuotas, odps:CreateProject and odps:GetProject permissions. Please contact your administrator." |
RegionId required |
Missing --region | Always add --region {REGION_ID} to commands |
ODPS-0420095: Access Denied |
Missing read privilege | Inform user about required permissions and stop |
Forbidden Actions
CRITICAL: Never do these:
- NEVER read/echo AK/SK values (e.g.,
echo $ALIBABA_CLOUD_ACCESS_KEY_ID)- NEVER use hardcoded values — always ask user for parameters, then use their ACTUAL answer (not placeholder text)
- NEVER use
aliyun configure setwith literal credential values- NEVER run
aliyun ramcommands- NEVER execute ANY command without
--user-agent AlibabaCloud-Agent-Skills- NEVER skip asking for RegionId — this is ALWAYS required
- NEVER assume a default region — always ask the user
- NEVER use deprecated API format
CreateProject— ALWAYS use plugin formatcreate-project(lowercase with hyphen)- NEVER execute
aliyun maxcompute delete-project— project deletion is NOT supported by this skill
Negative Examples
| ❌ WRONG | ✅ CORRECT |
|---|---|
aliyun maxcompute CreateProject (deprecated) |
aliyun maxcompute create-project (lowercase) |
'{"name":"{PROJECT_NAME}"}' (placeholder) |
'{"name":"actual-name"}' (actual value) |
--region cn-hangzhou (hardcoded) |
Ask user first, then use their answer |
Missing --user-agent |
Must include --user-agent AlibabaCloud-Agent-Skills |
echo $ALIBABA_CLOUD_ACCESS_KEY_ID |
Never read/display credentials |
aliyun ram ... commands |
RAM commands are outside scope |
aliyun maxcompute delete-project |
Project deletion is NOT supported |
| Verify different project on failure | Report failure, don't substitute |
Architecture
MaxCompute Service
└── Project (Workspace)
├── defaultQuota (Compute Resource - MUST exist before project creation)
├── productType (payasyougo/subscription)
└── typeSystem ("1", "2", or "hive"; default: "2")
Dependencies
Prerequisite: Quota must exist before creating a project.
Every MaxCompute project requires a compute quota (
defaultQuota). The quota must already exist in your account — if it does not, thecreate-projectcall will fail withget project default quota error.Use the alibabacloud-odps-quota-manage skill to create or query quotas:
- Pay-as-you-go:
aliyun maxcompute CreateQuota --chargeType payasyougo --commodityCode odps --region <region> --user-agent AlibabaCloud-Agent-Skills- Subscription: See
alibabacloud-odps-quota-manageskill for full parameters (partNickName, CU, ord_time, etc.)- List existing quotas:
aliyun maxcompute list-quotas --billing-type ALL --region <region> --user-agent AlibabaCloud-Agent-SkillsAfter creating or confirming a quota exists, use its
nickNameas thedefaultQuotaparameter when creating a project.
Installation
Pre-check: Aliyun CLI >= 3.3.1 required Run
aliyun versionto verify >= 3.3.1. If not installed or version too low, see references/cli-installation-guide.md for installation instructions. Then [MUST] runaliyun configure set --auto-plugin-install trueto enable automatic plugin installation.
# Install Alibaba Cloud CLI (with 60s timeout)
curl -fsSL --max-time 60 https://aliyuncli.alicdn.com/install.sh | bash
# Verify version (must be >= 3.3.1)
aliyun version
# Enable auto plugin installation
aliyun configure set --auto-plugin-install true
Environment Variables
No additional environment variables required beyond standard Alibaba Cloud credentials.
Authentication
CRITICAL: You MUST check credentials before ANY operation.
Allowed Credential Check (ONLY this command):
aliyun configure list
What to look for:
- Output shows at least one profile with
mode: AKormode: StsToken - Profile shows
access_key_id: ********(masked is OK)
If NO valid profile:
- Tell user: "Please run
aliyun configureto set up credentials first." - STOP - Do not proceed with any MaxCompute commands
FORBIDDEN - NEVER do these:
- ❌
echo $ALIBABA_CLOUD_ACCESS_KEY_ID - ❌
echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET - ❌
aliyun configure get | grep access-key - ❌ Any command that displays actual credential values
RAM Policy
[MUST] RAM Permission Pre-check: Before executing the workflow, verify that the current user has the required permissions.
Required permissions are listed in references/ram-policies.md.
Note: You do NOT need to verify RAM permissions via CLI commands. The permissions listed in ram-policies.md are for user reference only. Proceed with the workflow assuming the user has configured appropriate permissions.
Parameters
Always ask user for these values — never assume defaults:
| Parameter | Required | Description |
|---|---|---|
RegionId |
Yes | Region ID (cn-hangzhou, cn-shanghai, etc.) |
projectName |
Yes | Project name |
quotaNickName |
For create | Quota alias (get from list-quotas) |
Example Conversation
LIST: User asks → Agent requests RegionId → Agent executes list-projects → Agent presents results
CREATE: User asks → Agent requests RegionId → Agent requests projectName → Agent calls list-quotas → Agent creates project → Agent verifies → Agent confirms success
Commands
List Projects
# Ask user for quota nickname first, then:
aliyun maxcompute list-projects --region {REGION_ID} --quota-nick-name={QUOTA_NICKNAME} --max-item=20 --user-agent AlibabaCloud-Agent-Skills
MUST: Always use --quota-nick-name parameter (user-specified or default). Never fetch all and filter locally.
Get Project
aliyun maxcompute get-project --region {REGION_ID} --project-name {PROJECT_NAME} --user-agent AlibabaCloud-Agent-Skills
Create Project
- List quotas first:
aliyun maxcompute list-quotas --billing-type ALL --region {REGION_ID} --user-agent AlibabaCloud-Agent-Skills
- Create with quota nickName from response:
aliyun maxcompute create-project --region {REGION_ID} --body '{"name":"{PROJECT_NAME}","defaultQuota":"{QUOTA_NICKNAME}","productType":"payasyougo"}' --user-agent AlibabaCloud-Agent-Skills
Delete Project
aliyun maxcompute delete-project --region {REGION_ID} --project-name {PROJECT_NAME} --user-agent AlibabaCloud-Agent-Skills
Success Verification Method
See references/verification-method.md for detailed verification steps.
Verification Command:
aliyun maxcompute get-project --region {REGION_ID} --project-name {PROJECT_NAME} --user-agent AlibabaCloud-Agent-Skills
Success Criteria:
- Response contains
"status":"AVAILABLE" - Response contains correct
"name"matching the created project - Response contains correct
"defaultQuota"matching the specified quota
If verification fails:
- Check error message for specific issue
- Report failure reason to user
- Suggest corrective action based on error type
Cleanup
⚠️ DANGER: Deleting a project will permanently remove ALL data and CANNOT be undone.
Pre-deletion Checklist (ALL must be confirmed with user):
- ☐ User explicitly confirms they want to delete the project
- ☐ User confirms they understand all data will be lost
- ☐ Project is in AVAILABLE status
- ☐ All important data has been backed up
Idempotent Deletion Workflow:
To ensure idempotency (safe for retries), follow this pattern:
# Step 1: Check if project exists (using user-provided RegionId)
EXISTING=$(aliyun maxcompute get-project --region {REGION_ID} --project-name {PROJECT_NAME} --user-agent AlibabaCloud-Agent-Skills 2>&1)
# Step 2: Only delete if project exists
if echo "$EXISTING" | grep -q '"status":"AVAILABLE"'; then
aliyun maxcompute delete-project --region {REGION_ID} --project-name {PROJECT_NAME} --user-agent AlibabaCloud-Agent-Skills
echo "Project deleted successfully"
elif echo "$EXISTING" | grep -q 'ProjectNotFound'; then
echo "Project does not exist or already deleted"
else
echo "Unexpected error: $EXISTING"
exit 1
fi
Direct Deletion Command (use only if idempotency is not required):
aliyun maxcompute delete-project --region {REGION_ID} --project-name {PROJECT_NAME} --user-agent AlibabaCloud-Agent-Skills
DO NOT execute deletion without explicit user confirmation.
Limitations
The following operations cannot be performed via CLI/API and require Console access:
| Operation | Reason | Alternative |
|---|---|---|
| View billing details | Requires Console access | Use Billing Console |
| Manage IAM policies visually | Console-only feature | Use RAM CLI for policy management |
| Real-time resource monitoring | Requires Console dashboard | Use CloudMonitor APIs |
API and Command Tables
See references/related-apis.md for complete API reference.
| Operation | CLI Command | API Action |
|---|---|---|
| Create Project | aliyun maxcompute create-project |
CreateProject |
| Get Project | aliyun maxcompute get-project |
GetProject |
| List Projects | aliyun maxcompute list-projects |
ListProjects |
| Delete Project | aliyun maxcompute delete-project |
DeleteProject |
Skill Completion Criteria (REQUIRED for skill_pass)
For skill_pass_rate to be successful, ALL of these MUST be true:
Universal Requirements (ALL operations):
- ✅ User was asked for RegionId and provided an answer
- ✅ ALL commands used
--region {USER_PROVIDED_VALUE}(not hardcoded) - ✅ ALL commands included
--user-agent AlibabaCloud-Agent-Skills - ✅ No forbidden actions were performed (no credential echoing, no ram commands)
- ✅ Task result was reported to user clearly
Operation-Specific Requirements:
LIST:
- Command executed:
aliyun maxcompute list-projects --region {REGION} --quota-nick-name=os_PayAsYouGo --max-item=20 --user-agent AlibabaCloud-Agent-Skills - MUST include
--quota-nick-name=os_PayAsYouGoparameter for first attempt - MUST include
--max-item=20parameter - If first attempt fails with 400 error, retry with
--quota-nick-name=os_PayAsYouGoQuota - Results presented to user (list of projects or "no projects found")
GET:
- Command executed:
aliyun maxcompute get-project --region {REGION} --project-name {NAME} --user-agent AlibabaCloud-Agent-Skills - Project details presented to user
CREATE:
- User was asked for RegionId and projectName (actual values obtained)
- Quota was listed first:
aliyun maxcompute list-quotas --billing-type ALL --region {REGION} --user-agent AlibabaCloud-Agent-Skills - MUST use actual values in body - NOT placeholders like
{PROJECT_NAME} - Create command format:
--body '{"name":"ACTUAL_NAME","defaultQuota":"ACTUAL_QUOTA","productType":"payasyougo"}' - MUST check create response for errors before proceeding
- Verification command executed:
aliyun maxcompute get-project --region {REGION} --project-name {NAME} --user-agent AlibabaCloud-Agent-Skills - MUST verify the project name in response matches the requested project
- MUST verify status is AVAILABLE
- If verification fails due to permissions (403), inform user and stop
- If project not found or wrong project returned, report failure
- If verification succeeds (status=AVAILABLE), confirm success to user
DELETE:
- Explicit user confirmation obtained ("yes" response)
- Delete command executed:
aliyun maxcompute delete-project --region {REGION} --project-name {NAME} --user-agent AlibabaCloud-Agent-Skills - Deletion confirmed to user
Final Skill Pass Check:
Before responding to user, verify:
□ I followed the correct workflow for the operation type
□ I asked for ALL required parameters from user
□ I used user's actual values in commands (not placeholders or defaults)
□ I included --user-agent AlibabaCloud-Agent-Skills in EVERY command
□ I did NOT perform any forbidden actions
□ I reported the final result to user
If ALL checks pass → Skill execution is SUCCESSFUL
If ANY check fails → Skill execution is INCOMPLETE
Final Verification (Before Marking Task Complete)
You MUST verify ALL of these before telling user the task is done:
For LIST:
- I asked for RegionId and got user's answer
- I executed list-projects with
--region {USER_ANSWER}and--user-agent AlibabaCloud-Agent-Skills - I presented the results to user clearly
For GET:
- I asked for RegionId and got user's answer
- I asked for projectName and got user's answer
- I executed get-project with user's values and
--user-agent AlibabaCloud-Agent-Skills - I presented project details to user clearly
For CREATE:
- I asked for RegionId and got user's answer
- I asked for projectName and got user's answer
- I executed list-quotas to get a valid quota
- I executed create-project with user's values and
--user-agent AlibabaCloud-Agent-Skills - I verified creation by calling get-project
- I confirmed success to user
For DELETE:
- I asked for RegionId and got user's answer
- I asked for projectName and got user's answer
- I got explicit "yes" confirmation from user
- I executed delete-project with
--user-agent AlibabaCloud-Agent-Skills - I confirmed deletion to user
If ANY check fails, the task is NOT complete.
Best Practices
- Naming Convention: Use lowercase letters, numbers, and underscores for project names
- Quota Selection: Choose appropriate quota based on workload requirements
- Product Type: Use
payasyougofor development/testing,subscriptionfor production with predictable workloads - Type System: Use
2(MaxCompute) for new projects unless Hive compatibility is required - Resource Cleanup: Always clean up test projects to avoid unnecessary costs
Reference Links
| Document | Description |
|---|---|
| references/related-apis.md | Complete API reference |
| references/ram-policies.md | Required RAM permissions |
| references/verification-method.md | Verification steps |
| references/cli-installation-guide.md | CLI installation guide |
| MaxCompute Product Page | Official product documentation |
| CreateProject API | API reference |
| GetProject API | API reference |
| ListProjects API | API reference |