goiabaseeds 1.0.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 +173 -0
- package/bin/goiabaseeds.js +98 -0
- package/eslint.config.js +14 -0
- package/package.json +61 -0
- package/skills/README.md +60 -0
- package/skills/apify/SKILL.md +55 -0
- package/skills/blotato/SKILL.md +63 -0
- package/skills/canva/SKILL.md +60 -0
- package/skills/goiabaseeds-agent-creator/SKILL.md +192 -0
- package/skills/goiabaseeds-skill-creator/SKILL.md +407 -0
- package/skills/goiabaseeds-skill-creator/agents/analyzer.md +274 -0
- package/skills/goiabaseeds-skill-creator/agents/comparator.md +202 -0
- package/skills/goiabaseeds-skill-creator/agents/grader.md +223 -0
- package/skills/goiabaseeds-skill-creator/assets/eval_review.html +146 -0
- package/skills/goiabaseeds-skill-creator/eval-viewer/generate_review.py +471 -0
- package/skills/goiabaseeds-skill-creator/eval-viewer/viewer.html +1325 -0
- package/skills/goiabaseeds-skill-creator/references/schemas.md +430 -0
- package/skills/goiabaseeds-skill-creator/references/skill-format.md +235 -0
- package/skills/goiabaseeds-skill-creator/scripts/__init__.py +0 -0
- package/skills/goiabaseeds-skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/skills/goiabaseeds-skill-creator/scripts/quick_validate.py +103 -0
- package/skills/goiabaseeds-skill-creator/scripts/run_eval.py +310 -0
- package/skills/goiabaseeds-skill-creator/scripts/utils.py +47 -0
- package/skills/image-creator/SKILL.md +155 -0
- package/skills/image-fetcher/SKILL.md +91 -0
- package/skills/image-generator/SKILL.md +124 -0
- package/skills/image-generator/scripts/generate.py +175 -0
- package/skills/instagram-publisher/SKILL.md +118 -0
- package/skills/instagram-publisher/scripts/publish.js +164 -0
- package/src/agent-session.js +110 -0
- package/src/agents-cli.js +158 -0
- package/src/agents.js +134 -0
- package/src/bundle-detector.js +75 -0
- package/src/bundle.js +286 -0
- package/src/context.js +142 -0
- package/src/export.js +52 -0
- package/src/i18n.js +48 -0
- package/src/init.js +367 -0
- package/src/locales/en.json +72 -0
- package/src/locales/es.json +71 -0
- package/src/locales/pt-BR.json +71 -0
- package/src/logger.js +38 -0
- package/src/models-cli.js +165 -0
- package/src/pipeline-runner.js +478 -0
- package/src/prompt.js +46 -0
- package/src/provider.js +156 -0
- package/src/readme/README.md +181 -0
- package/src/run.js +100 -0
- package/src/runs.js +90 -0
- package/src/skills-cli.js +157 -0
- package/src/skills.js +146 -0
- package/src/state-manager.js +280 -0
- package/src/tools.js +158 -0
- package/src/update.js +140 -0
- package/templates/_goiabaseeds/.goiabaseeds-version +1 -0
- package/templates/_goiabaseeds/_investigations/.gitkeep +0 -0
- package/templates/_goiabaseeds/config/playwright.config.json +11 -0
- package/templates/_goiabaseeds/core/architect.agent.yaml +1141 -0
- package/templates/_goiabaseeds/core/best-practices/_catalog.yaml +116 -0
- package/templates/_goiabaseeds/core/best-practices/blog-post.md +132 -0
- package/templates/_goiabaseeds/core/best-practices/blog-seo.md +127 -0
- package/templates/_goiabaseeds/core/best-practices/copywriting.md +428 -0
- package/templates/_goiabaseeds/core/best-practices/data-analysis.md +401 -0
- package/templates/_goiabaseeds/core/best-practices/email-newsletter.md +118 -0
- package/templates/_goiabaseeds/core/best-practices/email-sales.md +110 -0
- package/templates/_goiabaseeds/core/best-practices/image-design.md +349 -0
- package/templates/_goiabaseeds/core/best-practices/instagram-feed.md +235 -0
- package/templates/_goiabaseeds/core/best-practices/instagram-reels.md +112 -0
- package/templates/_goiabaseeds/core/best-practices/instagram-stories.md +107 -0
- package/templates/_goiabaseeds/core/best-practices/linkedin-article.md +116 -0
- package/templates/_goiabaseeds/core/best-practices/linkedin-post.md +121 -0
- package/templates/_goiabaseeds/core/best-practices/researching.md +347 -0
- package/templates/_goiabaseeds/core/best-practices/review.md +269 -0
- package/templates/_goiabaseeds/core/best-practices/social-networks-publishing.md +294 -0
- package/templates/_goiabaseeds/core/best-practices/strategist.md +344 -0
- package/templates/_goiabaseeds/core/best-practices/technical-writing.md +363 -0
- package/templates/_goiabaseeds/core/best-practices/twitter-post.md +105 -0
- package/templates/_goiabaseeds/core/best-practices/twitter-thread.md +122 -0
- package/templates/_goiabaseeds/core/best-practices/whatsapp-broadcast.md +107 -0
- package/templates/_goiabaseeds/core/best-practices/youtube-script.md +122 -0
- package/templates/_goiabaseeds/core/best-practices/youtube-shorts.md +112 -0
- package/templates/_goiabaseeds/core/prompts/auguste.dupin.prompt.md +1008 -0
- package/templates/_goiabaseeds/core/runner.pipeline.md +467 -0
- package/templates/_goiabaseeds/core/skills.engine.md +381 -0
- package/templates/dashboard/index.html +12 -0
- package/templates/dashboard/package-lock.json +2082 -0
- package/templates/dashboard/package.json +28 -0
- package/templates/dashboard/src/App.tsx +46 -0
- package/templates/dashboard/src/components/DepartmentCard.tsx +47 -0
- package/templates/dashboard/src/components/DepartmentSelector.tsx +61 -0
- package/templates/dashboard/src/components/StatusBadge.tsx +32 -0
- package/templates/dashboard/src/components/StatusBar.tsx +97 -0
- package/templates/dashboard/src/hooks/useDepartmentSocket.ts +84 -0
- package/templates/dashboard/src/lib/formatTime.ts +16 -0
- package/templates/dashboard/src/lib/normalizeState.ts +25 -0
- package/templates/dashboard/src/main.tsx +10 -0
- package/templates/dashboard/src/office/AgentDesk.tsx +151 -0
- package/templates/dashboard/src/office/HandoffEnvelope.tsx +108 -0
- package/templates/dashboard/src/office/OfficeScene.tsx +147 -0
- package/templates/dashboard/src/office/drawDesk.ts +263 -0
- package/templates/dashboard/src/office/drawFurniture.ts +129 -0
- package/templates/dashboard/src/office/drawRoom.ts +51 -0
- package/templates/dashboard/src/office/palette.ts +181 -0
- package/templates/dashboard/src/office/textures.ts +254 -0
- package/templates/dashboard/src/plugin/departmentWatcher.ts +210 -0
- package/templates/dashboard/src/store/useDepartmentStore.ts +56 -0
- package/templates/dashboard/src/styles/globals.css +36 -0
- package/templates/dashboard/src/types/state.ts +64 -0
- package/templates/dashboard/src/vite-env.d.ts +1 -0
- package/templates/dashboard/tsconfig.json +24 -0
- package/templates/dashboard/vite.config.ts +13 -0
- package/templates/departments/.gitkeep +0 -0
- package/templates/ide-templates/antigravity/.agent/rules/goiabaseeds.md +55 -0
- package/templates/ide-templates/antigravity/.agent/workflows/goiabaseeds.md +102 -0
- package/templates/ide-templates/claude-code/.claude/skills/goiabaseeds/SKILL.md +182 -0
- package/templates/ide-templates/claude-code/.mcp.json +8 -0
- package/templates/ide-templates/claude-code/CLAUDE.md +43 -0
- package/templates/ide-templates/codex/.agents/skills/goiabaseeds/SKILL.md +6 -0
- package/templates/ide-templates/codex/AGENTS.md +105 -0
- package/templates/ide-templates/cursor/.cursor/commands/goiabaseeds.md +9 -0
- package/templates/ide-templates/cursor/.cursor/mcp.json +8 -0
- package/templates/ide-templates/cursor/.cursor/rules/goiabaseeds.mdc +48 -0
- package/templates/ide-templates/cursor/.cursorignore +3 -0
- package/templates/ide-templates/opencode/.opencode/commands/goiabaseeds.md +9 -0
- package/templates/ide-templates/opencode/AGENTS.md +105 -0
- package/templates/ide-templates/vscode-copilot/.github/prompts/goiabaseeds.prompt.md +201 -0
- package/templates/ide-templates/vscode-copilot/.vscode/mcp.json +8 -0
- package/templates/ide-templates/vscode-copilot/.vscode/settings.json +3 -0
- package/templates/package.json +8 -0
package/README.md
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# goiabaseeds
|
|
2
|
+
|
|
3
|
+
Design AI agents that stay in sync — right inside your IDE. lucide:code-2
|
|
4
|
+
|
|
5
|
+
GoiabaSeeds is a refined multi-agent orchestration framework. Describe your mission; GoiabaSeeds aligns a team of specialized agents to master your workflow instantly.
|
|
6
|
+
|
|
7
|
+
## What is a Department?
|
|
8
|
+
|
|
9
|
+
A Department is a collective of specialized AI agents built to solve a single mission.
|
|
10
|
+
- **Specialized Roles**: Every agent owns a specific task in the chain. ph:briefcase-bold
|
|
11
|
+
- **Automated Pipeline**: Work flows through a structured sequence. ph:flow-arrow-bold
|
|
12
|
+
- **Human Oversight**: The process pauses only for your final decision or checkpoint.
|
|
13
|
+
|
|
14
|
+
Example:
|
|
15
|
+
|
|
16
|
+
- **Researcher** gathers information and industry trends
|
|
17
|
+
- **Strategist** generates ideas and defines the approach
|
|
18
|
+
- **Writer** produces the final content
|
|
19
|
+
- **Reviewer** ensures quality before delivery
|
|
20
|
+
|
|
21
|
+
## Installation
|
|
22
|
+
|
|
23
|
+
**Prerequisite:** Node.js 20+
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npx goiabaseeds init
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
To update an existing installation:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npx goiabaseeds update
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Supported IDEs
|
|
36
|
+
|
|
37
|
+
| IDE | Status |
|
|
38
|
+
|-----|--------|
|
|
39
|
+
| Antigravity | Available |
|
|
40
|
+
| Claude Code | Available |
|
|
41
|
+
| Codex (OpenAI) | Available |
|
|
42
|
+
| Open Code | Available |
|
|
43
|
+
| Cursor | Available |
|
|
44
|
+
| VS Code + Copilot | Available |
|
|
45
|
+
|
|
46
|
+
## Dashboard & Approval Workflow
|
|
47
|
+
|
|
48
|
+
The Dashboard is a real-time virtual office where you watch agents work and approve/revise their outputs.
|
|
49
|
+
|
|
50
|
+
### Starting the Dashboard
|
|
51
|
+
|
|
52
|
+
From your project root:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
cd dashboard
|
|
56
|
+
npm run dev
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
The dev server will start on `http://localhost:5173` (or next available port).
|
|
60
|
+
|
|
61
|
+
### Dashboard Features
|
|
62
|
+
|
|
63
|
+
- **Real-time Agent Status**: See which agent is active, idle, or waiting for approval
|
|
64
|
+
- **Approval Requests**: When an agent needs your approval, an interactive memo popup appears
|
|
65
|
+
- **Approve or Revise**: Click "✓ Approve" to continue, or "→ Revise" with instructions
|
|
66
|
+
- **Visual Feedback**: Blue monitor = active agent, gray = idle, gold = waiting for approval
|
|
67
|
+
|
|
68
|
+
### Approval Workflow Example
|
|
69
|
+
|
|
70
|
+
When a `content-review` department runs:
|
|
71
|
+
|
|
72
|
+
1. **Researcher agent** gathers information and needs approval
|
|
73
|
+
- Click the researcher's desk (gold status dot)
|
|
74
|
+
- Review the memo popup with research findings
|
|
75
|
+
- Approve or request revisions
|
|
76
|
+
|
|
77
|
+
2. **Writer agent** creates content based on research
|
|
78
|
+
- Approve writing style and structure
|
|
79
|
+
- Or revise with specific feedback
|
|
80
|
+
|
|
81
|
+
3. **Review checkpoint** shows final content
|
|
82
|
+
- Approve for publishing
|
|
83
|
+
- Or request another round of revisions
|
|
84
|
+
|
|
85
|
+
### Dashboard Troubleshooting
|
|
86
|
+
|
|
87
|
+
If agents aren't showing or approvals aren't appearing:
|
|
88
|
+
|
|
89
|
+
1. **Check the browser console** (F12 → Console)
|
|
90
|
+
- Should NOT see "WebSocket is closed" errors
|
|
91
|
+
- Should see clean connection
|
|
92
|
+
|
|
93
|
+
2. **Verify the departments directory exists**
|
|
94
|
+
- `departments/` folder at project root
|
|
95
|
+
- Each department has `department.yaml` with agent definitions
|
|
96
|
+
|
|
97
|
+
3. **Confirm the dashboard is running**
|
|
98
|
+
```bash
|
|
99
|
+
cd dashboard && npm run dev
|
|
100
|
+
```
|
|
101
|
+
- Should log: `[department-watcher] departments dir: ...`
|
|
102
|
+
|
|
103
|
+
## Architecture Overview
|
|
104
|
+
|
|
105
|
+
GoiabaSeeds consists of:
|
|
106
|
+
|
|
107
|
+
- **Core Framework** (`src/`) — Agent orchestration, pipeline execution, approval handling
|
|
108
|
+
- **CLI** (`bin/goiabaseeds.js`) — Command-line interface
|
|
109
|
+
- **Dashboard** (`dashboard/`) — Real-time visual interface for monitoring and approvals
|
|
110
|
+
- **Templates** (`templates/`) — Boilerplate for new projects
|
|
111
|
+
- **Agents** (`agents/`) — Pre-built agent definitions
|
|
112
|
+
|
|
113
|
+
For developers working on the framework, see [CLAUDE.md](./CLAUDE.md) for detailed architecture and testing guidelines.
|
|
114
|
+
|
|
115
|
+
## Creating your Department
|
|
116
|
+
|
|
117
|
+
Describe what you need:
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
/goiabaseeds create "A department that writes LinkedIn posts about AI trends"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
The **Architect** asks a few questions, designs the department, and sets everything up automatically. You approve the design before any execution begins.
|
|
124
|
+
|
|
125
|
+
## Running a Department
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
/goiabaseeds run <department-name>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
The department runs automatically, pausing only at checkpoints where your decision is needed.
|
|
132
|
+
|
|
133
|
+
## Examples
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
/goiabaseeds create "Department that generates Instagram carousels from trending news, creates the images, and publishes automatically"
|
|
137
|
+
/goiabaseeds create "Department that produces all infoproduct launch materials: sales pages, WhatsApp messages, emails, and CPL scripts"
|
|
138
|
+
/goiabaseeds create "Department that writes complete tutorials with screenshots for employee training"
|
|
139
|
+
/goiabaseeds create "Department that takes YouTube videos and automatically generates viral clips"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Commands
|
|
143
|
+
|
|
144
|
+
| Command | What it does |
|
|
145
|
+
|---------|-------------|
|
|
146
|
+
| `/goiabaseeds` | Open the main menu |
|
|
147
|
+
| `/goiabaseeds help` | Show all commands |
|
|
148
|
+
| `/goiabaseeds create` | Create a new department |
|
|
149
|
+
| `/goiabaseeds run <name>` | Run a department |
|
|
150
|
+
| `/goiabaseeds list` | See all your departments |
|
|
151
|
+
| `/goiabaseeds edit <name>` | Modify a department |
|
|
152
|
+
| `/goiabaseeds skills` | Browse installed skills |
|
|
153
|
+
| `/goiabaseeds install <name>` | Install a skill from catalog |
|
|
154
|
+
| `/goiabaseeds uninstall <name>` | Remove an installed skill |
|
|
155
|
+
|
|
156
|
+
## Recent Fixes
|
|
157
|
+
|
|
158
|
+
### Dashboard Agent Display (v0.x.x)
|
|
159
|
+
|
|
160
|
+
**Issue**: Agents defined in `department.yaml` weren't showing in the Dashboard virtual office.
|
|
161
|
+
|
|
162
|
+
**Cause**: YAML parsing bug in the department watcher plugin — it was looking for agents in the wrong location.
|
|
163
|
+
|
|
164
|
+
**Fix**: Updated the plugin to correctly parse department metadata and extract agent names from both object and string formats.
|
|
165
|
+
|
|
166
|
+
**How to verify**:
|
|
167
|
+
- Start the dashboard: `cd dashboard && npm run dev`
|
|
168
|
+
- Visit `http://localhost:PORT/api/snapshot` in your browser
|
|
169
|
+
- You should see all agents listed with their names
|
|
170
|
+
|
|
171
|
+
## License
|
|
172
|
+
|
|
173
|
+
MIT — use it however you want.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { parseArgs } from 'node:util';
|
|
4
|
+
import { init } from '../src/init.js';
|
|
5
|
+
import { update } from '../src/update.js';
|
|
6
|
+
import { skillsCli } from '../src/skills-cli.js';
|
|
7
|
+
import { agentsCli } from '../src/agents-cli.js';
|
|
8
|
+
import { listRuns, printRuns } from '../src/runs.js';
|
|
9
|
+
import { exportDepartment } from '../src/export.js';
|
|
10
|
+
|
|
11
|
+
const { positionals, values } = parseArgs({
|
|
12
|
+
allowPositionals: true,
|
|
13
|
+
strict: false,
|
|
14
|
+
options: {
|
|
15
|
+
quick: { type: 'boolean', default: false },
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
const command = positionals[0];
|
|
20
|
+
|
|
21
|
+
if (command === 'init') {
|
|
22
|
+
await init(process.cwd(), values.quick ? { _quick: true } : {});
|
|
23
|
+
} else if (command === 'install') {
|
|
24
|
+
// npx goiabaseeds install <name>
|
|
25
|
+
const result = await skillsCli('install', positionals.slice(1), process.cwd());
|
|
26
|
+
if (!result.success) process.exitCode = 1;
|
|
27
|
+
} else if (command === 'uninstall') {
|
|
28
|
+
// npx goiabaseeds uninstall <name>
|
|
29
|
+
const result = await skillsCli('remove', positionals.slice(1), process.cwd());
|
|
30
|
+
if (!result.success) process.exitCode = 1;
|
|
31
|
+
} else if (command === 'update') {
|
|
32
|
+
const target = positionals[1];
|
|
33
|
+
if (target) {
|
|
34
|
+
// npx goiabaseeds update <name> → update specific skill
|
|
35
|
+
const result = await skillsCli('update-one', [target], process.cwd());
|
|
36
|
+
if (!result.success) process.exitCode = 1;
|
|
37
|
+
} else {
|
|
38
|
+
// npx goiabaseeds update → update core
|
|
39
|
+
const result = await update(process.cwd());
|
|
40
|
+
if (!result.success) process.exitCode = 1;
|
|
41
|
+
}
|
|
42
|
+
} else if (command === 'skills') {
|
|
43
|
+
// Backward compat: npx goiabaseeds skills list|install|remove|update
|
|
44
|
+
const subcommand = positionals[1];
|
|
45
|
+
const args = positionals.slice(2);
|
|
46
|
+
const result = await skillsCli(subcommand, args, process.cwd());
|
|
47
|
+
if (!result.success) process.exitCode = 1;
|
|
48
|
+
} else if (command === 'agents') {
|
|
49
|
+
const subcommand = positionals[1];
|
|
50
|
+
const args = positionals.slice(2);
|
|
51
|
+
const result = await agentsCli(subcommand, args, process.cwd());
|
|
52
|
+
if (!result.success) process.exitCode = 1;
|
|
53
|
+
} else if (command === 'runs') {
|
|
54
|
+
const departmentName = positionals[1] || null;
|
|
55
|
+
const runs = await listRuns(departmentName, process.cwd());
|
|
56
|
+
printRuns(runs);
|
|
57
|
+
} else if (command === 'bundle' || command === 'export') {
|
|
58
|
+
// npx goiabaseeds bundle <department> [--output <path>] [--zip]
|
|
59
|
+
const args = positionals.slice(1);
|
|
60
|
+
const result = await exportDepartment(args, process.cwd());
|
|
61
|
+
if (!result.success) process.exitCode = 1;
|
|
62
|
+
} else if (command === 'run') {
|
|
63
|
+
// npx goiabaseeds run <department> — standalone pipeline execution
|
|
64
|
+
const { runDepartment } = await import('../src/run.js');
|
|
65
|
+
const result = await runDepartment(positionals[1], process.cwd());
|
|
66
|
+
if (!result.success) process.exitCode = 1;
|
|
67
|
+
} else if (command === 'models') {
|
|
68
|
+
// npx goiabaseeds models [set <provider>|test]
|
|
69
|
+
const { modelsCli } = await import('../src/models-cli.js');
|
|
70
|
+
const result = await modelsCli(positionals.slice(1), process.cwd());
|
|
71
|
+
if (!result.success) process.exitCode = 1;
|
|
72
|
+
} else {
|
|
73
|
+
console.log(`
|
|
74
|
+
goiabaseeds — Multi-agent orchestration framework
|
|
75
|
+
|
|
76
|
+
Usage:
|
|
77
|
+
npx goiabaseeds init Initialize GoiabaSeeds
|
|
78
|
+
npx goiabaseeds run <department> Run a department (standalone mode)
|
|
79
|
+
npx goiabaseeds models List configured models & providers
|
|
80
|
+
npx goiabaseeds models set <provider> Change default provider
|
|
81
|
+
npx goiabaseeds models test Test model API connectivity
|
|
82
|
+
npx goiabaseeds update Update GoiabaSeeds core
|
|
83
|
+
npx goiabaseeds install <name> Install a skill
|
|
84
|
+
npx goiabaseeds uninstall <name> Remove a skill
|
|
85
|
+
npx goiabaseeds update <name> Update a specific skill
|
|
86
|
+
npx goiabaseeds skills List installed skills
|
|
87
|
+
npx goiabaseeds agents List installed agents
|
|
88
|
+
npx goiabaseeds agents install <name> Install a predefined agent
|
|
89
|
+
npx goiabaseeds agents remove <name> Remove an agent
|
|
90
|
+
npx goiabaseeds agents update Update all agents
|
|
91
|
+
npx goiabaseeds runs [department-name] View execution history
|
|
92
|
+
npx goiabaseeds bundle <department> Bundle department for sharing
|
|
93
|
+
npx goiabaseeds export <department> Export department (alias for bundle)
|
|
94
|
+
|
|
95
|
+
Learn more: https://github.com/netoribeiro/goiabaseeds
|
|
96
|
+
`);
|
|
97
|
+
if (command) process.exitCode = 1;
|
|
98
|
+
}
|
package/eslint.config.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import js from "@eslint/js";
|
|
2
|
+
import globals from "globals";
|
|
3
|
+
|
|
4
|
+
export default [
|
|
5
|
+
js.configs.recommended,
|
|
6
|
+
{
|
|
7
|
+
files: ["src/**/*.js", "bin/**/*.js", "tests/**/*.js"],
|
|
8
|
+
languageOptions: {
|
|
9
|
+
ecmaVersion: "latest",
|
|
10
|
+
sourceType: "module",
|
|
11
|
+
globals: { ...globals.node },
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
];
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "goiabaseeds",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Multi-agent orchestration framework — create AI departments that work together",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"goiabaseeds": "bin/goiabaseeds.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"test": "node --test tests/*.test.js",
|
|
11
|
+
"lint": "eslint src/ bin/ tests/",
|
|
12
|
+
"version": "node -e \"require('fs').writeFileSync('templates/_goiabaseeds/.goiabaseeds-version', require('./package.json').version + '\\n')\" && git add templates/_goiabaseeds/.goiabaseeds-version"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"claude-code",
|
|
16
|
+
"ai-agents",
|
|
17
|
+
"multi-agent",
|
|
18
|
+
"orchestration",
|
|
19
|
+
"departments"
|
|
20
|
+
],
|
|
21
|
+
"author": "Neto Ribeiro (https://github.com/netoribeiro)",
|
|
22
|
+
"homepage": "https://github.com/netoribeiro/goiabaseeds#readme",
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "git+https://github.com/netoribeiro/goiabaseeds.git"
|
|
26
|
+
},
|
|
27
|
+
"bugs": {
|
|
28
|
+
"url": "https://github.com/netoribeiro/goiabaseeds/issues"
|
|
29
|
+
},
|
|
30
|
+
"license": "MIT",
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=20.0.0"
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"bin/",
|
|
36
|
+
"src/",
|
|
37
|
+
"agents/",
|
|
38
|
+
"skills/",
|
|
39
|
+
"templates/"
|
|
40
|
+
],
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"@ai-sdk/anthropic": "^1.0.0",
|
|
43
|
+
"@ai-sdk/google": "^1.0.0",
|
|
44
|
+
"@ai-sdk/openai": "^1.0.0",
|
|
45
|
+
"@inquirer/checkbox": "^5.1.0",
|
|
46
|
+
"@inquirer/input": "^5.0.0",
|
|
47
|
+
"@inquirer/select": "^5.1.0",
|
|
48
|
+
"ai": "^4.0.0",
|
|
49
|
+
"yaml": "^2.7.0",
|
|
50
|
+
"zod": "^3.23.0"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@eslint/js": "^10.0.1",
|
|
54
|
+
"eslint": "^10.0.3",
|
|
55
|
+
"globals": "^17.4.0"
|
|
56
|
+
},
|
|
57
|
+
"main": "eslint.config.js",
|
|
58
|
+
"directories": {
|
|
59
|
+
"test": "tests"
|
|
60
|
+
}
|
|
61
|
+
}
|
package/skills/README.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# GoiabaSeeds Skill Catalog
|
|
2
|
+
|
|
3
|
+
Browse available skills for your departments. Install any skill with:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npx goiabaseeds install <skill-name>
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Available Skills
|
|
10
|
+
|
|
11
|
+
| Skill | Type | Description | Env Vars | Install |
|
|
12
|
+
|-------|------|-------------|----------|---------|
|
|
13
|
+
| [apify](./apify/) | mcp | Web scraping and automation platform. Extract data from any website using pre-built Actors. | `APIFY_TOKEN` | `npx goiabaseeds install apify` |
|
|
14
|
+
| [canva](./canva/) | mcp | Create, search, autofill, and export designs from Canva. | _(none -- OAuth)_ | `npx goiabaseeds install canva` |
|
|
15
|
+
| [instagram-publisher](./instagram-publisher/) | script | Publish Instagram carousel posts from local JPEG images via the Graph API. | `INSTAGRAM_ACCESS_TOKEN`, `INSTAGRAM_USER_ID` | `npx goiabaseeds install instagram-publisher` |
|
|
16
|
+
| [blotato](./blotato/) | mcp | Publish and schedule posts across Instagram, LinkedIn, Twitter/X, TikTok, YouTube, and more. | `BLOTATO_API_KEY` | `npx goiabaseeds install blotato` |
|
|
17
|
+
| [image-fetcher](./image-fetcher/) | hybrid | Acquire visual assets via web search, live screenshots (Playwright), and user-provided files. | _(none)_ | `npx goiabaseeds install image-fetcher` |
|
|
18
|
+
| [image-creator](./image-creator/) | mcp | Render HTML/CSS into production-ready PNG images via Playwright. | _(none)_ | `npx goiabaseeds install image-creator` |
|
|
19
|
+
| [image-generator](./image-generator/) | script | Generate AI images via Openrouter API. Test mode (cheap) and production mode (high-quality). Supports reference images for brand consistency. | `OPENROUTER_API_KEY` | `npx goiabaseeds install image-generator` |
|
|
20
|
+
|
|
21
|
+
## Skill Types
|
|
22
|
+
|
|
23
|
+
- **mcp** -- Connects to an external MCP server (stdio or HTTP transport)
|
|
24
|
+
- **script** -- Runs a local script (Node.js, Python, etc.)
|
|
25
|
+
- **hybrid** -- Combines MCP server access with local script capabilities
|
|
26
|
+
|
|
27
|
+
## Directory Structure
|
|
28
|
+
|
|
29
|
+
Each skill lives in its own folder with a `SKILL.md` file:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
skills/
|
|
33
|
+
apify/
|
|
34
|
+
SKILL.md
|
|
35
|
+
canva/
|
|
36
|
+
SKILL.md
|
|
37
|
+
instagram-publisher/
|
|
38
|
+
SKILL.md
|
|
39
|
+
scripts/
|
|
40
|
+
publish.js
|
|
41
|
+
blotato/
|
|
42
|
+
SKILL.md
|
|
43
|
+
image-fetcher/
|
|
44
|
+
SKILL.md
|
|
45
|
+
image-creator/
|
|
46
|
+
SKILL.md
|
|
47
|
+
image-generator/
|
|
48
|
+
SKILL.md
|
|
49
|
+
scripts/
|
|
50
|
+
generate.py
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
The `SKILL.md` file contains YAML frontmatter (name, type, version, MCP/script config, env vars, categories) and a Markdown body with usage instructions and available operations.
|
|
54
|
+
|
|
55
|
+
## Adding a New Skill
|
|
56
|
+
|
|
57
|
+
1. Create a new folder under `skills/` with the skill ID as the name
|
|
58
|
+
2. Add a `SKILL.md` file with valid YAML frontmatter and Markdown body
|
|
59
|
+
3. If the skill includes scripts, place them in a `scripts/` subfolder
|
|
60
|
+
4. Update this README to include the new skill in the catalog table
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: apify
|
|
3
|
+
description: >
|
|
4
|
+
Web scraping and automation platform. Extract data from any website,
|
|
5
|
+
run pre-built scrapers (Actors), and automate web workflows using
|
|
6
|
+
thousands of ready-made tools from the Apify Store.
|
|
7
|
+
description_pt-BR: >
|
|
8
|
+
Plataforma de web scraping e automação. Extraia dados de qualquer site,
|
|
9
|
+
execute scrapers prontos (Actors) e automatize fluxos de trabalho web
|
|
10
|
+
com milhares de ferramentas da Apify Store.
|
|
11
|
+
description_es: >
|
|
12
|
+
Plataforma de web scraping y automatización. Extrae datos de cualquier sitio web,
|
|
13
|
+
ejecuta scrapers prediseñados (Actors) y automatiza flujos de trabajo web
|
|
14
|
+
con miles de herramientas de la Apify Store.
|
|
15
|
+
type: mcp
|
|
16
|
+
version: "1.0.0"
|
|
17
|
+
mcp:
|
|
18
|
+
server_name: apify
|
|
19
|
+
command: npx
|
|
20
|
+
args: ["-y", "@apify/actors-mcp-server@latest"]
|
|
21
|
+
env:
|
|
22
|
+
- APIFY_TOKEN
|
|
23
|
+
categories: [scraping, data, automation]
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# Apify Web Scraper
|
|
27
|
+
|
|
28
|
+
## When to use
|
|
29
|
+
|
|
30
|
+
Use Apify when you need to extract data from websites, scrape social media profiles, run search engine queries, or automate web data collection workflows. Apify provides thousands of pre-built scrapers (called Actors) that handle common scraping tasks out of the box.
|
|
31
|
+
|
|
32
|
+
## Instructions
|
|
33
|
+
|
|
34
|
+
You have access to Apify tools for web scraping and data extraction.
|
|
35
|
+
|
|
36
|
+
### Key capabilities
|
|
37
|
+
|
|
38
|
+
- Use Apify Actors (pre-built scrapers) to extract data from websites
|
|
39
|
+
- Popular Actors: web-scraper, instagram-scraper, google-search-scraper, youtube-scraper, twitter-scraper, tiktok-scraper
|
|
40
|
+
- Each Actor has its own input schema -- check documentation before running
|
|
41
|
+
|
|
42
|
+
### Best practices
|
|
43
|
+
|
|
44
|
+
- Start with the simplest Actor that meets the need
|
|
45
|
+
- Use `maxItems` to limit results and avoid excessive costs
|
|
46
|
+
- Check Actor pricing before running (some have per-result costs)
|
|
47
|
+
- Parse results and extract only the fields you need
|
|
48
|
+
|
|
49
|
+
## Available operations
|
|
50
|
+
|
|
51
|
+
- **Run Actor** -- Execute any Apify Actor with custom input parameters
|
|
52
|
+
- **Web Scraping** -- Extract structured data from any website
|
|
53
|
+
- **Social Media Scraping** -- Scrape profiles, posts, and engagement data from Instagram, YouTube, Twitter/X, TikTok
|
|
54
|
+
- **Search Scraping** -- Run Google, Bing, or other search engine queries and collect results
|
|
55
|
+
- **Data Export** -- Retrieve scraped datasets in JSON format
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: blotato
|
|
3
|
+
description: >
|
|
4
|
+
Social media publishing and scheduling platform.
|
|
5
|
+
Publish and schedule posts across Instagram, LinkedIn, Twitter/X,
|
|
6
|
+
TikTok, YouTube, and more. Upload media and monitor post status.
|
|
7
|
+
description_pt-BR: >
|
|
8
|
+
Plataforma de publicação e agendamento em redes sociais.
|
|
9
|
+
Publique e agende posts no Instagram, LinkedIn, Twitter/X,
|
|
10
|
+
TikTok, YouTube e mais. Faça upload de mídia e monitore o status dos posts.
|
|
11
|
+
description_es: >
|
|
12
|
+
Plataforma de publicación y programación en redes sociales.
|
|
13
|
+
Publica y programa posts en Instagram, LinkedIn, Twitter/X,
|
|
14
|
+
TikTok, YouTube y más. Sube contenido multimedia y monitorea el estado de los posts.
|
|
15
|
+
type: mcp
|
|
16
|
+
version: "1.0.0"
|
|
17
|
+
mcp:
|
|
18
|
+
server_name: blotato
|
|
19
|
+
transport: http
|
|
20
|
+
url: "https://mcp.blotato.com/mcp"
|
|
21
|
+
headers:
|
|
22
|
+
blotato-api-key: BLOTATO_API_KEY
|
|
23
|
+
env:
|
|
24
|
+
- BLOTATO_API_KEY
|
|
25
|
+
categories: [social-media, automation, publishing, scheduling]
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# Blotato Publisher
|
|
29
|
+
|
|
30
|
+
## When to use
|
|
31
|
+
|
|
32
|
+
Use Blotato when you need to publish or schedule social media posts across multiple platforms from a single interface. Blotato supports Instagram, LinkedIn, Twitter/X, TikTok, YouTube, and more. It handles media uploads, post scheduling, and status monitoring.
|
|
33
|
+
|
|
34
|
+
## Instructions
|
|
35
|
+
|
|
36
|
+
You have access to Blotato for social media publishing.
|
|
37
|
+
|
|
38
|
+
### Key workflow
|
|
39
|
+
|
|
40
|
+
1. Use `blotato_list_accounts` to get account IDs and platforms
|
|
41
|
+
2. If post includes images or videos, upload them with `blotato_upload_media` first and use the returned media IDs in `blotato_create_post`
|
|
42
|
+
3. Use `blotato_create_post` to publish or schedule
|
|
43
|
+
4. Use `blotato_get_post_status` to confirm success
|
|
44
|
+
|
|
45
|
+
### Best practices
|
|
46
|
+
|
|
47
|
+
- Always call `blotato_list_accounts` first to get valid account IDs
|
|
48
|
+
- For scheduled posts, use ISO 8601 format for datetime
|
|
49
|
+
- After posting, poll `blotato_get_post_status` until status is "published" or "scheduled"
|
|
50
|
+
- If status is "failed", report the error details to the user
|
|
51
|
+
|
|
52
|
+
### Requirements
|
|
53
|
+
|
|
54
|
+
- Blotato account required (blotato.com)
|
|
55
|
+
- API key must be configured (Blotato Settings > API section)
|
|
56
|
+
|
|
57
|
+
## Available operations
|
|
58
|
+
|
|
59
|
+
- **List Accounts** -- Retrieve connected social media accounts and their platform types
|
|
60
|
+
- **Upload Media** -- Upload images and videos for use in posts
|
|
61
|
+
- **Create Post** -- Publish or schedule a post to one or more platforms
|
|
62
|
+
- **Get Post Status** -- Monitor publishing status (published, scheduled, failed)
|
|
63
|
+
- **Multi-platform Publishing** -- Post the same content across Instagram, LinkedIn, Twitter/X, TikTok, YouTube simultaneously
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: canva
|
|
3
|
+
description: >
|
|
4
|
+
Create, search, autofill, and export designs from Canva.
|
|
5
|
+
Enables agents to generate visual content, fill templates
|
|
6
|
+
with brand assets, and export in various formats.
|
|
7
|
+
description_pt-BR: >
|
|
8
|
+
Crie, busque, preencha e exporte designs do Canva.
|
|
9
|
+
Permite que agentes gerem conteúdo visual, preencham templates
|
|
10
|
+
com assets da marca e exportem em diversos formatos.
|
|
11
|
+
description_es: >
|
|
12
|
+
Crea, busca, completa y exporta diseños de Canva.
|
|
13
|
+
Permite que los agentes generen contenido visual, completen plantillas
|
|
14
|
+
con recursos de marca y exporten en diversos formatos.
|
|
15
|
+
type: mcp
|
|
16
|
+
version: "1.0.0"
|
|
17
|
+
mcp:
|
|
18
|
+
server_name: canva
|
|
19
|
+
transport: http
|
|
20
|
+
url: "https://mcp.canva.com/mcp"
|
|
21
|
+
categories: [design, ui, assets, automation]
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Canva Connect
|
|
25
|
+
|
|
26
|
+
## When to use
|
|
27
|
+
|
|
28
|
+
Use Canva when you need to create, search, or export visual designs. This skill connects to the user's Canva account via OAuth and enables agents to generate presentations, social media posts, logos, and other visual content. It also supports autofilling templates with brand assets and exporting designs in various formats.
|
|
29
|
+
|
|
30
|
+
## Instructions
|
|
31
|
+
|
|
32
|
+
You have access to Canva through the Canva Connect MCP server.
|
|
33
|
+
|
|
34
|
+
### Key capabilities
|
|
35
|
+
|
|
36
|
+
- Create new designs (presentations, social posts, logos, etc.)
|
|
37
|
+
- Autofill templates with content (text, images, brand elements)
|
|
38
|
+
- Search existing designs in the user's Canva account
|
|
39
|
+
- Export designs as PDF or image files
|
|
40
|
+
|
|
41
|
+
### Best practices
|
|
42
|
+
|
|
43
|
+
- Use templates when possible -- faster and more on-brand
|
|
44
|
+
- When autofilling, match content to template placeholder names
|
|
45
|
+
- Export in the format most useful for the pipeline (PNG for social, PDF for documents)
|
|
46
|
+
- Respect the user's Canva plan limitations (some features require paid plans)
|
|
47
|
+
|
|
48
|
+
### Requirements
|
|
49
|
+
|
|
50
|
+
- User needs a Canva account (free or paid)
|
|
51
|
+
- OAuth authorization is required on first use (browser popup)
|
|
52
|
+
- Autofill templates require a Canva paid plan
|
|
53
|
+
|
|
54
|
+
## Available operations
|
|
55
|
+
|
|
56
|
+
- **Create Design** -- Generate new designs from scratch or templates
|
|
57
|
+
- **Search Designs** -- Find existing designs in the user's Canva account
|
|
58
|
+
- **Autofill Template** -- Fill template placeholders with text, images, and brand elements
|
|
59
|
+
- **Export Design** -- Export designs as PDF, PNG, JPG, or other formats
|
|
60
|
+
- **Browse Templates** -- Search Canva's template library for the right starting point
|