crewly 1.0.8 → 1.0.11

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 (249) hide show
  1. package/config/constants.ts +59 -0
  2. package/config/index.ts +2 -0
  3. package/config/roles/architect/prompt.md +8 -5
  4. package/config/roles/backend-developer/prompt.md +24 -5
  5. package/config/roles/designer/prompt.md +6 -5
  6. package/config/roles/developer/prompt.md +27 -5
  7. package/config/roles/frontend-developer/prompt.md +24 -5
  8. package/config/roles/fullstack-dev/prompt.md +24 -5
  9. package/config/roles/generalist/prompt.md +9 -5
  10. package/config/roles/orchestrator/prompt.md +126 -15
  11. package/config/roles/product-manager/prompt.md +6 -5
  12. package/config/roles/qa/prompt.md +24 -5
  13. package/config/roles/qa-engineer/prompt.md +24 -5
  14. package/config/roles/sales/prompt.md +6 -5
  15. package/config/roles/support/prompt.md +6 -5
  16. package/config/roles/tpm/prompt.md +6 -5
  17. package/config/skills/agent/_common/lib.sh +4 -0
  18. package/config/skills/agent/core/accept-task/execute.sh +21 -0
  19. package/config/skills/agent/core/accept-task/instructions.md +20 -0
  20. package/config/skills/agent/core/accept-task/skill.json +20 -0
  21. package/config/skills/agent/core/block-task/execute.sh +26 -0
  22. package/config/skills/agent/core/block-task/instructions.md +22 -0
  23. package/config/skills/agent/core/block-task/skill.json +20 -0
  24. package/config/skills/agent/core/check-quality-gates/execute.sh +20 -0
  25. package/config/skills/agent/core/check-quality-gates/instructions.md +23 -0
  26. package/config/skills/agent/core/check-quality-gates/skill.json +20 -0
  27. package/config/skills/agent/core/complete-task/execute.sh +29 -0
  28. package/config/skills/agent/core/complete-task/instructions.md +53 -0
  29. package/config/skills/agent/core/complete-task/skill.json +20 -0
  30. package/config/skills/agent/core/get-my-context/execute.sh +23 -0
  31. package/config/skills/agent/core/get-my-context/instructions.md +21 -0
  32. package/config/skills/agent/core/get-my-context/skill.json +20 -0
  33. package/config/skills/agent/core/get-sops/execute.sh +24 -0
  34. package/config/skills/agent/core/get-sops/instructions.md +21 -0
  35. package/config/skills/agent/core/get-sops/skill.json +20 -0
  36. package/config/skills/agent/core/get-team-status/execute.sh +8 -0
  37. package/config/skills/agent/core/get-team-status/instructions.md +17 -0
  38. package/config/skills/agent/core/get-team-status/skill.json +20 -0
  39. package/config/skills/agent/core/heartbeat/execute.sh +22 -0
  40. package/config/skills/agent/core/heartbeat/instructions.md +23 -0
  41. package/config/skills/agent/core/heartbeat/skill.json +20 -0
  42. package/config/skills/agent/core/manage-knowledge/execute.sh +60 -0
  43. package/config/skills/agent/core/manage-knowledge/instructions.md +46 -0
  44. package/config/skills/agent/core/marketplace-search/execute.sh +77 -0
  45. package/config/skills/agent/core/marketplace-search/instructions.md +59 -0
  46. package/config/skills/agent/core/marketplace-search/skill.json +20 -0
  47. package/config/skills/agent/core/query-knowledge/execute.sh +30 -0
  48. package/config/skills/agent/core/query-knowledge/instructions.md +47 -0
  49. package/config/skills/agent/core/query-knowledge/skill.json +20 -0
  50. package/config/skills/agent/core/read-task/execute.sh +15 -0
  51. package/config/skills/agent/core/read-task/instructions.md +19 -0
  52. package/config/skills/agent/core/read-task/skill.json +20 -0
  53. package/config/skills/agent/core/recall/execute.sh +24 -0
  54. package/config/skills/agent/core/recall/instructions.md +23 -0
  55. package/config/skills/agent/core/recall/skill.json +20 -0
  56. package/config/skills/agent/core/record-learning/execute.sh +29 -0
  57. package/config/skills/agent/core/record-learning/instructions.md +24 -0
  58. package/config/skills/agent/core/record-learning/skill.json +20 -0
  59. package/config/skills/agent/core/register-self/execute.sh +28 -0
  60. package/config/skills/agent/core/register-self/instructions.md +18 -0
  61. package/config/skills/agent/core/register-self/skill.json +20 -0
  62. package/config/skills/agent/core/remember/execute.sh +29 -0
  63. package/config/skills/agent/core/remember/instructions.md +24 -0
  64. package/config/skills/agent/core/remember/skill.json +20 -0
  65. package/config/skills/agent/core/report-progress/execute.sh +28 -0
  66. package/config/skills/agent/core/report-progress/instructions.md +25 -0
  67. package/config/skills/agent/core/report-progress/skill.json +20 -0
  68. package/config/skills/agent/core/report-status/execute.sh +35 -0
  69. package/config/skills/agent/core/report-status/instructions.md +36 -0
  70. package/config/skills/agent/core/report-status/skill.json +20 -0
  71. package/config/skills/agent/core/send-chat-response/execute.sh +26 -0
  72. package/config/skills/agent/core/send-chat-response/instructions.md +22 -0
  73. package/config/skills/agent/core/send-chat-response/skill.json +20 -0
  74. package/config/skills/agent/core/send-message/execute.sh +17 -0
  75. package/config/skills/agent/core/send-message/instructions.md +20 -0
  76. package/config/skills/agent/core/send-message/skill.json +20 -0
  77. package/config/skills/orchestrator/delegate-task/execute.sh +1 -1
  78. package/config/skills/orchestrator/schedule-check/instructions.md +6 -0
  79. package/config/skills/registry.json +850 -0
  80. package/config/templates/research-team.json +2 -2
  81. package/dist/backend/backend/src/constants.d.ts +89 -4
  82. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  83. package/dist/backend/backend/src/constants.js +84 -6
  84. package/dist/backend/backend/src/constants.js.map +1 -1
  85. package/dist/backend/backend/src/controllers/marketplace/index.d.ts +1 -1
  86. package/dist/backend/backend/src/controllers/marketplace/index.d.ts.map +1 -1
  87. package/dist/backend/backend/src/controllers/marketplace/index.js +1 -1
  88. package/dist/backend/backend/src/controllers/marketplace/index.js.map +1 -1
  89. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts +64 -8
  90. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts.map +1 -1
  91. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js +194 -96
  92. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js.map +1 -1
  93. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts.map +1 -1
  94. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js +7 -2
  95. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js.map +1 -1
  96. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  97. package/dist/backend/backend/src/controllers/team/team.controller.js +30 -13
  98. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  99. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  100. package/dist/backend/backend/src/services/agent/agent-registration.service.js +37 -0
  101. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  102. package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts +51 -8
  103. package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -1
  104. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js +201 -11
  105. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -1
  106. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts +16 -1
  107. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  108. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +99 -9
  109. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  110. package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
  111. package/dist/backend/backend/src/services/agent/idle-detection.service.js +11 -4
  112. package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
  113. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts +11 -0
  114. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -1
  115. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js +18 -0
  116. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -1
  117. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  118. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +13 -0
  119. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  120. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +21 -0
  121. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  122. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +227 -91
  123. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  124. package/dist/backend/backend/src/services/chat/chat.service.d.ts +12 -0
  125. package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
  126. package/dist/backend/backend/src/services/chat/chat.service.js +23 -1
  127. package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
  128. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts +6 -0
  129. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -1
  130. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js +10 -0
  131. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -1
  132. package/dist/backend/backend/src/services/marketplace/index.d.ts +1 -0
  133. package/dist/backend/backend/src/services/marketplace/index.d.ts.map +1 -1
  134. package/dist/backend/backend/src/services/marketplace/index.js +2 -0
  135. package/dist/backend/backend/src/services/marketplace/index.js.map +1 -1
  136. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts +10 -9
  137. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
  138. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js +262 -73
  139. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
  140. package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.d.ts +71 -0
  141. package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.d.ts.map +1 -0
  142. package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.js +339 -0
  143. package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.js.map +1 -0
  144. package/dist/backend/backend/src/services/marketplace/marketplace.service.d.ts +4 -15
  145. package/dist/backend/backend/src/services/marketplace/marketplace.service.d.ts.map +1 -1
  146. package/dist/backend/backend/src/services/marketplace/marketplace.service.js +172 -27
  147. package/dist/backend/backend/src/services/marketplace/marketplace.service.js.map +1 -1
  148. package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts +30 -2
  149. package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts.map +1 -1
  150. package/dist/backend/backend/src/services/messaging/message-queue.service.js +79 -3
  151. package/dist/backend/backend/src/services/messaging/message-queue.service.js.map +1 -1
  152. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  153. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +57 -4
  154. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  155. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts.map +1 -1
  156. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js +20 -1
  157. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
  158. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -1
  159. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js +31 -0
  160. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -1
  161. package/dist/backend/backend/src/services/runtime-adapter.d.ts +20 -0
  162. package/dist/backend/backend/src/services/runtime-adapter.d.ts.map +1 -1
  163. package/dist/backend/backend/src/services/runtime-adapter.js +22 -1
  164. package/dist/backend/backend/src/services/runtime-adapter.js.map +1 -1
  165. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts +19 -0
  166. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
  167. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +31 -2
  168. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  169. package/dist/backend/backend/src/services/session/session-backend.interface.d.ts +14 -0
  170. package/dist/backend/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
  171. package/dist/backend/backend/src/services/session/session-backend.interface.js.map +1 -1
  172. package/dist/backend/backend/src/services/session/session-command-helper.d.ts +9 -0
  173. package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  174. package/dist/backend/backend/src/services/session/session-command-helper.js +24 -1
  175. package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
  176. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts +7 -13
  177. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
  178. package/dist/backend/backend/src/services/skill/skill-catalog.service.js +38 -47
  179. package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
  180. package/dist/backend/backend/src/services/skill/skill.service.d.ts +3 -0
  181. package/dist/backend/backend/src/services/skill/skill.service.d.ts.map +1 -1
  182. package/dist/backend/backend/src/services/skill/skill.service.js +17 -0
  183. package/dist/backend/backend/src/services/skill/skill.service.js.map +1 -1
  184. package/dist/backend/backend/src/types/chat.types.d.ts +5 -5
  185. package/dist/backend/backend/src/types/chat.types.d.ts.map +1 -1
  186. package/dist/backend/backend/src/types/chat.types.js +21 -1
  187. package/dist/backend/backend/src/types/chat.types.js.map +1 -1
  188. package/dist/backend/backend/src/types/marketplace.types.d.ts +37 -0
  189. package/dist/backend/backend/src/types/marketplace.types.d.ts.map +1 -1
  190. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
  191. package/dist/backend/backend/src/websocket/terminal.gateway.js +3 -5
  192. package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
  193. package/dist/backend/config/constants.d.ts +41 -0
  194. package/dist/backend/config/constants.d.ts.map +1 -1
  195. package/dist/backend/config/constants.js +57 -0
  196. package/dist/backend/config/constants.js.map +1 -1
  197. package/dist/backend/config/index.d.ts +2 -2
  198. package/dist/backend/config/index.d.ts.map +1 -1
  199. package/dist/backend/config/index.js +2 -2
  200. package/dist/backend/config/index.js.map +1 -1
  201. package/dist/cli/backend/src/constants.d.ts +89 -4
  202. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  203. package/dist/cli/backend/src/constants.js +84 -6
  204. package/dist/cli/backend/src/constants.js.map +1 -1
  205. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts +40 -0
  206. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -0
  207. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js +74 -0
  208. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -0
  209. package/dist/cli/backend/src/types/chat.types.d.ts +5 -5
  210. package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -1
  211. package/dist/cli/backend/src/types/chat.types.js +21 -1
  212. package/dist/cli/backend/src/types/chat.types.js.map +1 -1
  213. package/dist/cli/cli/src/commands/onboard.d.ts +11 -1
  214. package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
  215. package/dist/cli/cli/src/commands/onboard.js +118 -18
  216. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  217. package/dist/cli/cli/src/commands/publish.d.ts +14 -6
  218. package/dist/cli/cli/src/commands/publish.d.ts.map +1 -1
  219. package/dist/cli/cli/src/commands/publish.js +32 -8
  220. package/dist/cli/cli/src/commands/publish.js.map +1 -1
  221. package/dist/cli/cli/src/commands/seed-marketplace.d.ts +28 -0
  222. package/dist/cli/cli/src/commands/seed-marketplace.d.ts.map +1 -0
  223. package/dist/cli/cli/src/commands/seed-marketplace.js +148 -0
  224. package/dist/cli/cli/src/commands/seed-marketplace.js.map +1 -0
  225. package/dist/cli/cli/src/index.js +9 -0
  226. package/dist/cli/cli/src/index.js.map +1 -1
  227. package/dist/cli/cli/src/utils/marketplace.d.ts +17 -4
  228. package/dist/cli/cli/src/utils/marketplace.d.ts.map +1 -1
  229. package/dist/cli/cli/src/utils/marketplace.js +172 -58
  230. package/dist/cli/cli/src/utils/marketplace.js.map +1 -1
  231. package/dist/cli/config/constants.d.ts +41 -0
  232. package/dist/cli/config/constants.d.ts.map +1 -1
  233. package/dist/cli/config/constants.js +57 -0
  234. package/dist/cli/config/constants.js.map +1 -1
  235. package/dist/cli/config/index.d.ts +2 -2
  236. package/dist/cli/config/index.d.ts.map +1 -1
  237. package/dist/cli/config/index.js +2 -2
  238. package/dist/cli/config/index.js.map +1 -1
  239. package/frontend/dist/assets/{index-68d1eb5a.js → index-0a245b0d.js} +242 -242
  240. package/frontend/dist/assets/{index-c5043a83.css → index-6972eeee.css} +1 -1
  241. package/frontend/dist/index.html +2 -2
  242. package/package.json +2 -2
  243. package/config/skills/chrome-browser/instructions.md +0 -42
  244. package/config/skills/chrome-browser/skill.json +0 -39
  245. package/config/skills/nano-banana-image/generate.sh +0 -73
  246. package/config/skills/nano-banana-image/instructions.md +0 -50
  247. package/config/skills/nano-banana-image/skill.json +0 -39
  248. package/config/skills/playwright-chrome-browser/instructions.md +0 -95
  249. package/config/skills/playwright-chrome-browser/skill.json +0 -44
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "agent-accept-task",
3
+ "name": "Accept Task",
4
+ "description": "Accept and take the next available task from the task queue.",
5
+ "category": "task-management",
6
+ "skillType": "claude-skill",
7
+ "promptFile": "instructions.md",
8
+ "execution": {
9
+ "type": "script",
10
+ "script": {
11
+ "file": "execute.sh",
12
+ "interpreter": "bash",
13
+ "timeoutMs": 15000
14
+ }
15
+ },
16
+ "assignableRoles": ["developer", "qa", "tpm", "designer", "frontend-developer", "backend-developer", "fullstack-dev", "qa-engineer", "product-manager", "architect", "generalist", "sales", "support"],
17
+ "triggers": ["accept task", "take task", "get next task", "pick up task"],
18
+ "tags": ["task", "queue", "assignment"],
19
+ "version": "1.0.0"
20
+ }
@@ -0,0 +1,26 @@
1
+ #!/bin/bash
2
+ # Mark a task as blocked with a reason and optional questions
3
+ set -euo pipefail
4
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
+ source "${SCRIPT_DIR}/../../_common/lib.sh"
6
+
7
+ INPUT="${1:-}"
8
+ [ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"absoluteTaskPath\":\"/path/to/task\",\"reason\":\"Missing API credentials\"}'"
9
+
10
+ ABSOLUTE_TASK_PATH=$(echo "$INPUT" | jq -r '.absoluteTaskPath // empty')
11
+ REASON=$(echo "$INPUT" | jq -r '.reason // empty')
12
+ QUESTIONS=$(echo "$INPUT" | jq -r '.questions // empty')
13
+ URGENCY=$(echo "$INPUT" | jq -r '.urgency // empty')
14
+ require_param "absoluteTaskPath" "$ABSOLUTE_TASK_PATH"
15
+ require_param "reason" "$REASON"
16
+
17
+ BODY=$(jq -n \
18
+ --arg absoluteTaskPath "$ABSOLUTE_TASK_PATH" \
19
+ --arg reason "$REASON" \
20
+ --arg questions "$QUESTIONS" \
21
+ --arg urgency "$URGENCY" \
22
+ '{absoluteTaskPath: $absoluteTaskPath, reason: $reason} +
23
+ (if $questions != "" then {questions: $questions} else {} end) +
24
+ (if $urgency != "" then {urgency: $urgency} else {} end)')
25
+
26
+ api_call POST "/task-management/block" "$BODY"
@@ -0,0 +1,22 @@
1
+ # Block Task
2
+
3
+ Mark a task as blocked with a reason explaining the blocker. Optionally include questions for the orchestrator and an urgency level.
4
+
5
+ ## Parameters
6
+
7
+ | Parameter | Required | Description |
8
+ |-----------|----------|-------------|
9
+ | `absoluteTaskPath` | Yes | Absolute filesystem path to the task file |
10
+ | `reason` | Yes | Explanation of why the task is blocked |
11
+ | `questions` | No | Specific questions for the orchestrator to resolve the blocker |
12
+ | `urgency` | No | Urgency level: `low`, `medium`, `high`, `critical` |
13
+
14
+ ## Example
15
+
16
+ ```bash
17
+ bash config/skills/agent/block-task/execute.sh '{"absoluteTaskPath":"/projects/app/tasks/deploy-api.md","reason":"Missing production database credentials","questions":"Where are the DB credentials stored?","urgency":"high"}'
18
+ ```
19
+
20
+ ## Output
21
+
22
+ JSON confirmation that the task has been marked as blocked and the orchestrator has been notified.
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "agent-block-task",
3
+ "name": "Block Task",
4
+ "description": "Mark a task as blocked with a reason and optional questions for the orchestrator.",
5
+ "category": "task-management",
6
+ "skillType": "claude-skill",
7
+ "promptFile": "instructions.md",
8
+ "execution": {
9
+ "type": "script",
10
+ "script": {
11
+ "file": "execute.sh",
12
+ "interpreter": "bash",
13
+ "timeoutMs": 15000
14
+ }
15
+ },
16
+ "assignableRoles": ["developer", "qa", "tpm", "designer", "frontend-developer", "backend-developer", "fullstack-dev", "qa-engineer", "product-manager", "architect", "generalist", "sales", "support"],
17
+ "triggers": ["block task", "task blocked", "stuck on task", "need help"],
18
+ "tags": ["task", "blocker", "status"],
19
+ "version": "1.0.0"
20
+ }
@@ -0,0 +1,20 @@
1
+ #!/bin/bash
2
+ # Run quality gate checks against the project
3
+ set -euo pipefail
4
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
+ source "${SCRIPT_DIR}/../../_common/lib.sh"
6
+
7
+ INPUT="${1:-}"
8
+ [ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"projectPath\":\"/path/to/project\"}'"
9
+
10
+ PROJECT_PATH=$(echo "$INPUT" | jq -r '.projectPath // empty')
11
+ GATES=$(echo "$INPUT" | jq -r '.gates // empty')
12
+ SKIP_OPTIONAL=$(echo "$INPUT" | jq -r '.skipOptional // empty')
13
+
14
+ # Build body with optional fields
15
+ BODY=$(echo "$INPUT" | jq '{} +
16
+ (if .projectPath then {projectPath: .projectPath} else {} end) +
17
+ (if .gates then {gates: .gates} else {} end) +
18
+ (if .skipOptional == true then {skipOptional: true} else {} end)')
19
+
20
+ api_call POST "/quality-gates/check" "$BODY"
@@ -0,0 +1,23 @@
1
+ # Check Quality Gates
2
+
3
+ Run quality gate checks against the project. This includes build verification, linting, unit tests, and any other configured gates. Use this before completing a task to ensure your changes meet project standards.
4
+
5
+ Note: This operation may take several minutes depending on the project size and configured gates.
6
+
7
+ ## Parameters
8
+
9
+ | Parameter | Required | Description |
10
+ |-----------|----------|-------------|
11
+ | `projectPath` | No | Absolute path to the project directory |
12
+ | `gates` | No | Array of specific gates to run (e.g., `["build", "test", "lint"]`). Runs all if omitted |
13
+ | `skipOptional` | No | Set to `true` to skip optional quality gates |
14
+
15
+ ## Example
16
+
17
+ ```bash
18
+ bash config/skills/agent/check-quality-gates/execute.sh '{"projectPath":"/projects/app","gates":["build","test"]}'
19
+ ```
20
+
21
+ ## Output
22
+
23
+ JSON with results for each quality gate including pass/fail status, duration, and any error details.
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "agent-check-quality-gates",
3
+ "name": "Check Quality Gates",
4
+ "description": "Run quality gate checks (build, tests, lint) against the project before completing a task.",
5
+ "category": "quality",
6
+ "skillType": "claude-skill",
7
+ "promptFile": "instructions.md",
8
+ "execution": {
9
+ "type": "script",
10
+ "script": {
11
+ "file": "execute.sh",
12
+ "interpreter": "bash",
13
+ "timeoutMs": 300000
14
+ }
15
+ },
16
+ "assignableRoles": ["developer", "qa", "tpm", "designer", "frontend-developer", "backend-developer", "fullstack-dev", "qa-engineer", "product-manager", "architect", "generalist", "sales", "support"],
17
+ "triggers": ["check quality", "run gates", "quality gates", "verify build", "run tests"],
18
+ "tags": ["quality", "testing", "build", "lint", "gates"],
19
+ "version": "1.0.0"
20
+ }
@@ -0,0 +1,29 @@
1
+ #!/bin/bash
2
+ # Mark a task as complete with a summary of the work done
3
+ set -euo pipefail
4
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
+ source "${SCRIPT_DIR}/../../_common/lib.sh"
6
+
7
+ INPUT="${1:-}"
8
+ [ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"absoluteTaskPath\":\"/path/to/task\",\"sessionName\":\"dev-1\",\"summary\":\"Implemented feature X\",\"output\":{\"key\":\"value\"}}'"
9
+
10
+ ABSOLUTE_TASK_PATH=$(echo "$INPUT" | jq -r '.absoluteTaskPath // empty')
11
+ SESSION_NAME=$(echo "$INPUT" | jq -r '.sessionName // empty')
12
+ SUMMARY=$(echo "$INPUT" | jq -r '.summary // empty')
13
+ SKIP_GATES=$(echo "$INPUT" | jq -r '.skipGates // empty')
14
+ OUTPUT_JSON=$(echo "$INPUT" | jq -c '.output // empty')
15
+ require_param "absoluteTaskPath" "$ABSOLUTE_TASK_PATH"
16
+ require_param "sessionName" "$SESSION_NAME"
17
+ require_param "summary" "$SUMMARY"
18
+
19
+ BODY=$(jq -n \
20
+ --arg absoluteTaskPath "$ABSOLUTE_TASK_PATH" \
21
+ --arg sessionName "$SESSION_NAME" \
22
+ --arg summary "$SUMMARY" \
23
+ --arg skipGates "$SKIP_GATES" \
24
+ --argjson output "${OUTPUT_JSON:-null}" \
25
+ '{absoluteTaskPath: $absoluteTaskPath, sessionName: $sessionName, summary: $summary} +
26
+ (if $skipGates == "true" then {skipGates: true} else {} end) +
27
+ (if $output != null then {output: $output} else {} end)')
28
+
29
+ api_call POST "/task-management/complete" "$BODY"
@@ -0,0 +1,53 @@
1
+ # Complete Task
2
+
3
+ Mark a task as complete with a summary of the work done. If the task has an output schema, provide structured output that will be validated against the schema. Optionally skip quality gates if they have already been verified separately.
4
+
5
+ ## Parameters
6
+
7
+ | Parameter | Required | Description |
8
+ |-----------|----------|-------------|
9
+ | `absoluteTaskPath` | Yes | Absolute filesystem path to the task file |
10
+ | `sessionName` | Yes | Your agent session name |
11
+ | `summary` | Yes | Summary of the work completed |
12
+ | `output` | No | Structured output object (required if task has an output schema) |
13
+ | `skipGates` | No | Set to `true` to skip quality gate checks |
14
+
15
+ ## Example
16
+
17
+ ```bash
18
+ bash config/skills/agent/complete-task/execute.sh '{"absoluteTaskPath":"/projects/app/tasks/implement-login.md","sessionName":"dev-1","summary":"Implemented login form with validation and tests"}'
19
+ ```
20
+
21
+ ### With structured output
22
+
23
+ ```bash
24
+ bash config/skills/agent/complete-task/execute.sh '{"absoluteTaskPath":"/projects/app/tasks/implement-login.md","sessionName":"dev-1","summary":"Implemented login","output":{"summary":"Login form with validation","filesChanged":["src/login.tsx","src/login.test.tsx"],"testsAdded":2}}'
25
+ ```
26
+
27
+ ## Output Schema
28
+
29
+ If the task markdown contains an `## Output Schema` section with a JSON Schema definition, your `output` object must validate against that schema. If validation fails, the response will include the errors and you can retry (up to 2 retries). After max retries, the task will be moved to blocked/.
30
+
31
+ ## Pre-Completion Checklist
32
+
33
+ Before calling this skill, verify:
34
+
35
+ 1. **All requirements met** — re-read the original task and confirm every requirement is addressed
36
+ 2. **Code tested** — if you wrote code, run the relevant tests and confirm they pass
37
+ 3. **URLs verified** — if your output includes URLs or links, verify they are valid
38
+ 4. **Sources cited** — for research tasks, ensure all factual claims have source references
39
+ 5. **Summary accurate** — your summary should reflect what was actually done, not just what was planned
40
+
41
+ ## Output
42
+
43
+ JSON confirmation of task completion status. If validation fails:
44
+ ```json
45
+ {
46
+ "success": false,
47
+ "validationFailed": true,
48
+ "errors": ["error details"],
49
+ "retryCount": 1,
50
+ "maxRetries": 2,
51
+ "message": "Output validation failed. 1 retries remaining."
52
+ }
53
+ ```
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "agent-complete-task",
3
+ "name": "Complete Task",
4
+ "description": "Mark a task as complete with a summary of the work done.",
5
+ "category": "task-management",
6
+ "skillType": "claude-skill",
7
+ "promptFile": "instructions.md",
8
+ "execution": {
9
+ "type": "script",
10
+ "script": {
11
+ "file": "execute.sh",
12
+ "interpreter": "bash",
13
+ "timeoutMs": 15000
14
+ }
15
+ },
16
+ "assignableRoles": ["developer", "qa", "tpm", "designer", "frontend-developer", "backend-developer", "fullstack-dev", "qa-engineer", "product-manager", "architect", "generalist", "sales", "support"],
17
+ "triggers": ["complete task", "finish task", "mark done", "task done"],
18
+ "tags": ["task", "completion", "status"],
19
+ "version": "1.1.0"
20
+ }
@@ -0,0 +1,23 @@
1
+ #!/bin/bash
2
+ # Retrieve accumulated context including memories, learnings, and project knowledge
3
+ set -euo pipefail
4
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
+ source "${SCRIPT_DIR}/../../_common/lib.sh"
6
+
7
+ INPUT="${1:-}"
8
+ [ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"agentId\":\"dev-1\",\"agentRole\":\"developer\",\"projectPath\":\"/projects/app\"}'"
9
+
10
+ AGENT_ID=$(echo "$INPUT" | jq -r '.agentId // empty')
11
+ AGENT_ROLE=$(echo "$INPUT" | jq -r '.agentRole // empty')
12
+ PROJECT_PATH=$(echo "$INPUT" | jq -r '.projectPath // empty')
13
+ require_param "agentId" "$AGENT_ID"
14
+ require_param "agentRole" "$AGENT_ROLE"
15
+ require_param "projectPath" "$PROJECT_PATH"
16
+
17
+ BODY=$(jq -n \
18
+ --arg agentId "$AGENT_ID" \
19
+ --arg agentRole "$AGENT_ROLE" \
20
+ --arg projectPath "$PROJECT_PATH" \
21
+ '{agentId: $agentId, agentRole: $agentRole, projectPath: $projectPath}')
22
+
23
+ api_call POST "/memory/my-context" "$BODY"
@@ -0,0 +1,21 @@
1
+ # Get My Context
2
+
3
+ Retrieve your accumulated context including memories, learnings, and project knowledge. Use this at startup or when beginning a new task to load relevant background information.
4
+
5
+ ## Parameters
6
+
7
+ | Parameter | Required | Description |
8
+ |-----------|----------|-------------|
9
+ | `agentId` | Yes | Your agent ID |
10
+ | `agentRole` | Yes | Your role (e.g., `"developer"`, `"qa"`) |
11
+ | `projectPath` | Yes | Absolute path to the current project |
12
+
13
+ ## Example
14
+
15
+ ```bash
16
+ bash config/skills/agent/get-my-context/execute.sh '{"agentId":"dev-1","agentRole":"developer","projectPath":"/projects/app"}'
17
+ ```
18
+
19
+ ## Output
20
+
21
+ JSON with your accumulated context including past memories, learnings, project-specific knowledge, team SOPs, and relevant history.
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "agent-get-my-context",
3
+ "name": "Get My Context",
4
+ "description": "Retrieve your accumulated context including memories, learnings, and project knowledge.",
5
+ "category": "memory",
6
+ "skillType": "claude-skill",
7
+ "promptFile": "instructions.md",
8
+ "execution": {
9
+ "type": "script",
10
+ "script": {
11
+ "file": "execute.sh",
12
+ "interpreter": "bash",
13
+ "timeoutMs": 15000
14
+ }
15
+ },
16
+ "assignableRoles": ["developer", "qa", "tpm", "designer", "frontend-developer", "backend-developer", "fullstack-dev", "qa-engineer", "product-manager", "architect", "generalist", "sales", "support"],
17
+ "triggers": ["get context", "my context", "what do I know", "load context"],
18
+ "tags": ["memory", "context", "knowledge", "startup"],
19
+ "version": "1.0.0"
20
+ }
@@ -0,0 +1,24 @@
1
+ #!/bin/bash
2
+ # Query standard operating procedures relevant to the current context
3
+ set -euo pipefail
4
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
+ source "${SCRIPT_DIR}/../../_common/lib.sh"
6
+
7
+ INPUT="${1:-}"
8
+ [ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"context\":\"deploying to production\"}'"
9
+
10
+ CONTEXT=$(echo "$INPUT" | jq -r '.context // empty')
11
+ require_param "context" "$CONTEXT"
12
+
13
+ CATEGORY=$(echo "$INPUT" | jq -r '.category // empty')
14
+ ROLE=$(echo "$INPUT" | jq -r '.role // empty')
15
+
16
+ BODY=$(jq -n \
17
+ --arg context "$CONTEXT" \
18
+ --arg category "$CATEGORY" \
19
+ --arg role "$ROLE" \
20
+ '{context: $context} +
21
+ (if $category != "" then {category: $category} else {} end) +
22
+ (if $role != "" then {role: $role} else {} end)')
23
+
24
+ api_call POST "/system/sops/query" "$BODY"
@@ -0,0 +1,21 @@
1
+ # Get SOPs
2
+
3
+ Query standard operating procedures (SOPs) relevant to your current context or task. SOPs contain team-defined guidelines, workflows, and best practices.
4
+
5
+ ## Parameters
6
+
7
+ | Parameter | Required | Description |
8
+ |-----------|----------|-------------|
9
+ | `context` | Yes | Description of what you need SOPs for (e.g., `"deploying to production"`) |
10
+ | `category` | No | Filter by SOP category (e.g., `"deployment"`, `"testing"`, `"code-review"`) |
11
+ | `role` | No | Filter by role relevance (e.g., `"developer"`, `"qa"`) |
12
+
13
+ ## Example
14
+
15
+ ```bash
16
+ bash config/skills/agent/get-sops/execute.sh '{"context":"deploying a new backend service","category":"deployment","role":"developer"}'
17
+ ```
18
+
19
+ ## Output
20
+
21
+ JSON with matching SOPs including their titles, content, and applicability metadata.
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "agent-get-sops",
3
+ "name": "Get SOPs",
4
+ "description": "Query standard operating procedures relevant to your current context or task.",
5
+ "category": "system",
6
+ "skillType": "claude-skill",
7
+ "promptFile": "instructions.md",
8
+ "execution": {
9
+ "type": "script",
10
+ "script": {
11
+ "file": "execute.sh",
12
+ "interpreter": "bash",
13
+ "timeoutMs": 15000
14
+ }
15
+ },
16
+ "assignableRoles": ["developer", "qa", "tpm", "designer", "frontend-developer", "backend-developer", "fullstack-dev", "qa-engineer", "product-manager", "architect", "generalist", "sales", "support"],
17
+ "triggers": ["get sops", "standard procedures", "how to", "best practices"],
18
+ "tags": ["system", "sops", "procedures", "guidelines"],
19
+ "version": "1.0.0"
20
+ }
@@ -0,0 +1,8 @@
1
+ #!/bin/bash
2
+ # Get the current status of all teams and their members
3
+ set -euo pipefail
4
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
+ source "${SCRIPT_DIR}/../../_common/lib.sh"
6
+
7
+ # No input required for this skill
8
+ api_call GET "/teams"
@@ -0,0 +1,17 @@
1
+ # Get Team Status
2
+
3
+ Get the current status of all teams and their members. Returns team names, member roles, agent statuses, and working statuses.
4
+
5
+ ## Parameters
6
+
7
+ No parameters required.
8
+
9
+ ## Example
10
+
11
+ ```bash
12
+ bash config/skills/agent/get-team-status/execute.sh '{}'
13
+ ```
14
+
15
+ ## Output
16
+
17
+ JSON with team data including each team's members, their roles, agent status (active/inactive), and current working status (idle/in_progress).
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "agent-get-team-status",
3
+ "name": "Get Team Status",
4
+ "description": "Get the current status of all teams and their members.",
5
+ "category": "monitoring",
6
+ "skillType": "claude-skill",
7
+ "promptFile": "instructions.md",
8
+ "execution": {
9
+ "type": "script",
10
+ "script": {
11
+ "file": "execute.sh",
12
+ "interpreter": "bash",
13
+ "timeoutMs": 15000
14
+ }
15
+ },
16
+ "assignableRoles": ["developer", "qa", "tpm", "designer", "frontend-developer", "backend-developer", "fullstack-dev", "qa-engineer", "product-manager", "architect", "generalist", "sales", "support"],
17
+ "triggers": ["team status", "who is online", "check team", "team members"],
18
+ "tags": ["monitoring", "team", "status", "agents"],
19
+ "version": "1.0.0"
20
+ }
@@ -0,0 +1,22 @@
1
+ #!/bin/bash
2
+ # =============================================================================
3
+ # Agent Heartbeat Skill - Lightweight health check and heartbeat update
4
+ #
5
+ # Calls the /health endpoint to update the agent heartbeat via the
6
+ # X-Agent-Session middleware header (set automatically by lib.sh).
7
+ # =============================================================================
8
+
9
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
10
+ source "$SCRIPT_DIR/../../_common/lib.sh"
11
+
12
+ # Single API call updates heartbeat via the X-Agent-Session middleware
13
+ health_response=$(api_call GET "/health" 2>/dev/null) || health_response='{"error":"unavailable"}'
14
+
15
+ cat <<EOF
16
+ {
17
+ "status": "ok",
18
+ "timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
19
+ "session": "${CREWLY_SESSION_NAME:-unknown}",
20
+ "health": $health_response
21
+ }
22
+ EOF
@@ -0,0 +1,23 @@
1
+ # Agent Heartbeat Skill
2
+
3
+ Perform a lightweight health check to confirm that you are responsive.
4
+
5
+ ## When to Use
6
+
7
+ Run this skill when the system asks you to perform a heartbeat check. This updates your heartbeat timestamp so the monitoring system knows you are alive and responsive.
8
+
9
+ ## Usage
10
+
11
+ ```bash
12
+ bash config/skills/agent/heartbeat/execute.sh
13
+ ```
14
+
15
+ No parameters required.
16
+
17
+ ## Output
18
+
19
+ Returns a JSON object with:
20
+ - `status`: "ok" if the health endpoint responded
21
+ - `timestamp`: UTC timestamp of the check
22
+ - `session`: your session name
23
+ - `health`: response from the health endpoint
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "agent-heartbeat",
3
+ "name": "Heartbeat",
4
+ "description": "Perform a lightweight health check to confirm the agent is responsive. Updates the heartbeat timestamp via the API middleware.",
5
+ "category": "monitoring",
6
+ "skillType": "claude-skill",
7
+ "promptFile": "instructions.md",
8
+ "execution": {
9
+ "type": "script",
10
+ "script": {
11
+ "file": "execute.sh",
12
+ "interpreter": "bash",
13
+ "timeoutMs": 15000
14
+ }
15
+ },
16
+ "assignableRoles": ["developer", "qa", "devops", "pm", "tpm"],
17
+ "triggers": ["heartbeat", "health check"],
18
+ "tags": ["monitoring", "heartbeat", "health"],
19
+ "version": "1.0.0"
20
+ }
@@ -0,0 +1,60 @@
1
+ #!/bin/bash
2
+ # Manage Knowledge Documents - create or update company knowledge docs
3
+ set -euo pipefail
4
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
+ source "${SCRIPT_DIR}/../../_common/lib.sh"
6
+
7
+ INPUT="${1:-}"
8
+ [ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"action\":\"create\",\"title\":\"...\",\"content\":\"...\",\"category\":\"SOPs\",\"scope\":\"global\"}'"
9
+
10
+ ACTION=$(echo "$INPUT" | jq -r '.action // empty')
11
+ require_param "action" "$ACTION"
12
+
13
+ if [ "$ACTION" = "create" ]; then
14
+ TITLE=$(echo "$INPUT" | jq -r '.title // empty')
15
+ CONTENT=$(echo "$INPUT" | jq -r '.content // empty')
16
+ CATEGORY=$(echo "$INPUT" | jq -r '.category // "General"')
17
+ SCOPE=$(echo "$INPUT" | jq -r '.scope // "global"')
18
+ PROJECT_PATH=$(echo "$INPUT" | jq -r '.projectPath // empty')
19
+ TAGS=$(echo "$INPUT" | jq -c '.tags // []')
20
+ CREATED_BY=$(echo "$INPUT" | jq -r '.createdBy // "agent"')
21
+
22
+ require_param "title" "$TITLE"
23
+ require_param "content" "$CONTENT"
24
+
25
+ BODY=$(jq -n \
26
+ --arg title "$TITLE" \
27
+ --arg content "$CONTENT" \
28
+ --arg category "$CATEGORY" \
29
+ --arg scope "$SCOPE" \
30
+ --arg projectPath "$PROJECT_PATH" \
31
+ --argjson tags "$TAGS" \
32
+ --arg createdBy "$CREATED_BY" \
33
+ '{title: $title, content: $content, category: $category, scope: $scope, projectPath: $projectPath, tags: $tags, createdBy: $createdBy}')
34
+
35
+ api_call POST "/knowledge/documents" "$BODY"
36
+
37
+ elif [ "$ACTION" = "update" ]; then
38
+ ID=$(echo "$INPUT" | jq -r '.id // empty')
39
+ require_param "id" "$ID"
40
+
41
+ SCOPE=$(echo "$INPUT" | jq -r '.scope // "global"')
42
+ PROJECT_PATH=$(echo "$INPUT" | jq -r '.projectPath // empty')
43
+ UPDATED_BY=$(echo "$INPUT" | jq -r '.updatedBy // "agent"')
44
+
45
+ # Build update body with only provided fields
46
+ BODY=$(echo "$INPUT" | jq '{
47
+ title: .title,
48
+ content: .content,
49
+ category: .category,
50
+ tags: .tags,
51
+ scope: (.scope // "global"),
52
+ projectPath: .projectPath,
53
+ updatedBy: (.updatedBy // "agent")
54
+ } | with_entries(select(.value != null and .value != ""))')
55
+
56
+ api_call PUT "/knowledge/documents/${ID}" "$BODY"
57
+
58
+ else
59
+ error_exit "Invalid action '${ACTION}'. Must be 'create' or 'update'"
60
+ fi
@@ -0,0 +1,46 @@
1
+ # Manage Knowledge
2
+
3
+ Create or update company knowledge documents. These are markdown files stored in the Crewly knowledge system, accessible to all team members via the UI.
4
+
5
+ Use this skill to document SOPs, architecture decisions, team norms, onboarding guides, runbooks, and other company knowledge that should be shared across the team.
6
+
7
+ **Note:** Agents can create and update documents but cannot delete them. Deletion is a user-only action via the UI.
8
+
9
+ ## Parameters
10
+
11
+ | Parameter | Required | Description |
12
+ |-----------|----------|-------------|
13
+ | `action` | Yes | `create` or `update` |
14
+ | `title` | Yes (create) | Document title |
15
+ | `content` | Yes (create) | Markdown content |
16
+ | `category` | No | Category: `SOPs`, `Team Norms`, `Architecture`, `Onboarding`, `Runbooks`, `General` (default: `General`) |
17
+ | `scope` | No | `global` (company-wide) or `project` (project-specific). Default: `global` |
18
+ | `projectPath` | Conditional | Required when scope is `project` |
19
+ | `tags` | No | Array of tags for search/filtering |
20
+ | `createdBy` | No | Your session name (default: `agent`) |
21
+ | `id` | Yes (update) | Document ID to update |
22
+ | `updatedBy` | No | Your session name for updates (default: `agent`) |
23
+
24
+ ## Examples
25
+
26
+ ### Create a global SOP
27
+
28
+ ```bash
29
+ bash config/skills/agent/manage-knowledge/execute.sh '{"action":"create","title":"PR Review Process","content":"# PR Review Process\n\n1. All PRs require at least one approval\n2. Run tests locally before requesting review\n3. Keep PRs under 400 lines when possible","category":"SOPs","scope":"global","tags":["process","code-review"],"createdBy":"dev-1"}'
30
+ ```
31
+
32
+ ### Create a project-specific architecture doc
33
+
34
+ ```bash
35
+ bash config/skills/agent/manage-knowledge/execute.sh '{"action":"create","title":"API Design Patterns","content":"# API Design Patterns\n\nWe use RESTful conventions with Express.js...","category":"Architecture","scope":"project","projectPath":"/path/to/project","tags":["api","backend"],"createdBy":"dev-1"}'
36
+ ```
37
+
38
+ ### Update an existing document
39
+
40
+ ```bash
41
+ bash config/skills/agent/manage-knowledge/execute.sh '{"action":"update","id":"abc-123-uuid","content":"# Updated Content\n\nNew information added...","scope":"global","updatedBy":"dev-1"}'
42
+ ```
43
+
44
+ ## Output
45
+
46
+ JSON response with `success: true` and the document ID on creation, or `success: true` on update.