Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 2 additions & 50 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,58 +1,10 @@
{
"name": "growthOS",
"version": "1.0.0",
"description": "Autonomous marketing team for Claude Code — 9 AI agents, 20 skills, 4 MCP servers, one /grow command",
"description": "Autonomous marketing team for Claude Code — 12 AI agents, 26 skills, 4 MCP servers, one /grow command",
"author": {
"name": "GrowthOS Community"
},
"license": "MIT",
"repository": "https://github.com/melgarafael/growthOS",
"skills": [
{"path": "skills/marketing-strategy"},
{"path": "skills/copywriting"},
{"path": "skills/seo-growth"},
{"path": "skills/content-creation"},
{"path": "skills/social-media-management"},
{"path": "skills/competitive-intelligence"},
{"path": "skills/video-production"},
{"path": "skills/landing-page-design"},
{"path": "skills/platform-mastery"},
{"path": "skills/instagram-carousel"},
{"path": "skills/remotion-video"},
{"path": "skills/remotion-pro"},
{"path": "skills/showcase-before-after"},
{"path": "skills/showcase-course-trailer"},
{"path": "skills/showcase-data-story"},
{"path": "skills/showcase-feature-highlight"},
{"path": "skills/showcase-product-demo"},
{"path": "skills/showcase-social-proof"},
{"path": "skills/showcase-tech-terminal"},
{"path": "skills/showcase-walkthrough"}
],
"agents": [
{"path": "agents/cmo"},
{"path": "agents/growth-strategist"},
{"path": "agents/content-creator"},
{"path": "agents/intelligence-analyst"},
{"path": "agents/visual-designer"},
{"path": "agents/social-publisher"},
{"path": "agents/growth-engineer"},
{"path": "agents/carousel-designer"},
{"path": "agents/video-producer"}
],
"hooks": [
{"path": "hooks/audit-logger.md"},
{"path": "hooks/circuit-breaker.md"},
{"path": "hooks/preview-before-publish.md"},
{"path": "hooks/dry-run-guard.md"}
],
"commands": [
{"path": "commands/grow"}
],
"mcp-servers": [
{"path": "mcp-servers/mcp-social-publish"},
{"path": "mcp-servers/mcp-social-discover"},
{"path": "mcp-servers/mcp-obsidian-vault"},
{"path": "mcp-servers/mcp-remotion-render"}
]
"repository": "https://github.com/melgarafael/growthOS"
}
73 changes: 51 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ GrowthOS turns Claude Code into a full-stack growth engine: strategy, content cr

## Installation

> GrowthOS is distributed **only via `git clone`** — it is not published on the Claude Code marketplace. The `install.sh` script wires the cloned repo into `~/.claude/plugins/growthOS` so Claude Code discovers every skill, agent, command, and hook as a real slash command (`/grow`, `/growthOS:<skill>`).
> GrowthOS is distributed **only via `git clone`** — it is not published on the public Claude Code marketplace. The repo ships its own **local marketplace manifest** (`.claude-plugin/marketplace.json`), and `install.sh` registers it and installs the plugin from it, so Claude Code discovers every skill, agent and command as a real slash command (`/grow`, `/growthOS:<skill>`).
>
> Dropping the repo (or a symlink to it) into `~/.claude/plugins/` does **not** work — that directory is Claude Code's own managed state, not a discovery path.

### What do I need to install?

Expand All @@ -47,7 +49,10 @@ cd growthOS

What the installer does:

- Creates a symlink `~/.claude/plugins/growthOS → <your clone>` (standard Claude Code plugin discovery path).
- Validates the manifests (`claude plugin validate .`) and aborts if they are malformed.
- Registers the clone as a local marketplace (`claude plugin marketplace add <your clone>`).
- Installs the plugin from it (`claude plugin install growthOS@growthOS`).
- Removes the obsolete `~/.claude/plugins/growthOS` symlink left by older installers.
- Copies `brand-voice.example.yaml` → `brand-voice.yaml` if you don't have one yet.
- Prints next steps.

Expand Down Expand Up @@ -94,17 +99,30 @@ It writes to `brand-voice.yaml`, which all agents read to stay on-brand. That fi
### Uninstall

```bash
rm ~/.claude/plugins/growthOS
claude plugin uninstall growthOS@growthOS
claude plugin marketplace remove growthOS
```

### Troubleshooting — slash commands not showing up

If `/grow` or `/growthOS:<skill>` do not appear after install:

1. Confirm the symlink exists: `ls -la ~/.claude/plugins/growthOS`
2. Confirm the manifest: `cat ~/.claude/plugins/growthOS/.claude-plugin/plugin.json`
3. Fully restart Claude Code (not just reload — exit the session and reopen).
4. Inside Claude Code, run `/help` to list loaded plugins.
1. Confirm the plugin is installed **and enabled**: `claude plugin list` — you should see `growthOS@growthOS` with `Status: enabled`.
2. Confirm what actually loaded: `claude plugin details growthOS` — it must list `grow` plus the agents and skills. If a section shows `(0)`, the manifest or the file layout is wrong, not the install.
3. Validate the manifests: `claude plugin validate .` — it must pass.
4. Fully restart Claude Code (not just reload — exit the session and reopen).

**After editing this repo**, the installed copy is a snapshot under `~/.claude/plugins/cache/` and does not track your edits. Re-sync it:

```bash
claude plugin marketplace update growthOS && claude plugin update growthOS@growthOS
# if the version did not change, the update is a no-op — reinstall instead:
claude plugin uninstall growthOS@growthOS && claude plugin install growthOS@growthOS -y
```

**File layout matters.** Claude Code discovers components by convention:
`commands/<name>.md`, `agents/<name>.md`, `skills/<name>/SKILL.md`.
A command at `commands/grow/COMMAND.md` does **not** register as `/grow`.

---

Expand Down Expand Up @@ -239,22 +257,27 @@ Or just run `/grow setup` and the wizard handles it for you.

```
growthOS/
├── plugin.json # Plugin manifest (entry point)
├── .claude-plugin/
│ ├── plugin.json # Plugin manifest (what Claude Code reads)
│ └── marketplace.json # Local marketplace used by install.sh
├── brand-voice.example.yaml # Brand config template
├── .env.example # Environment variables template
├── agents/ # 9 AI agents
│ ├── cmo/ # CMO — intent router
│ ├── growth-strategist/ # Strategic planning
│ ├── content-creator/ # Content production
│ ├── intelligence-analyst/ # Competitive intel
│ ├── visual-designer/ # Visual assets
│ ├── social-publisher/ # Social media ops
│ ├── growth-engineer/ # Technical growth
│ ├── carousel-designer/ # Carousel generation
│ └── video-producer/ # Video production
├── agents/ # 12 AI agents (one .md per agent)
│ ├── cmo.md # CMO — intent router
│ ├── growth-strategist.md # Strategic planning
│ ├── content-creator.md # Content production
│ ├── intelligence-analyst.md # Competitive intel
│ ├── visual-designer.md # Visual assets
│ ├── social-publisher.md # Social media ops
│ ├── growth-engineer.md # Technical growth
│ ├── carousel-designer.md # Carousel generation
│ ├── caption-writer.md # Instagram captions
│ ├── sales-page-architect.md # Sales page structure
│ ├── sales-page-qa.md # Sales page QA
│ └── video-producer.md # Video production
├── skills/ # 20 specialized skills
├── skills/ # 26 specialized skills
│ ├── marketing-strategy/ # Core skills (11)
│ ├── copywriting/
│ ├── seo-growth/
Expand All @@ -274,7 +297,13 @@ growthOS/
│ ├── showcase-product-demo/
│ ├── showcase-social-proof/
│ ├── showcase-tech-terminal/
│ └── showcase-walkthrough/
│ ├── showcase-walkthrough/
│ ├── sales-page/ # Sales page system (6)
│ ├── sales-page-discovery/
│ ├── sales-page-research/
│ ├── sales-page-visual-psychology/
│ ├── sales-page-narrative/
│ └── sales-page-builder/
├── mcp-servers/ # 4 MCP servers (Python/FastMCP)
│ ├── mcp-social-publish/ # Publish to 5 platforms
Expand All @@ -299,8 +328,8 @@ growthOS/
│ ├── preview-before-publish.md# Preview before sending
│ └── dry-run-guard.md # Block real calls in dry-run
├── commands/ # CLI commands
│ └── grow/ # /grow entry point + setup
├── commands/ # Slash commands (one .md per command)
│ └── grow.md # /grow entry point
├── remotion/ # Video rendering engine
│ └── src/
Expand Down
3 changes: 0 additions & 3 deletions agents/README.md

This file was deleted.

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
1 change: 0 additions & 1 deletion commands/README.md

This file was deleted.

2 changes: 1 addition & 1 deletion commands/grow/COMMAND.md → commands/grow.md
Original file line number Diff line number Diff line change
Expand Up @@ -475,7 +475,7 @@ Quando o UiUX Expert terminar, o arquivo novo aparece em `design-system/` e voc
#### Subcommand: `free-content`

**Syntax:** `/grow free-content [source]`
**Docs:** `growthOS/commands/grow/FREE-CONTENT.md`
**Docs:** `growthOS/docs/grow/FREE-CONTENT.md`

Bridge from Educational Team (TIM) to GrowthOS. Dispatches `Orquestrador - Educational team` via Maestri to transcribe a lesson/video and extract viral chunks, then pipes each chunk into the normal carousel pipeline via `content-factory` skill.

Expand Down
1 change: 0 additions & 1 deletion commands/grow/README.md

This file was deleted.

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
4 changes: 2 additions & 2 deletions docs/guides/ARCHITECTURE-GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ produzir scripts de video e orquestrar campanhas -- tudo a partir de linguagem n
v
+------------------------------+
| COMMAND INTERFACE |
| commands/grow/COMMAND.md |
| commands/grow.md |
| |
| 1. First-run detection |
| 2. Parse argumentos |
Expand Down Expand Up @@ -219,7 +219,7 @@ produzir scripts de video e orquestrar campanhas -- tudo a partir de linguagem n

### Camada 1: Command Interface

**Localizacao:** `commands/grow/COMMAND.md`
**Localizacao:** `commands/grow.md`

A camada de entrada do sistema. O comando `/grow` e o unico ponto de interacao
do usuario com o GrowthOS.
Expand Down
2 changes: 1 addition & 1 deletion docs/qa/GROWTHOS-TEST-PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@
### Verificacoes:
1. CMO router.md referencia agentes que existem em agents/
2. COMMAND.md subcommands delegam a agentes que existem
3. plugin.json commands[] → commands/grow/ existe
3. plugin.json por convenção → commands/grow.md existe
4. plugin.json skills[] → skills/*/ existem
5. plugin.json agents[] → agents/*/ existem
6. plugin.json hooks[] → hooks/*.md existem
Expand Down
80 changes: 41 additions & 39 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
# GrowthOS installer
#
# Why this exists:
# GrowthOS is distributed as a git repo (NOT via the Claude
# Code marketplace). Cloning alone is not enough — Claude Code
# only discovers plugins that live inside its plugin directory
# (~/.claude/plugins/<plugin-name>). This script symlinks the
# cloned repo into that directory so all skills, agents,
# commands and hooks become available as slash commands like
# /grow and /growthOS:<skill>.
# Claude Code does NOT discover plugins by their presence in
# ~/.claude/plugins/<name> — that directory is Claude Code's
# own managed state (cache/, marketplaces/, installed_plugins.json).
# A plugin is discovered only when it is registered as a
# marketplace and installed from it. This repo ships its own
# local marketplace manifest (.claude-plugin/marketplace.json),
# so the two commands below are all that is needed.
#
# Usage:
# git clone https://github.com/melgarafael/growthOS.git
Expand All @@ -20,13 +20,10 @@
set -euo pipefail

REPO_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PLUGIN_NAME="growthOS"
CLAUDE_PLUGINS_DIR="${HOME}/.claude/plugins"
TARGET="${CLAUDE_PLUGINS_DIR}/${PLUGIN_NAME}"
PLUGIN_ID="growthOS@growthOS"

echo "→ GrowthOS installer"
echo " repo: ${REPO_DIR}"
echo " target: ${TARGET}"
echo " repo: ${REPO_DIR}"
echo

# Sanity: must be run from inside the repo
Expand All @@ -35,28 +32,28 @@ if [[ ! -f "${REPO_DIR}/.claude-plugin/plugin.json" ]]; then
exit 1
fi

mkdir -p "${CLAUDE_PLUGINS_DIR}"

# If target already exists, handle gracefully
if [[ -L "${TARGET}" ]]; then
CURRENT="$(readlink "${TARGET}")"
if [[ "${CURRENT}" == "${REPO_DIR}" ]]; then
echo "✓ already linked to this repo — nothing to do."
exit 0
fi
echo "! ${TARGET} is a symlink pointing elsewhere (${CURRENT})."
read -r -p " replace it? [y/N] " ans
[[ "${ans}" =~ ^[Yy]$ ]] || { echo "aborted."; exit 1; }
rm "${TARGET}"
elif [[ -e "${TARGET}" ]]; then
echo "! ${TARGET} already exists and is not a symlink."
read -r -p " back it up to ${TARGET}.bak and replace? [y/N] " ans
[[ "${ans}" =~ ^[Yy]$ ]] || { echo "aborted."; exit 1; }
mv "${TARGET}" "${TARGET}.bak"
if ! command -v claude >/dev/null 2>&1; then
echo "✗ the 'claude' CLI is not on PATH — install Claude Code first." >&2
exit 1
fi

# Fail fast on a malformed manifest instead of installing something broken
echo "→ validating manifests…"
claude plugin validate "${REPO_DIR}"

# Remove the symlink left behind by older versions of this installer
LEGACY_LINK="${HOME}/.claude/plugins/growthOS"
if [[ -L "${LEGACY_LINK}" ]]; then
rm "${LEGACY_LINK}"
echo "✓ removed legacy symlink ${LEGACY_LINK} (no longer used)"
fi

ln -s "${REPO_DIR}" "${TARGET}"
echo "✓ linked ${TARGET} → ${REPO_DIR}"
echo "→ registering local marketplace…"
claude plugin marketplace add "${REPO_DIR}" --scope user 2>&1 | tail -1 || true
claude plugin marketplace update growthOS >/dev/null 2>&1 || true

echo "→ installing plugin…"
claude plugin install "${PLUGIN_ID}" --scope user -y

# Copy brand-voice template if user has not set one yet
if [[ ! -f "${REPO_DIR}/brand-voice.yaml" && -f "${REPO_DIR}/brand-voice.example.yaml" ]]; then
Expand All @@ -70,19 +67,24 @@ cat <<EOF
✓ GrowthOS installed.

Next steps:
1. Restart Claude Code (or open a new session) so it picks
up the new plugin.
1. Restart Claude Code (exit the session and open a new one).
2. Run the onboarding wizard:
/grow setup
3. List available skills / commands to verify:
/help
3. Verify what actually loaded:
claude plugin details growthOS

If the slash commands still don't appear:
- confirm the symlink: ls -la ~/.claude/plugins/growthOS
- confirm plugin.json: cat ~/.claude/plugins/growthOS/.claude-plugin/plugin.json
- claude plugin list # must show growthOS@growthOS as enabled
- claude plugin details growthOS # must list the commands, agents and skills
- claude plugin validate . # manifest must pass
- restart Claude Code fully.

After editing this repo, re-sync the installed copy:
claude plugin marketplace update growthOS && claude plugin update ${PLUGIN_ID}
(if the version did not change, reinstall: claude plugin uninstall ${PLUGIN_ID} && claude plugin install ${PLUGIN_ID} -y)

To uninstall:
rm ~/.claude/plugins/growthOS
claude plugin uninstall ${PLUGIN_ID}
claude plugin marketplace remove growthOS
──────────────────────────────────────────────────────────────
EOF
Loading