Skillshub clickup-core-workflow-b
install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/jeremylongshore/claude-code-plugins-plus-skills/clickup-core-workflow-b" ~/.claude/skills/comeonoliver-skillshub-clickup-core-workflow-b && rm -rf "$T"
manifest:
skills/jeremylongshore/claude-code-plugins-plus-skills/clickup-core-workflow-b/SKILL.mdsource content
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
// 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
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
// 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.
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
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 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
Next Steps
For error troubleshooting, see
clickup-common-errors.