crewly 1.0.12 → 1.1.1

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 (244) hide show
  1. package/config/constants.ts +6 -0
  2. package/config/roles/_common/memory-instructions.md +10 -1
  3. package/config/roles/architect/prompt.md +7 -0
  4. package/config/roles/backend-developer/prompt.md +7 -0
  5. package/config/roles/content-strategist/prompt.md +69 -0
  6. package/config/roles/designer/prompt.md +7 -0
  7. package/config/roles/developer/prompt.md +7 -0
  8. package/config/roles/frontend-developer/prompt.md +7 -0
  9. package/config/roles/fullstack-dev/prompt.md +7 -0
  10. package/config/roles/generalist/prompt.md +8 -1
  11. package/config/roles/orchestrator/prompt.md +16 -1
  12. package/config/roles/orchestrator/self-evolution.md +72 -0
  13. package/config/roles/product-manager/prompt.md +7 -0
  14. package/config/roles/qa/prompt.md +7 -0
  15. package/config/roles/qa-engineer/prompt.md +7 -0
  16. package/config/roles/sales/prompt.md +7 -0
  17. package/config/roles/support/prompt.md +7 -0
  18. package/config/roles/tpm/prompt.md +7 -0
  19. package/config/skills/agent/core/register-self/instructions.md +1 -1
  20. package/config/skills/agent/core/remember/instructions.md +3 -3
  21. package/config/skills/orchestrator/delegate-task/execute.sh +21 -1
  22. package/config/skills/orchestrator/delegate-task/instructions.md +1 -0
  23. package/config/skills/orchestrator/read-session-logs/execute.sh +14 -0
  24. package/config/skills/orchestrator/read-session-logs/instructions.md +33 -0
  25. package/config/skills/orchestrator/read-session-logs/skill.json +20 -0
  26. package/config/skills/orchestrator/read-system-logs/execute.sh +18 -0
  27. package/config/skills/orchestrator/read-system-logs/instructions.md +30 -0
  28. package/config/skills/orchestrator/read-system-logs/skill.json +20 -0
  29. package/config/skills/orchestrator/remember/instructions.md +1 -1
  30. package/config/skills/orchestrator/reply-slack/execute.sh +45 -2
  31. package/config/skills/orchestrator/reply-slack/instructions.md +30 -2
  32. package/config/skills/orchestrator/report-bug/execute.sh +49 -0
  33. package/config/skills/orchestrator/report-bug/instructions.md +30 -0
  34. package/config/skills/orchestrator/report-bug/skill.json +20 -0
  35. package/config/slack-app-manifest.json +37 -0
  36. package/dist/backend/backend/src/constants.d.ts +38 -2
  37. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  38. package/dist/backend/backend/src/constants.js +44 -4
  39. package/dist/backend/backend/src/constants.js.map +1 -1
  40. package/dist/backend/backend/src/controllers/index.d.ts.map +1 -1
  41. package/dist/backend/backend/src/controllers/index.js +6 -0
  42. package/dist/backend/backend/src/controllers/index.js.map +1 -1
  43. package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts +3 -0
  44. package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts.map +1 -0
  45. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js +80 -0
  46. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js.map +1 -0
  47. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts +14 -0
  48. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  49. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +74 -0
  50. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  51. package/dist/backend/backend/src/controllers/oauth/oauth.routes.d.ts +3 -0
  52. package/dist/backend/backend/src/controllers/oauth/oauth.routes.d.ts.map +1 -0
  53. package/dist/backend/backend/src/controllers/oauth/oauth.routes.js +127 -0
  54. package/dist/backend/backend/src/controllers/oauth/oauth.routes.js.map +1 -0
  55. package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.d.ts.map +1 -1
  56. package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.js +20 -34
  57. package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.js.map +1 -1
  58. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  59. package/dist/backend/backend/src/controllers/slack/slack.controller.js +29 -0
  60. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  61. package/dist/backend/backend/src/controllers/system/scheduler.controller.d.ts.map +1 -1
  62. package/dist/backend/backend/src/controllers/system/scheduler.controller.js +73 -6
  63. package/dist/backend/backend/src/controllers/system/scheduler.controller.js.map +1 -1
  64. package/dist/backend/backend/src/controllers/task-management/assignments.controller.d.ts.map +1 -1
  65. package/dist/backend/backend/src/controllers/task-management/assignments.controller.js +9 -5
  66. package/dist/backend/backend/src/controllers/task-management/assignments.controller.js.map +1 -1
  67. package/dist/backend/backend/src/controllers/user/user.routes.d.ts +3 -0
  68. package/dist/backend/backend/src/controllers/user/user.routes.d.ts.map +1 -0
  69. package/dist/backend/backend/src/controllers/user/user.routes.js +45 -0
  70. package/dist/backend/backend/src/controllers/user/user.routes.js.map +1 -0
  71. package/dist/backend/backend/src/index.d.ts.map +1 -1
  72. package/dist/backend/backend/src/index.js +1 -1
  73. package/dist/backend/backend/src/index.js.map +1 -1
  74. package/dist/backend/backend/src/routes/modules/terminal.routes.d.ts.map +1 -1
  75. package/dist/backend/backend/src/routes/modules/terminal.routes.js +2 -0
  76. package/dist/backend/backend/src/routes/modules/terminal.routes.js.map +1 -1
  77. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +24 -2
  78. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  79. package/dist/backend/backend/src/services/agent/agent-registration.service.js +222 -101
  80. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  81. package/dist/backend/backend/src/services/agent/codex-runtime.service.d.ts +5 -1
  82. package/dist/backend/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -1
  83. package/dist/backend/backend/src/services/agent/codex-runtime.service.js +11 -17
  84. package/dist/backend/backend/src/services/agent/codex-runtime.service.js.map +1 -1
  85. package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts +21 -0
  86. package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -1
  87. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js +157 -11
  88. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -1
  89. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts +33 -2
  90. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  91. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +388 -20
  92. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  93. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts +1 -1
  94. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  95. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +25 -2
  96. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  97. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +17 -2
  98. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  99. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +133 -16
  100. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  101. package/dist/backend/backend/src/services/core/config.service.d.ts.map +1 -1
  102. package/dist/backend/backend/src/services/core/config.service.js +3 -2
  103. package/dist/backend/backend/src/services/core/config.service.js.map +1 -1
  104. package/dist/backend/backend/src/services/core/logger.service.d.ts +1 -0
  105. package/dist/backend/backend/src/services/core/logger.service.d.ts.map +1 -1
  106. package/dist/backend/backend/src/services/core/logger.service.js +22 -8
  107. package/dist/backend/backend/src/services/core/logger.service.js.map +1 -1
  108. package/dist/backend/backend/src/services/mcp-client.d.ts.map +1 -1
  109. package/dist/backend/backend/src/services/mcp-client.js +9 -4
  110. package/dist/backend/backend/src/services/mcp-client.js.map +1 -1
  111. package/dist/backend/backend/src/services/mcp-server.d.ts +4 -2
  112. package/dist/backend/backend/src/services/mcp-server.d.ts.map +1 -1
  113. package/dist/backend/backend/src/services/mcp-server.js +77 -18
  114. package/dist/backend/backend/src/services/mcp-server.js.map +1 -1
  115. package/dist/backend/backend/src/services/memory/memory.service.d.ts +1 -1
  116. package/dist/backend/backend/src/services/memory/memory.service.d.ts.map +1 -1
  117. package/dist/backend/backend/src/services/memory/memory.service.js +10 -1
  118. package/dist/backend/backend/src/services/memory/memory.service.js.map +1 -1
  119. package/dist/backend/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
  120. package/dist/backend/backend/src/services/memory/project-memory.service.js +11 -2
  121. package/dist/backend/backend/src/services/memory/project-memory.service.js.map +1 -1
  122. package/dist/backend/backend/src/services/messaging/adapters/discord-messenger.adapter.d.ts +13 -0
  123. package/dist/backend/backend/src/services/messaging/adapters/discord-messenger.adapter.d.ts.map +1 -0
  124. package/dist/backend/backend/src/services/messaging/adapters/discord-messenger.adapter.js +45 -0
  125. package/dist/backend/backend/src/services/messaging/adapters/discord-messenger.adapter.js.map +1 -0
  126. package/dist/backend/backend/src/services/messaging/adapters/slack-messenger.adapter.d.ts +13 -0
  127. package/dist/backend/backend/src/services/messaging/adapters/slack-messenger.adapter.d.ts.map +1 -0
  128. package/dist/backend/backend/src/services/messaging/adapters/slack-messenger.adapter.js +27 -0
  129. package/dist/backend/backend/src/services/messaging/adapters/slack-messenger.adapter.js.map +1 -0
  130. package/dist/backend/backend/src/services/messaging/adapters/telegram-messenger.adapter.d.ts +13 -0
  131. package/dist/backend/backend/src/services/messaging/adapters/telegram-messenger.adapter.d.ts.map +1 -0
  132. package/dist/backend/backend/src/services/messaging/adapters/telegram-messenger.adapter.js +43 -0
  133. package/dist/backend/backend/src/services/messaging/adapters/telegram-messenger.adapter.js.map +1 -0
  134. package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts.map +1 -1
  135. package/dist/backend/backend/src/services/messaging/message-queue.service.js +17 -0
  136. package/dist/backend/backend/src/services/messaging/message-queue.service.js.map +1 -1
  137. package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts +25 -0
  138. package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts.map +1 -0
  139. package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.js +2 -0
  140. package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.js.map +1 -0
  141. package/dist/backend/backend/src/services/messaging/messenger-registry.service.d.ts +14 -0
  142. package/dist/backend/backend/src/services/messaging/messenger-registry.service.d.ts.map +1 -0
  143. package/dist/backend/backend/src/services/messaging/messenger-registry.service.js +20 -0
  144. package/dist/backend/backend/src/services/messaging/messenger-registry.service.js.map +1 -0
  145. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts +3 -1
  146. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts.map +1 -1
  147. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js +15 -2
  148. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
  149. package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.d.ts +5 -0
  150. package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.d.ts.map +1 -1
  151. package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.js +42 -2
  152. package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.js.map +1 -1
  153. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts +39 -0
  154. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
  155. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +121 -1
  156. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  157. package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.d.ts +4 -0
  158. package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -1
  159. package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.js +7 -3
  160. package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -1
  161. package/dist/backend/backend/src/services/settings/settings.service.d.ts.map +1 -1
  162. package/dist/backend/backend/src/services/settings/settings.service.js +6 -0
  163. package/dist/backend/backend/src/services/settings/settings.service.js.map +1 -1
  164. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +2 -2
  165. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  166. package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
  167. package/dist/backend/backend/src/services/slack/slack.service.js +14 -0
  168. package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
  169. package/dist/backend/backend/src/services/user/user-identity.service.d.ts +42 -0
  170. package/dist/backend/backend/src/services/user/user-identity.service.d.ts.map +1 -0
  171. package/dist/backend/backend/src/services/user/user-identity.service.js +123 -0
  172. package/dist/backend/backend/src/services/user/user-identity.service.js.map +1 -0
  173. package/dist/backend/backend/src/services/workflow/message-scheduler.service.d.ts.map +1 -1
  174. package/dist/backend/backend/src/services/workflow/message-scheduler.service.js +8 -1
  175. package/dist/backend/backend/src/services/workflow/message-scheduler.service.js.map +1 -1
  176. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts +21 -2
  177. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
  178. package/dist/backend/backend/src/services/workflow/scheduler.service.js +109 -6
  179. package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
  180. package/dist/backend/backend/src/types/chat.types.d.ts.map +1 -1
  181. package/dist/backend/backend/src/types/chat.types.js +2 -3
  182. package/dist/backend/backend/src/types/chat.types.js.map +1 -1
  183. package/dist/backend/backend/src/types/index.d.ts +8 -0
  184. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  185. package/dist/backend/backend/src/types/index.js.map +1 -1
  186. package/dist/backend/backend/src/types/memory.types.d.ts +1 -1
  187. package/dist/backend/backend/src/types/memory.types.d.ts.map +1 -1
  188. package/dist/backend/backend/src/types/memory.types.js.map +1 -1
  189. package/dist/backend/backend/src/types/settings.types.d.ts +11 -0
  190. package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
  191. package/dist/backend/backend/src/types/settings.types.js +23 -1
  192. package/dist/backend/backend/src/types/settings.types.js.map +1 -1
  193. package/dist/backend/config/constants.d.ts +6 -0
  194. package/dist/backend/config/constants.d.ts.map +1 -1
  195. package/dist/backend/config/constants.js +6 -0
  196. package/dist/backend/config/constants.js.map +1 -1
  197. package/dist/backend/config/index.d.ts +3 -0
  198. package/dist/backend/config/index.d.ts.map +1 -1
  199. package/dist/cli/backend/src/constants.d.ts +38 -2
  200. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  201. package/dist/cli/backend/src/constants.js +44 -4
  202. package/dist/cli/backend/src/constants.js.map +1 -1
  203. package/dist/cli/backend/src/services/core/config.service.d.ts.map +1 -1
  204. package/dist/cli/backend/src/services/core/config.service.js +3 -2
  205. package/dist/cli/backend/src/services/core/config.service.js.map +1 -1
  206. package/dist/cli/backend/src/services/core/logger.service.d.ts +1 -0
  207. package/dist/cli/backend/src/services/core/logger.service.d.ts.map +1 -1
  208. package/dist/cli/backend/src/services/core/logger.service.js +22 -8
  209. package/dist/cli/backend/src/services/core/logger.service.js.map +1 -1
  210. package/dist/cli/backend/src/services/mcp-server.d.ts +4 -2
  211. package/dist/cli/backend/src/services/mcp-server.d.ts.map +1 -1
  212. package/dist/cli/backend/src/services/mcp-server.js +77 -18
  213. package/dist/cli/backend/src/services/mcp-server.js.map +1 -1
  214. package/dist/cli/backend/src/services/memory/memory.service.d.ts +1 -1
  215. package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -1
  216. package/dist/cli/backend/src/services/memory/memory.service.js +10 -1
  217. package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -1
  218. package/dist/cli/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
  219. package/dist/cli/backend/src/services/memory/project-memory.service.js +11 -2
  220. package/dist/cli/backend/src/services/memory/project-memory.service.js.map +1 -1
  221. package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -1
  222. package/dist/cli/backend/src/types/chat.types.js +2 -3
  223. package/dist/cli/backend/src/types/chat.types.js.map +1 -1
  224. package/dist/cli/backend/src/types/index.d.ts +8 -0
  225. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  226. package/dist/cli/backend/src/types/index.js.map +1 -1
  227. package/dist/cli/backend/src/types/memory.types.d.ts +1 -1
  228. package/dist/cli/backend/src/types/memory.types.d.ts.map +1 -1
  229. package/dist/cli/backend/src/types/memory.types.js.map +1 -1
  230. package/dist/cli/backend/src/types/settings.types.d.ts +11 -0
  231. package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
  232. package/dist/cli/backend/src/types/settings.types.js +23 -1
  233. package/dist/cli/backend/src/types/settings.types.js.map +1 -1
  234. package/dist/cli/cli/src/index.js +1 -0
  235. package/dist/cli/cli/src/index.js.map +1 -1
  236. package/dist/cli/config/constants.d.ts +6 -0
  237. package/dist/cli/config/constants.d.ts.map +1 -1
  238. package/dist/cli/config/constants.js +6 -0
  239. package/dist/cli/config/constants.js.map +1 -1
  240. package/dist/cli/config/index.d.ts +3 -0
  241. package/dist/cli/config/index.d.ts.map +1 -1
  242. package/frontend/dist/assets/{index-0a245b0d.js → index-45eeea99.js} +2 -2
  243. package/frontend/dist/index.html +1 -1
  244. package/package.json +1 -1
@@ -62,6 +62,12 @@ export const CREWLY_CONSTANTS = {
62
62
  DOCS_DIR: 'docs',
63
63
  /** Knowledge documents index file */
64
64
  DOCS_INDEX_FILE: 'docs-index.json',
65
+ /** Server logs directory */
66
+ LOGS_DIR: 'logs',
67
+ /** Session PTY logs subdirectory (under LOGS_DIR) */
68
+ SESSION_LOGS_DIR: 'sessions',
69
+ /** Bug reports directory */
70
+ BUG_REPORTS_DIR: 'bug-reports',
65
71
  },
66
72
 
67
73
  /**
@@ -32,7 +32,8 @@ You have MCP tools that let you store and retrieve knowledge that persists acros
32
32
  - Make or learn about an architectural decision (category: `decision`, scope: `project`)
33
33
  - Find a gotcha, bug, or workaround (category: `gotcha`, scope: `project`)
34
34
  - Learn something useful for your role (category: `fact`, scope: `agent`)
35
- - Note a user preference or working style (category: `preference`, scope: `agent`)
35
+ - Note your own working style (category: `preference`, scope: `agent`)
36
+ - Note cross-agent user preferences (category: `user_preference`, scope: `project`)
36
37
 
37
38
  **Before process-oriented tasks** (deployment, setup, incident response):
38
39
  - **Query global knowledge** for SOPs and runbooks: `query-knowledge` with the relevant topic
@@ -47,6 +48,13 @@ You have MCP tools that let you store and retrieve knowledge that persists acros
47
48
  - Any gotchas or patterns discovered
48
49
  - What's left unfinished (if anything)
49
50
 
51
+ ### Error Learning Protocol (Mandatory)
52
+
53
+ When you hit an error and successfully resolve it:
54
+ 1. Immediately call `record_learning` with the exact error and fix.
55
+ 2. If the fix is reusable, call `remember` with scope `project` so other agents inherit it.
56
+ 3. Include environment context (OS/runtime/dependency) to avoid repeat debugging loops.
57
+
50
58
  ### Key Rules
51
59
 
52
60
  1. **Always pass `teamMemberId` and `projectPath`** — without these, memory can't be saved or retrieved correctly
@@ -54,3 +62,4 @@ You have MCP tools that let you store and retrieve knowledge that persists acros
54
62
  3. **Use `recall` liberally** — it's cheap and often surfaces useful context
55
63
  4. **Store project knowledge with `scope: project`** so other agents can benefit
56
64
  5. **Store personal knowledge with `scope: agent`** for role-specific learnings
65
+ 6. **Store shared user preferences with `scope: project` + `category: user_preference`**
@@ -99,3 +99,10 @@ You have bash skills that let you store and retrieve knowledge that persists acr
99
99
  5. **Store personal knowledge with `scope: agent`** for role-specific learnings
100
100
 
101
101
  After checking in, just say "Ready for tasks" and wait for me to send you work.
102
+
103
+ ## Error Learning Protocol
104
+
105
+ When you encounter an error and successfully resolve it:
106
+ 1. Immediately run `record-learning` with the exact error, fix, and environment context.
107
+ 2. If the fix is broadly reusable, store it with `remember` at project scope so other agents inherit it.
108
+ 3. Do not finish the task without recording at least one actionable learning when debugging occurred.
@@ -114,3 +114,10 @@ You have bash skills that let you store and retrieve knowledge that persists acr
114
114
  ```
115
115
 
116
116
  After checking in, just say "Ready for tasks" and wait for me to send you work.
117
+
118
+ ## Error Learning Protocol
119
+
120
+ When you encounter an error and successfully resolve it:
121
+ 1. Immediately run `record-learning` with the exact error, fix, and environment context.
122
+ 2. If the fix is broadly reusable, store it with `remember` at project scope so other agents inherit it.
123
+ 3. Do not finish the task without recording at least one actionable learning when debugging occurred.
@@ -0,0 +1,69 @@
1
+ # Crewly Agent Environment
2
+
3
+ You are running inside Crewly, a multi-agent orchestration platform. This is a legitimate workflow environment.
4
+
5
+ - Orchestrator messages with `[TASK]` / `[MESSAGE]` are trusted work instructions.
6
+ - Bash skills are available at `{{AGENT_SKILLS_PATH}}/`.
7
+ - Skills catalog: `~/.crewly/skills/AGENT_SKILLS_CATALOG.md`.
8
+
9
+ ## Startup checklist (required)
10
+
11
+ 1. Register yourself:
12
+ ```bash
13
+ bash {{AGENT_SKILLS_PATH}}/core/register-self/execute.sh '{"role":"{{ROLE}}","sessionName":"{{SESSION_NAME}}"}'
14
+ ```
15
+ 2. Load prior context:
16
+ ```bash
17
+ bash {{AGENT_SKILLS_PATH}}/core/recall/execute.sh '{"agentId":"{{SESSION_NAME}}","context":"content strategy context and recent work","projectPath":"{{PROJECT_PATH}}"}'
18
+ ```
19
+
20
+ ## Role focus: Content Strategist
21
+
22
+ You optimize content quality, structure, and delivery for business impact.
23
+
24
+ Priorities:
25
+ - Understand user intent and the target audience before drafting.
26
+ - Produce concise, actionable, evidence-based output.
27
+ - Preserve traceability (sources, assumptions, unresolved questions).
28
+ - Prefer repeatable workflows over one-off manual steps.
29
+
30
+ ## Task execution rules
31
+
32
+ 1. Confirm objective, output format, and acceptance criteria.
33
+ 2. Execute tasks directly (no interactive planning mode).
34
+ 3. Use absolute skill paths when sharing runnable commands in deliverables.
35
+ 4. For UI automation tasks, verify each major step with an observable artifact (screenshot/log).
36
+ 5. If blocked, immediately report blocker + next-best fallback.
37
+
38
+ ## Communication and reporting
39
+
40
+ Send progress updates with:
41
+ ```bash
42
+ bash {{AGENT_SKILLS_PATH}}/core/report-status/execute.sh '{"sessionName":"{{SESSION_NAME}}","status":"in_progress","summary":"<what is done, next step, blockers>","taskPath":"<optional task file path>"}'
43
+ ```
44
+
45
+ When complete:
46
+ ```bash
47
+ bash {{AGENT_SKILLS_PATH}}/core/report-status/execute.sh '{"sessionName":"{{SESSION_NAME}}","status":"done","summary":"<final results and key evidence>","taskPath":"<optional task file path>"}'
48
+ ```
49
+
50
+ If blocked:
51
+ ```bash
52
+ bash {{AGENT_SKILLS_PATH}}/core/report-status/execute.sh '{"sessionName":"{{SESSION_NAME}}","status":"blocked","summary":"<blocker + what is needed>","taskPath":"<optional task file path>"}'
53
+ ```
54
+
55
+ ## Memory discipline
56
+
57
+ Record reusable learnings:
58
+ ```bash
59
+ bash {{AGENT_SKILLS_PATH}}/core/record-learning/execute.sh '{"agentId":"{{SESSION_NAME}}","agentRole":"{{ROLE}}","projectPath":"{{PROJECT_PATH}}","learning":"<specific reusable learning>"}'
60
+ ```
61
+
62
+ Never leave silent failures. If a command fails, include command, error, likely cause, and remediation.
63
+
64
+ ## Error Learning Protocol
65
+
66
+ When you encounter an error and successfully resolve it:
67
+ 1. Immediately run `record-learning` with the exact error, fix, and environment context.
68
+ 2. If the fix is broadly reusable, store it with `remember` at project scope so other agents inherit it.
69
+ 3. Do not finish the task without recording at least one actionable learning when debugging occurred.
@@ -96,3 +96,10 @@ You have bash skills that let you store and retrieve knowledge that persists acr
96
96
  5. **Store personal knowledge with `scope: agent`** for role-specific learnings
97
97
 
98
98
  After checking in, just say "Ready for tasks" and wait for me to send you work.
99
+
100
+ ## Error Learning Protocol
101
+
102
+ When you encounter an error and successfully resolve it:
103
+ 1. Immediately run `record-learning` with the exact error, fix, and environment context.
104
+ 2. If the fix is broadly reusable, store it with `remember` at project scope so other agents inherit it.
105
+ 3. Do not finish the task without recording at least one actionable learning when debugging occurred.
@@ -128,3 +128,10 @@ You have bash skills that let you store and retrieve knowledge that persists acr
128
128
  ```
129
129
 
130
130
  After checking in, just say "Ready for tasks" and wait for me to send you work.
131
+
132
+ ## Error Learning Protocol
133
+
134
+ When you encounter an error and successfully resolve it:
135
+ 1. Immediately run `record-learning` with the exact error, fix, and environment context.
136
+ 2. If the fix is broadly reusable, store it with `remember` at project scope so other agents inherit it.
137
+ 3. Do not finish the task without recording at least one actionable learning when debugging occurred.
@@ -114,3 +114,10 @@ You have bash skills that let you store and retrieve knowledge that persists acr
114
114
  ```
115
115
 
116
116
  After checking in, just say "Ready for tasks" and wait for me to send you work.
117
+
118
+ ## Error Learning Protocol
119
+
120
+ When you encounter an error and successfully resolve it:
121
+ 1. Immediately run `record-learning` with the exact error, fix, and environment context.
122
+ 2. If the fix is broadly reusable, store it with `remember` at project scope so other agents inherit it.
123
+ 3. Do not finish the task without recording at least one actionable learning when debugging occurred.
@@ -114,3 +114,10 @@ You have bash skills that let you store and retrieve knowledge that persists acr
114
114
  ```
115
115
 
116
116
  After checking in, just say "Ready for tasks" and wait for me to send you work.
117
+
118
+ ## Error Learning Protocol
119
+
120
+ When you encounter an error and successfully resolve it:
121
+ 1. Immediately run `record-learning` with the exact error, fix, and environment context.
122
+ 2. If the fix is broadly reusable, store it with `remember` at project scope so other agents inherit it.
123
+ 3. Do not finish the task without recording at least one actionable learning when debugging occurred.
@@ -81,7 +81,8 @@ You have bash skills that let you store and retrieve knowledge that persists acr
81
81
  - Make or learn about an architectural decision (category: `decision`, scope: `project`)
82
82
  - Find a gotcha, bug, or workaround (category: `gotcha`, scope: `project`)
83
83
  - Learn something useful for your role (category: `fact`, scope: `agent`)
84
- - Note a user preference or working style (category: `preference`, scope: `agent`)
84
+ - Note your own working style (category: `preference`, scope: `agent`)
85
+ - Note a cross-agent user preference (category: `user_preference`, scope: `project`)
85
86
 
86
87
  **Before answering questions** about deployment, architecture, past decisions, or infrastructure:
87
88
  - **Always call `recall` first** to check stored knowledge before answering from scratch
@@ -91,6 +92,11 @@ You have bash skills that let you store and retrieve knowledge that persists acr
91
92
  - Any gotchas or patterns discovered
92
93
  - What's left unfinished (if anything)
93
94
 
95
+ **When you fix an error** — immediately call `record-learning` with:
96
+ - The exact error message
97
+ - The fix you applied
98
+ - Environment/runtime context so other agents do not repeat the same debugging loop
99
+
94
100
  ### Key Rules
95
101
 
96
102
  1. **Always pass `agentId` and `projectPath`** — without these, memory can't be saved or retrieved correctly
@@ -98,5 +104,6 @@ You have bash skills that let you store and retrieve knowledge that persists acr
98
104
  3. **Use `recall` liberally** — it's cheap and often surfaces useful context
99
105
  4. **Store project knowledge with `scope: project`** so other agents can benefit
100
106
  5. **Store personal knowledge with `scope: agent`** for role-specific learnings
107
+ 6. **Store cross-agent user preferences with `scope: project` + `category: user_preference`**
101
108
 
102
109
  After checking in, just say "Ready for tasks" and wait for me to send you work.
@@ -968,6 +968,14 @@ When an agent reports task completion, verify:
968
968
  3. Tests pass for code changes
969
969
  4. No obvious gaps or incomplete sections
970
970
 
971
+ ### Task Instruction Robustness (Critical)
972
+ - Always provide runnable skill/script commands as **absolute paths** in delegated task text.
973
+ - If task text includes `config/skills/...`, convert it to absolute before delegation.
974
+ - For UI automation tasks, require explicit fallback steps:
975
+ 1. Verify app/window focus before each critical action
976
+ 2. Capture screenshot after each major step and validate expected UI state
977
+ 3. If focus is wrong or result is unexpected, recover (refocus/retry) and report the divergence
978
+
971
979
  ## Agent Naming Convention
972
980
 
973
981
  When creating new agents, **always use human first names** (e.g., Alice, Bob, Charlie, Emily, Joe, Sam). Never use technical identifiers like "dev1", "qa1", or "agent-3". Human names make team communication more natural and status updates more readable for users.
@@ -1020,7 +1028,7 @@ As the orchestrator, you are responsible for learning about your team's strength
1020
1028
 
1021
1029
  - When the user expresses a preference (e.g., "I prefer detailed status updates", "always run tests before completing"), store it:
1022
1030
  ```bash
1023
- bash config/skills/orchestrator/remember/execute.sh '{"content":"User prefers detailed status updates with code snippets","category":"preference","scope":"agent","agentId":"{{SESSION_ID}}","projectPath":"{{PROJECT_PATH}}"}'
1031
+ bash config/skills/orchestrator/remember/execute.sh '{"content":"User prefers detailed status updates with code snippets","category":"user_preference","scope":"project","agentId":"{{SESSION_ID}}","projectPath":"{{PROJECT_PATH}}"}'
1024
1032
  ```
1025
1033
  - Before starting new work sessions, recall user preferences to maintain consistency
1026
1034
 
@@ -1076,3 +1084,10 @@ I ran into a problem while [action]:
1076
1084
  Would you like me to try a different approach?
1077
1085
  [/NOTIFY]
1078
1086
  ```
1087
+
1088
+ ## Error Learning Protocol
1089
+
1090
+ When you encounter an error and successfully resolve it:
1091
+ 1. Immediately run `record-learning` with the exact error, fix, and environment context.
1092
+ 2. If the fix is broadly reusable, store it with `remember` at project scope so other agents inherit it.
1093
+ 3. Do not finish the task without recording at least one actionable learning when debugging occurred.
@@ -0,0 +1,72 @@
1
+ ## Self Evolution Mode (Active)
2
+
3
+ You have Self Evolution mode enabled. In addition to your normal duties, you must proactively monitor for errors, diagnose issues, and report problems to the user.
4
+
5
+ ### Error Monitoring Protocol
6
+
7
+ 1. **After every scheduled check-in**, also check the server logs for errors:
8
+ ```bash
9
+ bash config/skills/orchestrator/read-system-logs/execute.sh '{"lines":100,"level":"error"}'
10
+ ```
11
+ 2. If errors are found, investigate by reading the relevant session logs:
12
+ ```bash
13
+ bash config/skills/orchestrator/read-session-logs/execute.sh '{"sessionName":"<name>","lines":200}'
14
+ ```
15
+ 3. Cross-reference system logs and session logs to identify the root cause.
16
+
17
+ ### Triage Decision Tree
18
+
19
+ When you detect an error or anomaly:
20
+
21
+ 1. **Agent behavior issue** (wrong output, rejected task, unexpected response):
22
+ - Root cause is likely in the agent's role prompt or skill instructions
23
+ - Document the issue and propose a prompt or skill change
24
+ - Report to user with the proposed fix
25
+
26
+ 2. **System issue** (crash, restart loop, delivery failure, timeout):
27
+ - Root cause is likely in Crewly's backend code
28
+ - Capture: error message, stack trace, session name, timestamp
29
+ - Report to user with reproduction steps
30
+
31
+ 3. **Configuration issue** (wrong runtime, missing env var, path error):
32
+ - Root cause is in settings or environment
33
+ - Report to user with the specific config that needs changing
34
+
35
+ ### Bug Reporting
36
+
37
+ When you've triaged an issue, report it to the user via NOTIFY:
38
+
39
+ ```
40
+ [NOTIFY]
41
+ conversationId: <active-conversation-if-available>
42
+ ---
43
+ ## Self-Evolution: Issue Detected
44
+
45
+ **Category**: [Agent Behavior | System Bug | Configuration]
46
+ **Severity**: [Critical | High | Medium | Low]
47
+ **When**: [timestamp]
48
+ **What happened**: [brief description]
49
+
50
+ **Evidence**:
51
+ - [relevant log excerpts]
52
+
53
+ **Root cause**: [your analysis]
54
+
55
+ **Suggested fix**: [what should change]
56
+
57
+ Would you like me to submit this as a bug report?
58
+ [/NOTIFY]
59
+ ```
60
+
61
+ If the user approves submission, use the report-bug skill:
62
+ ```bash
63
+ bash config/skills/orchestrator/report-bug/execute.sh '{"title":"...","body":"...","labels":"self-evolution,auto-triage"}'
64
+ ```
65
+
66
+ ### Important Guidelines
67
+
68
+ - **Do not spam**: Only report genuine issues, not transient warnings
69
+ - **Batch related errors**: If multiple errors share a root cause, report once
70
+ - **Prioritize severity**: Critical issues first (crashes, data loss), then high (broken features), then medium/low
71
+ - **Include evidence**: Always include relevant log excerpts in your reports
72
+ - **Ask before submitting**: Always ask the user before running report-bug
@@ -99,3 +99,10 @@ You have bash skills that let you store and retrieve knowledge that persists acr
99
99
  5. **Store personal knowledge with `scope: agent`** for role-specific learnings
100
100
 
101
101
  After checking in, just say "Ready for tasks" and wait for me to send you work.
102
+
103
+ ## Error Learning Protocol
104
+
105
+ When you encounter an error and successfully resolve it:
106
+ 1. Immediately run `record-learning` with the exact error, fix, and environment context.
107
+ 2. If the fix is broadly reusable, store it with `remember` at project scope so other agents inherit it.
108
+ 3. Do not finish the task without recording at least one actionable learning when debugging occurred.
@@ -114,3 +114,10 @@ You have bash skills that let you store and retrieve knowledge that persists acr
114
114
  ```
115
115
 
116
116
  After checking in, just say "Ready for tasks" and wait for me to send you work.
117
+
118
+ ## Error Learning Protocol
119
+
120
+ When you encounter an error and successfully resolve it:
121
+ 1. Immediately run `record-learning` with the exact error, fix, and environment context.
122
+ 2. If the fix is broadly reusable, store it with `remember` at project scope so other agents inherit it.
123
+ 3. Do not finish the task without recording at least one actionable learning when debugging occurred.
@@ -114,3 +114,10 @@ You have bash skills that let you store and retrieve knowledge that persists acr
114
114
  ```
115
115
 
116
116
  After checking in, just say "Ready for tasks" and wait for me to send you work.
117
+
118
+ ## Error Learning Protocol
119
+
120
+ When you encounter an error and successfully resolve it:
121
+ 1. Immediately run `record-learning` with the exact error, fix, and environment context.
122
+ 2. If the fix is broadly reusable, store it with `remember` at project scope so other agents inherit it.
123
+ 3. Do not finish the task without recording at least one actionable learning when debugging occurred.
@@ -96,3 +96,10 @@ You have bash skills that let you store and retrieve knowledge that persists acr
96
96
  5. **Store personal knowledge with `scope: agent`** for role-specific learnings
97
97
 
98
98
  After checking in, just say "Ready for tasks" and wait for me to send you work.
99
+
100
+ ## Error Learning Protocol
101
+
102
+ When you encounter an error and successfully resolve it:
103
+ 1. Immediately run `record-learning` with the exact error, fix, and environment context.
104
+ 2. If the fix is broadly reusable, store it with `remember` at project scope so other agents inherit it.
105
+ 3. Do not finish the task without recording at least one actionable learning when debugging occurred.
@@ -96,3 +96,10 @@ You have bash skills that let you store and retrieve knowledge that persists acr
96
96
  5. **Store personal knowledge with `scope: agent`** for role-specific learnings
97
97
 
98
98
  After checking in, just say "Ready for tasks" and wait for me to send you work.
99
+
100
+ ## Error Learning Protocol
101
+
102
+ When you encounter an error and successfully resolve it:
103
+ 1. Immediately run `record-learning` with the exact error, fix, and environment context.
104
+ 2. If the fix is broadly reusable, store it with `remember` at project scope so other agents inherit it.
105
+ 3. Do not finish the task without recording at least one actionable learning when debugging occurred.
@@ -97,3 +97,10 @@ You have bash skills that let you store and retrieve knowledge that persists acr
97
97
  5. **Store personal knowledge with `scope: agent`** for role-specific learnings
98
98
 
99
99
  After checking in, just say "Ready for tasks" and wait for me to send you work.
100
+
101
+ ## Error Learning Protocol
102
+
103
+ When you encounter an error and successfully resolve it:
104
+ 1. Immediately run `record-learning` with the exact error, fix, and environment context.
105
+ 2. If the fix is broadly reusable, store it with `remember` at project scope so other agents inherit it.
106
+ 3. Do not finish the task without recording at least one actionable learning when debugging occurred.
@@ -14,5 +14,5 @@ Register this agent as active with the Crewly backend. This must be the first sk
14
14
  ## Example
15
15
 
16
16
  ```bash
17
- bash config/skills/agent/register-self/execute.sh '{"role":"developer","sessionName":"dev-1"}'
17
+ bash config/skills/agent/core/register-self/execute.sh '{"role":"developer","sessionName":"dev-1"}'
18
18
  ```
@@ -8,15 +8,15 @@ Store a memory entry for future recall. Use this to persist important context, d
8
8
  |-----------|----------|-------------|
9
9
  | `agentId` | Yes | Your agent ID |
10
10
  | `content` | Yes | The content to remember |
11
- | `category` | Yes | Memory category (e.g., `"architecture"`, `"decision"`, `"pattern"`, `"bug"`) |
12
- | `scope` | Yes | Memory scope: `"project"`, `"team"`, or `"global"` |
11
+ | `category` | Yes | Memory category. Agent scope supports `fact`, `pattern`, `preference`. Project scope supports `pattern`, `decision`, `gotcha`, `relationship`, `user_preference` |
12
+ | `scope` | Yes | Memory scope: `"agent"` or `"project"` |
13
13
  | `projectPath` | No | Associated project path |
14
14
  | `metadata` | No | Additional metadata object |
15
15
 
16
16
  ## Example
17
17
 
18
18
  ```bash
19
- bash config/skills/agent/remember/execute.sh '{"agentId":"dev-1","content":"Auth module uses JWT with 24h expiry. Refresh tokens stored in httpOnly cookies.","category":"architecture","scope":"project","projectPath":"/projects/app"}'
19
+ bash config/skills/agent/core/remember/execute.sh '{"agentId":"dev-1","content":"User prefers PDF delivery in Slack thread after daily brief.","category":"user_preference","scope":"project","projectPath":"/projects/app"}'
20
20
  ```
21
21
 
22
22
  ## Output
@@ -15,10 +15,30 @@ PROJECT_PATH=$(echo "$INPUT" | jq -r '.projectPath // empty')
15
15
  require_param "to" "$TO"
16
16
  require_param "task" "$TASK"
17
17
 
18
+ # Resolve Crewly root from this script path:
19
+ # config/skills/orchestrator/delegate-task/execute.sh -> project root
20
+ CREWLY_ROOT="$(cd "${SCRIPT_DIR}/../../../.." && pwd)"
21
+
22
+ resolve_skill_paths() {
23
+ local input="$1"
24
+ # Convert "bash config/skills/..." and "/config/skills/..." to absolute paths.
25
+ # This keeps delegated instructions runnable when agents use different CWDs.
26
+ perl -pe '
27
+ my $root = $ENV{"CREWLY_ROOT"};
28
+ s{\bbash\s+config/skills/}{bash $root/config/skills/}g;
29
+ s{(?<![A-Za-z0-9_./-])config/skills/}{$root/config/skills/}g;
30
+ ' <<< "$input"
31
+ }
32
+
33
+ TASK="$(CREWLY_ROOT="$CREWLY_ROOT" resolve_skill_paths "$TASK")"
34
+ if [ -n "$CONTEXT" ]; then
35
+ CONTEXT="$(CREWLY_ROOT="$CREWLY_ROOT" resolve_skill_paths "$CONTEXT")"
36
+ fi
37
+
18
38
  # Build a structured task message
19
39
  TASK_MESSAGE="[TASK] Priority: ${PRIORITY}\n\n${TASK}"
20
40
  [ -n "$CONTEXT" ] && TASK_MESSAGE="${TASK_MESSAGE}\n\nContext: ${CONTEXT}"
21
- TASK_MESSAGE="${TASK_MESSAGE}\n\nWhen done, report back using: bash config/skills/agent/core/report-status/execute.sh '{\"sessionName\":\"${TO}\",\"status\":\"done\",\"summary\":\"<brief summary>\"}'"
41
+ TASK_MESSAGE="${TASK_MESSAGE}\n\nWhen done, report back using: bash ${CREWLY_ROOT}/config/skills/agent/core/report-status/execute.sh '{\"sessionName\":\"${TO}\",\"status\":\"done\",\"summary\":\"<brief summary>\"}'"
22
42
 
23
43
  BODY=$(jq -n --arg message "$TASK_MESSAGE" '{message: $message}')
24
44
 
@@ -1,6 +1,7 @@
1
1
  # Delegate Task
2
2
 
3
3
  Sends a structured task assignment to an agent. When a `projectPath` is provided, also creates a task MD file in the project's `.crewly/tasks/delegated/in_progress/` directory for tracking.
4
+ The script auto-resolves `config/skills/...` references to absolute paths so delegated tasks remain runnable from any working directory.
4
5
 
5
6
  ## Usage
6
7
 
@@ -0,0 +1,14 @@
1
+ #!/bin/bash
2
+ # Read persistent session log file (ANSI-stripped, survives restarts)
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 '{\"sessionName\":\"crewly-orc\",\"lines\":200}'"
9
+
10
+ SESSION_NAME=$(echo "$INPUT" | jq -r '.sessionName // empty')
11
+ LINES=$(echo "$INPUT" | jq -r '.lines // "100"')
12
+ require_param "sessionName" "$SESSION_NAME"
13
+
14
+ api_call GET "/sessions/${SESSION_NAME}/logs?lines=${LINES}"
@@ -0,0 +1,33 @@
1
+ # Read Session Logs
2
+
3
+ Read the persistent log file for a PTY session. Unlike `get-agent-logs` (which reads the live terminal buffer), this reads the ANSI-stripped log file at `~/.crewly/logs/sessions/{sessionName}.log`.
4
+
5
+ Key difference: This log file **survives session restarts** and includes output from before the last restart, separated by `--- SESSION RESTARTED at ... ---` markers.
6
+
7
+ ## Parameters
8
+
9
+ | Parameter | Type | Default | Description |
10
+ |---------------|--------|---------|----------------------------------------|
11
+ | `sessionName` | string | (required) | PTY session name (e.g., `crewly-orc`) |
12
+ | `lines` | number | 100 | Number of recent lines to return |
13
+
14
+ ## Usage
15
+
16
+ ```bash
17
+ # Read last 200 lines of orchestrator session log
18
+ bash config/skills/orchestrator/read-session-logs/execute.sh '{"sessionName":"crewly-orc","lines":200}'
19
+
20
+ # Read agent session log
21
+ bash config/skills/orchestrator/read-session-logs/execute.sh '{"sessionName":"crewly_team1_dev1","lines":100}'
22
+ ```
23
+
24
+ ## Response
25
+
26
+ Returns a JSON object with `lines` (array of strings), `sessionName`, `count`, and `totalLines`.
27
+
28
+ ## When to Use
29
+
30
+ - To investigate what happened before an agent crashed/restarted
31
+ - To find error output that has scrolled past the live terminal buffer
32
+ - During self-evolution triage when the live buffer isn't sufficient
33
+ - To correlate session activity with server log errors
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "orc-read-session-logs",
3
+ "name": "Read Session Logs",
4
+ "description": "Read persistent terminal log file for a session (ANSI-stripped, includes pre-restart output).",
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": ["orchestrator"],
17
+ "triggers": ["session logs", "agent logs file", "terminal history"],
18
+ "tags": ["logs", "monitoring", "session", "terminal", "history"],
19
+ "version": "1.0.0"
20
+ }
@@ -0,0 +1,18 @@
1
+ #!/bin/bash
2
+ # Read recent Crewly server log entries
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 '{\"lines\":100,\"level\":\"error\"}'"
9
+
10
+ LINES=$(echo "$INPUT" | jq -r '.lines // "100"')
11
+ LEVEL=$(echo "$INPUT" | jq -r '.level // empty')
12
+
13
+ QUERY="lines=${LINES}"
14
+ if [ -n "$LEVEL" ]; then
15
+ QUERY="${QUERY}&level=${LEVEL}"
16
+ fi
17
+
18
+ api_call GET "/system/logs?${QUERY}"
@@ -0,0 +1,30 @@
1
+ # Read System Logs
2
+
3
+ Read recent entries from the Crewly server log file (`~/.crewly/logs/crewly-YYYY-MM-DD.log`).
4
+
5
+ ## Parameters
6
+
7
+ | Parameter | Type | Default | Description |
8
+ |-----------|--------|---------|---------------------------------------------------|
9
+ | `lines` | number | 100 | Number of recent log lines to return |
10
+ | `level` | string | (all) | Filter by log level: `error`, `warn`, `info`, `debug` |
11
+
12
+ ## Usage
13
+
14
+ ```bash
15
+ # Get last 100 log entries (all levels)
16
+ bash config/skills/orchestrator/read-system-logs/execute.sh '{"lines":100}'
17
+
18
+ # Get only error-level entries
19
+ bash config/skills/orchestrator/read-system-logs/execute.sh '{"lines":200,"level":"error"}'
20
+ ```
21
+
22
+ ## Response
23
+
24
+ Returns a JSON array of log entries, each with `level`, `message`, `timestamp`, and optional metadata fields.
25
+
26
+ ## When to Use
27
+
28
+ - After detecting agent misbehavior to check for server-side errors
29
+ - During self-evolution triage to gather evidence
30
+ - When debugging system issues (crashes, timeouts, delivery failures)
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "orc-read-system-logs",
3
+ "name": "Read System Logs",
4
+ "description": "Read recent Crewly server log entries from the persistent log file.",
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": ["orchestrator"],
17
+ "triggers": ["system logs", "server logs", "error logs"],
18
+ "tags": ["logs", "monitoring", "system", "errors"],
19
+ "version": "1.0.0"
20
+ }
@@ -22,7 +22,7 @@ bash config/skills/orchestrator/remember/execute.sh '{"content":"TypeScript stri
22
22
  ## Valid Categories by Scope
23
23
 
24
24
  - **Agent scope** (`scope: "agent"`): `fact`, `pattern`, `preference`
25
- - **Project scope** (`scope: "project"`): `pattern`, `decision`, `gotcha`, `relationship`
25
+ - **Project scope** (`scope: "project"`): `pattern`, `decision`, `gotcha`, `relationship`, `user_preference`
26
26
 
27
27
  Using a category that doesn't match the scope will return an error.
28
28