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,23 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Retrieve accumulated context including memories, learnings, and project knowledge
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
source "${SCRIPT_DIR}/../../_common/lib.sh"
|
|
6
|
+
|
|
7
|
+
INPUT="${1:-}"
|
|
8
|
+
[ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"agentId\":\"dev-1\",\"agentRole\":\"developer\",\"projectPath\":\"/projects/app\"}'"
|
|
9
|
+
|
|
10
|
+
AGENT_ID=$(echo "$INPUT" | jq -r '.agentId // empty')
|
|
11
|
+
AGENT_ROLE=$(echo "$INPUT" | jq -r '.agentRole // empty')
|
|
12
|
+
PROJECT_PATH=$(echo "$INPUT" | jq -r '.projectPath // empty')
|
|
13
|
+
require_param "agentId" "$AGENT_ID"
|
|
14
|
+
require_param "agentRole" "$AGENT_ROLE"
|
|
15
|
+
require_param "projectPath" "$PROJECT_PATH"
|
|
16
|
+
|
|
17
|
+
BODY=$(jq -n \
|
|
18
|
+
--arg agentId "$AGENT_ID" \
|
|
19
|
+
--arg agentRole "$AGENT_ROLE" \
|
|
20
|
+
--arg projectPath "$PROJECT_PATH" \
|
|
21
|
+
'{agentId: $agentId, agentRole: $agentRole, projectPath: $projectPath}')
|
|
22
|
+
|
|
23
|
+
api_call POST "/memory/my-context" "$BODY"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Get My Context
|
|
2
|
+
|
|
3
|
+
Retrieve your accumulated context including memories, learnings, and project knowledge. Use this at startup or when beginning a new task to load relevant background information.
|
|
4
|
+
|
|
5
|
+
## Parameters
|
|
6
|
+
|
|
7
|
+
| Parameter | Required | Description |
|
|
8
|
+
|-----------|----------|-------------|
|
|
9
|
+
| `agentId` | Yes | Your agent ID |
|
|
10
|
+
| `agentRole` | Yes | Your role (e.g., `"developer"`, `"qa"`) |
|
|
11
|
+
| `projectPath` | Yes | Absolute path to the current project |
|
|
12
|
+
|
|
13
|
+
## Example
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
bash config/skills/agent/get-my-context/execute.sh '{"agentId":"dev-1","agentRole":"developer","projectPath":"/projects/app"}'
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Output
|
|
20
|
+
|
|
21
|
+
JSON with your accumulated context including past memories, learnings, project-specific knowledge, team SOPs, and relevant history.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-get-my-context",
|
|
3
|
+
"name": "Get My Context",
|
|
4
|
+
"description": "Retrieve your accumulated context including memories, learnings, and project knowledge.",
|
|
5
|
+
"category": "memory",
|
|
6
|
+
"skillType": "claude-skill",
|
|
7
|
+
"promptFile": "instructions.md",
|
|
8
|
+
"execution": {
|
|
9
|
+
"type": "script",
|
|
10
|
+
"script": {
|
|
11
|
+
"file": "execute.sh",
|
|
12
|
+
"interpreter": "bash",
|
|
13
|
+
"timeoutMs": 15000
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"assignableRoles": ["developer", "qa", "tpm", "designer", "frontend-developer", "backend-developer", "fullstack-dev", "qa-engineer", "product-manager", "architect", "generalist", "sales", "support"],
|
|
17
|
+
"triggers": ["get context", "my context", "what do I know", "load context"],
|
|
18
|
+
"tags": ["memory", "context", "knowledge", "startup"],
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Query standard operating procedures relevant to the current context
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
source "${SCRIPT_DIR}/../../_common/lib.sh"
|
|
6
|
+
|
|
7
|
+
INPUT="${1:-}"
|
|
8
|
+
[ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"context\":\"deploying to production\"}'"
|
|
9
|
+
|
|
10
|
+
CONTEXT=$(echo "$INPUT" | jq -r '.context // empty')
|
|
11
|
+
require_param "context" "$CONTEXT"
|
|
12
|
+
|
|
13
|
+
CATEGORY=$(echo "$INPUT" | jq -r '.category // empty')
|
|
14
|
+
ROLE=$(echo "$INPUT" | jq -r '.role // empty')
|
|
15
|
+
|
|
16
|
+
BODY=$(jq -n \
|
|
17
|
+
--arg context "$CONTEXT" \
|
|
18
|
+
--arg category "$CATEGORY" \
|
|
19
|
+
--arg role "$ROLE" \
|
|
20
|
+
'{context: $context} +
|
|
21
|
+
(if $category != "" then {category: $category} else {} end) +
|
|
22
|
+
(if $role != "" then {role: $role} else {} end)')
|
|
23
|
+
|
|
24
|
+
api_call POST "/system/sops/query" "$BODY"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Get SOPs
|
|
2
|
+
|
|
3
|
+
Query standard operating procedures (SOPs) relevant to your current context or task. SOPs contain team-defined guidelines, workflows, and best practices.
|
|
4
|
+
|
|
5
|
+
## Parameters
|
|
6
|
+
|
|
7
|
+
| Parameter | Required | Description |
|
|
8
|
+
|-----------|----------|-------------|
|
|
9
|
+
| `context` | Yes | Description of what you need SOPs for (e.g., `"deploying to production"`) |
|
|
10
|
+
| `category` | No | Filter by SOP category (e.g., `"deployment"`, `"testing"`, `"code-review"`) |
|
|
11
|
+
| `role` | No | Filter by role relevance (e.g., `"developer"`, `"qa"`) |
|
|
12
|
+
|
|
13
|
+
## Example
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
bash config/skills/agent/get-sops/execute.sh '{"context":"deploying a new backend service","category":"deployment","role":"developer"}'
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Output
|
|
20
|
+
|
|
21
|
+
JSON with matching SOPs including their titles, content, and applicability metadata.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-get-sops",
|
|
3
|
+
"name": "Get SOPs",
|
|
4
|
+
"description": "Query standard operating procedures relevant to your current context or task.",
|
|
5
|
+
"category": "system",
|
|
6
|
+
"skillType": "claude-skill",
|
|
7
|
+
"promptFile": "instructions.md",
|
|
8
|
+
"execution": {
|
|
9
|
+
"type": "script",
|
|
10
|
+
"script": {
|
|
11
|
+
"file": "execute.sh",
|
|
12
|
+
"interpreter": "bash",
|
|
13
|
+
"timeoutMs": 15000
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"assignableRoles": ["developer", "qa", "tpm", "designer", "frontend-developer", "backend-developer", "fullstack-dev", "qa-engineer", "product-manager", "architect", "generalist", "sales", "support"],
|
|
17
|
+
"triggers": ["get sops", "standard procedures", "how to", "best practices"],
|
|
18
|
+
"tags": ["system", "sops", "procedures", "guidelines"],
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Get Team Status
|
|
2
|
+
|
|
3
|
+
Get the current status of all teams and their members. Returns team names, member roles, agent statuses, and working statuses.
|
|
4
|
+
|
|
5
|
+
## Parameters
|
|
6
|
+
|
|
7
|
+
No parameters required.
|
|
8
|
+
|
|
9
|
+
## Example
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
bash config/skills/agent/get-team-status/execute.sh '{}'
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Output
|
|
16
|
+
|
|
17
|
+
JSON with team data including each team's members, their roles, agent status (active/inactive), and current working status (idle/in_progress).
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-get-team-status",
|
|
3
|
+
"name": "Get Team Status",
|
|
4
|
+
"description": "Get the current status of all teams and their members.",
|
|
5
|
+
"category": "monitoring",
|
|
6
|
+
"skillType": "claude-skill",
|
|
7
|
+
"promptFile": "instructions.md",
|
|
8
|
+
"execution": {
|
|
9
|
+
"type": "script",
|
|
10
|
+
"script": {
|
|
11
|
+
"file": "execute.sh",
|
|
12
|
+
"interpreter": "bash",
|
|
13
|
+
"timeoutMs": 15000
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"assignableRoles": ["developer", "qa", "tpm", "designer", "frontend-developer", "backend-developer", "fullstack-dev", "qa-engineer", "product-manager", "architect", "generalist", "sales", "support"],
|
|
17
|
+
"triggers": ["team status", "who is online", "check team", "team members"],
|
|
18
|
+
"tags": ["monitoring", "team", "status", "agents"],
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# =============================================================================
|
|
3
|
+
# Agent Heartbeat Skill - Lightweight health check and heartbeat update
|
|
4
|
+
#
|
|
5
|
+
# Calls the /health endpoint to update the agent heartbeat via the
|
|
6
|
+
# X-Agent-Session middleware header (set automatically by lib.sh).
|
|
7
|
+
# =============================================================================
|
|
8
|
+
|
|
9
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
10
|
+
source "$SCRIPT_DIR/../../_common/lib.sh"
|
|
11
|
+
|
|
12
|
+
# Single API call updates heartbeat via the X-Agent-Session middleware
|
|
13
|
+
health_response=$(api_call GET "/health" 2>/dev/null) || health_response='{"error":"unavailable"}'
|
|
14
|
+
|
|
15
|
+
cat <<EOF
|
|
16
|
+
{
|
|
17
|
+
"status": "ok",
|
|
18
|
+
"timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
|
|
19
|
+
"session": "${CREWLY_SESSION_NAME:-unknown}",
|
|
20
|
+
"health": $health_response
|
|
21
|
+
}
|
|
22
|
+
EOF
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Agent Heartbeat Skill
|
|
2
|
+
|
|
3
|
+
Perform a lightweight health check to confirm that you are responsive.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
Run this skill when the system asks you to perform a heartbeat check. This updates your heartbeat timestamp so the monitoring system knows you are alive and responsive.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
bash config/skills/agent/heartbeat/execute.sh
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
No parameters required.
|
|
16
|
+
|
|
17
|
+
## Output
|
|
18
|
+
|
|
19
|
+
Returns a JSON object with:
|
|
20
|
+
- `status`: "ok" if the health endpoint responded
|
|
21
|
+
- `timestamp`: UTC timestamp of the check
|
|
22
|
+
- `session`: your session name
|
|
23
|
+
- `health`: response from the health endpoint
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-heartbeat",
|
|
3
|
+
"name": "Heartbeat",
|
|
4
|
+
"description": "Perform a lightweight health check to confirm the agent is responsive. Updates the heartbeat timestamp via the API middleware.",
|
|
5
|
+
"category": "monitoring",
|
|
6
|
+
"skillType": "claude-skill",
|
|
7
|
+
"promptFile": "instructions.md",
|
|
8
|
+
"execution": {
|
|
9
|
+
"type": "script",
|
|
10
|
+
"script": {
|
|
11
|
+
"file": "execute.sh",
|
|
12
|
+
"interpreter": "bash",
|
|
13
|
+
"timeoutMs": 15000
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"assignableRoles": ["developer", "qa", "devops", "pm", "tpm"],
|
|
17
|
+
"triggers": ["heartbeat", "health check"],
|
|
18
|
+
"tags": ["monitoring", "heartbeat", "health"],
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Manage Knowledge Documents - create or update company knowledge docs
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
source "${SCRIPT_DIR}/../../_common/lib.sh"
|
|
6
|
+
|
|
7
|
+
INPUT="${1:-}"
|
|
8
|
+
[ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"action\":\"create\",\"title\":\"...\",\"content\":\"...\",\"category\":\"SOPs\",\"scope\":\"global\"}'"
|
|
9
|
+
|
|
10
|
+
ACTION=$(echo "$INPUT" | jq -r '.action // empty')
|
|
11
|
+
require_param "action" "$ACTION"
|
|
12
|
+
|
|
13
|
+
if [ "$ACTION" = "create" ]; then
|
|
14
|
+
TITLE=$(echo "$INPUT" | jq -r '.title // empty')
|
|
15
|
+
CONTENT=$(echo "$INPUT" | jq -r '.content // empty')
|
|
16
|
+
CATEGORY=$(echo "$INPUT" | jq -r '.category // "General"')
|
|
17
|
+
SCOPE=$(echo "$INPUT" | jq -r '.scope // "global"')
|
|
18
|
+
PROJECT_PATH=$(echo "$INPUT" | jq -r '.projectPath // empty')
|
|
19
|
+
TAGS=$(echo "$INPUT" | jq -c '.tags // []')
|
|
20
|
+
CREATED_BY=$(echo "$INPUT" | jq -r '.createdBy // "agent"')
|
|
21
|
+
|
|
22
|
+
require_param "title" "$TITLE"
|
|
23
|
+
require_param "content" "$CONTENT"
|
|
24
|
+
|
|
25
|
+
BODY=$(jq -n \
|
|
26
|
+
--arg title "$TITLE" \
|
|
27
|
+
--arg content "$CONTENT" \
|
|
28
|
+
--arg category "$CATEGORY" \
|
|
29
|
+
--arg scope "$SCOPE" \
|
|
30
|
+
--arg projectPath "$PROJECT_PATH" \
|
|
31
|
+
--argjson tags "$TAGS" \
|
|
32
|
+
--arg createdBy "$CREATED_BY" \
|
|
33
|
+
'{title: $title, content: $content, category: $category, scope: $scope, projectPath: $projectPath, tags: $tags, createdBy: $createdBy}')
|
|
34
|
+
|
|
35
|
+
api_call POST "/knowledge/documents" "$BODY"
|
|
36
|
+
|
|
37
|
+
elif [ "$ACTION" = "update" ]; then
|
|
38
|
+
ID=$(echo "$INPUT" | jq -r '.id // empty')
|
|
39
|
+
require_param "id" "$ID"
|
|
40
|
+
|
|
41
|
+
SCOPE=$(echo "$INPUT" | jq -r '.scope // "global"')
|
|
42
|
+
PROJECT_PATH=$(echo "$INPUT" | jq -r '.projectPath // empty')
|
|
43
|
+
UPDATED_BY=$(echo "$INPUT" | jq -r '.updatedBy // "agent"')
|
|
44
|
+
|
|
45
|
+
# Build update body with only provided fields
|
|
46
|
+
BODY=$(echo "$INPUT" | jq '{
|
|
47
|
+
title: .title,
|
|
48
|
+
content: .content,
|
|
49
|
+
category: .category,
|
|
50
|
+
tags: .tags,
|
|
51
|
+
scope: (.scope // "global"),
|
|
52
|
+
projectPath: .projectPath,
|
|
53
|
+
updatedBy: (.updatedBy // "agent")
|
|
54
|
+
} | with_entries(select(.value != null and .value != ""))')
|
|
55
|
+
|
|
56
|
+
api_call PUT "/knowledge/documents/${ID}" "$BODY"
|
|
57
|
+
|
|
58
|
+
else
|
|
59
|
+
error_exit "Invalid action '${ACTION}'. Must be 'create' or 'update'"
|
|
60
|
+
fi
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Manage Knowledge
|
|
2
|
+
|
|
3
|
+
Create or update company knowledge documents. These are markdown files stored in the Crewly knowledge system, accessible to all team members via the UI.
|
|
4
|
+
|
|
5
|
+
Use this skill to document SOPs, architecture decisions, team norms, onboarding guides, runbooks, and other company knowledge that should be shared across the team.
|
|
6
|
+
|
|
7
|
+
**Note:** Agents can create and update documents but cannot delete them. Deletion is a user-only action via the UI.
|
|
8
|
+
|
|
9
|
+
## Parameters
|
|
10
|
+
|
|
11
|
+
| Parameter | Required | Description |
|
|
12
|
+
|-----------|----------|-------------|
|
|
13
|
+
| `action` | Yes | `create` or `update` |
|
|
14
|
+
| `title` | Yes (create) | Document title |
|
|
15
|
+
| `content` | Yes (create) | Markdown content |
|
|
16
|
+
| `category` | No | Category: `SOPs`, `Team Norms`, `Architecture`, `Onboarding`, `Runbooks`, `General` (default: `General`) |
|
|
17
|
+
| `scope` | No | `global` (company-wide) or `project` (project-specific). Default: `global` |
|
|
18
|
+
| `projectPath` | Conditional | Required when scope is `project` |
|
|
19
|
+
| `tags` | No | Array of tags for search/filtering |
|
|
20
|
+
| `createdBy` | No | Your session name (default: `agent`) |
|
|
21
|
+
| `id` | Yes (update) | Document ID to update |
|
|
22
|
+
| `updatedBy` | No | Your session name for updates (default: `agent`) |
|
|
23
|
+
|
|
24
|
+
## Examples
|
|
25
|
+
|
|
26
|
+
### Create a global SOP
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
bash config/skills/agent/manage-knowledge/execute.sh '{"action":"create","title":"PR Review Process","content":"# PR Review Process\n\n1. All PRs require at least one approval\n2. Run tests locally before requesting review\n3. Keep PRs under 400 lines when possible","category":"SOPs","scope":"global","tags":["process","code-review"],"createdBy":"dev-1"}'
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Create a project-specific architecture doc
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
bash config/skills/agent/manage-knowledge/execute.sh '{"action":"create","title":"API Design Patterns","content":"# API Design Patterns\n\nWe use RESTful conventions with Express.js...","category":"Architecture","scope":"project","projectPath":"/path/to/project","tags":["api","backend"],"createdBy":"dev-1"}'
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Update an existing document
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
bash config/skills/agent/manage-knowledge/execute.sh '{"action":"update","id":"abc-123-uuid","content":"# Updated Content\n\nNew information added...","scope":"global","updatedBy":"dev-1"}'
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Output
|
|
45
|
+
|
|
46
|
+
JSON response with `success: true` and the document ID on creation, or `success: true` on update.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Marketplace Search & Install - search and auto-install skills from the marketplace
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
source "${SCRIPT_DIR}/../../_common/lib.sh"
|
|
6
|
+
|
|
7
|
+
INPUT="${1:-}"
|
|
8
|
+
[ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"action\":\"search\",\"query\":\"code review\"}'"
|
|
9
|
+
|
|
10
|
+
ACTION=$(echo "$INPUT" | jq -r '.action // "search"')
|
|
11
|
+
QUERY=$(echo "$INPUT" | jq -r '.query // empty')
|
|
12
|
+
ITEM_ID=$(echo "$INPUT" | jq -r '.id // empty')
|
|
13
|
+
TYPE_FILTER=$(echo "$INPUT" | jq -r '.type // empty')
|
|
14
|
+
CATEGORY_FILTER=$(echo "$INPUT" | jq -r '.category // empty')
|
|
15
|
+
|
|
16
|
+
case "$ACTION" in
|
|
17
|
+
search)
|
|
18
|
+
require_param "query" "$QUERY"
|
|
19
|
+
ENCODED_QUERY=$(printf '%s' "$QUERY" | jq -sRr @uri)
|
|
20
|
+
ENDPOINT="/marketplace?search=${ENCODED_QUERY}"
|
|
21
|
+
[ -n "$TYPE_FILTER" ] && ENDPOINT="${ENDPOINT}&type=${TYPE_FILTER}"
|
|
22
|
+
[ -n "$CATEGORY_FILTER" ] && ENDPOINT="${ENDPOINT}&category=${CATEGORY_FILTER}"
|
|
23
|
+
RESULT=$(api_call GET "$ENDPOINT")
|
|
24
|
+
echo "$RESULT"
|
|
25
|
+
;;
|
|
26
|
+
|
|
27
|
+
install)
|
|
28
|
+
require_param "id" "$ITEM_ID"
|
|
29
|
+
RESULT=$(api_call POST "/marketplace/${ITEM_ID}/install")
|
|
30
|
+
echo "$RESULT"
|
|
31
|
+
;;
|
|
32
|
+
|
|
33
|
+
search-and-install)
|
|
34
|
+
require_param "query" "$QUERY"
|
|
35
|
+
ENCODED_QUERY=$(printf '%s' "$QUERY" | jq -sRr @uri)
|
|
36
|
+
ENDPOINT="/marketplace?search=${ENCODED_QUERY}"
|
|
37
|
+
[ -n "$TYPE_FILTER" ] && ENDPOINT="${ENDPOINT}&type=skill"
|
|
38
|
+
SEARCH_RESULT=$(api_call GET "$ENDPOINT")
|
|
39
|
+
|
|
40
|
+
# Parse the first not_installed match
|
|
41
|
+
MATCH=$(echo "$SEARCH_RESULT" | jq -r '
|
|
42
|
+
[.[] | select(.installStatus == "not_installed")] | first // empty
|
|
43
|
+
')
|
|
44
|
+
|
|
45
|
+
if [ -z "$MATCH" ] || [ "$MATCH" = "null" ]; then
|
|
46
|
+
# Check if any are already installed
|
|
47
|
+
INSTALLED=$(echo "$SEARCH_RESULT" | jq -r '
|
|
48
|
+
[.[] | select(.installStatus == "installed")] | first // empty
|
|
49
|
+
')
|
|
50
|
+
if [ -n "$INSTALLED" ] && [ "$INSTALLED" != "null" ]; then
|
|
51
|
+
INSTALLED_NAME=$(echo "$INSTALLED" | jq -r '.name')
|
|
52
|
+
echo "{\"success\":true,\"message\":\"Skill already installed: ${INSTALLED_NAME}\",\"action\":\"none\",\"item\":${INSTALLED}}"
|
|
53
|
+
else
|
|
54
|
+
echo "{\"success\":false,\"message\":\"No matching skills found for: ${QUERY}\",\"action\":\"none\",\"results\":${SEARCH_RESULT}}"
|
|
55
|
+
fi
|
|
56
|
+
else
|
|
57
|
+
MATCH_ID=$(echo "$MATCH" | jq -r '.id')
|
|
58
|
+
MATCH_NAME=$(echo "$MATCH" | jq -r '.name')
|
|
59
|
+
INSTALL_RESULT=$(api_call POST "/marketplace/${MATCH_ID}/install")
|
|
60
|
+
echo "{\"success\":true,\"message\":\"Installed ${MATCH_NAME}\",\"action\":\"installed\",\"item\":${MATCH},\"installResult\":${INSTALL_RESULT}}"
|
|
61
|
+
fi
|
|
62
|
+
;;
|
|
63
|
+
|
|
64
|
+
installed)
|
|
65
|
+
RESULT=$(api_call GET "/marketplace/installed")
|
|
66
|
+
echo "$RESULT"
|
|
67
|
+
;;
|
|
68
|
+
|
|
69
|
+
updates)
|
|
70
|
+
RESULT=$(api_call GET "/marketplace/updates")
|
|
71
|
+
echo "$RESULT"
|
|
72
|
+
;;
|
|
73
|
+
|
|
74
|
+
*)
|
|
75
|
+
error_exit "Unknown action: ${ACTION}. Use: search, install, search-and-install, installed, updates"
|
|
76
|
+
;;
|
|
77
|
+
esac
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Marketplace Search & Install
|
|
2
|
+
|
|
3
|
+
Search the Crewly marketplace for skills, roles, and models. When you lack a capability needed for a task, use this skill to auto-discover and install it from the marketplace.
|
|
4
|
+
|
|
5
|
+
## Actions
|
|
6
|
+
|
|
7
|
+
### `search` — Find items in the marketplace
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
bash {{AGENT_SKILLS_PATH}}/marketplace-search/execute.sh '{"action":"search","query":"code review"}'
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Optional filters:
|
|
14
|
+
- `type`: `skill`, `model`, or `role`
|
|
15
|
+
- `category`: `development`, `design`, `communication`, `research`, `content-creation`, `automation`, `analysis`, `integration`, `quality`, `security`
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
bash {{AGENT_SKILLS_PATH}}/marketplace-search/execute.sh '{"action":"search","query":"testing","type":"skill","category":"quality"}'
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### `search-and-install` — Find and auto-install the best match
|
|
22
|
+
|
|
23
|
+
Use this when you need a capability you don't have. It searches for matching skills and installs the first available one automatically.
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
bash {{AGENT_SKILLS_PATH}}/marketplace-search/execute.sh '{"action":"search-and-install","query":"code review"}'
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### `install` — Install a specific item by ID
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
bash {{AGENT_SKILLS_PATH}}/marketplace-search/execute.sh '{"action":"install","id":"skill-code-review-pro"}'
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### `installed` — List currently installed items
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
bash {{AGENT_SKILLS_PATH}}/marketplace-search/execute.sh '{"action":"installed"}'
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### `updates` — Check for available updates
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
bash {{AGENT_SKILLS_PATH}}/marketplace-search/execute.sh '{"action":"updates"}'
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## When to Use
|
|
48
|
+
|
|
49
|
+
- **Before starting a task** that requires a capability you don't have — search for a matching skill
|
|
50
|
+
- **When a task fails** due to missing tools — auto-discover the right skill
|
|
51
|
+
- **Periodically** — check for updates to installed skills
|
|
52
|
+
- **When exploring** what capabilities are available in the ecosystem
|
|
53
|
+
|
|
54
|
+
## Output
|
|
55
|
+
|
|
56
|
+
JSON response with search results or install status. Each item includes:
|
|
57
|
+
- `id`, `name`, `description`, `version`, `author`
|
|
58
|
+
- `installStatus`: `not_installed`, `installed`, or `update_available`
|
|
59
|
+
- `category`, `tags`, `rating`, `downloads`
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "marketplace-search",
|
|
3
|
+
"name": "Marketplace Search & Install",
|
|
4
|
+
"description": "Search the Crewly marketplace for skills, roles, and models. Auto-install matching items when the agent lacks a capability.",
|
|
5
|
+
"category": "automation",
|
|
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": ["search marketplace", "find skill", "install skill", "marketplace search", "need capability", "missing skill"],
|
|
18
|
+
"tags": ["marketplace", "skills", "install", "search", "auto-discover"],
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Query Knowledge Documents - search company knowledge base
|
|
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 '{\"query\":\"deployment\",\"scope\":\"global\"}'"
|
|
9
|
+
|
|
10
|
+
QUERY=$(echo "$INPUT" | jq -r '.query // empty')
|
|
11
|
+
SCOPE=$(echo "$INPUT" | jq -r '.scope // "global"')
|
|
12
|
+
CATEGORY=$(echo "$INPUT" | jq -r '.category // empty')
|
|
13
|
+
PROJECT_PATH=$(echo "$INPUT" | jq -r '.projectPath // empty')
|
|
14
|
+
require_param "query" "$QUERY"
|
|
15
|
+
|
|
16
|
+
# URL-encode the query parameters
|
|
17
|
+
ENCODED_QUERY=$(printf '%s' "$QUERY" | jq -sRr @uri)
|
|
18
|
+
ENDPOINT="/knowledge/documents?scope=${SCOPE}&search=${ENCODED_QUERY}"
|
|
19
|
+
|
|
20
|
+
if [ -n "$CATEGORY" ]; then
|
|
21
|
+
ENCODED_CATEGORY=$(printf '%s' "$CATEGORY" | jq -sRr @uri)
|
|
22
|
+
ENDPOINT="${ENDPOINT}&category=${ENCODED_CATEGORY}"
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
if [ -n "$PROJECT_PATH" ]; then
|
|
26
|
+
ENCODED_PATH=$(printf '%s' "$PROJECT_PATH" | jq -sRr @uri)
|
|
27
|
+
ENDPOINT="${ENDPOINT}&projectPath=${ENCODED_PATH}"
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
api_call GET "$ENDPOINT"
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Query Knowledge
|
|
2
|
+
|
|
3
|
+
Search the company knowledge base for relevant documents. Use this to find SOPs, runbooks, architecture docs, team norms, and other documentation before starting process-oriented tasks.
|
|
4
|
+
|
|
5
|
+
Knowledge documents are stored at two scopes:
|
|
6
|
+
- **global** (`~/.crewly/docs/`) — company-wide documents accessible to all agents
|
|
7
|
+
- **project** (`{projectPath}/.crewly/docs/`) — project-specific documents
|
|
8
|
+
|
|
9
|
+
## Parameters
|
|
10
|
+
|
|
11
|
+
| Parameter | Required | Description |
|
|
12
|
+
|-----------|----------|-------------|
|
|
13
|
+
| `query` | Yes | Search text to match against document titles, tags, and content |
|
|
14
|
+
| `scope` | No | `global` (default) or `project` |
|
|
15
|
+
| `category` | No | Filter by category: `SOPs`, `Team Norms`, `Architecture`, `Onboarding`, `Runbooks`, `General` |
|
|
16
|
+
| `projectPath` | Conditional | Required when scope is `project` |
|
|
17
|
+
|
|
18
|
+
## Examples
|
|
19
|
+
|
|
20
|
+
### Search global knowledge for deployment docs
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
bash {{AGENT_SKILLS_PATH}}/query-knowledge/execute.sh '{"query":"deployment","scope":"global"}'
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Search project-specific architecture docs
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
bash {{AGENT_SKILLS_PATH}}/query-knowledge/execute.sh '{"query":"API design","scope":"project","projectPath":"{{PROJECT_PATH}}","category":"Architecture"}'
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Search for runbooks
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
bash {{AGENT_SKILLS_PATH}}/query-knowledge/execute.sh '{"query":"incident response","scope":"global","category":"Runbooks"}'
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## When to Use
|
|
39
|
+
|
|
40
|
+
- **Before process-oriented tasks** — search for SOPs and runbooks that describe how to do things
|
|
41
|
+
- **Before architecture work** — check for existing architecture docs and design decisions
|
|
42
|
+
- **When onboarding to a project** — search for onboarding guides and team norms
|
|
43
|
+
- **Before answering questions** about processes, conventions, or infrastructure
|
|
44
|
+
|
|
45
|
+
## Output
|
|
46
|
+
|
|
47
|
+
JSON response with `success: true` and a `data` array of matching document summaries (id, title, category, tags, preview).
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "agent-query-knowledge",
|
|
3
|
+
"name": "Query Knowledge",
|
|
4
|
+
"description": "Search the company knowledge base for SOPs, runbooks, architecture docs, and other documentation.",
|
|
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": ["query knowledge", "search knowledge", "find docs", "search docs", "find runbook", "find SOP"],
|
|
18
|
+
"tags": ["memory", "knowledge", "search", "documentation"],
|
|
19
|
+
"version": "1.0.0"
|
|
20
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Read the full details of a task file by its absolute path
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
+
source "${SCRIPT_DIR}/../../_common/lib.sh"
|
|
6
|
+
|
|
7
|
+
INPUT="${1:-}"
|
|
8
|
+
[ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"absoluteTaskPath\":\"/path/to/task\"}'"
|
|
9
|
+
|
|
10
|
+
ABSOLUTE_TASK_PATH=$(echo "$INPUT" | jq -r '.absoluteTaskPath // empty')
|
|
11
|
+
require_param "absoluteTaskPath" "$ABSOLUTE_TASK_PATH"
|
|
12
|
+
|
|
13
|
+
BODY=$(jq -n --arg absoluteTaskPath "$ABSOLUTE_TASK_PATH" '{absoluteTaskPath: $absoluteTaskPath}')
|
|
14
|
+
|
|
15
|
+
api_call POST "/task-management/read-task" "$BODY"
|