clickup-multi-env-setup
Configure ClickUp API access across dev, staging, and production environments with per-environment tokens and workspace isolation. Trigger: "clickup environments", "clickup staging", "clickup dev prod", "clickup environment setup", "clickup config by env", "clickup multi-env".
Best use case
clickup-multi-env-setup is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Configure ClickUp API access across dev, staging, and production environments with per-environment tokens and workspace isolation. Trigger: "clickup environments", "clickup staging", "clickup dev prod", "clickup environment setup", "clickup config by env", "clickup multi-env".
Teams using clickup-multi-env-setup should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/clickup-multi-env-setup/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How clickup-multi-env-setup Compares
| Feature / Agent | clickup-multi-env-setup | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Configure ClickUp API access across dev, staging, and production environments with per-environment tokens and workspace isolation. Trigger: "clickup environments", "clickup staging", "clickup dev prod", "clickup environment setup", "clickup config by env", "clickup multi-env".
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# ClickUp Multi-Environment Setup
## Overview
Configure separate ClickUp workspaces and API tokens for development, staging, and production. ClickUp does not have sandbox environments, so the recommended approach is separate workspaces with separate tokens per environment.
## Environment Strategy
| Environment | Workspace | Token | Rate Limit | Purpose |
|-------------|-----------|-------|-----------|---------|
| Development | Dev workspace | Personal token | 100 req/min | Local development, testing |
| Staging | Staging workspace | Service token | 100 req/min | Integration testing, QA |
| Production | Production workspace | Service token | Per plan | Live traffic |
**Key point:** All ClickUp API calls go to `https://api.clickup.com/api/v2/` regardless of environment. Environment isolation comes from using different tokens that are authorized for different workspaces.
## Configuration
```typescript
// src/config/clickup.ts
interface ClickUpEnvConfig {
token: string;
teamId: string;
defaultListId?: string;
timeout: number;
retries: number;
cacheEnabled: boolean;
cacheTtlMs: number;
}
function getClickUpConfig(): ClickUpEnvConfig {
const env = process.env.NODE_ENV ?? 'development';
const base = {
timeout: 30000,
retries: 3,
cacheEnabled: true,
cacheTtlMs: 60000,
};
switch (env) {
case 'production':
return {
...base,
token: requireEnv('CLICKUP_API_TOKEN_PROD'),
teamId: requireEnv('CLICKUP_TEAM_ID_PROD'),
retries: 5, // More retries in prod
cacheTtlMs: 300000, // 5 min cache in prod
};
case 'staging':
return {
...base,
token: requireEnv('CLICKUP_API_TOKEN_STAGING'),
teamId: requireEnv('CLICKUP_TEAM_ID_STAGING'),
};
default:
return {
...base,
token: requireEnv('CLICKUP_API_TOKEN'),
teamId: process.env.CLICKUP_TEAM_ID ?? '',
cacheEnabled: false, // No cache in dev for fresh data
};
}
}
function requireEnv(key: string): string {
const value = process.env[key];
if (!value) throw new Error(`Missing required env var: ${key}`);
return value;
}
```
## Environment Files
```bash
# .env.development (local dev, git-ignored)
CLICKUP_API_TOKEN=pk_dev_12345_ABCDEF
CLICKUP_TEAM_ID=1111111
# .env.staging (CI/CD only, git-ignored)
CLICKUP_API_TOKEN_STAGING=pk_stg_67890_GHIJKL
CLICKUP_TEAM_ID_STAGING=2222222
# .env.production (secrets manager only, NEVER in files)
# CLICKUP_API_TOKEN_PROD=pk_prod_... (stored in Vault/AWS/GCP)
# CLICKUP_TEAM_ID_PROD=3333333
```
```bash
# .env.example (commit this as template)
CLICKUP_API_TOKEN=pk_your_token_here
CLICKUP_TEAM_ID=your_team_id_here
```
## Secrets by Platform
```bash
# GitHub Actions
gh secret set CLICKUP_API_TOKEN_STAGING --body "pk_stg_..."
gh secret set CLICKUP_API_TOKEN_PROD --body "pk_prod_..."
# AWS Secrets Manager
aws secretsmanager create-secret \
--name clickup/production/api-token \
--secret-string "pk_prod_..."
# GCP Secret Manager
echo -n "pk_prod_..." | gcloud secrets create clickup-api-token-prod --data-file=-
# HashiCorp Vault
vault kv put secret/clickup/production api_token="pk_prod_..."
```
## Environment Guards
```typescript
// Prevent destructive operations in production
function guardDestructiveOp(operation: string): void {
const config = getClickUpConfig();
const env = process.env.NODE_ENV ?? 'development';
// In production, require explicit confirmation
if (env === 'production' && !process.env.CLICKUP_ALLOW_DESTRUCTIVE) {
throw new Error(
`${operation} blocked in production. Set CLICKUP_ALLOW_DESTRUCTIVE=true to override.`
);
}
}
// Usage: prevent bulk delete in prod
async function deleteCompletedTasks(listId: string) {
guardDestructiveOp('deleteCompletedTasks');
const { tasks } = await clickupRequest(
`/list/${listId}/task?statuses[]=complete`
);
for (const task of tasks) {
await clickupRequest(`/task/${task.id}`, { method: 'DELETE' });
}
}
```
## Verify Environment Setup
```bash
#!/bin/bash
# verify-clickup-env.sh
echo "=== ClickUp Environment Verification ==="
echo "NODE_ENV: ${NODE_ENV:-development}"
for ENV_SUFFIX in "" "_STAGING" "_PROD"; do
TOKEN_VAR="CLICKUP_API_TOKEN${ENV_SUFFIX}"
TOKEN="${!TOKEN_VAR}"
if [ -z "$TOKEN" ]; then
echo "${TOKEN_VAR}: NOT SET"
continue
fi
echo -n "${TOKEN_VAR}: "
RESULT=$(curl -sf https://api.clickup.com/api/v2/user \
-H "Authorization: $TOKEN" 2>/dev/null)
if [ $? -eq 0 ]; then
USERNAME=$(echo "$RESULT" | python3 -c "import sys,json; print(json.load(sys.stdin)['user']['username'])" 2>/dev/null)
echo "OK (user: $USERNAME)"
else
echo "FAILED"
fi
done
```
## Error Handling
| Issue | Cause | Solution |
|-------|-------|----------|
| Wrong workspace in prod | Using dev token | Verify CLICKUP_TEAM_ID matches token's workspace |
| Missing env var | Not configured | Check .env file or secrets manager |
| Cross-env data leak | Shared token | Use separate tokens per environment |
| Destructive op in prod | Missing guard | Implement environment guards |
## Resources
- [ClickUp Authentication](https://developer.clickup.com/docs/authentication)
- [12-Factor App Config](https://12factor.net/config)
## Next Steps
For observability setup, see `clickup-observability`.Related Skills
websocket-handler-setup
Websocket Handler Setup - Auto-activating skill for Backend Development. Triggers on: websocket handler setup, websocket handler setup Part of the Backend Development skill category.
vpc-network-setup
Vpc Network Setup - Auto-activating skill for GCP Skills. Triggers on: vpc network setup, vpc network setup Part of the GCP Skills skill category.
tensorflow-serving-setup
Tensorflow Serving Setup - Auto-activating skill for ML Deployment. Triggers on: tensorflow serving setup, tensorflow serving setup Part of the ML Deployment skill category.
sqs-queue-setup
Sqs Queue Setup - Auto-activating skill for AWS Skills. Triggers on: sqs queue setup, sqs queue setup Part of the AWS Skills skill category.
spy-setup-helper
Spy Setup Helper - Auto-activating skill for Test Automation. Triggers on: spy setup helper, spy setup helper Part of the Test Automation skill category.
spike-test-setup
Spike Test Setup - Auto-activating skill for Performance Testing. Triggers on: spike test setup, spike test setup Part of the Performance Testing skill category.
sla-monitor-setup
Sla Monitor Setup - Auto-activating skill for Enterprise Workflows. Triggers on: sla monitor setup, sla monitor setup Part of the Enterprise Workflows skill category.
server-sent-events-setup
Server Sent Events Setup - Auto-activating skill for API Integration. Triggers on: server sent events setup, server sent events setup Part of the API Integration skill category.
react-context-setup
React Context Setup - Auto-activating skill for Frontend Development. Triggers on: react context setup, react context setup Part of the Frontend Development skill category.
rds-instance-setup
Rds Instance Setup - Auto-activating skill for AWS Skills. Triggers on: rds instance setup, rds instance setup Part of the AWS Skills skill category.
rabbitmq-queue-setup
Rabbitmq Queue Setup - Auto-activating skill for Backend Development. Triggers on: rabbitmq queue setup, rabbitmq queue setup Part of the Backend Development skill category.
pre-commit-hook-setup
Pre Commit Hook Setup - Auto-activating skill for DevOps Basics. Triggers on: pre commit hook setup, pre commit hook setup Part of the DevOps Basics skill category.