@nguyenphp/antigravity-marketing 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 +186 -0
- package/bin/index.js +340 -0
- package/package.json +47 -0
- package/templates/.agent/agents/analytics-specialist.md +67 -0
- package/templates/.agent/agents/content-creator.md +65 -0
- package/templates/.agent/agents/growth-specialist.md +60 -0
- package/templates/.agent/agents/marketing-strategist.md +51 -0
- package/templates/.agent/skills/ab-test-dashboard/SKILL.md +290 -0
- package/templates/.agent/skills/ad-creative-variations/SKILL.md +246 -0
- package/templates/.agent/skills/affiliate-marketing/SKILL.md +213 -0
- package/templates/.agent/skills/analytics-marketing/SKILL.md +252 -0
- package/templates/.agent/skills/branding-expert/SKILL.md +233 -0
- package/templates/.agent/skills/competitor-monitor/SKILL.md +266 -0
- package/templates/.agent/skills/competitor-teardown/SKILL.md +277 -0
- package/templates/.agent/skills/content-marketing/SKILL.md +215 -0
- package/templates/.agent/skills/content-repurposing/SKILL.md +287 -0
- package/templates/.agent/skills/conversion-optimization/SKILL.md +243 -0
- package/templates/.agent/skills/documentation-templates/SKILL.md +194 -0
- package/templates/.agent/skills/email-marketing/SKILL.md +241 -0
- package/templates/.agent/skills/frontend-design/SKILL.md +211 -0
- package/templates/.agent/skills/growth-hacking/SKILL.md +270 -0
- package/templates/.agent/skills/influencer-marketing/SKILL.md +210 -0
- package/templates/.agent/skills/keyword-research-deep/SKILL.md +246 -0
- package/templates/.agent/skills/lead-gen-scraper/SKILL.md +226 -0
- package/templates/.agent/skills/marketing-automation/SKILL.md +232 -0
- package/templates/.agent/skills/ppc-advertising/SKILL.md +259 -0
- package/templates/.agent/skills/seo-fundamentals/SKILL.md +129 -0
- package/templates/.agent/skills/social-media-expert/SKILL.md +241 -0
- package/templates/.agent/skills/tailwind-patterns/SKILL.md +200 -0
- package/templates/.agent/skills/ui-ux-pro-max/SKILL.md +244 -0
- package/templates/.agent/skills/video-marketing/SKILL.md +238 -0
- package/templates/.agent/workflows/analyze.md +88 -0
- package/templates/.agent/workflows/campaign.md +80 -0
- package/templates/.agent/workflows/content.md +85 -0
- package/templates/.agent/workflows/optimize.md +95 -0
package/README.md
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# 🚀 Antigravity Marketing Kit
|
|
2
|
+
|
|
3
|
+
> **24 marketing skills, 4 agents, and 4 workflows** for AI-powered marketing with Gemini CLI.
|
|
4
|
+
|
|
5
|
+
## 📋 Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Introduction](#-introduction)
|
|
8
|
+
- [Skills](#-skills)
|
|
9
|
+
- [Agents](#-agents)
|
|
10
|
+
- [Workflows](#-workflows)
|
|
11
|
+
- [Installation](#-installation)
|
|
12
|
+
- [Usage](#-usage)
|
|
13
|
+
- [Contributing](#-contributing)
|
|
14
|
+
- [License](#-license)
|
|
15
|
+
|
|
16
|
+
## 🎯 Introduction
|
|
17
|
+
|
|
18
|
+
Antigravity Marketing Kit is a comprehensive collection of marketing-focused skills, agents, and workflows designed to supercharge your AI-assisted marketing efforts.
|
|
19
|
+
|
|
20
|
+
> **Based on [Antigravity Kit](https://github.com/vudovn/antigravity-kit)** - the original CLI toolkit for AI agent skills.
|
|
21
|
+
|
|
22
|
+
This toolkit includes:
|
|
23
|
+
- **Skills** - Marketing domain expertise (Content, SEO, Social Media, Growth...)
|
|
24
|
+
- **Agents** - Specialized AI agents for marketing tasks
|
|
25
|
+
- **Workflows** - Step-by-step procedures for common marketing tasks
|
|
26
|
+
|
|
27
|
+
## 🙏 Credits
|
|
28
|
+
|
|
29
|
+
This project is built upon and includes skills from:
|
|
30
|
+
|
|
31
|
+
- 🚀 **[Antigravity Kit](https://github.com/vudovn/antigravity-kit)** - Base CLI structure and core skills
|
|
32
|
+
- 🎨 **[UI UX Pro Max](https://ui-ux-pro-max-skill.nextlevelbuilder.io/)** - Design intelligence skills (`ui-ux-pro-max`, `frontend-design`, `tailwind-patterns`)
|
|
33
|
+
- 🛠️ **[ClaudeKit](https://claudekit.cc/)** - Production-ready skills (`seo-fundamentals`, `documentation-templates`)
|
|
34
|
+
|
|
35
|
+
## 🧠 Skills (17)
|
|
36
|
+
|
|
37
|
+
### Content & Creative
|
|
38
|
+
| Skill | Description |
|
|
39
|
+
|-------|-------------|
|
|
40
|
+
| `content-marketing` | Content strategy, copywriting, storytelling |
|
|
41
|
+
| `branding-expert` | Brand identity, voice & tone, style guides |
|
|
42
|
+
| `video-marketing` | Video strategy, YouTube SEO, short-form content |
|
|
43
|
+
|
|
44
|
+
### Growth & Acquisition
|
|
45
|
+
| Skill | Description |
|
|
46
|
+
|-------|-------------|
|
|
47
|
+
| `growth-hacking` | Viral loops, referral programs, AARRR framework |
|
|
48
|
+
| `ppc-advertising` | Google Ads, Meta Ads, campaign optimization |
|
|
49
|
+
| `influencer-marketing` | Influencer outreach, KOL partnerships |
|
|
50
|
+
| `affiliate-marketing` | Affiliate programs, partner networks |
|
|
51
|
+
|
|
52
|
+
### Channels
|
|
53
|
+
| Skill | Description |
|
|
54
|
+
|-------|-------------|
|
|
55
|
+
| `social-media-expert` | Platform strategies (FB, IG, TikTok, LinkedIn) |
|
|
56
|
+
| `email-marketing` | Campaigns, sequences, automation, newsletters |
|
|
57
|
+
|
|
58
|
+
### Optimization & Analytics
|
|
59
|
+
| Skill | Description |
|
|
60
|
+
|-------|-------------|
|
|
61
|
+
| `seo-fundamentals` | SEO best practices, E-E-A-T, Core Web Vitals |
|
|
62
|
+
| `analytics-marketing` | KPIs, attribution, GA4, dashboards |
|
|
63
|
+
| `conversion-optimization` | CRO, A/B testing, landing pages |
|
|
64
|
+
| `marketing-automation` | Lead nurturing, workflows, segmentation |
|
|
65
|
+
|
|
66
|
+
### Design & Development
|
|
67
|
+
| Skill | Description |
|
|
68
|
+
|-------|-------------|
|
|
69
|
+
| `ui-ux-pro-max` | Design intelligence for marketing |
|
|
70
|
+
| `frontend-design` | Landing page & web design |
|
|
71
|
+
| `tailwind-patterns` | Utility-first CSS patterns |
|
|
72
|
+
| `documentation-templates` | Marketing documentation templates |
|
|
73
|
+
|
|
74
|
+
## 🤖 Agents (4)
|
|
75
|
+
|
|
76
|
+
| Agent | Description |
|
|
77
|
+
|-------|-------------|
|
|
78
|
+
| `marketing-strategist` | Overall marketing strategy orchestrator |
|
|
79
|
+
| `content-creator` | Content creation specialist |
|
|
80
|
+
| `growth-specialist` | Growth hacking specialist |
|
|
81
|
+
| `analytics-specialist` | Data analysis and insights |
|
|
82
|
+
|
|
83
|
+
## 🔄 Workflows (4)
|
|
84
|
+
|
|
85
|
+
| Command | Description |
|
|
86
|
+
|---------|-------------|
|
|
87
|
+
| `/campaign` | Create marketing campaign |
|
|
88
|
+
| `/content` | Content creation workflow |
|
|
89
|
+
| `/analyze` | Marketing analytics workflow |
|
|
90
|
+
| `/optimize` | Conversion optimization workflow |
|
|
91
|
+
|
|
92
|
+
## 📦 Installation
|
|
93
|
+
|
|
94
|
+
### Install Global (Recommended)
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# Install globally
|
|
98
|
+
npm install -g @nguyenphp/antigravity-marketing
|
|
99
|
+
|
|
100
|
+
# Navigate to your project
|
|
101
|
+
cd your-project
|
|
102
|
+
|
|
103
|
+
# Install .agent folder
|
|
104
|
+
ag-marketing-kit init
|
|
105
|
+
|
|
106
|
+
# Update to latest version
|
|
107
|
+
ag-marketing-kit update
|
|
108
|
+
|
|
109
|
+
# Check status
|
|
110
|
+
ag-marketing-kit status
|
|
111
|
+
|
|
112
|
+
# List all skills
|
|
113
|
+
ag-marketing-kit list
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Using npx (No Install)
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# Navigate to your project
|
|
120
|
+
cd your-project
|
|
121
|
+
|
|
122
|
+
# Install .agent folder
|
|
123
|
+
npx @nguyenphp/antigravity-marketing init
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### CLI Commands
|
|
127
|
+
|
|
128
|
+
| Command | Description |
|
|
129
|
+
|---------|-------------|
|
|
130
|
+
| `ag-marketing-kit init` | Install .agent folder |
|
|
131
|
+
| `ag-marketing-kit update` | Update to latest version |
|
|
132
|
+
| `ag-marketing-kit status` | Check installation status |
|
|
133
|
+
| `ag-marketing-kit list` | List all available skills |
|
|
134
|
+
|
|
135
|
+
#### Command Options
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# init options
|
|
139
|
+
ag-marketing-kit init [options]
|
|
140
|
+
-f, --force # Overwrite if folder exists
|
|
141
|
+
-p, --path <dir> # Path to project directory
|
|
142
|
+
-b, --branch <name> # Select repository branch
|
|
143
|
+
|
|
144
|
+
# update options
|
|
145
|
+
ag-marketing-kit update [options]
|
|
146
|
+
-f, --force # Skip confirmation
|
|
147
|
+
-p, --path <dir> # Path to project directory
|
|
148
|
+
-b, --branch <name> # Select repository branch
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## 🚀 Usage
|
|
152
|
+
|
|
153
|
+
### Skills
|
|
154
|
+
|
|
155
|
+
Skills are automatically detected and used by Gemini CLI based on context.
|
|
156
|
+
|
|
157
|
+
### Workflows
|
|
158
|
+
|
|
159
|
+
Invoke workflows with slash commands:
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
/campaign - Start a marketing campaign workflow
|
|
163
|
+
/content - Create content with guidance
|
|
164
|
+
/analyze - Analyze marketing metrics
|
|
165
|
+
/optimize - Run conversion optimization
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## 🤝 Contributing
|
|
169
|
+
|
|
170
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
171
|
+
|
|
172
|
+
### Adding a New Skill
|
|
173
|
+
|
|
174
|
+
1. Create folder in `templates/.agent/skills/your-skill/`
|
|
175
|
+
2. Add `SKILL.md` with YAML frontmatter and content
|
|
176
|
+
3. Submit PR
|
|
177
|
+
|
|
178
|
+
### Adding a New Workflow
|
|
179
|
+
|
|
180
|
+
1. Create file in `templates/.agent/workflows/your-workflow.md`
|
|
181
|
+
2. Add description frontmatter and steps
|
|
182
|
+
3. Submit PR
|
|
183
|
+
|
|
184
|
+
## 📄 License
|
|
185
|
+
|
|
186
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
package/bin/index.js
ADDED
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import ora from 'ora';
|
|
6
|
+
import { downloadTemplate } from 'giget';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
import fs from 'fs';
|
|
9
|
+
import readline from 'readline';
|
|
10
|
+
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// CONSTANTS
|
|
13
|
+
// ============================================================================
|
|
14
|
+
|
|
15
|
+
const REPO = 'github:nguyenphp/antigravity-marketing';
|
|
16
|
+
const TEMPLATES_FOLDER = 'templates';
|
|
17
|
+
const AGENT_FOLDER = '.agent';
|
|
18
|
+
const TEMP_FOLDER = '.temp_ag_marketing_kit';
|
|
19
|
+
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// UTILITIES
|
|
22
|
+
// ============================================================================
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Display ASCII banner
|
|
26
|
+
*/
|
|
27
|
+
const showBanner = () => {
|
|
28
|
+
console.log(chalk.magentaBright(`
|
|
29
|
+
╔══════════════════════════════════════════╗
|
|
30
|
+
║ 🚀 ANTIGRAVITY MARKETING KIT CLI 🚀 ║
|
|
31
|
+
║ Marketing Skills for AI ║
|
|
32
|
+
╚══════════════════════════════════════════╝
|
|
33
|
+
`));
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Ask user for confirmation
|
|
38
|
+
* @param {string} question - Question to ask
|
|
39
|
+
* @returns {Promise<boolean>}
|
|
40
|
+
*/
|
|
41
|
+
const confirm = (question) => {
|
|
42
|
+
const rl = readline.createInterface({
|
|
43
|
+
input: process.stdin,
|
|
44
|
+
output: process.stdout,
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
return new Promise((resolve) => {
|
|
48
|
+
rl.question(chalk.yellow(`${question} (y/N): `), (answer) => {
|
|
49
|
+
rl.close();
|
|
50
|
+
resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Clean up temporary directory
|
|
57
|
+
* @param {string} tempDir - Temp directory path
|
|
58
|
+
*/
|
|
59
|
+
const cleanup = (tempDir) => {
|
|
60
|
+
if (fs.existsSync(tempDir)) {
|
|
61
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Copy .agent folder from temp to destination
|
|
67
|
+
* @param {string} tempDir - Temp directory
|
|
68
|
+
* @param {string} destDir - Destination directory
|
|
69
|
+
*/
|
|
70
|
+
const copyAgentFolder = (tempDir, destDir) => {
|
|
71
|
+
const sourceAgent = path.join(tempDir, TEMPLATES_FOLDER, AGENT_FOLDER);
|
|
72
|
+
|
|
73
|
+
if (!fs.existsSync(sourceAgent)) {
|
|
74
|
+
throw new Error(`Could not find ${TEMPLATES_FOLDER}/${AGENT_FOLDER} folder in source repository!`);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
fs.cpSync(sourceAgent, destDir, { recursive: true });
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Update .gitignore to include .agent folder
|
|
82
|
+
* @param {string} targetDir - Target project directory
|
|
83
|
+
* @returns {boolean} - True if .gitignore was updated
|
|
84
|
+
*/
|
|
85
|
+
const updateGitignore = (targetDir) => {
|
|
86
|
+
const gitignorePath = path.join(targetDir, '.gitignore');
|
|
87
|
+
const entryToAdd = AGENT_FOLDER;
|
|
88
|
+
|
|
89
|
+
// Check if .gitignore exists
|
|
90
|
+
if (fs.existsSync(gitignorePath)) {
|
|
91
|
+
const content = fs.readFileSync(gitignorePath, 'utf-8');
|
|
92
|
+
const lines = content.split(/\r?\n/);
|
|
93
|
+
|
|
94
|
+
// Check if .agent is already in .gitignore
|
|
95
|
+
const hasEntry = lines.some(line =>
|
|
96
|
+
line.trim() === entryToAdd ||
|
|
97
|
+
line.trim() === `${entryToAdd}/` ||
|
|
98
|
+
line.trim() === `/${entryToAdd}` ||
|
|
99
|
+
line.trim() === `/${entryToAdd}/`
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
if (!hasEntry) {
|
|
103
|
+
// Add .agent to .gitignore
|
|
104
|
+
const newContent = content.endsWith('\n')
|
|
105
|
+
? `${content}${entryToAdd}\n`
|
|
106
|
+
: `${content}\n${entryToAdd}\n`;
|
|
107
|
+
fs.writeFileSync(gitignorePath, newContent);
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
} else {
|
|
111
|
+
// Create new .gitignore with .agent
|
|
112
|
+
fs.writeFileSync(gitignorePath, `${entryToAdd}\n`);
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return false;
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
// ============================================================================
|
|
120
|
+
// COMMANDS
|
|
121
|
+
// ============================================================================
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Initialize .agent folder in project
|
|
125
|
+
*/
|
|
126
|
+
const initCommand = async (options) => {
|
|
127
|
+
showBanner();
|
|
128
|
+
|
|
129
|
+
const targetDir = path.resolve(options.path || process.cwd());
|
|
130
|
+
const tempDir = path.join(targetDir, TEMP_FOLDER);
|
|
131
|
+
const agentDir = path.join(targetDir, AGENT_FOLDER);
|
|
132
|
+
|
|
133
|
+
// Check if .agent already exists
|
|
134
|
+
if (fs.existsSync(agentDir)) {
|
|
135
|
+
if (!options.force) {
|
|
136
|
+
console.log(chalk.yellow(`⚠️ Folder ${AGENT_FOLDER} already exists at: ${agentDir}`));
|
|
137
|
+
const shouldOverwrite = await confirm('Do you want to overwrite it?');
|
|
138
|
+
|
|
139
|
+
if (!shouldOverwrite) {
|
|
140
|
+
console.log(chalk.gray('Operation cancelled.'));
|
|
141
|
+
process.exit(0);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
console.log(chalk.gray(`Overwriting ${AGENT_FOLDER} folder...`));
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
const spinner = ora({
|
|
148
|
+
text: 'Downloading marketing skills...',
|
|
149
|
+
color: 'magenta',
|
|
150
|
+
}).start();
|
|
151
|
+
|
|
152
|
+
try {
|
|
153
|
+
// Download repository using giget
|
|
154
|
+
const repoSource = options.branch ? `${REPO}#${options.branch}` : REPO;
|
|
155
|
+
await downloadTemplate(repoSource, {
|
|
156
|
+
dir: tempDir,
|
|
157
|
+
force: true,
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
spinner.text = 'Installing marketing skills...';
|
|
161
|
+
|
|
162
|
+
// Copy .agent folder
|
|
163
|
+
copyAgentFolder(tempDir, agentDir);
|
|
164
|
+
|
|
165
|
+
// Update .gitignore
|
|
166
|
+
const gitignoreUpdated = updateGitignore(targetDir);
|
|
167
|
+
|
|
168
|
+
// Cleanup
|
|
169
|
+
cleanup(tempDir);
|
|
170
|
+
|
|
171
|
+
spinner.succeed(chalk.green('Marketing Kit installed successfully!'));
|
|
172
|
+
|
|
173
|
+
// Success message
|
|
174
|
+
console.log(chalk.gray('\n────────────────────────────────────────'));
|
|
175
|
+
console.log(chalk.white('📁 Result:'));
|
|
176
|
+
console.log(` ${chalk.cyan(AGENT_FOLDER)} → ${chalk.gray(agentDir)}`);
|
|
177
|
+
if (gitignoreUpdated) {
|
|
178
|
+
console.log(` ${chalk.cyan('.gitignore')} → Added ${chalk.yellow(AGENT_FOLDER)}`);
|
|
179
|
+
}
|
|
180
|
+
console.log(chalk.gray('────────────────────────────────────────'));
|
|
181
|
+
|
|
182
|
+
// Show skills summary
|
|
183
|
+
console.log(chalk.white('\n📦 Included:'));
|
|
184
|
+
console.log(chalk.magenta(' • 17 Marketing Skills'));
|
|
185
|
+
console.log(chalk.magenta(' • 4 Specialized Agents'));
|
|
186
|
+
console.log(chalk.magenta(' • 4 Workflow Commands'));
|
|
187
|
+
console.log(chalk.gray('────────────────────────────────────────'));
|
|
188
|
+
console.log(chalk.green('\n🎉 Happy marketing!\n'));
|
|
189
|
+
} catch (error) {
|
|
190
|
+
spinner.fail(chalk.red(`❌ Error: ${error.message}`));
|
|
191
|
+
cleanup(tempDir);
|
|
192
|
+
process.exit(1);
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Update existing .agent folder
|
|
198
|
+
*/
|
|
199
|
+
const updateCommand = async (options) => {
|
|
200
|
+
showBanner();
|
|
201
|
+
|
|
202
|
+
const targetDir = path.resolve(options.path || process.cwd());
|
|
203
|
+
const agentDir = path.join(targetDir, AGENT_FOLDER);
|
|
204
|
+
|
|
205
|
+
// Check if .agent exists
|
|
206
|
+
if (!fs.existsSync(agentDir)) {
|
|
207
|
+
console.log(chalk.red(`❌ Could not find ${AGENT_FOLDER} folder at: ${targetDir}`));
|
|
208
|
+
console.log(chalk.yellow(`💡 Tip: Run ${chalk.cyan('ag-marketing-kit init')} to install first.`));
|
|
209
|
+
process.exit(1);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
if (!options.force) {
|
|
213
|
+
console.log(chalk.yellow(`⚠️ Update will overwrite the entire ${AGENT_FOLDER} folder`));
|
|
214
|
+
const shouldUpdate = await confirm('Are you sure you want to continue?');
|
|
215
|
+
|
|
216
|
+
if (!shouldUpdate) {
|
|
217
|
+
console.log(chalk.gray('Operation cancelled.'));
|
|
218
|
+
process.exit(0);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// Call init with force option
|
|
223
|
+
await initCommand({ ...options, force: true });
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Show status of .agent folder
|
|
228
|
+
*/
|
|
229
|
+
const statusCommand = (options) => {
|
|
230
|
+
const targetDir = path.resolve(options.path || process.cwd());
|
|
231
|
+
const agentDir = path.join(targetDir, AGENT_FOLDER);
|
|
232
|
+
|
|
233
|
+
console.log(chalk.magentaBright('\n📊 Antigravity Marketing Kit Status\n'));
|
|
234
|
+
|
|
235
|
+
if (fs.existsSync(agentDir)) {
|
|
236
|
+
const stats = fs.statSync(agentDir);
|
|
237
|
+
|
|
238
|
+
// Count skills, agents, workflows
|
|
239
|
+
const skillsDir = path.join(agentDir, 'skills');
|
|
240
|
+
const agentsDir = path.join(agentDir, 'agents');
|
|
241
|
+
const workflowsDir = path.join(agentDir, 'workflows');
|
|
242
|
+
|
|
243
|
+
const skillCount = fs.existsSync(skillsDir) ? fs.readdirSync(skillsDir).length : 0;
|
|
244
|
+
const agentCount = fs.existsSync(agentsDir) ? fs.readdirSync(agentsDir).length : 0;
|
|
245
|
+
const workflowCount = fs.existsSync(workflowsDir) ? fs.readdirSync(workflowsDir).length : 0;
|
|
246
|
+
|
|
247
|
+
console.log(chalk.green('✅ Installed'));
|
|
248
|
+
console.log(chalk.gray('────────────────────────────────────────'));
|
|
249
|
+
console.log(`📁 Path: ${chalk.cyan(agentDir)}`);
|
|
250
|
+
console.log(`📅 Modified: ${chalk.gray(stats.mtime.toLocaleString('en-US'))}`);
|
|
251
|
+
console.log(`🧠 Skills: ${chalk.yellow(skillCount)}`);
|
|
252
|
+
console.log(`🤖 Agents: ${chalk.yellow(agentCount)}`);
|
|
253
|
+
console.log(`🔄 Workflows: ${chalk.yellow(workflowCount)}`);
|
|
254
|
+
console.log(chalk.gray('────────────────────────────────────────\n'));
|
|
255
|
+
} else {
|
|
256
|
+
console.log(chalk.red('❌ Not installed'));
|
|
257
|
+
console.log(chalk.yellow(`💡 Run ${chalk.cyan('ag-marketing-kit init')} to install.\n`));
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* List all available skills
|
|
263
|
+
*/
|
|
264
|
+
const listCommand = (options) => {
|
|
265
|
+
const targetDir = path.resolve(options.path || process.cwd());
|
|
266
|
+
const agentDir = path.join(targetDir, AGENT_FOLDER);
|
|
267
|
+
|
|
268
|
+
console.log(chalk.magentaBright('\n📋 Available Marketing Skills\n'));
|
|
269
|
+
|
|
270
|
+
if (!fs.existsSync(agentDir)) {
|
|
271
|
+
console.log(chalk.red('❌ Marketing Kit not installed'));
|
|
272
|
+
console.log(chalk.yellow(`💡 Run ${chalk.cyan('ag-marketing-kit init')} first.\n`));
|
|
273
|
+
process.exit(1);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
const skillsDir = path.join(agentDir, 'skills');
|
|
277
|
+
if (fs.existsSync(skillsDir)) {
|
|
278
|
+
const skills = fs.readdirSync(skillsDir).filter(f =>
|
|
279
|
+
fs.statSync(path.join(skillsDir, f)).isDirectory()
|
|
280
|
+
);
|
|
281
|
+
|
|
282
|
+
console.log(chalk.gray('────────────────────────────────────────'));
|
|
283
|
+
skills.forEach(skill => {
|
|
284
|
+
console.log(` ${chalk.magenta('•')} ${chalk.white(skill)}`);
|
|
285
|
+
});
|
|
286
|
+
console.log(chalk.gray('────────────────────────────────────────'));
|
|
287
|
+
console.log(chalk.gray(`\nTotal: ${skills.length} skills\n`));
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
// ============================================================================
|
|
292
|
+
// CLI DEFINITION
|
|
293
|
+
// ============================================================================
|
|
294
|
+
|
|
295
|
+
const program = new Command();
|
|
296
|
+
|
|
297
|
+
program
|
|
298
|
+
.name('ag-marketing-kit')
|
|
299
|
+
.description('CLI tool to install and manage Antigravity Marketing Kit')
|
|
300
|
+
.version('1.0.0', '-v, --version', 'Display version number');
|
|
301
|
+
|
|
302
|
+
// Command: init
|
|
303
|
+
program
|
|
304
|
+
.command('init')
|
|
305
|
+
.description('Install marketing skills into your project')
|
|
306
|
+
.option('-f, --force', 'Overwrite if folder already exists', false)
|
|
307
|
+
.option('-p, --path <dir>', 'Path to the project directory', process.cwd())
|
|
308
|
+
.option('-b, --branch <name>', 'Select repository branch')
|
|
309
|
+
.action(initCommand);
|
|
310
|
+
|
|
311
|
+
// Command: update
|
|
312
|
+
program
|
|
313
|
+
.command('update')
|
|
314
|
+
.description('Update marketing skills to the latest version')
|
|
315
|
+
.option('-f, --force', 'Skip confirmation prompt', false)
|
|
316
|
+
.option('-p, --path <dir>', 'Path to the project directory', process.cwd())
|
|
317
|
+
.option('-b, --branch <name>', 'Select repository branch')
|
|
318
|
+
.action(updateCommand);
|
|
319
|
+
|
|
320
|
+
// Command: status
|
|
321
|
+
program
|
|
322
|
+
.command('status')
|
|
323
|
+
.description('Check installation status')
|
|
324
|
+
.option('-p, --path <dir>', 'Path to the project directory', process.cwd())
|
|
325
|
+
.action(statusCommand);
|
|
326
|
+
|
|
327
|
+
// Command: list
|
|
328
|
+
program
|
|
329
|
+
.command('list')
|
|
330
|
+
.description('List all available skills')
|
|
331
|
+
.option('-p, --path <dir>', 'Path to the project directory', process.cwd())
|
|
332
|
+
.action(listCommand);
|
|
333
|
+
|
|
334
|
+
// Parse arguments
|
|
335
|
+
program.parse(process.argv);
|
|
336
|
+
|
|
337
|
+
// Show help if no command provided
|
|
338
|
+
if (!process.argv.slice(2).length) {
|
|
339
|
+
program.outputHelp();
|
|
340
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nguyenphp/antigravity-marketing",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Marketing-focused AI agent skills kit for Gemini CLI",
|
|
5
|
+
"main": "bin/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"ag-marketing-kit": "bin/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"bin",
|
|
12
|
+
"templates"
|
|
13
|
+
],
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/nguyenphp/antigravity-marketing.git"
|
|
17
|
+
},
|
|
18
|
+
"homepage": "https://github.com/nguyenphp/antigravity-marketing#readme",
|
|
19
|
+
"bugs": {
|
|
20
|
+
"url": "https://github.com/nguyenphp/antigravity-marketing/issues"
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"antigravity",
|
|
24
|
+
"marketing",
|
|
25
|
+
"cli",
|
|
26
|
+
"ai",
|
|
27
|
+
"agent",
|
|
28
|
+
"gemini",
|
|
29
|
+
"skills",
|
|
30
|
+
"seo",
|
|
31
|
+
"content-marketing",
|
|
32
|
+
"social-media",
|
|
33
|
+
"growth-hacking"
|
|
34
|
+
],
|
|
35
|
+
"author": "NguyenPHP",
|
|
36
|
+
"license": "MIT",
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"chalk": "^5.6.2",
|
|
39
|
+
"commander": "^12.1.0",
|
|
40
|
+
"fs-extra": "^11.3.3",
|
|
41
|
+
"giget": "^2.0.0",
|
|
42
|
+
"ora": "^8.2.0"
|
|
43
|
+
},
|
|
44
|
+
"publishConfig": {
|
|
45
|
+
"access": "public"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Marketing data analysis and performance insights specialist.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Analytics Specialist Agent
|
|
6
|
+
|
|
7
|
+
You are an Analytics Specialist agent - a data scientist focused on marketing analytics who turns data into actionable insights.
|
|
8
|
+
|
|
9
|
+
## Core Capabilities
|
|
10
|
+
|
|
11
|
+
- Set up tracking and attribution
|
|
12
|
+
- Analyze marketing performance
|
|
13
|
+
- Build dashboards and reports
|
|
14
|
+
- Identify optimization opportunities
|
|
15
|
+
- Forecast and model outcomes
|
|
16
|
+
- A/B test analysis
|
|
17
|
+
|
|
18
|
+
## When to Use
|
|
19
|
+
|
|
20
|
+
Use this agent when you need to:
|
|
21
|
+
- Analyze marketing performance
|
|
22
|
+
- Set up analytics tracking
|
|
23
|
+
- Build marketing dashboards
|
|
24
|
+
- Calculate ROI and attribution
|
|
25
|
+
- Interpret test results
|
|
26
|
+
- Create performance reports
|
|
27
|
+
|
|
28
|
+
## Process
|
|
29
|
+
|
|
30
|
+
1. **Define**: Clarify questions and goals
|
|
31
|
+
2. **Collect**: Ensure proper tracking
|
|
32
|
+
3. **Analyze**: Process and explore data
|
|
33
|
+
4. **Insight**: Find actionable patterns
|
|
34
|
+
5. **Recommend**: Suggest actions
|
|
35
|
+
6. **Report**: Communicate findings
|
|
36
|
+
|
|
37
|
+
## Key Metrics Framework
|
|
38
|
+
|
|
39
|
+
### Acquisition Metrics
|
|
40
|
+
- CAC, CPL, CPC, CPM
|
|
41
|
+
- Traffic sources
|
|
42
|
+
- Conversion rates
|
|
43
|
+
|
|
44
|
+
### Engagement Metrics
|
|
45
|
+
- Bounce rate
|
|
46
|
+
- Session duration
|
|
47
|
+
- Pages per session
|
|
48
|
+
|
|
49
|
+
### Revenue Metrics
|
|
50
|
+
- LTV, ROAS, MER
|
|
51
|
+
- Attribution by channel
|
|
52
|
+
- Cohort analysis
|
|
53
|
+
|
|
54
|
+
## Output Formats
|
|
55
|
+
|
|
56
|
+
- Performance reports
|
|
57
|
+
- Dashboards
|
|
58
|
+
- Attribution analysis
|
|
59
|
+
- Test results
|
|
60
|
+
- Forecasts
|
|
61
|
+
- Recommendations
|
|
62
|
+
|
|
63
|
+
## Skills Used
|
|
64
|
+
|
|
65
|
+
- analytics-marketing
|
|
66
|
+
- growth-hacking
|
|
67
|
+
- conversion-optimization
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Content creation specialist for all marketing content types.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Content Creator Agent
|
|
6
|
+
|
|
7
|
+
You are a Content Creator agent - an expert content marketer who can create compelling content across all formats and platforms.
|
|
8
|
+
|
|
9
|
+
## Core Capabilities
|
|
10
|
+
|
|
11
|
+
- Write engaging blog posts and articles
|
|
12
|
+
- Create social media content calendars
|
|
13
|
+
- Develop email copy and sequences
|
|
14
|
+
- Write landing page copy
|
|
15
|
+
- Script video content
|
|
16
|
+
- Create lead magnets and whitepapers
|
|
17
|
+
|
|
18
|
+
## When to Use
|
|
19
|
+
|
|
20
|
+
Use this agent when you need to:
|
|
21
|
+
- Create any type of marketing content
|
|
22
|
+
- Write copy for campaigns
|
|
23
|
+
- Develop content calendars
|
|
24
|
+
- Build email sequences
|
|
25
|
+
- Create content for specific audiences
|
|
26
|
+
|
|
27
|
+
## Process
|
|
28
|
+
|
|
29
|
+
1. **Brief**: Understand goals, audience, and constraints
|
|
30
|
+
2. **Research**: Topic research, keyword analysis
|
|
31
|
+
3. **Outline**: Structure and key points
|
|
32
|
+
4. **Draft**: Write initial content
|
|
33
|
+
5. **Optimize**: SEO, readability, conversion
|
|
34
|
+
6. **Review**: Final polish
|
|
35
|
+
|
|
36
|
+
## Output Formats
|
|
37
|
+
|
|
38
|
+
- Blog posts
|
|
39
|
+
- Social media posts
|
|
40
|
+
- Email copy
|
|
41
|
+
- Landing page copy
|
|
42
|
+
- Video scripts
|
|
43
|
+
- Lead magnets
|
|
44
|
+
|
|
45
|
+
## Content Guidelines
|
|
46
|
+
|
|
47
|
+
### Voice Principles
|
|
48
|
+
- Clear and concise
|
|
49
|
+
- Benefit-focused
|
|
50
|
+
- Action-oriented
|
|
51
|
+
- Audience-appropriate
|
|
52
|
+
|
|
53
|
+
### SEO Integration
|
|
54
|
+
- Keyword research
|
|
55
|
+
- On-page optimization
|
|
56
|
+
- Internal linking
|
|
57
|
+
- Meta descriptions
|
|
58
|
+
|
|
59
|
+
## Skills Used
|
|
60
|
+
|
|
61
|
+
- content-marketing
|
|
62
|
+
- seo-fundamentals
|
|
63
|
+
- social-media-expert
|
|
64
|
+
- email-marketing
|
|
65
|
+
- branding-expert
|