Skill: 0x7466/coda-packs (version 1.0.0)

--- name: coda-packs description: Manage Coda Packs via REST API v1. Supports listing, creating, updating, and deleting private Packs. Requires CODA_API_TOKEN. Delete requires confirmation. Note: Builds, Gallery submission, Analytics, and Collaborators require Coda's Pack SDK CLI, not available via REST API. --- # Coda Packs Skill Manage Coda Packs through the REST API v1. Create, list, update, and delete private Packs. ## ⚠️ API Limitations 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:** ```bash npx @codahq/packs-sdk register # Create account npx @codahq/packs-sdk build # Build Pack npx @codahq/packs-sdk release # Submit to Gallery ``` ## When to Use Use this skill when the user wants to: - List existing Coda Packs - Create new private Pack shells - Update Pack metadata (name, description) - Delete unused Packs ## When NOT to Use - **Do NOT use** for Doc management (tables, rows, pages) → use `coda` skill - **Do NOT use** for building Pack versions → use Pack SDK CLI - **Do NOT use** for Gallery submission → use Pack SDK CLI - **Do NOT use** for viewing analytics → use Pack SDK CLI or Coda web UI ## Prerequisites 1. **API Token**: Set environment variable `CODA_API_TOKEN` - Get token at: https://coda.io/account -> API Settings - Must have Pack management permissions 2. **Python 3.7+** with `requests` library ## Quick Start ```bash # 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 ``` ## Full Pack Development Workflow Since the REST API only supports basic Pack management, here's the complete workflow: ### Step 1: Create Pack Shell (via REST API) ```bash python scripts/coda_packs_cli.py packs create \ --name "Karakeep Bookmarks" \ --description "Save and search bookmarks" ``` ### Step 2-4: Use Pack SDK CLI (Required) ```bash # 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 ``` ## CLI Tool Usage ### Pack Management ```bash # 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 ``` ### Pack ID Resolution The CLI accepts both **numeric Pack IDs** and **Pack Names**: ```bash # 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. ## Safety Guardrails ### Operations Requiring Confirmation | Operation | Risk | Confirmation | |-----------|------|--------------| | **Delete Pack** | Irreversible | "Delete Pack 'X'? This cannot be undone." | ### No Confirmation Required - **Create Pack**: Safe, reversible - **List/Get Packs**: Read-only - **Update Pack**: Reversible ## Error Handling 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) | ## References - **Pack SDK Guides**: https://coda.io/packs/build/latest/guides/overview/ - **Pack SDK Quickstart**: https://coda.io/packs/build/latest/guides/quickstart/ - **Coda API Docs**: https://coda.io/developers/apis/v1 - **Pack SDK NPM**: https://www.npmjs.com/package/@codahq/packs-sdk ## Example: Karakeep Pack Shell Created for testing: - **Name**: Karakeep - **ID**: 48093 - **Description**: Karakeep bookmark manager - save URLs, search, and organize with tags **Next steps for full Pack development:** 1. Use Pack SDK CLI: `npx @codahq/packs-sdk init karakeep-pack` 2. Implement Karakeep API integration (see https://docs.karakeep.app/api/) 3. Build and upload: `npx @codahq/packs-sdk build && npx @codahq/packs-sdk upload`


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)