Free SKILL.md scraped from GitHub. Clone the repo or copy the file directly into your Claude Code skills directory.
npx versuz@latest install jeremylongshore-claude-code-plugins-plus-skills-plugins-saas-packs-clickup-pack-skills-clickup-core-workflow-bgit clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills.gitcp claude-code-plugins-plus-skills/SKILL.MD ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-plugins-saas-packs-clickup-pack-skills-clickup-core-workflow-b/SKILL.md---
name: clickup-core-workflow-b
description: 'Manage ClickUp workspaces, spaces, folders, lists, and views via API
v2.
Use when creating project structures, organizing spaces and lists,
or managing the ClickUp hierarchy programmatically.
Trigger: "clickup space", "clickup folder", "clickup list", "clickup views",
"create clickup space", "organize clickup workspace", "clickup hierarchy".
'
allowed-tools: Read, Write, Edit, Bash(curl:*), Grep
version: 1.0.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
tags:
- saas
- productivity
- clickup
compatibility: Designed for Claude Code
---
# ClickUp Core Workflow B — Spaces, Folders, Lists & Views
## Overview
Manage the ClickUp organizational hierarchy: Workspace > Space > Folder > List. Also covers views (list, board, calendar, gantt) and tags.
## Space Operations
```
POST /api/v2/team/{team_id}/space Create Space
GET /api/v2/team/{team_id}/space Get Spaces
GET /api/v2/space/{space_id} Get Space
PUT /api/v2/space/{space_id} Update Space
DELETE /api/v2/space/{space_id} Delete Space
```
```typescript
// Create a Space with ClickApps enabled
async function createSpace(teamId: string, name: string) {
return clickupRequest(`/team/${teamId}/space`, {
method: 'POST',
body: JSON.stringify({
name,
multiple_assignees: true,
features: {
due_dates: { enabled: true, start_date: true, remap_due_dates: true },
time_tracking: { enabled: true },
tags: { enabled: true },
time_estimates: { enabled: true },
checklists: { enabled: true },
custom_fields: { enabled: true },
points: { enabled: false },
},
}),
});
}
```
## Folder Operations
```
POST /api/v2/space/{space_id}/folder Create Folder
GET /api/v2/space/{space_id}/folder Get Folders
GET /api/v2/folder/{folder_id} Get Folder
PUT /api/v2/folder/{folder_id} Update Folder
DELETE /api/v2/folder/{folder_id} Delete Folder
```
```typescript
async function createFolder(spaceId: string, name: string) {
return clickupRequest(`/space/${spaceId}/folder`, {
method: 'POST',
body: JSON.stringify({ name }),
});
}
```
## List Operations
```
POST /api/v2/folder/{folder_id}/list Create List in Folder
POST /api/v2/space/{space_id}/list Create Folderless List
GET /api/v2/folder/{folder_id}/list Get Lists in Folder
GET /api/v2/space/{space_id}/list Get Folderless Lists
GET /api/v2/list/{list_id} Get List
PUT /api/v2/list/{list_id} Update List
DELETE /api/v2/list/{list_id} Delete List
```
```typescript
// Create list with custom statuses
async function createList(folderId: string, name: string) {
return clickupRequest(`/folder/${folderId}/list`, {
method: 'POST',
body: JSON.stringify({
name,
content: 'List description here',
due_date: Date.now() + 604800000, // 1 week from now
priority: 2,
status: 'to do',
}),
});
}
// Create folderless list (directly in space)
async function createFolderlessList(spaceId: string, name: string) {
return clickupRequest(`/space/${spaceId}/list`, {
method: 'POST',
body: JSON.stringify({ name }),
});
}
```
## View Operations
```
POST /api/v2/list/{list_id}/view Create List View
POST /api/v2/folder/{folder_id}/view Create Folder View
POST /api/v2/team/{team_id}/view Create Workspace View
GET /api/v2/view/{view_id} Get View
GET /api/v2/view/{view_id}/task Get View Tasks
DELETE /api/v2/view/{view_id} Delete View
```
Supported view types: `list`, `board`, `calendar`, `gantt`, `table`, `timeline`, `workload`, `activity`, `map`, `chat`.
```typescript
async function createBoardView(listId: string, name: string) {
return clickupRequest(`/list/${listId}/view`, {
method: 'POST',
body: JSON.stringify({
name,
type: 'board',
grouping: { field: 'status', dir: 1 },
sorting: { fields: [{ field: 'due_date', dir: 1 }] },
}),
});
}
```
## Tag Operations
```
GET /api/v2/space/{space_id}/tag Get Space Tags
POST /api/v2/task/{task_id}/tag/{tag_name} Add Tag to Task
DELETE /api/v2/task/{task_id}/tag/{tag_name} Remove Tag from Task
```
## Build a Complete Project Structure
```typescript
async function scaffoldProject(teamId: string, projectName: string) {
// 1. Create space
const space = await createSpace(teamId, projectName);
// 2. Create folders for phases
const folders = await Promise.all(
['Planning', 'Development', 'QA', 'Deployment'].map(name =>
createFolder(space.id, name)
)
);
// 3. Create lists in each folder
for (const folder of folders) {
await createList(folder.id, `${folder.name} Tasks`);
}
// 4. Create a board view on the development folder
const devFolder = folders[1];
const lists = await clickupRequest(`/folder/${devFolder.id}/list`);
await createBoardView(lists.lists[0].id, 'Sprint Board');
return { space, folders };
}
```
## Error Handling
| Status | Cause | Solution |
|--------|-------|----------|
| 400 | Missing `name` field | Name is required for spaces/folders/lists |
| 403 | Insufficient permissions | Need admin access for space creation |
| 404 | Invalid parent ID | Verify team_id/space_id/folder_id |
## Resources
- [Get Spaces](https://developer.clickup.com/reference/getspaces)
- [Get Folders](https://developer.clickup.com/reference/getfolders)
- [Views Documentation](https://developer.clickup.com/docs/views)
## Next Steps
For error troubleshooting, see `clickup-common-errors`.