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.
Files changed (129) hide show
  1. package/README.md +173 -0
  2. package/bin/goiabaseeds.js +98 -0
  3. package/eslint.config.js +14 -0
  4. package/package.json +61 -0
  5. package/skills/README.md +60 -0
  6. package/skills/apify/SKILL.md +55 -0
  7. package/skills/blotato/SKILL.md +63 -0
  8. package/skills/canva/SKILL.md +60 -0
  9. package/skills/goiabaseeds-agent-creator/SKILL.md +192 -0
  10. package/skills/goiabaseeds-skill-creator/SKILL.md +407 -0
  11. package/skills/goiabaseeds-skill-creator/agents/analyzer.md +274 -0
  12. package/skills/goiabaseeds-skill-creator/agents/comparator.md +202 -0
  13. package/skills/goiabaseeds-skill-creator/agents/grader.md +223 -0
  14. package/skills/goiabaseeds-skill-creator/assets/eval_review.html +146 -0
  15. package/skills/goiabaseeds-skill-creator/eval-viewer/generate_review.py +471 -0
  16. package/skills/goiabaseeds-skill-creator/eval-viewer/viewer.html +1325 -0
  17. package/skills/goiabaseeds-skill-creator/references/schemas.md +430 -0
  18. package/skills/goiabaseeds-skill-creator/references/skill-format.md +235 -0
  19. package/skills/goiabaseeds-skill-creator/scripts/__init__.py +0 -0
  20. package/skills/goiabaseeds-skill-creator/scripts/aggregate_benchmark.py +401 -0
  21. package/skills/goiabaseeds-skill-creator/scripts/quick_validate.py +103 -0
  22. package/skills/goiabaseeds-skill-creator/scripts/run_eval.py +310 -0
  23. package/skills/goiabaseeds-skill-creator/scripts/utils.py +47 -0
  24. package/skills/image-creator/SKILL.md +155 -0
  25. package/skills/image-fetcher/SKILL.md +91 -0
  26. package/skills/image-generator/SKILL.md +124 -0
  27. package/skills/image-generator/scripts/generate.py +175 -0
  28. package/skills/instagram-publisher/SKILL.md +118 -0
  29. package/skills/instagram-publisher/scripts/publish.js +164 -0
  30. package/src/agent-session.js +110 -0
  31. package/src/agents-cli.js +158 -0
  32. package/src/agents.js +134 -0
  33. package/src/bundle-detector.js +75 -0
  34. package/src/bundle.js +286 -0
  35. package/src/context.js +142 -0
  36. package/src/export.js +52 -0
  37. package/src/i18n.js +48 -0
  38. package/src/init.js +367 -0
  39. package/src/locales/en.json +72 -0
  40. package/src/locales/es.json +71 -0
  41. package/src/locales/pt-BR.json +71 -0
  42. package/src/logger.js +38 -0
  43. package/src/models-cli.js +165 -0
  44. package/src/pipeline-runner.js +478 -0
  45. package/src/prompt.js +46 -0
  46. package/src/provider.js +156 -0
  47. package/src/readme/README.md +181 -0
  48. package/src/run.js +100 -0
  49. package/src/runs.js +90 -0
  50. package/src/skills-cli.js +157 -0
  51. package/src/skills.js +146 -0
  52. package/src/state-manager.js +280 -0
  53. package/src/tools.js +158 -0
  54. package/src/update.js +140 -0
  55. package/templates/_goiabaseeds/.goiabaseeds-version +1 -0
  56. package/templates/_goiabaseeds/_investigations/.gitkeep +0 -0
  57. package/templates/_goiabaseeds/config/playwright.config.json +11 -0
  58. package/templates/_goiabaseeds/core/architect.agent.yaml +1141 -0
  59. package/templates/_goiabaseeds/core/best-practices/_catalog.yaml +116 -0
  60. package/templates/_goiabaseeds/core/best-practices/blog-post.md +132 -0
  61. package/templates/_goiabaseeds/core/best-practices/blog-seo.md +127 -0
  62. package/templates/_goiabaseeds/core/best-practices/copywriting.md +428 -0
  63. package/templates/_goiabaseeds/core/best-practices/data-analysis.md +401 -0
  64. package/templates/_goiabaseeds/core/best-practices/email-newsletter.md +118 -0
  65. package/templates/_goiabaseeds/core/best-practices/email-sales.md +110 -0
  66. package/templates/_goiabaseeds/core/best-practices/image-design.md +349 -0
  67. package/templates/_goiabaseeds/core/best-practices/instagram-feed.md +235 -0
  68. package/templates/_goiabaseeds/core/best-practices/instagram-reels.md +112 -0
  69. package/templates/_goiabaseeds/core/best-practices/instagram-stories.md +107 -0
  70. package/templates/_goiabaseeds/core/best-practices/linkedin-article.md +116 -0
  71. package/templates/_goiabaseeds/core/best-practices/linkedin-post.md +121 -0
  72. package/templates/_goiabaseeds/core/best-practices/researching.md +347 -0
  73. package/templates/_goiabaseeds/core/best-practices/review.md +269 -0
  74. package/templates/_goiabaseeds/core/best-practices/social-networks-publishing.md +294 -0
  75. package/templates/_goiabaseeds/core/best-practices/strategist.md +344 -0
  76. package/templates/_goiabaseeds/core/best-practices/technical-writing.md +363 -0
  77. package/templates/_goiabaseeds/core/best-practices/twitter-post.md +105 -0
  78. package/templates/_goiabaseeds/core/best-practices/twitter-thread.md +122 -0
  79. package/templates/_goiabaseeds/core/best-practices/whatsapp-broadcast.md +107 -0
  80. package/templates/_goiabaseeds/core/best-practices/youtube-script.md +122 -0
  81. package/templates/_goiabaseeds/core/best-practices/youtube-shorts.md +112 -0
  82. package/templates/_goiabaseeds/core/prompts/auguste.dupin.prompt.md +1008 -0
  83. package/templates/_goiabaseeds/core/runner.pipeline.md +467 -0
  84. package/templates/_goiabaseeds/core/skills.engine.md +381 -0
  85. package/templates/dashboard/index.html +12 -0
  86. package/templates/dashboard/package-lock.json +2082 -0
  87. package/templates/dashboard/package.json +28 -0
  88. package/templates/dashboard/src/App.tsx +46 -0
  89. package/templates/dashboard/src/components/DepartmentCard.tsx +47 -0
  90. package/templates/dashboard/src/components/DepartmentSelector.tsx +61 -0
  91. package/templates/dashboard/src/components/StatusBadge.tsx +32 -0
  92. package/templates/dashboard/src/components/StatusBar.tsx +97 -0
  93. package/templates/dashboard/src/hooks/useDepartmentSocket.ts +84 -0
  94. package/templates/dashboard/src/lib/formatTime.ts +16 -0
  95. package/templates/dashboard/src/lib/normalizeState.ts +25 -0
  96. package/templates/dashboard/src/main.tsx +10 -0
  97. package/templates/dashboard/src/office/AgentDesk.tsx +151 -0
  98. package/templates/dashboard/src/office/HandoffEnvelope.tsx +108 -0
  99. package/templates/dashboard/src/office/OfficeScene.tsx +147 -0
  100. package/templates/dashboard/src/office/drawDesk.ts +263 -0
  101. package/templates/dashboard/src/office/drawFurniture.ts +129 -0
  102. package/templates/dashboard/src/office/drawRoom.ts +51 -0
  103. package/templates/dashboard/src/office/palette.ts +181 -0
  104. package/templates/dashboard/src/office/textures.ts +254 -0
  105. package/templates/dashboard/src/plugin/departmentWatcher.ts +210 -0
  106. package/templates/dashboard/src/store/useDepartmentStore.ts +56 -0
  107. package/templates/dashboard/src/styles/globals.css +36 -0
  108. package/templates/dashboard/src/types/state.ts +64 -0
  109. package/templates/dashboard/src/vite-env.d.ts +1 -0
  110. package/templates/dashboard/tsconfig.json +24 -0
  111. package/templates/dashboard/vite.config.ts +13 -0
  112. package/templates/departments/.gitkeep +0 -0
  113. package/templates/ide-templates/antigravity/.agent/rules/goiabaseeds.md +55 -0
  114. package/templates/ide-templates/antigravity/.agent/workflows/goiabaseeds.md +102 -0
  115. package/templates/ide-templates/claude-code/.claude/skills/goiabaseeds/SKILL.md +182 -0
  116. package/templates/ide-templates/claude-code/.mcp.json +8 -0
  117. package/templates/ide-templates/claude-code/CLAUDE.md +43 -0
  118. package/templates/ide-templates/codex/.agents/skills/goiabaseeds/SKILL.md +6 -0
  119. package/templates/ide-templates/codex/AGENTS.md +105 -0
  120. package/templates/ide-templates/cursor/.cursor/commands/goiabaseeds.md +9 -0
  121. package/templates/ide-templates/cursor/.cursor/mcp.json +8 -0
  122. package/templates/ide-templates/cursor/.cursor/rules/goiabaseeds.mdc +48 -0
  123. package/templates/ide-templates/cursor/.cursorignore +3 -0
  124. package/templates/ide-templates/opencode/.opencode/commands/goiabaseeds.md +9 -0
  125. package/templates/ide-templates/opencode/AGENTS.md +105 -0
  126. package/templates/ide-templates/vscode-copilot/.github/prompts/goiabaseeds.prompt.md +201 -0
  127. package/templates/ide-templates/vscode-copilot/.vscode/mcp.json +8 -0
  128. package/templates/ide-templates/vscode-copilot/.vscode/settings.json +3 -0
  129. 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
+ }
@@ -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
+ }
@@ -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