crewly 1.0.8 → 1.0.10
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.
- package/config/constants.ts +59 -0
- package/config/index.ts +2 -0
- package/config/roles/architect/prompt.md +6 -5
- package/config/roles/backend-developer/prompt.md +24 -5
- package/config/roles/designer/prompt.md +6 -5
- package/config/roles/developer/prompt.md +25 -5
- package/config/roles/frontend-developer/prompt.md +24 -5
- package/config/roles/fullstack-dev/prompt.md +24 -5
- package/config/roles/generalist/prompt.md +7 -5
- package/config/roles/orchestrator/prompt.md +99 -3
- package/config/roles/product-manager/prompt.md +6 -5
- package/config/roles/qa/prompt.md +24 -5
- package/config/roles/qa-engineer/prompt.md +24 -5
- package/config/roles/sales/prompt.md +6 -5
- package/config/roles/support/prompt.md +6 -5
- package/config/roles/tpm/prompt.md +6 -5
- package/config/skills/agent/_common/lib.sh +4 -0
- package/config/skills/agent/core/accept-task/execute.sh +21 -0
- package/config/skills/agent/core/accept-task/instructions.md +20 -0
- package/config/skills/agent/core/accept-task/skill.json +20 -0
- package/config/skills/agent/core/block-task/execute.sh +26 -0
- package/config/skills/agent/core/block-task/instructions.md +22 -0
- package/config/skills/agent/core/block-task/skill.json +20 -0
- package/config/skills/agent/core/check-quality-gates/execute.sh +20 -0
- package/config/skills/agent/core/check-quality-gates/instructions.md +23 -0
- package/config/skills/agent/core/check-quality-gates/skill.json +20 -0
- package/config/skills/agent/core/complete-task/execute.sh +29 -0
- package/config/skills/agent/core/complete-task/instructions.md +53 -0
- package/config/skills/agent/core/complete-task/skill.json +20 -0
- package/config/skills/agent/core/get-my-context/execute.sh +23 -0
- package/config/skills/agent/core/get-my-context/instructions.md +21 -0
- package/config/skills/agent/core/get-my-context/skill.json +20 -0
- package/config/skills/agent/core/get-sops/execute.sh +24 -0
- package/config/skills/agent/core/get-sops/instructions.md +21 -0
- package/config/skills/agent/core/get-sops/skill.json +20 -0
- package/config/skills/agent/core/get-team-status/execute.sh +8 -0
- package/config/skills/agent/core/get-team-status/instructions.md +17 -0
- package/config/skills/agent/core/get-team-status/skill.json +20 -0
- package/config/skills/agent/core/heartbeat/execute.sh +22 -0
- package/config/skills/agent/core/heartbeat/instructions.md +23 -0
- package/config/skills/agent/core/heartbeat/skill.json +20 -0
- package/config/skills/agent/core/manage-knowledge/execute.sh +60 -0
- package/config/skills/agent/core/manage-knowledge/instructions.md +46 -0
- package/config/skills/agent/core/marketplace-search/execute.sh +77 -0
- package/config/skills/agent/core/marketplace-search/instructions.md +59 -0
- package/config/skills/agent/core/marketplace-search/skill.json +20 -0
- package/config/skills/agent/core/query-knowledge/execute.sh +30 -0
- package/config/skills/agent/core/query-knowledge/instructions.md +47 -0
- package/config/skills/agent/core/query-knowledge/skill.json +20 -0
- package/config/skills/agent/core/read-task/execute.sh +15 -0
- package/config/skills/agent/core/read-task/instructions.md +19 -0
- package/config/skills/agent/core/read-task/skill.json +20 -0
- package/config/skills/agent/core/recall/execute.sh +24 -0
- package/config/skills/agent/core/recall/instructions.md +23 -0
- package/config/skills/agent/core/recall/skill.json +20 -0
- package/config/skills/agent/core/record-learning/execute.sh +29 -0
- package/config/skills/agent/core/record-learning/instructions.md +24 -0
- package/config/skills/agent/core/record-learning/skill.json +20 -0
- package/config/skills/agent/core/register-self/execute.sh +28 -0
- package/config/skills/agent/core/register-self/instructions.md +18 -0
- package/config/skills/agent/core/register-self/skill.json +20 -0
- package/config/skills/agent/core/remember/execute.sh +29 -0
- package/config/skills/agent/core/remember/instructions.md +24 -0
- package/config/skills/agent/core/remember/skill.json +20 -0
- package/config/skills/agent/core/report-progress/execute.sh +28 -0
- package/config/skills/agent/core/report-progress/instructions.md +25 -0
- package/config/skills/agent/core/report-progress/skill.json +20 -0
- package/config/skills/agent/core/report-status/execute.sh +35 -0
- package/config/skills/agent/core/report-status/instructions.md +36 -0
- package/config/skills/agent/core/report-status/skill.json +20 -0
- package/config/skills/agent/core/send-chat-response/execute.sh +26 -0
- package/config/skills/agent/core/send-chat-response/instructions.md +22 -0
- package/config/skills/agent/core/send-chat-response/skill.json +20 -0
- package/config/skills/agent/core/send-message/execute.sh +17 -0
- package/config/skills/agent/core/send-message/instructions.md +20 -0
- package/config/skills/agent/core/send-message/skill.json +20 -0
- package/config/skills/orchestrator/delegate-task/execute.sh +1 -1
- package/config/skills/registry.json +850 -0
- package/config/templates/research-team.json +2 -2
- package/dist/backend/backend/src/constants.d.ts +69 -3
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +57 -4
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/index.d.ts +1 -1
- package/dist/backend/backend/src/controllers/marketplace/index.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/index.js +1 -1
- package/dist/backend/backend/src/controllers/marketplace/index.js.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts +64 -8
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js +194 -96
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js +7 -2
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +14 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts +51 -8
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.js +201 -11
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.js +11 -4
- package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts +11 -0
- package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js +18 -0
- package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +12 -0
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +51 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts +6 -0
- package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -1
- package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js +10 -0
- package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -1
- package/dist/backend/backend/src/services/marketplace/index.d.ts +1 -0
- package/dist/backend/backend/src/services/marketplace/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/marketplace/index.js +2 -0
- package/dist/backend/backend/src/services/marketplace/index.js.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts +10 -9
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js +262 -73
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.d.ts +71 -0
- package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.js +339 -0
- package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.js.map +1 -0
- package/dist/backend/backend/src/services/marketplace/marketplace.service.d.ts +4 -15
- package/dist/backend/backend/src/services/marketplace/marketplace.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace.service.js +172 -27
- package/dist/backend/backend/src/services/marketplace/marketplace.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts +30 -2
- package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/message-queue.service.js +79 -3
- package/dist/backend/backend/src/services/messaging/message-queue.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js +35 -3
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js +31 -0
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-adapter.d.ts +20 -0
- package/dist/backend/backend/src/services/runtime-adapter.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-adapter.js +22 -1
- package/dist/backend/backend/src/services/runtime-adapter.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts +19 -0
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +31 -2
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-backend.interface.d.ts +14 -0
- package/dist/backend/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-backend.interface.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-command-helper.d.ts +9 -0
- package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-command-helper.js +24 -1
- package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts +7 -13
- package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-catalog.service.js +38 -47
- package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
- package/dist/backend/backend/src/services/skill/skill.service.d.ts +3 -0
- package/dist/backend/backend/src/services/skill/skill.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill.service.js +17 -0
- package/dist/backend/backend/src/services/skill/skill.service.js.map +1 -1
- package/dist/backend/backend/src/types/marketplace.types.d.ts +37 -0
- package/dist/backend/backend/src/types/marketplace.types.d.ts.map +1 -1
- package/dist/backend/config/constants.d.ts +41 -0
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +57 -0
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/backend/config/index.d.ts +2 -2
- package/dist/backend/config/index.d.ts.map +1 -1
- package/dist/backend/config/index.js +2 -2
- package/dist/backend/config/index.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +69 -3
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +57 -4
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts +40 -0
- package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -0
- package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js +74 -0
- package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -0
- package/dist/cli/cli/src/commands/onboard.d.ts +11 -1
- package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/onboard.js +118 -18
- package/dist/cli/cli/src/commands/onboard.js.map +1 -1
- package/dist/cli/cli/src/commands/publish.d.ts +14 -6
- package/dist/cli/cli/src/commands/publish.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/publish.js +32 -8
- package/dist/cli/cli/src/commands/publish.js.map +1 -1
- package/dist/cli/cli/src/commands/seed-marketplace.d.ts +28 -0
- package/dist/cli/cli/src/commands/seed-marketplace.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/seed-marketplace.js +148 -0
- package/dist/cli/cli/src/commands/seed-marketplace.js.map +1 -0
- package/dist/cli/cli/src/index.js +9 -0
- package/dist/cli/cli/src/index.js.map +1 -1
- package/dist/cli/cli/src/utils/marketplace.d.ts +17 -4
- package/dist/cli/cli/src/utils/marketplace.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/marketplace.js +172 -58
- package/dist/cli/cli/src/utils/marketplace.js.map +1 -1
- package/dist/cli/config/constants.d.ts +41 -0
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +57 -0
- package/dist/cli/config/constants.js.map +1 -1
- package/dist/cli/config/index.d.ts +2 -2
- package/dist/cli/config/index.d.ts.map +1 -1
- package/dist/cli/config/index.js +2 -2
- package/dist/cli/config/index.js.map +1 -1
- package/frontend/dist/assets/{index-68d1eb5a.js → index-0a245b0d.js} +242 -242
- package/frontend/dist/assets/{index-c5043a83.css → index-6972eeee.css} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +2 -2
- package/config/skills/chrome-browser/instructions.md +0 -42
- package/config/skills/chrome-browser/skill.json +0 -39
- package/config/skills/nano-banana-image/generate.sh +0 -73
- package/config/skills/nano-banana-image/instructions.md +0 -50
- package/config/skills/nano-banana-image/skill.json +0 -39
- package/config/skills/playwright-chrome-browser/instructions.md +0 -95
- package/config/skills/playwright-chrome-browser/skill.json +0 -44
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Read Task
|
|
2
|
+
|
|
3
|
+
Read the full details of a task file by its absolute path. Returns the task content, metadata, status, and any subtasks.
|
|
4
|
+
|
|
5
|
+
## Parameters
|
|
6
|
+
|
|
7
|
+
| Parameter | Required | Description |
|
|
8
|
+
|-----------|----------|-------------|
|
|
9
|
+
| `absoluteTaskPath` | Yes | Absolute filesystem path to the task file |
|
|
10
|
+
|
|
11
|
+
## Example
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
bash config/skills/agent/read-task/execute.sh '{"absoluteTaskPath":"/projects/app/tasks/implement-login.md"}'
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Output
|
|
18
|
+
|
|
19
|
+
JSON with full task details including description, acceptance criteria, priority, status, and related files.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-read-task",
|
|
3
|
+
"name": "Read Task",
|
|
4
|
+
"description": "Read the full details of a task file by its absolute path.",
|
|
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": ["read task", "view task", "show task", "task details"],
|
|
18
|
+
"tags": ["task", "read", "details"],
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Retrieve stored memories relevant to a given 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 '{\"agentId\":\"dev-1\",\"context\":\"authentication patterns\"}'"
|
|
9
|
+
|
|
10
|
+
AGENT_ID=$(echo "$INPUT" | jq -r '.agentId // empty')
|
|
11
|
+
CONTEXT=$(echo "$INPUT" | jq -r '.context // empty')
|
|
12
|
+
require_param "agentId" "$AGENT_ID"
|
|
13
|
+
require_param "context" "$CONTEXT"
|
|
14
|
+
|
|
15
|
+
# Build body with required and optional fields
|
|
16
|
+
BODY=$(echo "$INPUT" | jq '{
|
|
17
|
+
agentId: .agentId,
|
|
18
|
+
context: .context
|
|
19
|
+
} +
|
|
20
|
+
(if .scope then {scope: .scope} else {} end) +
|
|
21
|
+
(if .limit then {limit: (.limit | tonumber)} else {} end) +
|
|
22
|
+
(if .projectPath then {projectPath: .projectPath} else {} end)')
|
|
23
|
+
|
|
24
|
+
api_call POST "/memory/recall" "$BODY"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Recall
|
|
2
|
+
|
|
3
|
+
Retrieve stored memories relevant to a given context or query. Use this to look up past decisions, architectural patterns, or findings before starting related work.
|
|
4
|
+
|
|
5
|
+
## Parameters
|
|
6
|
+
|
|
7
|
+
| Parameter | Required | Description |
|
|
8
|
+
|-----------|----------|-------------|
|
|
9
|
+
| `agentId` | Yes | Your agent ID |
|
|
10
|
+
| `context` | Yes | Search context or query describing what you want to recall |
|
|
11
|
+
| `scope` | No | Filter by scope: `"project"`, `"team"`, or `"global"` |
|
|
12
|
+
| `limit` | No | Maximum number of results to return |
|
|
13
|
+
| `projectPath` | No | Filter by project path |
|
|
14
|
+
|
|
15
|
+
## Example
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
bash config/skills/agent/recall/execute.sh '{"agentId":"dev-1","context":"authentication implementation patterns","scope":"project","limit":5}'
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Output
|
|
22
|
+
|
|
23
|
+
JSON array of matching memory entries with content, category, scope, and timestamps.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-recall",
|
|
3
|
+
"name": "Recall",
|
|
4
|
+
"description": "Retrieve stored memories relevant to a given context or query.",
|
|
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": ["recall", "search memory", "remember what", "look up"],
|
|
18
|
+
"tags": ["memory", "recall", "search", "context"],
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Record a learning or insight for team knowledge sharing
|
|
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\",\"learning\":\"Jest mock resets are needed between tests\"}'"
|
|
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
|
+
LEARNING=$(echo "$INPUT" | jq -r '.learning // empty')
|
|
14
|
+
require_param "agentId" "$AGENT_ID"
|
|
15
|
+
require_param "agentRole" "$AGENT_ROLE"
|
|
16
|
+
require_param "projectPath" "$PROJECT_PATH"
|
|
17
|
+
require_param "learning" "$LEARNING"
|
|
18
|
+
|
|
19
|
+
# Build body with required and optional fields
|
|
20
|
+
BODY=$(echo "$INPUT" | jq '{
|
|
21
|
+
agentId: .agentId,
|
|
22
|
+
agentRole: .agentRole,
|
|
23
|
+
projectPath: .projectPath,
|
|
24
|
+
learning: .learning
|
|
25
|
+
} +
|
|
26
|
+
(if .relatedTask then {relatedTask: .relatedTask} else {} end) +
|
|
27
|
+
(if .relatedFiles then {relatedFiles: .relatedFiles} else {} end)')
|
|
28
|
+
|
|
29
|
+
api_call POST "/memory/record-learning" "$BODY"
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Record Learning
|
|
2
|
+
|
|
3
|
+
Record a learning or insight gained during task execution. These learnings are shared with the team and accumulated over time to improve future work.
|
|
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 project |
|
|
12
|
+
| `learning` | Yes | Description of the learning or insight |
|
|
13
|
+
| `relatedTask` | No | Path or ID of the task that triggered this learning |
|
|
14
|
+
| `relatedFiles` | No | Array of file paths related to the learning |
|
|
15
|
+
|
|
16
|
+
## Example
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
bash config/skills/agent/record-learning/execute.sh '{"agentId":"dev-1","agentRole":"developer","projectPath":"/projects/app","learning":"Jest mock resets are required between tests when using shared module mocks","relatedTask":"implement-auth-tests","relatedFiles":["src/auth.service.test.ts"]}'
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Output
|
|
23
|
+
|
|
24
|
+
JSON confirmation that the learning was recorded.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-record-learning",
|
|
3
|
+
"name": "Record Learning",
|
|
4
|
+
"description": "Record a learning or insight gained during task execution for team knowledge sharing.",
|
|
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": ["record learning", "learned that", "new insight", "knowledge share"],
|
|
18
|
+
"tags": ["memory", "learning", "knowledge", "insight"],
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Register an agent with the Crewly backend
|
|
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 '{\"role\":\"developer\",\"sessionName\":\"dev-1\"}'"
|
|
9
|
+
|
|
10
|
+
ROLE=$(echo "$INPUT" | jq -r '.role // empty')
|
|
11
|
+
SESSION_NAME=$(echo "$INPUT" | jq -r '.sessionName // empty')
|
|
12
|
+
require_param "role" "$ROLE"
|
|
13
|
+
require_param "sessionName" "$SESSION_NAME"
|
|
14
|
+
|
|
15
|
+
# Optional: claudeSessionId for resume support
|
|
16
|
+
CLAUDE_SESSION_ID=$(echo "$INPUT" | jq -r '.claudeSessionId // empty')
|
|
17
|
+
TEAM_MEMBER_ID=$(echo "$INPUT" | jq -r '.teamMemberId // empty')
|
|
18
|
+
|
|
19
|
+
BODY=$(jq -n \
|
|
20
|
+
--arg role "$ROLE" \
|
|
21
|
+
--arg sessionName "$SESSION_NAME" \
|
|
22
|
+
--arg claudeSessionId "$CLAUDE_SESSION_ID" \
|
|
23
|
+
--arg teamMemberId "$TEAM_MEMBER_ID" \
|
|
24
|
+
'{role: $role, sessionName: $sessionName} +
|
|
25
|
+
(if $claudeSessionId != "" then {claudeSessionId: $claudeSessionId} else {} end) +
|
|
26
|
+
(if $teamMemberId != "" then {teamMemberId: $teamMemberId} else {} end)')
|
|
27
|
+
|
|
28
|
+
api_call POST "/teams/members/register" "$BODY"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Register Self
|
|
2
|
+
|
|
3
|
+
Register this agent as active with the Crewly backend. This must be the first skill you run on startup.
|
|
4
|
+
|
|
5
|
+
## Parameters
|
|
6
|
+
|
|
7
|
+
| Parameter | Required | Description |
|
|
8
|
+
|-----------|----------|-------------|
|
|
9
|
+
| `role` | Yes | Agent role (e.g., "developer", "qa", "tpm") |
|
|
10
|
+
| `sessionName` | Yes | Your session name (from your identity) |
|
|
11
|
+
| `teamMemberId` | No | Your team member ID |
|
|
12
|
+
| `claudeSessionId` | No | Claude session ID for resume support |
|
|
13
|
+
|
|
14
|
+
## Example
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
bash config/skills/agent/register-self/execute.sh '{"role":"developer","sessionName":"dev-1"}'
|
|
18
|
+
```
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-register-self",
|
|
3
|
+
"name": "Register Self",
|
|
4
|
+
"description": "Register the agent as active with the Crewly backend. Must be called on startup.",
|
|
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": ["register", "check in", "go online"],
|
|
18
|
+
"tags": ["system", "registration", "startup"],
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Store a memory entry for future recall
|
|
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\",\"content\":\"The auth module uses JWT\",\"category\":\"architecture\",\"scope\":\"project\"}'"
|
|
9
|
+
|
|
10
|
+
AGENT_ID=$(echo "$INPUT" | jq -r '.agentId // empty')
|
|
11
|
+
CONTENT=$(echo "$INPUT" | jq -r '.content // empty')
|
|
12
|
+
CATEGORY=$(echo "$INPUT" | jq -r '.category // empty')
|
|
13
|
+
SCOPE=$(echo "$INPUT" | jq -r '.scope // empty')
|
|
14
|
+
require_param "agentId" "$AGENT_ID"
|
|
15
|
+
require_param "content" "$CONTENT"
|
|
16
|
+
require_param "category" "$CATEGORY"
|
|
17
|
+
require_param "scope" "$SCOPE"
|
|
18
|
+
|
|
19
|
+
# Build body with required and optional fields
|
|
20
|
+
BODY=$(echo "$INPUT" | jq '{
|
|
21
|
+
agentId: .agentId,
|
|
22
|
+
content: .content,
|
|
23
|
+
category: .category,
|
|
24
|
+
scope: .scope
|
|
25
|
+
} +
|
|
26
|
+
(if .projectPath then {projectPath: .projectPath} else {} end) +
|
|
27
|
+
(if .metadata then {metadata: .metadata} else {} end)')
|
|
28
|
+
|
|
29
|
+
api_call POST "/memory/remember" "$BODY"
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Remember
|
|
2
|
+
|
|
3
|
+
Store a memory entry for future recall. Use this to persist important context, decisions, architectural findings, or patterns you discover during work.
|
|
4
|
+
|
|
5
|
+
## Parameters
|
|
6
|
+
|
|
7
|
+
| Parameter | Required | Description |
|
|
8
|
+
|-----------|----------|-------------|
|
|
9
|
+
| `agentId` | Yes | Your agent ID |
|
|
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"` |
|
|
13
|
+
| `projectPath` | No | Associated project path |
|
|
14
|
+
| `metadata` | No | Additional metadata object |
|
|
15
|
+
|
|
16
|
+
## Example
|
|
17
|
+
|
|
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"}'
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Output
|
|
23
|
+
|
|
24
|
+
JSON confirmation that the memory entry was stored.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-remember",
|
|
3
|
+
"name": "Remember",
|
|
4
|
+
"description": "Store a memory entry for future recall. Use this to persist important context, decisions, or findings.",
|
|
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": ["remember", "save memory", "store context", "note this"],
|
|
18
|
+
"tags": ["memory", "persistence", "context"],
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Report progress on the current task
|
|
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\":\"dev-1\",\"progress\":50,\"current\":\"Implementing tests\"}'"
|
|
9
|
+
|
|
10
|
+
SESSION_NAME=$(echo "$INPUT" | jq -r '.sessionName // empty')
|
|
11
|
+
PROGRESS=$(echo "$INPUT" | jq -r '.progress // empty')
|
|
12
|
+
CURRENT=$(echo "$INPUT" | jq -r '.current // empty')
|
|
13
|
+
require_param "sessionName" "$SESSION_NAME"
|
|
14
|
+
require_param "progress" "$PROGRESS"
|
|
15
|
+
require_param "current" "$CURRENT"
|
|
16
|
+
|
|
17
|
+
# Build body with required and optional fields
|
|
18
|
+
BODY=$(echo "$INPUT" | jq '{
|
|
19
|
+
sessionName: .sessionName,
|
|
20
|
+
progress: (.progress | tonumber),
|
|
21
|
+
current: .current
|
|
22
|
+
} +
|
|
23
|
+
(if .completed then {completed: .completed} else {} end) +
|
|
24
|
+
(if .nextSteps then {nextSteps: .nextSteps} else {} end) +
|
|
25
|
+
(if .blockers then {blockers: .blockers} else {} end) +
|
|
26
|
+
(if .ticketId then {ticketId: .ticketId} else {} end)')
|
|
27
|
+
|
|
28
|
+
api_call POST "/task-management/sync" "$BODY"
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Report Progress
|
|
2
|
+
|
|
3
|
+
Report progress on your current task. Includes a completion percentage, what you are currently working on, completed items, and next steps.
|
|
4
|
+
|
|
5
|
+
## Parameters
|
|
6
|
+
|
|
7
|
+
| Parameter | Required | Description |
|
|
8
|
+
|-----------|----------|-------------|
|
|
9
|
+
| `sessionName` | Yes | Your agent session name |
|
|
10
|
+
| `progress` | Yes | Completion percentage (0-100) |
|
|
11
|
+
| `current` | Yes | Description of what you are currently working on |
|
|
12
|
+
| `completed` | No | Array of completed items |
|
|
13
|
+
| `nextSteps` | No | Description of planned next steps |
|
|
14
|
+
| `blockers` | No | Description of any blockers encountered |
|
|
15
|
+
| `ticketId` | No | Associated ticket or task ID |
|
|
16
|
+
|
|
17
|
+
## Example
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
bash config/skills/agent/report-progress/execute.sh '{"sessionName":"dev-1","progress":60,"current":"Writing unit tests","completed":["Implemented API endpoint","Added validation"],"nextSteps":"Integration tests and code review","blockers":""}'
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Output
|
|
24
|
+
|
|
25
|
+
JSON confirmation that the progress report has been recorded.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-report-progress",
|
|
3
|
+
"name": "Report Progress",
|
|
4
|
+
"description": "Report progress on the current task with percentage, completed items, and next steps.",
|
|
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": ["report progress", "status update", "progress update", "sync status"],
|
|
18
|
+
"tags": ["task", "progress", "status", "sync"],
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Report task status to the orchestrator
|
|
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\":\"dev-1\",\"status\":\"done\",\"summary\":\"Finished implementing auth module\",\"taskPath\":\"/path/to/task.md\"}'"
|
|
9
|
+
|
|
10
|
+
SESSION_NAME=$(echo "$INPUT" | jq -r '.sessionName // empty')
|
|
11
|
+
STATUS=$(echo "$INPUT" | jq -r '.status // empty')
|
|
12
|
+
SUMMARY=$(echo "$INPUT" | jq -r '.summary // empty')
|
|
13
|
+
TASK_PATH=$(echo "$INPUT" | jq -r '.taskPath // empty')
|
|
14
|
+
require_param "sessionName" "$SESSION_NAME"
|
|
15
|
+
require_param "status" "$STATUS"
|
|
16
|
+
require_param "summary" "$SUMMARY"
|
|
17
|
+
|
|
18
|
+
# Build the message the orchestrator will receive
|
|
19
|
+
STATUS_UPPER=$(echo "$STATUS" | tr '[:lower:]' '[:upper:]')
|
|
20
|
+
MESSAGE="[${STATUS_UPPER}] Agent ${SESSION_NAME}: ${SUMMARY}"
|
|
21
|
+
|
|
22
|
+
# Send the status message to the orchestrator session via the chat API
|
|
23
|
+
BODY=$(jq -n --arg content "$MESSAGE" --arg senderName "$SESSION_NAME" \
|
|
24
|
+
'{content: $content, senderName: $senderName, senderType: "agent"}')
|
|
25
|
+
|
|
26
|
+
api_call POST "/chat/agent-response" "$BODY"
|
|
27
|
+
|
|
28
|
+
# If task is done and taskPath provided, move task file to done folder
|
|
29
|
+
if [ "$STATUS" = "done" ] && [ -n "$TASK_PATH" ]; then
|
|
30
|
+
COMPLETE_BODY=$(jq -n \
|
|
31
|
+
--arg taskPath "$TASK_PATH" \
|
|
32
|
+
--arg sessionName "$SESSION_NAME" \
|
|
33
|
+
'{taskPath: $taskPath, sessionName: $sessionName}')
|
|
34
|
+
api_call POST "/task-management/complete" "$COMPLETE_BODY" || true
|
|
35
|
+
fi
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Report Status
|
|
2
|
+
|
|
3
|
+
Proactively notify the orchestrator when a task is done, blocked, or failed. Use this skill to keep the orchestrator informed without waiting for a scheduled check-in.
|
|
4
|
+
|
|
5
|
+
When `status` is `done` and a `taskPath` is provided, the task file is automatically moved from `in_progress/` to `done/` in the project's `.crewly/tasks/` directory.
|
|
6
|
+
|
|
7
|
+
## Parameters
|
|
8
|
+
|
|
9
|
+
| Parameter | Required | Description |
|
|
10
|
+
|-----------|----------|-------------|
|
|
11
|
+
| `sessionName` | Yes | Your agent session name |
|
|
12
|
+
| `status` | Yes | Current status: `done`, `blocked`, or `failed` |
|
|
13
|
+
| `summary` | Yes | Brief description of what happened or what is needed |
|
|
14
|
+
| `taskPath` | No | Path to the task MD file; when provided with `status=done`, moves it to the `done/` folder |
|
|
15
|
+
|
|
16
|
+
## Example
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
bash config/skills/agent/report-status/execute.sh '{"sessionName":"dev-1","status":"done","summary":"Finished implementing auth module and all tests pass","taskPath":"/path/to/project/.crewly/tasks/delegated/in_progress/implement_auth_1234.md"}'
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Reporting a blocker
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
bash config/skills/agent/report-status/execute.sh '{"sessionName":"dev-1","status":"blocked","summary":"Waiting on API credentials from ops team"}'
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Reporting a failure
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
bash config/skills/agent/report-status/execute.sh '{"sessionName":"dev-1","status":"failed","summary":"Build fails due to missing dependency in package.json"}'
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Output
|
|
35
|
+
|
|
36
|
+
JSON confirmation that the status notification was sent to the orchestrator. If `taskPath` was provided with `done` status, also returns the task completion result.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-report-status",
|
|
3
|
+
"name": "Report Status",
|
|
4
|
+
"description": "Proactively notify the orchestrator when a task is done, blocked, or failed.",
|
|
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": ["report status", "notify orchestrator", "task done", "task blocked", "task failed"],
|
|
18
|
+
"tags": ["task", "status", "notification", "orchestrator"],
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Send a chat response visible in the Crewly chat UI
|
|
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 '{\"content\":\"Task completed successfully\",\"senderName\":\"dev-1\"}'"
|
|
9
|
+
|
|
10
|
+
CONTENT=$(echo "$INPUT" | jq -r '.content // empty')
|
|
11
|
+
SENDER_NAME=$(echo "$INPUT" | jq -r '.senderName // empty')
|
|
12
|
+
SENDER_TYPE=$(echo "$INPUT" | jq -r '.senderType // empty')
|
|
13
|
+
CONVERSATION_ID=$(echo "$INPUT" | jq -r '.conversationId // empty')
|
|
14
|
+
require_param "content" "$CONTENT"
|
|
15
|
+
require_param "senderName" "$SENDER_NAME"
|
|
16
|
+
|
|
17
|
+
BODY=$(jq -n \
|
|
18
|
+
--arg content "$CONTENT" \
|
|
19
|
+
--arg senderName "$SENDER_NAME" \
|
|
20
|
+
--arg senderType "$SENDER_TYPE" \
|
|
21
|
+
--arg conversationId "$CONVERSATION_ID" \
|
|
22
|
+
'{content: $content, senderName: $senderName} +
|
|
23
|
+
(if $senderType != "" then {senderType: $senderType} else {} end) +
|
|
24
|
+
(if $conversationId != "" then {conversationId: $conversationId} else {} end)')
|
|
25
|
+
|
|
26
|
+
api_call POST "/chat/agent-response" "$BODY"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Send Chat Response
|
|
2
|
+
|
|
3
|
+
Send a chat response that appears in the Crewly chat UI. Use this to communicate results, status updates, or answers directly to the user.
|
|
4
|
+
|
|
5
|
+
## Parameters
|
|
6
|
+
|
|
7
|
+
| Parameter | Required | Description |
|
|
8
|
+
|-----------|----------|-------------|
|
|
9
|
+
| `content` | Yes | The message content to display in chat |
|
|
10
|
+
| `senderName` | Yes | Your agent name (displayed as the message sender) |
|
|
11
|
+
| `senderType` | No | Sender type (e.g., `"agent"`, `"system"`) |
|
|
12
|
+
| `conversationId` | No | Target conversation ID. Uses the active conversation if omitted |
|
|
13
|
+
|
|
14
|
+
## Example
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
bash config/skills/agent/send-chat-response/execute.sh '{"content":"Login feature implemented and all tests passing.","senderName":"dev-1"}'
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Output
|
|
21
|
+
|
|
22
|
+
JSON confirmation that the chat message was delivered.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-send-chat-response",
|
|
3
|
+
"name": "Send Chat Response",
|
|
4
|
+
"description": "Send a chat response visible in the Crewly chat UI.",
|
|
5
|
+
"category": "communication",
|
|
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": ["send chat", "reply chat", "chat response", "respond to user"],
|
|
18
|
+
"tags": ["chat", "communication", "response"],
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Send a direct message to another agent's terminal session
|
|
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 '{\"to\":\"agent-session\",\"message\":\"Can you review my PR?\"}'"
|
|
9
|
+
|
|
10
|
+
TO=$(echo "$INPUT" | jq -r '.to // empty')
|
|
11
|
+
MESSAGE=$(echo "$INPUT" | jq -r '.message // empty')
|
|
12
|
+
require_param "to" "$TO"
|
|
13
|
+
require_param "message" "$MESSAGE"
|
|
14
|
+
|
|
15
|
+
BODY=$(jq -n --arg data "$MESSAGE" --arg mode "message" '{data: $data, mode: $mode}')
|
|
16
|
+
|
|
17
|
+
api_call POST "/terminal/${TO}/write" "$BODY"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Send Message
|
|
2
|
+
|
|
3
|
+
Send a direct message to another agent's terminal session. The message is written to the target agent's PTY using the two-step message mode for reliable delivery.
|
|
4
|
+
|
|
5
|
+
## Parameters
|
|
6
|
+
|
|
7
|
+
| Parameter | Required | Description |
|
|
8
|
+
|-----------|----------|-------------|
|
|
9
|
+
| `to` | Yes | Target agent's PTY session name |
|
|
10
|
+
| `message` | Yes | The message text to send |
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
bash config/skills/agent/send-message/execute.sh '{"to":"qa-1","message":"PR #42 is ready for review. I added unit tests for the auth module."}'
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Output
|
|
19
|
+
|
|
20
|
+
JSON confirmation of message delivery.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-send-message",
|
|
3
|
+
"name": "Send Message",
|
|
4
|
+
"description": "Send a direct message to another agent's terminal session.",
|
|
5
|
+
"category": "communication",
|
|
6
|
+
"skillType": "claude-skill",
|
|
7
|
+
"promptFile": "instructions.md",
|
|
8
|
+
"execution": {
|
|
9
|
+
"type": "script",
|
|
10
|
+
"script": {
|
|
11
|
+
"file": "execute.sh",
|
|
12
|
+
"interpreter": "bash",
|
|
13
|
+
"timeoutMs": 30000
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"assignableRoles": ["developer", "qa", "tpm", "designer", "frontend-developer", "backend-developer", "fullstack-dev", "qa-engineer", "product-manager", "architect", "generalist", "sales", "support"],
|
|
17
|
+
"triggers": ["send message", "message agent", "tell agent", "dm agent"],
|
|
18
|
+
"tags": ["communication", "agent", "message", "terminal"],
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|