crewly 1.1.2 → 1.2.0
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/README.md +6 -6
- package/config/roles/ops/prompt.md +140 -0
- package/config/roles/ops/role.json +13 -0
- package/config/skills/agent/browse-stealth/execute.sh +84 -0
- package/config/skills/agent/browse-stealth/instructions.md +108 -0
- package/config/skills/agent/browse-stealth/launch-chrome-cdp.sh +141 -0
- package/config/skills/agent/browse-stealth/skill.json +20 -0
- package/config/skills/agent/browse-stealth/stealth-browse.py +330 -0
- package/config/skills/agent/competitor-content-tracker/execute.sh +232 -0
- package/config/skills/agent/competitor-content-tracker/instructions.md +210 -0
- package/config/skills/agent/competitor-content-tracker/skill.json +22 -0
- package/config/skills/agent/content-calendar/execute.sh +294 -0
- package/config/skills/agent/content-calendar/instructions.md +122 -0
- package/config/skills/agent/content-calendar/skill.json +22 -0
- package/config/skills/agent/content-repurposer/execute.sh +194 -0
- package/config/skills/agent/content-repurposer/instructions.md +69 -0
- package/config/skills/agent/content-repurposer/skill.json +22 -0
- package/config/skills/agent/content-writer/execute.sh +311 -0
- package/config/skills/agent/content-writer/instructions.md +124 -0
- package/config/skills/agent/content-writer/skill.json +22 -0
- package/config/skills/agent/core/generate-pdf/execute.sh +88 -0
- package/config/skills/agent/core/generate-pdf/instructions.md +46 -0
- package/config/skills/agent/core/generate-pdf/skill.json +20 -0
- package/config/skills/agent/core/report-status/execute.sh +6 -0
- package/config/skills/agent/trend-monitor/execute.sh +211 -0
- package/config/skills/agent/trend-monitor/instructions.md +207 -0
- package/config/skills/agent/trend-monitor/skill.json +22 -0
- package/config/skills/agent/vnc-browser/execute.sh +261 -0
- package/config/skills/agent/vnc-browser/instructions.md +102 -0
- package/config/skills/agent/vnc-browser/skill.json +20 -0
- package/config/skills/orchestrator/delegate-task/execute.sh +63 -4
- package/config/skills/orchestrator/delegate-task/instructions.md +60 -0
- package/config/skills/orchestrator/delegate-task/skill.json +4 -4
- package/config/skills/orchestrator/reply-slack/execute.sh +2 -0
- package/config/skills/orchestrator/send-key/execute.sh +19 -6
- package/config/skills/orchestrator/send-key/instructions.md +44 -0
- package/config/skills/orchestrator/send-key/skill.json +20 -0
- package/config/skills/orchestrator/send-message/execute.sh +9 -1
- package/config/skills/registry.json +256 -0
- package/config/templates/code-review-team/README.md +176 -0
- package/config/templates/code-review-team/team-config.json +16 -0
- package/config/templates/code-review-team.json +62 -0
- package/config/templates/content-generation-team/README.md +128 -0
- package/config/templates/content-generation-team/team-config.json +21 -0
- package/config/templates/content-generation-team.json +67 -0
- package/config/templates/demo-team.json +22 -0
- package/config/templates/social-media-ops-team/README.md +145 -0
- package/config/templates/social-media-ops-team/team-config.json +21 -0
- package/config/templates/social-media-ops-team.json +67 -0
- package/dist/backend/backend/src/constants.d.ts +69 -6
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +75 -6
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/index.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/index.js +2 -0
- package/dist/backend/backend/src/controllers/index.js.map +1 -1
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts +8 -0
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.js +110 -63
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +31 -4
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/oauth/oauth.routes.d.ts +8 -0
- package/dist/backend/backend/src/controllers/oauth/oauth.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/oauth/oauth.routes.js +127 -111
- package/dist/backend/backend/src/controllers/oauth/oauth.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts +34 -0
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +219 -2
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/user/user.routes.d.ts +7 -0
- package/dist/backend/backend/src/controllers/user/user.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/user/user.routes.js +45 -38
- package/dist/backend/backend/src/controllers/user/user.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/whatsapp/index.d.ts +17 -0
- package/dist/backend/backend/src/controllers/whatsapp/index.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/whatsapp/index.js +18 -0
- package/dist/backend/backend/src/controllers/whatsapp/index.js.map +1 -0
- package/dist/backend/backend/src/controllers/whatsapp/whatsapp.controller.d.ts +12 -0
- package/dist/backend/backend/src/controllers/whatsapp/whatsapp.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/whatsapp/whatsapp.controller.js +185 -0
- package/dist/backend/backend/src/controllers/whatsapp/whatsapp.controller.js.map +1 -0
- package/dist/backend/backend/src/index.d.ts +5 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +35 -0
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/modules/task-management.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/modules/task-management.routes.js +4 -0
- package/dist/backend/backend/src/routes/modules/task-management.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-heartbeat.service.js +1 -1
- package/dist/backend/backend/src/services/agent/agent-heartbeat.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +14 -3
- 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 +160 -29
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +4 -3
- package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/claude-runtime.service.js +29 -4
- package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
- 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 +11 -0
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts +32 -2
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +69 -8
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js +14 -2
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
- 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 +11 -2
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/adapters/discord-messenger.adapter.d.ts +18 -0
- package/dist/backend/backend/src/services/messaging/adapters/discord-messenger.adapter.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/adapters/discord-messenger.adapter.js +28 -4
- package/dist/backend/backend/src/services/messaging/adapters/discord-messenger.adapter.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/adapters/slack-messenger.adapter.js +2 -2
- package/dist/backend/backend/src/services/messaging/adapters/slack-messenger.adapter.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/adapters/telegram-messenger.adapter.d.ts +18 -0
- package/dist/backend/backend/src/services/messaging/adapters/telegram-messenger.adapter.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/adapters/telegram-messenger.adapter.js +26 -4
- package/dist/backend/backend/src/services/messaging/adapters/telegram-messenger.adapter.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts +28 -2
- package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/messenger-registry.service.d.ts +33 -2
- package/dist/backend/backend/src/services/messaging/messenger-registry.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/messenger-registry.service.js +33 -0
- package/dist/backend/backend/src/services/messaging/messenger-registry.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +4 -2
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.js +4 -3
- package/dist/backend/backend/src/services/orchestrator/orchestrator-restart.service.js.map +1 -1
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts +27 -0
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project/task-tracking.service.js +54 -0
- package/dist/backend/backend/src/services/project/task-tracking.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +36 -6
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +238 -36
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.js +6 -4
- package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/backend/backend/src/services/user/user-identity.service.d.ts +44 -0
- package/dist/backend/backend/src/services/user/user-identity.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/user/user-identity.service.js +75 -8
- package/dist/backend/backend/src/services/user/user-identity.service.js.map +1 -1
- package/dist/backend/backend/src/services/whatsapp/index.d.ts +11 -0
- package/dist/backend/backend/src/services/whatsapp/index.d.ts.map +1 -0
- package/dist/backend/backend/src/services/whatsapp/index.js +11 -0
- package/dist/backend/backend/src/services/whatsapp/index.js.map +1 -0
- package/dist/backend/backend/src/services/whatsapp/whatsapp-initializer.d.ts +66 -0
- package/dist/backend/backend/src/services/whatsapp/whatsapp-initializer.d.ts.map +1 -0
- package/dist/backend/backend/src/services/whatsapp/whatsapp-initializer.js +96 -0
- package/dist/backend/backend/src/services/whatsapp/whatsapp-initializer.js.map +1 -0
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts +109 -0
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts.map +1 -0
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js +234 -0
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js.map +1 -0
- package/dist/backend/backend/src/services/whatsapp/whatsapp.service.d.ts +127 -0
- package/dist/backend/backend/src/services/whatsapp/whatsapp.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/whatsapp/whatsapp.service.js +347 -0
- package/dist/backend/backend/src/services/whatsapp/whatsapp.service.js.map +1 -0
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.js +4 -0
- package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +1 -0
- package/dist/backend/backend/src/types/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/index.js.map +1 -1
- package/dist/backend/backend/src/types/slack.types.d.ts +24 -0
- package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/slack.types.js.map +1 -1
- package/dist/backend/backend/src/types/task-tracking.types.d.ts +4 -0
- package/dist/backend/backend/src/types/task-tracking.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/task-tracking.types.js.map +1 -1
- package/dist/backend/backend/src/types/whatsapp.types.d.ts +84 -0
- package/dist/backend/backend/src/types/whatsapp.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/whatsapp.types.js +33 -0
- package/dist/backend/backend/src/types/whatsapp.types.js.map +1 -0
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts +11 -0
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.js +35 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +69 -6
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +75 -6
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js +14 -2
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js.map +1 -1
- package/dist/cli/backend/src/types/index.d.ts +1 -0
- package/dist/cli/backend/src/types/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/index.js.map +1 -1
- package/dist/cli/cli/src/commands/publish.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/publish.js +17 -15
- package/dist/cli/cli/src/commands/publish.js.map +1 -1
- package/dist/cli/cli/src/index.js +2 -2
- package/dist/cli/cli/src/index.js.map +1 -1
- package/dist/cli/cli/src/utils/gh-submit.d.ts +46 -0
- package/dist/cli/cli/src/utils/gh-submit.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/gh-submit.js +167 -0
- package/dist/cli/cli/src/utils/gh-submit.js.map +1 -0
- package/dist/cli/cli/src/utils/marketplace.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/marketplace.js +13 -5
- package/dist/cli/cli/src/utils/marketplace.js.map +1 -1
- package/dist/cli/cli/src/utils/templates.d.ts +3 -2
- package/dist/cli/cli/src/utils/templates.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/templates.js +5 -4
- package/dist/cli/cli/src/utils/templates.js.map +1 -1
- package/frontend/dist/assets/{index-45eeea99.js → index-a23214ae.js} +241 -241
- package/frontend/dist/assets/{index-6972eeee.css → index-c407fe13.css} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +3 -1
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Code Review Pipeline — Quick Start
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
An AI team that automatically reviews pull requests for code quality, security vulnerabilities, and test coverage. Produces structured, actionable review feedback with a clear verdict.
|
|
6
|
+
|
|
7
|
+
**Target Users**: SaaS teams, dev agencies, engineering organizations
|
|
8
|
+
**Team Size**: 2 agents (Senior Reviewer + Security Auditor)
|
|
9
|
+
|
|
10
|
+
## Prerequisites
|
|
11
|
+
|
|
12
|
+
- Crewly installed and running (`npx crewly start`)
|
|
13
|
+
- Git repository with PR workflow (GitHub, GitLab, or Bitbucket)
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# 1. Create the team from template
|
|
19
|
+
npx crewly create-team --template code-review-team
|
|
20
|
+
|
|
21
|
+
# 2. Start the team in your project directory
|
|
22
|
+
npx crewly start --project /path/to/your/repo
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Required Skills
|
|
26
|
+
|
|
27
|
+
| Skill | Purpose | Config Required |
|
|
28
|
+
|-------|---------|----------------|
|
|
29
|
+
| `code-review` | Analyze git diffs for quality, style, complexity | None |
|
|
30
|
+
| `test-runner` | Run test suite and verify coverage | None |
|
|
31
|
+
| `bug-triage` | Classify and prioritize security findings | None |
|
|
32
|
+
| `git-commit-helper` | Analyze commit messages for conventional format | None |
|
|
33
|
+
|
|
34
|
+
## Optional Skills
|
|
35
|
+
|
|
36
|
+
| Skill | Purpose |
|
|
37
|
+
|-------|---------|
|
|
38
|
+
| `send-pdf-to-slack` | Post review summary to Slack channel |
|
|
39
|
+
| `daily-standup-report` | Daily PR review activity summary |
|
|
40
|
+
|
|
41
|
+
## Workflow
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
New PR Detected
|
|
45
|
+
│
|
|
46
|
+
▼
|
|
47
|
+
Senior Reviewer Security Auditor
|
|
48
|
+
│ │
|
|
49
|
+
├─ Run code-review skill │
|
|
50
|
+
├─ Analyze architecture │
|
|
51
|
+
├─ Check naming, patterns │
|
|
52
|
+
├─ Review error handling │
|
|
53
|
+
│ │
|
|
54
|
+
├─ Run test-runner skill │
|
|
55
|
+
├─ Verify tests pass │
|
|
56
|
+
├─ Check coverage threshold │
|
|
57
|
+
│ │
|
|
58
|
+
│ Parallel │
|
|
59
|
+
│──────────────────────────────▶│
|
|
60
|
+
│ ├─ Scan for OWASP Top 10
|
|
61
|
+
│ ├─ Check for secrets
|
|
62
|
+
│ ├─ Review auth/authz
|
|
63
|
+
│ ├─ Classify findings
|
|
64
|
+
│ │ (bug-triage skill)
|
|
65
|
+
│ │
|
|
66
|
+
│◀─────── Security Report ─────┤
|
|
67
|
+
│ │
|
|
68
|
+
├─ Consolidate all findings │
|
|
69
|
+
├─ Produce final verdict │
|
|
70
|
+
│ (approve / request changes) │
|
|
71
|
+
│ │
|
|
72
|
+
└─ Post review comment ─────────┘
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Expected Output Examples
|
|
76
|
+
|
|
77
|
+
### Code Quality Review (from Senior Reviewer)
|
|
78
|
+
```markdown
|
|
79
|
+
## Code Review: PR #142 — Add user preferences API
|
|
80
|
+
|
|
81
|
+
### Summary
|
|
82
|
+
**Verdict**: REQUEST CHANGES (2 blockers, 3 suggestions)
|
|
83
|
+
|
|
84
|
+
**Files changed**: 6 | **Lines**: +284 / -12
|
|
85
|
+
**Tests**: 14 passing, 0 failing | **Coverage**: 87% (+3%)
|
|
86
|
+
|
|
87
|
+
### Findings
|
|
88
|
+
|
|
89
|
+
#### Blockers
|
|
90
|
+
1. **Missing input validation** — `preferences.controller.ts:45`
|
|
91
|
+
The `updatePreferences` handler accepts raw body without validation.
|
|
92
|
+
Any malformed JSON crashes the service with unhandled TypeError.
|
|
93
|
+
**Fix**: Add Zod schema validation before processing.
|
|
94
|
+
|
|
95
|
+
2. **N+1 query in getAll** — `preferences.service.ts:78`
|
|
96
|
+
Loading preferences with `Promise.all(users.map(u => getPrefs(u.id)))`.
|
|
97
|
+
With 1000 users this fires 1000 queries.
|
|
98
|
+
**Fix**: Batch query with `WHERE user_id IN (...)`.
|
|
99
|
+
|
|
100
|
+
#### Suggestions
|
|
101
|
+
1. **Consider extracting preference keys to constants** — `preferences.types.ts:12`
|
|
102
|
+
String literals `'theme'`, `'language'`, `'timezone'` appear 4 times.
|
|
103
|
+
Extract to a `PREFERENCE_KEYS` constant.
|
|
104
|
+
|
|
105
|
+
2. **Add JSDoc to public methods** — `preferences.service.ts`
|
|
106
|
+
3 public methods missing documentation. Project convention requires JSDoc.
|
|
107
|
+
|
|
108
|
+
3. **Test edge case: empty preferences object** — `preferences.service.test.ts`
|
|
109
|
+
No test for `updatePreferences({})`. Should return 400 or no-op.
|
|
110
|
+
|
|
111
|
+
### Test Results
|
|
112
|
+
✅ All 14 tests passing
|
|
113
|
+
✅ Coverage: 87% (above 80% threshold)
|
|
114
|
+
⚠️ Missing edge case test (see suggestion #3)
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Security Assessment (from Security Auditor)
|
|
118
|
+
```markdown
|
|
119
|
+
## Security Assessment: PR #142
|
|
120
|
+
|
|
121
|
+
### Risk Rating: MEDIUM (1 high, 1 low finding)
|
|
122
|
+
|
|
123
|
+
### Findings
|
|
124
|
+
|
|
125
|
+
| # | Severity | Category | Location | Description |
|
|
126
|
+
|---|----------|----------|----------|-------------|
|
|
127
|
+
| 1 | HIGH | Injection | `preferences.controller.ts:45` | No input validation — potential NoSQL injection if using MongoDB, or payload manipulation with any DB. Aligns with OWASP A03:2021 (Injection). |
|
|
128
|
+
| 2 | LOW | Information Disclosure | `preferences.controller.ts:67` | Error response includes full stack trace in non-production. Recommend stripping in all environments. |
|
|
129
|
+
|
|
130
|
+
### Remediation
|
|
131
|
+
1. **[HIGH] Add input validation**: Use Zod or Joi to validate request body schema before processing. Whitelist allowed preference keys.
|
|
132
|
+
2. **[LOW] Strip stack traces**: Use error middleware that omits stack traces regardless of NODE_ENV.
|
|
133
|
+
|
|
134
|
+
### Checks Passed
|
|
135
|
+
- ✅ No hardcoded secrets or API keys
|
|
136
|
+
- ✅ Authentication middleware present on all routes
|
|
137
|
+
- ✅ No use of `eval()` or dynamic code execution
|
|
138
|
+
- ✅ Dependencies have no known CVEs (checked via `npm audit`)
|
|
139
|
+
|
|
140
|
+
### Recommendation: BLOCK until HIGH finding is resolved
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Final Verdict (from Senior Reviewer)
|
|
144
|
+
```markdown
|
|
145
|
+
## Final Review: PR #142 — Add user preferences API
|
|
146
|
+
|
|
147
|
+
**Verdict**: ❌ REQUEST CHANGES
|
|
148
|
+
|
|
149
|
+
### Consolidated Findings
|
|
150
|
+
- 🔴 2 Blockers (1 code quality + 1 security HIGH)
|
|
151
|
+
- 🟡 3 Suggestions
|
|
152
|
+
- 🟢 Tests passing, coverage above threshold
|
|
153
|
+
|
|
154
|
+
### Required Before Merge
|
|
155
|
+
1. Add input validation with Zod schema (blocks both code quality + security findings)
|
|
156
|
+
2. Fix N+1 query in `getAll`
|
|
157
|
+
|
|
158
|
+
### Nice to Have
|
|
159
|
+
3. Extract preference key constants
|
|
160
|
+
4. Add JSDoc to public methods
|
|
161
|
+
5. Add empty-object edge case test
|
|
162
|
+
|
|
163
|
+
### What's Good
|
|
164
|
+
- Clean API design following RESTful conventions
|
|
165
|
+
- Good test coverage (87%)
|
|
166
|
+
- Proper error handling in happy path
|
|
167
|
+
- Consistent with existing codebase patterns
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Customization
|
|
171
|
+
|
|
172
|
+
- **Add linting**: Include quality gates for ESLint/Prettier checks
|
|
173
|
+
- **Adjust thresholds**: Modify coverage requirements in Senior Reviewer's prompt
|
|
174
|
+
- **Add CI integration**: Trigger review on GitHub webhook events
|
|
175
|
+
- **Scale**: Add a third agent for performance review (benchmarks, load testing)
|
|
176
|
+
- **Customize rules**: Edit Security Auditor's prompt to focus on your tech stack's specific vulnerabilities
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Code Review Pipeline",
|
|
3
|
+
"description": "AI team that automatically reviews pull requests for code quality, security vulnerabilities, and test coverage. Built for SaaS teams, dev shops, and any team that wants faster, more consistent code reviews.",
|
|
4
|
+
"members": [
|
|
5
|
+
{
|
|
6
|
+
"name": "Senior Reviewer",
|
|
7
|
+
"role": "architect",
|
|
8
|
+
"systemPrompt": "You are the senior code reviewer on a code review team. You review pull requests for architecture, code quality, maintainability, and adherence to project conventions. Use the code-review skill to analyze git diffs and produce structured reviews. Use the test-runner skill to verify test coverage and ensure all tests pass. Focus on: naming conventions, separation of concerns, error handling, performance implications, and API design. Coordinate with the Security Auditor on security findings. Produce a final review verdict (approve / request changes) with clear, actionable feedback."
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"name": "Security Auditor",
|
|
12
|
+
"role": "qa-engineer",
|
|
13
|
+
"systemPrompt": "You are the security auditor on a code review team. You scan every PR for security vulnerabilities: injection flaws (SQL, XSS, command injection), authentication/authorization issues, secrets exposure, insecure dependencies, and OWASP Top 10 violations. Use the code-review skill with security focus to analyze changes. Use the bug-triage skill to classify and prioritize any findings. Produce a security assessment for each PR: list of findings (severity + remediation), overall risk rating, and approval/block recommendation. Coordinate with the Senior Reviewer on the final review verdict."
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "code-review-team",
|
|
3
|
+
"name": "Code Review Pipeline",
|
|
4
|
+
"description": "AI team that automatically reviews pull requests for code quality, security vulnerabilities, and test coverage. Built for SaaS teams, dev shops, and any team that wants faster, more consistent code reviews.",
|
|
5
|
+
"category": "development",
|
|
6
|
+
"targetVertical": "SaaS Team / Dev Agency / Engineering Org",
|
|
7
|
+
"members": [
|
|
8
|
+
{
|
|
9
|
+
"name": "Senior Reviewer",
|
|
10
|
+
"role": "architect",
|
|
11
|
+
"systemPrompt": "You are the senior code reviewer on a code review team. You review pull requests for architecture, code quality, maintainability, and adherence to project conventions. Use the code-review skill to analyze git diffs and produce structured reviews. Use the test-runner skill to verify test coverage and ensure all tests pass. Focus on: naming conventions, separation of concerns, error handling, performance implications, and API design. Coordinate with the Security Auditor on security findings. Produce a final review verdict (approve / request changes) with clear, actionable feedback."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"name": "Security Auditor",
|
|
15
|
+
"role": "qa-engineer",
|
|
16
|
+
"systemPrompt": "You are the security auditor on a code review team. You scan every PR for security vulnerabilities: injection flaws (SQL, XSS, command injection), authentication/authorization issues, secrets exposure, insecure dependencies, and OWASP Top 10 violations. Use the code-review skill with security focus to analyze changes. Use the bug-triage skill to classify and prioritize any findings. Produce a security assessment for each PR: list of findings (severity + remediation), overall risk rating, and approval/block recommendation. Coordinate with the Senior Reviewer on the final review verdict."
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"requiredSkills": [
|
|
20
|
+
"code-review",
|
|
21
|
+
"test-runner",
|
|
22
|
+
"bug-triage",
|
|
23
|
+
"git-commit-helper"
|
|
24
|
+
],
|
|
25
|
+
"optionalSkills": [
|
|
26
|
+
"send-pdf-to-slack",
|
|
27
|
+
"daily-standup-report"
|
|
28
|
+
],
|
|
29
|
+
"workflow": {
|
|
30
|
+
"name": "PR Review Pipeline",
|
|
31
|
+
"steps": [
|
|
32
|
+
{
|
|
33
|
+
"step": 1,
|
|
34
|
+
"name": "PR Detection & Initial Analysis",
|
|
35
|
+
"owner": "Senior Reviewer",
|
|
36
|
+
"description": "Detect new or updated PR. Run code-review skill on the diff to produce structured analysis of changes.",
|
|
37
|
+
"output": "Structured code review (markdown) with findings by category"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"step": 2,
|
|
41
|
+
"name": "Test Verification",
|
|
42
|
+
"owner": "Senior Reviewer",
|
|
43
|
+
"description": "Run test suite via test-runner skill. Verify all tests pass and coverage meets threshold.",
|
|
44
|
+
"output": "Test results with coverage report"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"step": 3,
|
|
48
|
+
"name": "Security Scan",
|
|
49
|
+
"owner": "Security Auditor",
|
|
50
|
+
"description": "Analyze changes for security vulnerabilities. Classify findings by severity using bug-triage skill.",
|
|
51
|
+
"output": "Security assessment (findings list + severity + risk rating)"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"step": 4,
|
|
55
|
+
"name": "Final Verdict",
|
|
56
|
+
"owner": "Senior Reviewer",
|
|
57
|
+
"description": "Consolidate code quality review + test results + security assessment. Produce final verdict with actionable feedback.",
|
|
58
|
+
"output": "PR review comment (approve / request changes) with consolidated feedback"
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Content Generation Studio — Quick Start
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
An AI team that automatically produces SEO-optimized blog posts, social media content, and cover images. The team follows a structured pipeline: research → draft → review → publish.
|
|
6
|
+
|
|
7
|
+
**Target Users**: Content agencies, solo creators, marketing teams
|
|
8
|
+
**Team Size**: 3 agents (Content Strategist + Writer + Editor)
|
|
9
|
+
|
|
10
|
+
## Prerequisites
|
|
11
|
+
|
|
12
|
+
- Crewly installed and running (`npx crewly start`)
|
|
13
|
+
- Gemini API key configured (required for `nano-banana-image` skill)
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# 1. Create the team from template
|
|
19
|
+
npx crewly create-team --template content-generation-team
|
|
20
|
+
|
|
21
|
+
# 2. Start the team
|
|
22
|
+
npx crewly start
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Required Skills
|
|
26
|
+
|
|
27
|
+
| Skill | Purpose | Config Required |
|
|
28
|
+
|-------|---------|----------------|
|
|
29
|
+
| `seo-blog-writer` | Generate SEO-optimized blog structures | None |
|
|
30
|
+
| `social-media-post` | Create platform-optimized social posts (X, LinkedIn, Reddit) | None |
|
|
31
|
+
| `nano-banana-image` | Generate cover images and visuals | `GEMINI_API_KEY` |
|
|
32
|
+
| `feedback-analyzer` | Analyze audience feedback for content improvement | None |
|
|
33
|
+
|
|
34
|
+
## Optional Skills
|
|
35
|
+
|
|
36
|
+
| Skill | Purpose |
|
|
37
|
+
|-------|---------|
|
|
38
|
+
| `send-pdf-to-slack` | Share formatted content reports via Slack |
|
|
39
|
+
| `daily-standup-report` | Daily team activity summary |
|
|
40
|
+
|
|
41
|
+
## Workflow
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
Content Strategist Writer Editor
|
|
45
|
+
│ │ │
|
|
46
|
+
├─ Research topics │ │
|
|
47
|
+
├─ Keyword analysis │ │
|
|
48
|
+
├─ Create content brief │ │
|
|
49
|
+
│ │ │ │
|
|
50
|
+
│ └──────────────▶ │
|
|
51
|
+
│ ├─ Write blog post │
|
|
52
|
+
│ ├─ Create social │
|
|
53
|
+
│ │ posts │
|
|
54
|
+
│ ├─ Generate images │
|
|
55
|
+
│ │ │ │
|
|
56
|
+
│ │ └─────────▶
|
|
57
|
+
│ │ ├─ Review quality
|
|
58
|
+
│ │ ├─ Check SEO
|
|
59
|
+
│ │ ├─ Verify accuracy
|
|
60
|
+
│ │ │
|
|
61
|
+
│ │◀── Approved ──────┤
|
|
62
|
+
│ │ or revisions │
|
|
63
|
+
│ ├─ Publish content │
|
|
64
|
+
│ └───────────────────┘
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Expected Output Examples
|
|
68
|
+
|
|
69
|
+
### Blog Post (from Writer)
|
|
70
|
+
```markdown
|
|
71
|
+
# 10 Ways AI Is Transforming Small Business Operations in 2026
|
|
72
|
+
|
|
73
|
+
*Meta: Discover how AI automation is helping SMBs reduce costs by 40%...*
|
|
74
|
+
|
|
75
|
+
## Introduction
|
|
76
|
+
...
|
|
77
|
+
|
|
78
|
+
## 1. Automated Customer Support
|
|
79
|
+
...
|
|
80
|
+
|
|
81
|
+
## Conclusion
|
|
82
|
+
...
|
|
83
|
+
|
|
84
|
+
**Keywords**: AI small business, AI automation, SMB operations
|
|
85
|
+
**Word count**: ~1,500
|
|
86
|
+
**Reading time**: 7 min
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Social Media Posts (from Writer)
|
|
90
|
+
```
|
|
91
|
+
[X/Twitter]
|
|
92
|
+
AI is quietly transforming how small businesses operate.
|
|
93
|
+
|
|
94
|
+
We analyzed 10 real use cases where SMBs cut costs by 40%+ using AI teams.
|
|
95
|
+
|
|
96
|
+
The surprising part? Most started in under a week.
|
|
97
|
+
|
|
98
|
+
Thread 🧵👇
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
[LinkedIn]
|
|
103
|
+
I've been watching a quiet revolution in small business operations.
|
|
104
|
+
|
|
105
|
+
AI teams — not single chatbots, but coordinated groups of AI agents —
|
|
106
|
+
are now handling tasks that used to require 3-5 employees...
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Content Brief (from Strategist)
|
|
110
|
+
```markdown
|
|
111
|
+
## Content Brief: AI for SMB Operations
|
|
112
|
+
|
|
113
|
+
**Target keyword**: "AI small business automation"
|
|
114
|
+
**Search volume**: 2,400/mo | **Difficulty**: Medium
|
|
115
|
+
**Target audience**: SMB owners, ops managers
|
|
116
|
+
**Content type**: Listicle (10 items)
|
|
117
|
+
**Word count target**: 1,200-1,800
|
|
118
|
+
**Tone**: Practical, data-driven, accessible
|
|
119
|
+
**CTA**: Free trial signup
|
|
120
|
+
**Competitor gaps**: Most articles are theoretical — we add real ROI data
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Customization
|
|
124
|
+
|
|
125
|
+
- **Add platforms**: Modify Writer's `systemPrompt` to include additional platforms
|
|
126
|
+
- **Change tone**: Adjust Strategist's brief template for different brand voices
|
|
127
|
+
- **Scale up**: Add a second Writer agent for higher content volume
|
|
128
|
+
- **Add distribution**: Include `send-pdf-to-slack` for team notification on publish
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Content Generation Studio",
|
|
3
|
+
"description": "AI team that automatically produces SEO-optimized blog posts, social media content, and accompanying images. Ideal for content agencies, solo creators, and marketing teams.",
|
|
4
|
+
"members": [
|
|
5
|
+
{
|
|
6
|
+
"name": "Content Strategist",
|
|
7
|
+
"role": "content-strategist",
|
|
8
|
+
"systemPrompt": "You are the content strategist on a content generation team. Your job is to research topics, identify high-value keywords, and create content briefs. You define the content calendar, set quality standards, and review all output before publication. Use the seo-blog-writer skill to generate optimized content structures. Coordinate with the Writer for drafts and the Editor for quality assurance."
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"name": "Writer",
|
|
12
|
+
"role": "generalist",
|
|
13
|
+
"systemPrompt": "You are the writer on a content generation team. You take content briefs from the Strategist and produce full-length blog posts, social media copy, and marketing materials. Use the social-media-post skill to create platform-optimized posts for X, LinkedIn, and Reddit. Use the nano-banana-image skill to generate accompanying visuals. Focus on engaging, accurate, on-brand content that follows the brief's keyword and structure guidelines."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "Editor",
|
|
17
|
+
"role": "qa",
|
|
18
|
+
"systemPrompt": "You are the editor on a content generation team. You review all content produced by the Writer for accuracy, tone consistency, SEO compliance, and brand voice. Check keyword placement, readability, and factual correctness. Approve content for publication or send back with specific revision notes. Use the feedback-analyzer skill to incorporate audience feedback into content improvements."
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "content-generation-team",
|
|
3
|
+
"name": "Content Generation Studio",
|
|
4
|
+
"description": "AI team that automatically produces SEO-optimized blog posts, social media content, and accompanying images. Ideal for content agencies, solo creators, and marketing teams.",
|
|
5
|
+
"category": "content",
|
|
6
|
+
"targetVertical": "Content Agency / Solo Creator / Marketing Team",
|
|
7
|
+
"members": [
|
|
8
|
+
{
|
|
9
|
+
"name": "Content Strategist",
|
|
10
|
+
"role": "content-strategist",
|
|
11
|
+
"systemPrompt": "You are the content strategist on a content generation team. Your job is to research topics, identify high-value keywords, and create content briefs. You define the content calendar, set quality standards, and review all output before publication. Use the seo-blog-writer skill to generate optimized content structures. Coordinate with the Writer for drafts and the Editor for quality assurance."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"name": "Writer",
|
|
15
|
+
"role": "generalist",
|
|
16
|
+
"systemPrompt": "You are the writer on a content generation team. You take content briefs from the Strategist and produce full-length blog posts, social media copy, and marketing materials. Use the social-media-post skill to create platform-optimized posts for X, LinkedIn, and Reddit. Use the nano-banana-image skill to generate accompanying visuals. Focus on engaging, accurate, on-brand content that follows the brief's keyword and structure guidelines."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"name": "Editor",
|
|
20
|
+
"role": "qa",
|
|
21
|
+
"systemPrompt": "You are the editor on a content generation team. You review all content produced by the Writer for accuracy, tone consistency, SEO compliance, and brand voice. Check keyword placement, readability, and factual correctness. Approve content for publication or send back with specific revision notes. Use the feedback-analyzer skill to incorporate audience feedback into content improvements."
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"requiredSkills": [
|
|
25
|
+
"seo-blog-writer",
|
|
26
|
+
"social-media-post",
|
|
27
|
+
"nano-banana-image",
|
|
28
|
+
"feedback-analyzer"
|
|
29
|
+
],
|
|
30
|
+
"optionalSkills": [
|
|
31
|
+
"send-pdf-to-slack",
|
|
32
|
+
"daily-standup-report"
|
|
33
|
+
],
|
|
34
|
+
"workflow": {
|
|
35
|
+
"name": "Content Production Pipeline",
|
|
36
|
+
"steps": [
|
|
37
|
+
{
|
|
38
|
+
"step": 1,
|
|
39
|
+
"name": "Topic Research & Brief",
|
|
40
|
+
"owner": "Content Strategist",
|
|
41
|
+
"description": "Research trending topics, analyze keywords, create content brief with target keywords, structure, and audience.",
|
|
42
|
+
"output": "Content brief (markdown)"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"step": 2,
|
|
46
|
+
"name": "Draft Creation",
|
|
47
|
+
"owner": "Writer",
|
|
48
|
+
"description": "Write full blog post and social media variants based on the content brief. Generate cover image.",
|
|
49
|
+
"output": "Blog post (markdown) + social posts (per platform) + cover image (PNG)"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"step": 3,
|
|
53
|
+
"name": "Editorial Review",
|
|
54
|
+
"owner": "Editor",
|
|
55
|
+
"description": "Review draft for quality, SEO compliance, accuracy, and brand voice. Approve or return with revision notes.",
|
|
56
|
+
"output": "Approved content or revision notes"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"step": 4,
|
|
60
|
+
"name": "Publish & Distribute",
|
|
61
|
+
"owner": "Writer",
|
|
62
|
+
"description": "Post approved content to target platforms. Share via Slack for team visibility.",
|
|
63
|
+
"output": "Published posts with links"
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "demo-team",
|
|
3
|
+
"name": "Demo Team",
|
|
4
|
+
"description": "Developer + Product Manager + Ops Engineer for a quick Crewly demo. Shows multi-role collaboration: the PM defines tasks, the developer builds features, and the ops engineer handles deployment and infrastructure.",
|
|
5
|
+
"members": [
|
|
6
|
+
{
|
|
7
|
+
"name": "Developer",
|
|
8
|
+
"role": "developer",
|
|
9
|
+
"systemPrompt": "You are the developer on a demo team. Implement features, write tests, and fix bugs. Coordinate with the product manager on requirements and the ops engineer on deployment needs. Write clean, well-tested TypeScript code following project conventions."
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"name": "Product Manager",
|
|
13
|
+
"role": "product-manager",
|
|
14
|
+
"systemPrompt": "You are the product manager on a demo team. Define requirements, create task breakdowns, and prioritize the backlog. Review the developer's work against acceptance criteria. Coordinate between the developer and ops engineer to keep the team aligned and shipping."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": "Ops Engineer",
|
|
18
|
+
"role": "ops",
|
|
19
|
+
"systemPrompt": "You are the ops engineer on a demo team. Manage deployments, CI/CD pipelines, and infrastructure. Monitor system health and respond to incidents. Coordinate with the developer on build and release processes. Keep environments stable and well-documented."
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Social Media Ops — Quick Start
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
An AI team that monitors trends, creates platform-native content, manages posting schedules, and analyzes engagement metrics. Runs a continuous weekly cycle: plan → create → publish → analyze → optimize.
|
|
6
|
+
|
|
7
|
+
**Target Users**: E-commerce brands, DTC companies, social-first businesses
|
|
8
|
+
**Team Size**: 3 agents (Social Manager + Content Creator + Analyst)
|
|
9
|
+
|
|
10
|
+
## Prerequisites
|
|
11
|
+
|
|
12
|
+
- Crewly installed and running (`npx crewly start`)
|
|
13
|
+
- Gemini API key configured (required for `nano-banana-image` skill)
|
|
14
|
+
- (Optional) Xiaohongshu access for `rednote-reader` skill
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# 1. Create the team from template
|
|
20
|
+
npx crewly create-team --template social-media-ops-team
|
|
21
|
+
|
|
22
|
+
# 2. Start the team
|
|
23
|
+
npx crewly start
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Required Skills
|
|
27
|
+
|
|
28
|
+
| Skill | Purpose | Config Required |
|
|
29
|
+
|-------|---------|----------------|
|
|
30
|
+
| `social-media-post` | Generate platform-optimized social posts | None |
|
|
31
|
+
| `nano-banana-image` | Create visual assets and graphics | `GEMINI_API_KEY` |
|
|
32
|
+
| `feedback-analyzer` | Analyze audience comments and sentiment | None |
|
|
33
|
+
| `daily-standup-report` | Compile daily activity summaries | None |
|
|
34
|
+
|
|
35
|
+
## Optional Skills
|
|
36
|
+
|
|
37
|
+
| Skill | Purpose |
|
|
38
|
+
|-------|---------|
|
|
39
|
+
| `rednote-reader` | Monitor Xiaohongshu trends (China market) |
|
|
40
|
+
| `send-pdf-to-slack` | Share weekly reports via Slack |
|
|
41
|
+
|
|
42
|
+
## Workflow
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
Monday Tue-Thu Friday
|
|
46
|
+
│ │ │
|
|
47
|
+
Social Manager Content Creator Analyst
|
|
48
|
+
│ │ │
|
|
49
|
+
├─ Monitor trends │ │
|
|
50
|
+
├─ Review competitors │ │
|
|
51
|
+
├─ Plan weekly calendar │ │
|
|
52
|
+
│ │ │ │
|
|
53
|
+
│ └────────────────────▶ │
|
|
54
|
+
│ ├─ Create posts │
|
|
55
|
+
│ ├─ Generate visuals │
|
|
56
|
+
│ ├─ Adapt per platform │
|
|
57
|
+
│ │ │ │
|
|
58
|
+
│◀─────────────────────────────┤ │ │
|
|
59
|
+
│ │ │ │
|
|
60
|
+
├─ Review & approve │ │ │
|
|
61
|
+
├─ Schedule posting │ │ │
|
|
62
|
+
│ │ │ │
|
|
63
|
+
│ │ └──────────────▶
|
|
64
|
+
│ │ ├─ Collect metrics
|
|
65
|
+
│ │ ├─ Analyze performance
|
|
66
|
+
│ │ ├─ Weekly report
|
|
67
|
+
│ │ │
|
|
68
|
+
│◀──────────────────────────────────────────────────────┤
|
|
69
|
+
├─ Adjust next week's │ │
|
|
70
|
+
│ strategy │ │
|
|
71
|
+
└──────────────────────────────┘ │
|
|
72
|
+
Next cycle │
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Expected Output Examples
|
|
76
|
+
|
|
77
|
+
### Weekly Content Calendar (from Social Manager)
|
|
78
|
+
```markdown
|
|
79
|
+
## Week of March 3, 2026
|
|
80
|
+
|
|
81
|
+
| Day | Platform | Topic | Format | Status |
|
|
82
|
+
|-----|----------|-------|--------|--------|
|
|
83
|
+
| Mon | X | Product launch teaser | Thread (5 tweets) | Draft |
|
|
84
|
+
| Mon | LinkedIn | Industry insight post | Long-form | Draft |
|
|
85
|
+
| Tue | X | Customer testimonial | Quote card | Draft |
|
|
86
|
+
| Wed | X | Behind-the-scenes | Photo + caption | Draft |
|
|
87
|
+
| Wed | Reddit | r/ecommerce value post | Tutorial | Draft |
|
|
88
|
+
| Thu | LinkedIn | Team spotlight | Story post | Draft |
|
|
89
|
+
| Fri | X | Weekly roundup | Thread | Draft |
|
|
90
|
+
|
|
91
|
+
**Theme**: Product launch week
|
|
92
|
+
**Hashtags**: #AIteams #ecommerce #automation
|
|
93
|
+
**Competitor watch**: [Brand X] launching similar feature — differentiate on pricing
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Platform-Native Post (from Content Creator)
|
|
97
|
+
```
|
|
98
|
+
[X/Twitter — Thread]
|
|
99
|
+
1/ We just shipped something wild.
|
|
100
|
+
|
|
101
|
+
An AI team that runs your entire social media — from trend research
|
|
102
|
+
to posting to analytics.
|
|
103
|
+
|
|
104
|
+
Not a scheduler. Not a chatbot. A full team. Here's how it works 👇
|
|
105
|
+
|
|
106
|
+
2/ The Social Manager agent monitors trends 24/7.
|
|
107
|
+
It watches X, LinkedIn, Reddit, and even Xiaohongshu.
|
|
108
|
+
|
|
109
|
+
When it spots a trending topic in your niche, it creates a content brief
|
|
110
|
+
and assigns it to the Content Creator.
|
|
111
|
+
|
|
112
|
+
3/ The Content Creator produces platform-native posts.
|
|
113
|
+
...
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Weekly Analytics Report (from Analyst)
|
|
117
|
+
```markdown
|
|
118
|
+
## Social Performance — Week of Feb 24, 2026
|
|
119
|
+
|
|
120
|
+
### Summary
|
|
121
|
+
- **Total posts**: 12 across 3 platforms
|
|
122
|
+
- **Total impressions**: 45,200 (+18% vs last week)
|
|
123
|
+
- **Engagement rate**: 4.2% (benchmark: 2.5%)
|
|
124
|
+
- **Top post**: "AI Team ROI Calculator" thread — 12K impressions, 340 engagements
|
|
125
|
+
|
|
126
|
+
### Platform Breakdown
|
|
127
|
+
| Platform | Posts | Impressions | Engagement | Best Day |
|
|
128
|
+
|----------|-------|-------------|------------|----------|
|
|
129
|
+
| X | 7 | 28,400 | 4.8% | Tuesday |
|
|
130
|
+
| LinkedIn | 3 | 12,100 | 3.1% | Monday |
|
|
131
|
+
| Reddit | 2 | 4,700 | 5.2% | Wednesday |
|
|
132
|
+
|
|
133
|
+
### Recommendations
|
|
134
|
+
1. **Double down on X threads** — highest engagement format (5.1% avg)
|
|
135
|
+
2. **Post LinkedIn content Mon-Tue** — 2x engagement vs Thu-Fri
|
|
136
|
+
3. **Reddit tutorials outperform discussions** — 3x upvotes on how-to posts
|
|
137
|
+
4. **Test video content next week** — competitor [Brand X] seeing 8% engagement on video
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Customization
|
|
141
|
+
|
|
142
|
+
- **Add platforms**: Add Xiaohongshu by enabling `rednote-reader` in optional skills
|
|
143
|
+
- **Change cadence**: Modify Social Manager's prompt for daily vs weekly planning
|
|
144
|
+
- **Add team members**: Add a second Content Creator for higher volume
|
|
145
|
+
- **Integrate Slack**: Add `send-pdf-to-slack` to auto-share weekly reports with stakeholders
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Social Media Ops",
|
|
3
|
+
"description": "AI team that monitors social trends, creates platform-native content, manages posting schedules, and analyzes engagement. Built for e-commerce brands, DTC companies, and social-first businesses.",
|
|
4
|
+
"members": [
|
|
5
|
+
{
|
|
6
|
+
"name": "Social Manager",
|
|
7
|
+
"role": "content-strategist",
|
|
8
|
+
"systemPrompt": "You are the social media manager on a social ops team. You own the content calendar, monitor trending topics and competitor activity, and set the strategy for each platform (X, LinkedIn, Reddit, Xiaohongshu). Use the rednote-reader skill to monitor Xiaohongshu trends and competitor posts. Define posting schedules, approve content before publishing, and review analytics to optimize strategy. Coordinate the Content Creator for production and the Analyst for performance insights."
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"name": "Content Creator",
|
|
12
|
+
"role": "designer",
|
|
13
|
+
"systemPrompt": "You are the content creator on a social ops team. You produce platform-native social media posts, short-form copy, and visual assets. Use the social-media-post skill to generate platform-optimized posts for X, LinkedIn, and Reddit. Use the nano-banana-image skill to create eye-catching visuals and graphics. Adapt content tone and format to each platform's audience. Follow the Social Manager's content calendar and brand guidelines."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "Analyst",
|
|
17
|
+
"role": "product-manager",
|
|
18
|
+
"systemPrompt": "You are the analytics lead on a social ops team. You track engagement metrics, identify high-performing content patterns, and produce weekly performance reports. Use the feedback-analyzer skill to analyze audience comments and sentiment. Use the daily-standup-report skill to compile daily activity summaries. Recommend content adjustments based on data: what topics resonate, best posting times, which platforms drive the most engagement. Feed insights back to the Social Manager for strategy iteration."
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|