Install
openclaw skills install coda-packsManage private Coda Packs by listing, creating, updating metadata, and deleting Packs using the Coda REST API v1 and CODA_API_TOKEN.
openclaw skills install coda-packsManage Coda Packs through the REST API v1. Create, list, update, and delete private Packs.
The Coda REST API v1 has limited Pack management capabilities:
| Feature | REST API | Pack SDK CLI |
|---|---|---|
| List Packs | ✅ Available | ✅ |
| Create Pack | ✅ Available | ✅ |
| Update Pack | ✅ Available | ✅ |
| Delete Pack | ✅ Available | ✅ |
| Build Versions | ❌ Not available | ✅ Required |
| Gallery Submit | ❌ Not available | ✅ Required |
| Analytics | ❌ Not available | ✅ Required |
| Collaborators | ❌ Not available | ✅ Required |
For builds, gallery submission, and advanced features, use:
npx @codahq/packs-sdk register # Create account
npx @codahq/packs-sdk build # Build Pack
npx @codahq/packs-sdk release # Submit to Gallery
Use this skill when the user wants to:
coda skillAPI Token: Set environment variable CODA_API_TOKEN
Python 3.7+ with requests library
# Setup
export CODA_API_TOKEN="your_token_here"
# List your Packs
python scripts/coda_packs_cli.py packs list
# Create new Pack shell
python scripts/coda_packs_cli.py packs create \
--name "My Integration" \
--description "Does cool things"
# Update Pack
python scripts/coda_packs_cli.py packs update my-pack-id \
--description "Updated description"
# Delete Pack (requires confirmation)
python scripts/coda_packs_cli.py packs delete my-pack-id
Since the REST API only supports basic Pack management, here's the complete workflow:
python scripts/coda_packs_cli.py packs create \
--name "Karakeep Bookmarks" \
--description "Save and search bookmarks"
# Install Pack SDK
npm install -g @codahq/packs-sdk
# Initialize Pack project
npx @codahq/packs-sdk init karakeep-pack
# Develop your Pack (edit pack.ts)
# See: https://coda.io/packs/build/latest/guides/quickstart/
# Build and upload
npx @codahq/packs-sdk build
npx @codahq/packs-sdk upload
# Submit to Gallery (when ready)
npx @codahq/packs-sdk release
# List all your Packs
python scripts/coda_packs_cli.py packs list
# Get Pack details
python scripts/coda_packs_cli.py packs get 48093
python scripts/coda_packs_cli.py packs get "Karakeep"
# Create new Pack
python scripts/coda_packs_cli.py packs create \
--name "My Pack" \
--description "Description" \
--readme "# My Pack\n\nDetails here"
# Update Pack metadata
python scripts/coda_packs_cli.py packs update my-pack-id \
--name "New Name" \
--description "New description"
# Delete Pack (requires confirmation)
python scripts/coda_packs_cli.py packs delete my-pack-id
# Or skip confirmation: --force
The CLI accepts both numeric Pack IDs and Pack Names:
# These are equivalent:
python scripts/coda_packs_cli.py packs get 48093
python scripts/coda_packs_cli.py packs get "Karakeep"
If the name is ambiguous, the CLI lists matches and exits.
| Operation | Risk | Confirmation |
|---|---|---|
| Delete Pack | Irreversible | "Delete Pack 'X'? This cannot be undone." |
Common API errors:
| Code | Meaning | Resolution |
|---|---|---|
401 | Invalid token | Refresh CODA_API_TOKEN |
403 | Insufficient permissions | Ensure token has Pack management rights |
404 | Pack not found | Check Pack ID or name |
429 | Rate limited | Wait and retry (handled automatically) |
Created for testing:
Next steps for full Pack development:
npx @codahq/packs-sdk init karakeep-packnpx @codahq/packs-sdk build && npx @codahq/packs-sdk upload