@nextsparkjs/ai-workflow 0.1.0-beta.100

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +115 -0
  3. package/claude/_docs/workflows-optimizations.md +359 -0
  4. package/claude/agents/api-tester.md +634 -0
  5. package/claude/agents/architecture-supervisor.md +1351 -0
  6. package/claude/agents/backend-developer.md +997 -0
  7. package/claude/agents/backend-validator.md +417 -0
  8. package/claude/agents/bdd-docs-writer.md +737 -0
  9. package/claude/agents/block-developer.md +677 -0
  10. package/claude/agents/code-reviewer.md +1432 -0
  11. package/claude/agents/db-developer.md +721 -0
  12. package/claude/agents/db-validator.md +407 -0
  13. package/claude/agents/demo-video-generator.md +493 -0
  14. package/claude/agents/documentation-writer.md +1268 -0
  15. package/claude/agents/frontend-developer.md +1234 -0
  16. package/claude/agents/frontend-validator.md +777 -0
  17. package/claude/agents/functional-validator.md +630 -0
  18. package/claude/agents/mock-analyst.md +387 -0
  19. package/claude/agents/product-manager.md +963 -0
  20. package/claude/agents/qa-automation.md +1762 -0
  21. package/claude/agents/release-manager.md +634 -0
  22. package/claude/agents/selectors-translator.md +262 -0
  23. package/claude/agents/unit-test-writer.md +785 -0
  24. package/claude/agents/visual-comparator.md +329 -0
  25. package/claude/agents/workflow-maintainer.md +352 -0
  26. package/claude/commands/do/README.md +88 -0
  27. package/claude/commands/do/create-api.md +64 -0
  28. package/claude/commands/do/create-entity.md +66 -0
  29. package/claude/commands/do/create-migration.md +64 -0
  30. package/claude/commands/do/create-plugin.md +56 -0
  31. package/claude/commands/do/create-theme.md +70 -0
  32. package/claude/commands/do/mock-data.md +67 -0
  33. package/claude/commands/do/reset-db.md +71 -0
  34. package/claude/commands/do/setup-scheduled-action.md +75 -0
  35. package/claude/commands/do/sync-code-review.md +117 -0
  36. package/claude/commands/do/update-selectors.md +112 -0
  37. package/claude/commands/do/use-skills.md +90 -0
  38. package/claude/commands/do/validate-blocks.md +69 -0
  39. package/claude/commands/how-to/README.md +261 -0
  40. package/claude/commands/how-to/add-metadata.md +692 -0
  41. package/claude/commands/how-to/add-taxonomies.md +806 -0
  42. package/claude/commands/how-to/add-translations.md +571 -0
  43. package/claude/commands/how-to/create-api.md +577 -0
  44. package/claude/commands/how-to/create-block.md +575 -0
  45. package/claude/commands/how-to/create-child-entities.md +771 -0
  46. package/claude/commands/how-to/create-entity.md +597 -0
  47. package/claude/commands/how-to/create-migrations.md +605 -0
  48. package/claude/commands/how-to/create-plugin.md +654 -0
  49. package/claude/commands/how-to/customize-app.md +481 -0
  50. package/claude/commands/how-to/customize-dashboard.md +553 -0
  51. package/claude/commands/how-to/customize-theme.md +438 -0
  52. package/claude/commands/how-to/define-features-flows.md +632 -0
  53. package/claude/commands/how-to/deploy.md +507 -0
  54. package/claude/commands/how-to/handle-file-uploads.md +746 -0
  55. package/claude/commands/how-to/implement-search.md +1001 -0
  56. package/claude/commands/how-to/install-plugins.md +352 -0
  57. package/claude/commands/how-to/manage-test-coverage.md +984 -0
  58. package/claude/commands/how-to/run-tests.md +400 -0
  59. package/claude/commands/how-to/set-app-languages.md +601 -0
  60. package/claude/commands/how-to/set-plans-and-permissions.md +575 -0
  61. package/claude/commands/how-to/set-scheduled-actions.md +527 -0
  62. package/claude/commands/how-to/set-user-roles-and-permissions.md +550 -0
  63. package/claude/commands/how-to/setup-authentication.md +388 -0
  64. package/claude/commands/how-to/setup-claude-code.md +440 -0
  65. package/claude/commands/how-to/setup-database.md +274 -0
  66. package/claude/commands/how-to/setup-email-providers.md +598 -0
  67. package/claude/commands/how-to/setup-mobile-dev.md +627 -0
  68. package/claude/commands/how-to/start.md +500 -0
  69. package/claude/commands/how-to/use-devtools.md +639 -0
  70. package/claude/commands/how-to/use-superadmin.md +622 -0
  71. package/claude/commands/session/README.md +193 -0
  72. package/claude/commands/session/block-create.md +190 -0
  73. package/claude/commands/session/block-list.md +203 -0
  74. package/claude/commands/session/block-update.md +192 -0
  75. package/claude/commands/session/block-validate.md +218 -0
  76. package/claude/commands/session/changelog.md +115 -0
  77. package/claude/commands/session/close.md +225 -0
  78. package/claude/commands/session/commit.md +174 -0
  79. package/claude/commands/session/db-entity.md +206 -0
  80. package/claude/commands/session/db-fix.md +212 -0
  81. package/claude/commands/session/db-sample.md +206 -0
  82. package/claude/commands/session/demo.md +178 -0
  83. package/claude/commands/session/doc-bdd.md +207 -0
  84. package/claude/commands/session/doc-feature.md +218 -0
  85. package/claude/commands/session/doc-read.md +225 -0
  86. package/claude/commands/session/execute.md +204 -0
  87. package/claude/commands/session/explain.md +202 -0
  88. package/claude/commands/session/fix-bug.md +210 -0
  89. package/claude/commands/session/fix-build.md +182 -0
  90. package/claude/commands/session/fix-test.md +189 -0
  91. package/claude/commands/session/pending.md +232 -0
  92. package/claude/commands/session/refine.md +188 -0
  93. package/claude/commands/session/resume.md +192 -0
  94. package/claude/commands/session/review.md +192 -0
  95. package/claude/commands/session/scope-change.md +181 -0
  96. package/claude/commands/session/start-blocks.md +347 -0
  97. package/claude/commands/session/start.md +604 -0
  98. package/claude/commands/session/status.md +169 -0
  99. package/claude/commands/session/test-fix.md +221 -0
  100. package/claude/commands/session/test-run.md +203 -0
  101. package/claude/commands/session/test-write.md +242 -0
  102. package/claude/commands/session/validate.md +162 -0
  103. package/claude/config/context.json +40 -0
  104. package/claude/config/github.json +69 -0
  105. package/claude/config/github.schema.json +106 -0
  106. package/claude/config/team.json +46 -0
  107. package/claude/config/team.schema.json +106 -0
  108. package/claude/config/workspace.json +43 -0
  109. package/claude/config/workspace.schema.json +75 -0
  110. package/claude/skills/README.md +228 -0
  111. package/claude/skills/accessibility/SKILL.md +573 -0
  112. package/claude/skills/api-bypass-layers/SKILL.md +550 -0
  113. package/claude/skills/asana-integration/SKILL.md +499 -0
  114. package/claude/skills/better-auth/SKILL.md +666 -0
  115. package/claude/skills/billing-subscriptions/SKILL.md +660 -0
  116. package/claude/skills/block-decision-matrix/SKILL.md +359 -0
  117. package/claude/skills/clickup-integration/SKILL.md +434 -0
  118. package/claude/skills/core-theme-responsibilities/SKILL.md +485 -0
  119. package/claude/skills/create-plugin/SKILL.md +425 -0
  120. package/claude/skills/create-theme/SKILL.md +331 -0
  121. package/claude/skills/cypress-api/SKILL.md +511 -0
  122. package/claude/skills/cypress-api/scripts/generate-api-controller.py +329 -0
  123. package/claude/skills/cypress-api/scripts/generate-api-test.py +930 -0
  124. package/claude/skills/cypress-e2e/SKILL.md +526 -0
  125. package/claude/skills/cypress-e2e/scripts/extract-selectors.py +383 -0
  126. package/claude/skills/cypress-e2e/scripts/generate-uat-test.py +788 -0
  127. package/claude/skills/cypress-selectors/SKILL.md +309 -0
  128. package/claude/skills/cypress-selectors/scripts/extract-missing.py +243 -0
  129. package/claude/skills/cypress-selectors/scripts/generate-block-selectors.py +283 -0
  130. package/claude/skills/cypress-selectors/scripts/validate-selectors.py +145 -0
  131. package/claude/skills/database-migrations/SKILL.md +335 -0
  132. package/claude/skills/database-migrations/scripts/generate-sample-data.py +284 -0
  133. package/claude/skills/database-migrations/scripts/validate-migration.py +323 -0
  134. package/claude/skills/design-system/SKILL.md +682 -0
  135. package/claude/skills/documentation/SKILL.md +540 -0
  136. package/claude/skills/entity-api/SKILL.md +482 -0
  137. package/claude/skills/entity-system/SKILL.md +635 -0
  138. package/claude/skills/entity-system/scripts/generate-child-migration.py +298 -0
  139. package/claude/skills/entity-system/scripts/generate-metas-migration.py +233 -0
  140. package/claude/skills/entity-system/scripts/generate-migration.py +382 -0
  141. package/claude/skills/entity-system/scripts/generate-sample-data.py +418 -0
  142. package/claude/skills/entity-system/scripts/scaffold-entity.py +661 -0
  143. package/claude/skills/github/SKILL.md +467 -0
  144. package/claude/skills/i18n-nextintl/SKILL.md +302 -0
  145. package/claude/skills/i18n-nextintl/scripts/add-translation.py +243 -0
  146. package/claude/skills/i18n-nextintl/scripts/extract-hardcoded.py +246 -0
  147. package/claude/skills/i18n-nextintl/scripts/validate-translations.py +260 -0
  148. package/claude/skills/impact-analysis/SKILL.md +203 -0
  149. package/claude/skills/jest-unit/SKILL.md +306 -0
  150. package/claude/skills/jest-unit/references/component-testing.md +371 -0
  151. package/claude/skills/jest-unit/references/mocking-patterns.md +380 -0
  152. package/claude/skills/jest-unit/references/service-hook-testing.md +454 -0
  153. package/claude/skills/jira-integration/SKILL.md +539 -0
  154. package/claude/skills/media-library/SKILL.md +743 -0
  155. package/claude/skills/mock-analysis/SKILL.md +276 -0
  156. package/claude/skills/monorepo-architecture/SKILL.md +162 -0
  157. package/claude/skills/nextjs-api-development/SKILL.md +364 -0
  158. package/claude/skills/nextjs-api-development/scripts/generate-crud-tests.py +456 -0
  159. package/claude/skills/nextjs-api-development/scripts/scaffold-endpoint.py +481 -0
  160. package/claude/skills/nextjs-api-development/scripts/validate-api.py +283 -0
  161. package/claude/skills/notion-integration/SKILL.md +641 -0
  162. package/claude/skills/npm-development-workflow/SKILL.md +480 -0
  163. package/claude/skills/page-builder-blocks/SKILL.md +530 -0
  164. package/claude/skills/page-builder-blocks/scripts/scaffold-block.py +444 -0
  165. package/claude/skills/permissions-system/SKILL.md +619 -0
  166. package/claude/skills/plugins/SKILL.md +340 -0
  167. package/claude/skills/plugins/references/plugin-templates.md +414 -0
  168. package/claude/skills/plugins/references/plugin-testing.md +353 -0
  169. package/claude/skills/plugins/references/plugin-types.md +198 -0
  170. package/claude/skills/plugins/scripts/scaffold-plugin.py +443 -0
  171. package/claude/skills/pom-patterns/SKILL.md +452 -0
  172. package/claude/skills/pom-patterns/scripts/generate-pom.py +392 -0
  173. package/claude/skills/rate-limiting/SKILL.md +342 -0
  174. package/claude/skills/react-best-practices/AGENTS.md +2410 -0
  175. package/claude/skills/react-best-practices/README.md +123 -0
  176. package/claude/skills/react-best-practices/SKILL.md +125 -0
  177. package/claude/skills/react-best-practices/metadata.json +15 -0
  178. package/claude/skills/react-best-practices/rules/_sections.md +46 -0
  179. package/claude/skills/react-best-practices/rules/_template.md +28 -0
  180. package/claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  181. package/claude/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
  182. package/claude/skills/react-best-practices/rules/async-api-routes.md +38 -0
  183. package/claude/skills/react-best-practices/rules/async-defer-await.md +80 -0
  184. package/claude/skills/react-best-practices/rules/async-dependencies.md +36 -0
  185. package/claude/skills/react-best-practices/rules/async-parallel.md +28 -0
  186. package/claude/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  187. package/claude/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  188. package/claude/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  189. package/claude/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  190. package/claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  191. package/claude/skills/react-best-practices/rules/bundle-preload.md +50 -0
  192. package/claude/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  193. package/claude/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
  194. package/claude/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  195. package/claude/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  196. package/claude/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
  197. package/claude/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  198. package/claude/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  199. package/claude/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  200. package/claude/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  201. package/claude/skills/react-best-practices/rules/js-early-exit.md +50 -0
  202. package/claude/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  203. package/claude/skills/react-best-practices/rules/js-index-maps.md +37 -0
  204. package/claude/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  205. package/claude/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  206. package/claude/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  207. package/claude/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  208. package/claude/skills/react-best-practices/rules/rendering-activity.md +26 -0
  209. package/claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  210. package/claude/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  211. package/claude/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  212. package/claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  213. package/claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  214. package/claude/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  215. package/claude/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  216. package/claude/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  217. package/claude/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  218. package/claude/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  219. package/claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  220. package/claude/skills/react-best-practices/rules/rerender-memo.md +44 -0
  221. package/claude/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  222. package/claude/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  223. package/claude/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  224. package/claude/skills/react-best-practices/rules/server-cache-react.md +76 -0
  225. package/claude/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  226. package/claude/skills/react-best-practices/rules/server-serialization.md +38 -0
  227. package/claude/skills/react-patterns/SKILL.md +688 -0
  228. package/claude/skills/registry-system/SKILL.md +331 -0
  229. package/claude/skills/scheduled-actions/SKILL.md +671 -0
  230. package/claude/skills/scope-enforcement/SKILL.md +542 -0
  231. package/claude/skills/scope-enforcement/scripts/validate-scope.py +357 -0
  232. package/claude/skills/server-actions/SKILL.md +493 -0
  233. package/claude/skills/service-layer/SKILL.md +587 -0
  234. package/claude/skills/session-management/SKILL.md +266 -0
  235. package/claude/skills/session-management/scripts/create-session.py +166 -0
  236. package/claude/skills/session-management/scripts/iteration-close.sh +105 -0
  237. package/claude/skills/session-management/scripts/iteration-init.sh +180 -0
  238. package/claude/skills/session-management/scripts/session-archive.sh +87 -0
  239. package/claude/skills/session-management/scripts/session-close.sh +133 -0
  240. package/claude/skills/session-management/scripts/session-init.sh +225 -0
  241. package/claude/skills/session-management/scripts/session-list.sh +163 -0
  242. package/claude/skills/session-management/scripts/split-plan.sh +116 -0
  243. package/claude/skills/shadcn-components/SKILL.md +586 -0
  244. package/claude/skills/shadcn-theming/SKILL.md +446 -0
  245. package/claude/skills/suspense-loading/SKILL.md +280 -0
  246. package/claude/skills/tailwind-theming/SKILL.md +507 -0
  247. package/claude/skills/tanstack-query/SKILL.md +608 -0
  248. package/claude/skills/test-coverage/SKILL.md +239 -0
  249. package/claude/skills/web-design-guidelines/SKILL.md +39 -0
  250. package/claude/skills/zod-validation/SKILL.md +537 -0
  251. package/claude/templates/blocks/progress.md +86 -0
  252. package/claude/templates/iteration/changes.md +61 -0
  253. package/claude/templates/iteration/progress.md +55 -0
  254. package/claude/templates/log.md +31 -0
  255. package/claude/templates/story/context.md +77 -0
  256. package/claude/templates/story/pendings.md +37 -0
  257. package/claude/templates/story/plan.md +299 -0
  258. package/claude/templates/story/requirements.md +109 -0
  259. package/claude/templates/story/scope.json +10 -0
  260. package/claude/templates/story/tests.md +91 -0
  261. package/claude/templates/task/progress.md +58 -0
  262. package/claude/templates/task/requirements.md +54 -0
  263. package/claude/workflows/README.md +154 -0
  264. package/claude/workflows/blocks.md +614 -0
  265. package/claude/workflows/story.md +1207 -0
  266. package/claude/workflows/task.md +927 -0
  267. package/claude/workflows/tweak.md +527 -0
  268. package/cursor/.gitkeep +0 -0
  269. package/package.json +35 -0
  270. package/scripts/postinstall.mjs +198 -0
  271. package/scripts/setup.mjs +282 -0
  272. package/scripts/sync.mjs +209 -0
@@ -0,0 +1,434 @@
1
+ ---
2
+ name: clickup-integration
3
+ description: |
4
+ ClickUp integration patterns for task management.
5
+ Covers API authentication, webhooks, task sync, and MCP integration.
6
+ Use this skill when implementing ClickUp features or syncing sessions with tasks.
7
+ allowed-tools: Read, Glob, Grep, Bash
8
+ version: 1.0.0
9
+ ---
10
+
11
+ # ClickUp Integration Skill
12
+
13
+ Integration patterns for syncing development sessions with ClickUp tasks.
14
+
15
+ ## Architecture Overview
16
+
17
+ ```
18
+ ┌─────────────────────────────────────────────────────────────────┐
19
+ │ CLICKUP INTEGRATION │
20
+ ├─────────────────────────────────────────────────────────────────┤
21
+ │ │
22
+ │ ┌─────────────┐ ┌──────────────┐ ┌──────────────┐ │
23
+ │ │ Claude │────►│ MCP Server │────►│ ClickUp │ │
24
+ │ │ Session │◄────│ (clickup) │◄────│ API │ │
25
+ │ └─────────────┘ └──────────────┘ └──────────────┘ │
26
+ │ │ │ │
27
+ │ ▼ ▼ │
28
+ │ ┌─────────────┐ ┌──────────────┐ │
29
+ │ │ Session │ │ Webhooks │ │
30
+ │ │ Files │ │ (optional) │ │
31
+ │ └─────────────┘ └──────────────┘ │
32
+ │ │
33
+ └─────────────────────────────────────────────────────────────────┘
34
+ ```
35
+
36
+ ---
37
+
38
+ ## When to Use This Skill
39
+
40
+ - Setting up ClickUp integration for the first time
41
+ - Syncing development sessions with ClickUp tasks
42
+ - Creating tasks from Claude sessions
43
+ - Updating task status automatically
44
+ - Reading task details and comments
45
+
46
+ ---
47
+
48
+ ## Configuration
49
+
50
+ ### .claude/config/workspace.json
51
+
52
+ ```json
53
+ {
54
+ "taskManager": {
55
+ "enabled": true,
56
+ "provider": "clickup",
57
+ "syncWithSession": true,
58
+ "autoUpdateStatus": true,
59
+ "config": {
60
+ "apiKey": "${CLICKUP_API_KEY}",
61
+ "workspaceId": "your-workspace-id",
62
+ "defaultSpace": "your-default-space-id",
63
+ "useMcp": true,
64
+ "mcpFallback": true
65
+ }
66
+ }
67
+ }
68
+ ```
69
+
70
+ ### Environment Variables
71
+
72
+ ```bash
73
+ # .env.local
74
+ CLICKUP_API_KEY=pk_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
75
+ ```
76
+
77
+ ---
78
+
79
+ ## MCP Server Integration
80
+
81
+ ClickUp provides an MCP server for Claude Code integration.
82
+
83
+ ### Setup
84
+
85
+ ```bash
86
+ # Add MCP server to Claude Code
87
+ claude mcp add clickup
88
+ ```
89
+
90
+ ### Available MCP Tools
91
+
92
+ | Tool | Description | Parameters |
93
+ |------|-------------|------------|
94
+ | `clickup_get_task` | Get task details | `task_id` |
95
+ | `clickup_create_task` | Create new task | `list_id`, `name`, `description`, etc. |
96
+ | `clickup_update_task` | Update task | `task_id`, fields to update |
97
+ | `clickup_create_task_comment` | Add comment | `task_id`, `comment_text` |
98
+ | `clickup_get_lists` | Get lists in folder | `folder_id` |
99
+ | `clickup_get_folders` | Get folders in space | `space_id` |
100
+
101
+ ### Example Usage
102
+
103
+ ```typescript
104
+ // Get task details via MCP
105
+ const task = await mcp.clickup.get_task({ task_id: "abc123" });
106
+
107
+ // Create task via MCP
108
+ const newTask = await mcp.clickup.create_task({
109
+ list_id: "12345678",
110
+ name: "Implement user authentication",
111
+ description: "Add OAuth2 support",
112
+ priority: 2,
113
+ tags: ["feature", "auth"]
114
+ });
115
+ ```
116
+
117
+ ---
118
+
119
+ ## API Patterns
120
+
121
+ ### Authentication
122
+
123
+ ```typescript
124
+ // API Key authentication
125
+ const headers = {
126
+ 'Authorization': process.env.CLICKUP_API_KEY,
127
+ 'Content-Type': 'application/json'
128
+ };
129
+
130
+ // Base URL
131
+ const BASE_URL = 'https://api.clickup.com/api/v2';
132
+ ```
133
+
134
+ ### Common Endpoints
135
+
136
+ | Endpoint | Method | Description |
137
+ |----------|--------|-------------|
138
+ | `/team` | GET | Get authorized teams/workspaces |
139
+ | `/team/{team_id}/space` | GET | Get spaces in workspace |
140
+ | `/space/{space_id}/folder` | GET | Get folders in space |
141
+ | `/folder/{folder_id}/list` | GET | Get lists in folder |
142
+ | `/list/{list_id}/task` | GET/POST | Get/Create tasks |
143
+ | `/task/{task_id}` | GET/PUT/DELETE | Task operations |
144
+ | `/task/{task_id}/comment` | GET/POST | Task comments |
145
+
146
+ ### Task Structure
147
+
148
+ ```typescript
149
+ interface ClickUpTask {
150
+ id: string;
151
+ custom_id: string | null;
152
+ name: string;
153
+ description: string;
154
+ status: {
155
+ status: string;
156
+ color: string;
157
+ type: string;
158
+ };
159
+ priority: {
160
+ id: string;
161
+ priority: string;
162
+ color: string;
163
+ };
164
+ assignees: Array<{
165
+ id: number;
166
+ username: string;
167
+ email: string;
168
+ }>;
169
+ tags: Array<{
170
+ name: string;
171
+ tag_fg: string;
172
+ tag_bg: string;
173
+ }>;
174
+ due_date: string | null;
175
+ start_date: string | null;
176
+ time_estimate: number | null;
177
+ custom_fields: Array<{
178
+ id: string;
179
+ name: string;
180
+ value: any;
181
+ }>;
182
+ url: string;
183
+ }
184
+ ```
185
+
186
+ ---
187
+
188
+ ## Session Sync Patterns
189
+
190
+ ### Linking Session to Task
191
+
192
+ ```markdown
193
+ # In requirements.md
194
+
195
+ ## ClickUp Task
196
+ - **Task ID:** abc123
197
+ - **URL:** https://app.clickup.com/t/abc123
198
+ - **Status:** In Progress
199
+ ```
200
+
201
+ ### Auto-Update Status
202
+
203
+ When `autoUpdateStatus: true`, Claude updates task status:
204
+
205
+ | Session Event | ClickUp Status |
206
+ |---------------|----------------|
207
+ | Session created | "In Progress" |
208
+ | Blocked | "Blocked" |
209
+ | Session closed (success) | "Complete" |
210
+ | Session closed (partial) | "Review" |
211
+
212
+ ### Comment Sync
213
+
214
+ ```typescript
215
+ // Post session progress as comment
216
+ await mcp.clickup.create_task_comment({
217
+ task_id: "abc123",
218
+ comment_text: `
219
+ ## Session Progress Update
220
+
221
+ **Phase:** Backend Development
222
+ **Progress:** 60%
223
+
224
+ ### Completed
225
+ - API endpoints created
226
+ - Tests written
227
+
228
+ ### In Progress
229
+ - Frontend components
230
+
231
+ ### Blocked
232
+ - None
233
+ `.trim()
234
+ });
235
+ ```
236
+
237
+ ---
238
+
239
+ ## Webhook Configuration
240
+
241
+ ### Setting Up Webhooks
242
+
243
+ ```typescript
244
+ // Create webhook for task updates
245
+ POST /team/{team_id}/webhook
246
+ {
247
+ "endpoint": "https://your-app.com/api/webhooks/clickup",
248
+ "events": [
249
+ "taskCreated",
250
+ "taskUpdated",
251
+ "taskDeleted",
252
+ "taskStatusUpdated",
253
+ "taskCommentPosted"
254
+ ]
255
+ }
256
+ ```
257
+
258
+ ### Webhook Events
259
+
260
+ | Event | Trigger |
261
+ |-------|---------|
262
+ | `taskCreated` | New task created |
263
+ | `taskUpdated` | Task details changed |
264
+ | `taskStatusUpdated` | Status changed |
265
+ | `taskCommentPosted` | New comment added |
266
+ | `taskAssigneeUpdated` | Assignee changed |
267
+ | `taskDueDateUpdated` | Due date changed |
268
+
269
+ ### Handling Webhooks
270
+
271
+ ```typescript
272
+ // app/api/webhooks/clickup/route.ts
273
+ export async function POST(request: Request) {
274
+ const payload = await request.json();
275
+
276
+ switch (payload.event) {
277
+ case 'taskStatusUpdated':
278
+ // Handle status change
279
+ break;
280
+ case 'taskCommentPosted':
281
+ // Handle new comment
282
+ break;
283
+ }
284
+
285
+ return Response.json({ received: true });
286
+ }
287
+ ```
288
+
289
+ ---
290
+
291
+ ## Rate Limiting
292
+
293
+ ### Limits
294
+
295
+ | Plan | Rate Limit |
296
+ |------|------------|
297
+ | Free | 100 requests/minute |
298
+ | Unlimited | 100 requests/minute |
299
+ | Business | 100 requests/minute |
300
+ | Enterprise | 1000 requests/minute |
301
+
302
+ ### Handling Rate Limits
303
+
304
+ ```typescript
305
+ // Check rate limit headers
306
+ const remaining = response.headers.get('X-RateLimit-Remaining');
307
+ const reset = response.headers.get('X-RateLimit-Reset');
308
+
309
+ if (remaining === '0') {
310
+ const waitTime = parseInt(reset) - Date.now();
311
+ await sleep(waitTime);
312
+ }
313
+ ```
314
+
315
+ ---
316
+
317
+ ## Error Handling
318
+
319
+ ### Common Error Codes
320
+
321
+ | Code | Description | Resolution |
322
+ |------|-------------|------------|
323
+ | 401 | Unauthorized | Check API key |
324
+ | 403 | Forbidden | Check permissions |
325
+ | 404 | Not found | Verify task/list ID |
326
+ | 429 | Rate limited | Wait and retry |
327
+ | 500 | Server error | Retry with backoff |
328
+
329
+ ### Error Response Format
330
+
331
+ ```json
332
+ {
333
+ "err": "Task not found",
334
+ "ECODE": "TASK_024"
335
+ }
336
+ ```
337
+
338
+ ---
339
+
340
+ ## Testing Patterns
341
+
342
+ ### Mock API Responses
343
+
344
+ ```typescript
345
+ // __mocks__/clickup.ts
346
+ export const mockTask = {
347
+ id: "abc123",
348
+ name: "Test Task",
349
+ status: { status: "Open", color: "#d3d3d3" },
350
+ priority: { priority: "normal" }
351
+ };
352
+
353
+ export const mockGetTask = jest.fn().mockResolvedValue(mockTask);
354
+ ```
355
+
356
+ ### Integration Tests
357
+
358
+ ```typescript
359
+ describe('ClickUp Integration', () => {
360
+ it('should fetch task details', async () => {
361
+ const task = await clickup.getTask('abc123');
362
+ expect(task.name).toBeDefined();
363
+ });
364
+
365
+ it('should create task', async () => {
366
+ const task = await clickup.createTask({
367
+ listId: '12345',
368
+ name: 'New Task'
369
+ });
370
+ expect(task.id).toBeDefined();
371
+ });
372
+ });
373
+ ```
374
+
375
+ ---
376
+
377
+ ## Anti-Patterns
378
+
379
+ ### DON'T: Hardcode API Keys
380
+
381
+ ```typescript
382
+ // BAD
383
+ const apiKey = 'pk_12345_abcdef';
384
+
385
+ // GOOD
386
+ const apiKey = process.env.CLICKUP_API_KEY;
387
+ ```
388
+
389
+ ### DON'T: Ignore Rate Limits
390
+
391
+ ```typescript
392
+ // BAD
393
+ for (const task of tasks) {
394
+ await updateTask(task);
395
+ }
396
+
397
+ // GOOD
398
+ for (const task of tasks) {
399
+ await updateTask(task);
400
+ await sleep(100); // Respect rate limits
401
+ }
402
+ ```
403
+
404
+ ### DON'T: Store Sensitive Data in Tasks
405
+
406
+ ```typescript
407
+ // BAD - Don't put secrets in task descriptions
408
+ description: `API Key: ${apiKey}`
409
+
410
+ // GOOD - Reference environment variables
411
+ description: `Uses API key from CLICKUP_API_KEY env var`
412
+ ```
413
+
414
+ ---
415
+
416
+ ## Checklist
417
+
418
+ Before using ClickUp integration:
419
+
420
+ - [ ] API key configured in environment
421
+ - [ ] Workspace ID set in `.claude/config/workspace.json`
422
+ - [ ] Default space configured
423
+ - [ ] MCP server added (if using MCP)
424
+ - [ ] Webhook endpoint set up (if using webhooks)
425
+ - [ ] Error handling implemented
426
+ - [ ] Rate limiting considered
427
+
428
+ ---
429
+
430
+ ## Related Skills
431
+
432
+ - `session-management` - Session lifecycle
433
+ - `scheduled-actions` - Background task processing
434
+ - `service-layer` - API implementation patterns