namnam-skills 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 +223 -0
- package/package.json +63 -0
- package/src/cli.js +460 -0
- package/src/index.js +1 -0
- package/src/postinstall.js +162 -0
- package/src/templates/bmad/bmb/agents/agent-builder.md +14 -0
- package/src/templates/bmad/bmb/agents/module-builder.md +14 -0
- package/src/templates/bmad/bmb/agents/workflow-builder.md +14 -0
- package/src/templates/bmad/bmb/workflows/agent.md +5 -0
- package/src/templates/bmad/bmb/workflows/module.md +5 -0
- package/src/templates/bmad/bmb/workflows/workflow.md +5 -0
- package/src/templates/bmad/bmgd/agents/game-architect.md +14 -0
- package/src/templates/bmad/bmgd/agents/game-designer.md +14 -0
- package/src/templates/bmad/bmgd/agents/game-dev.md +14 -0
- package/src/templates/bmad/bmgd/agents/game-qa.md +14 -0
- package/src/templates/bmad/bmgd/agents/game-scrum-master.md +14 -0
- package/src/templates/bmad/bmgd/agents/game-solo-dev.md +14 -0
- package/src/templates/bmad/bmgd/workflows/brainstorm-game.md +13 -0
- package/src/templates/bmad/bmgd/workflows/code-review.md +13 -0
- package/src/templates/bmad/bmgd/workflows/correct-course.md +13 -0
- package/src/templates/bmad/bmgd/workflows/create-game-brief.md +5 -0
- package/src/templates/bmad/bmgd/workflows/create-gdd.md +5 -0
- package/src/templates/bmad/bmgd/workflows/create-story.md +13 -0
- package/src/templates/bmad/bmgd/workflows/dev-story.md +13 -0
- package/src/templates/bmad/bmgd/workflows/game-architecture.md +13 -0
- package/src/templates/bmad/bmgd/workflows/game-brief.md +13 -0
- package/src/templates/bmad/bmgd/workflows/gametest-automate.md +13 -0
- package/src/templates/bmad/bmgd/workflows/gametest-framework.md +13 -0
- package/src/templates/bmad/bmgd/workflows/gametest-performance.md +13 -0
- package/src/templates/bmad/bmgd/workflows/gametest-playtest-plan.md +13 -0
- package/src/templates/bmad/bmgd/workflows/gametest-test-design.md +13 -0
- package/src/templates/bmad/bmgd/workflows/gametest-test-review.md +13 -0
- package/src/templates/bmad/bmgd/workflows/gdd.md +13 -0
- package/src/templates/bmad/bmgd/workflows/generate-project-context.md +5 -0
- package/src/templates/bmad/bmgd/workflows/narrative.md +13 -0
- package/src/templates/bmad/bmgd/workflows/quick-dev.md +13 -0
- package/src/templates/bmad/bmgd/workflows/quick-prototype.md +13 -0
- package/src/templates/bmad/bmgd/workflows/quick-spec.md +13 -0
- package/src/templates/bmad/bmgd/workflows/retrospective.md +13 -0
- package/src/templates/bmad/bmgd/workflows/sprint-planning.md +13 -0
- package/src/templates/bmad/bmgd/workflows/sprint-status.md +13 -0
- package/src/templates/bmad/bmgd/workflows/workflow-init.md +13 -0
- package/src/templates/bmad/bmgd/workflows/workflow-status.md +13 -0
- package/src/templates/bmad/bmm/agents/analyst.md +14 -0
- package/src/templates/bmad/bmm/agents/architect.md +14 -0
- package/src/templates/bmad/bmm/agents/dev.md +14 -0
- package/src/templates/bmad/bmm/agents/pm.md +14 -0
- package/src/templates/bmad/bmm/agents/quick-flow-solo-dev.md +14 -0
- package/src/templates/bmad/bmm/agents/sm.md +14 -0
- package/src/templates/bmad/bmm/agents/tea.md +14 -0
- package/src/templates/bmad/bmm/agents/tech-writer.md +14 -0
- package/src/templates/bmad/bmm/agents/ux-designer.md +14 -0
- package/src/templates/bmad/bmm/workflows/check-implementation-readiness.md +5 -0
- package/src/templates/bmad/bmm/workflows/code-review.md +13 -0
- package/src/templates/bmad/bmm/workflows/correct-course.md +13 -0
- package/src/templates/bmad/bmm/workflows/create-architecture.md +5 -0
- package/src/templates/bmad/bmm/workflows/create-epics-and-stories.md +5 -0
- package/src/templates/bmad/bmm/workflows/create-excalidraw-dataflow.md +13 -0
- package/src/templates/bmad/bmm/workflows/create-excalidraw-diagram.md +13 -0
- package/src/templates/bmad/bmm/workflows/create-excalidraw-flowchart.md +13 -0
- package/src/templates/bmad/bmm/workflows/create-excalidraw-wireframe.md +13 -0
- package/src/templates/bmad/bmm/workflows/create-product-brief.md +5 -0
- package/src/templates/bmad/bmm/workflows/create-story.md +13 -0
- package/src/templates/bmad/bmm/workflows/create-ux-design.md +5 -0
- package/src/templates/bmad/bmm/workflows/dev-story.md +13 -0
- package/src/templates/bmad/bmm/workflows/document-project.md +13 -0
- package/src/templates/bmad/bmm/workflows/generate-project-context.md +5 -0
- package/src/templates/bmad/bmm/workflows/prd.md +5 -0
- package/src/templates/bmad/bmm/workflows/quick-dev.md +5 -0
- package/src/templates/bmad/bmm/workflows/quick-spec.md +5 -0
- package/src/templates/bmad/bmm/workflows/research.md +5 -0
- package/src/templates/bmad/bmm/workflows/retrospective.md +13 -0
- package/src/templates/bmad/bmm/workflows/sprint-planning.md +13 -0
- package/src/templates/bmad/bmm/workflows/sprint-status.md +13 -0
- package/src/templates/bmad/bmm/workflows/testarch-atdd.md +13 -0
- package/src/templates/bmad/bmm/workflows/testarch-automate.md +13 -0
- package/src/templates/bmad/bmm/workflows/testarch-ci.md +13 -0
- package/src/templates/bmad/bmm/workflows/testarch-framework.md +13 -0
- package/src/templates/bmad/bmm/workflows/testarch-nfr.md +13 -0
- package/src/templates/bmad/bmm/workflows/testarch-test-design.md +13 -0
- package/src/templates/bmad/bmm/workflows/testarch-test-review.md +13 -0
- package/src/templates/bmad/bmm/workflows/testarch-trace.md +13 -0
- package/src/templates/bmad/bmm/workflows/workflow-init.md +13 -0
- package/src/templates/bmad/bmm/workflows/workflow-status.md +13 -0
- package/src/templates/bmad/cis/agents/brainstorming-coach.md +14 -0
- package/src/templates/bmad/cis/agents/creative-problem-solver.md +14 -0
- package/src/templates/bmad/cis/agents/design-thinking-coach.md +14 -0
- package/src/templates/bmad/cis/agents/innovation-strategist.md +14 -0
- package/src/templates/bmad/cis/agents/presentation-master.md +14 -0
- package/src/templates/bmad/cis/agents/storyteller.md +14 -0
- package/src/templates/bmad/cis/workflows/design-thinking.md +13 -0
- package/src/templates/bmad/cis/workflows/innovation-strategy.md +13 -0
- package/src/templates/bmad/cis/workflows/problem-solving.md +13 -0
- package/src/templates/bmad/cis/workflows/storytelling.md +13 -0
- package/src/templates/bmad/core/agents/bmad-master.md +14 -0
- package/src/templates/bmad/core/tasks/index-docs.md +9 -0
- package/src/templates/bmad/core/tasks/shard-doc.md +9 -0
- package/src/templates/bmad/core/workflows/brainstorming.md +5 -0
- package/src/templates/bmad/core/workflows/party-mode.md +5 -0
- package/src/templates/claudekit/agents/ai-sdk-expert.md +135 -0
- package/src/templates/claudekit/agents/cli-expert.md +135 -0
- package/src/templates/claudekit/agents/code-review-expert.md +132 -0
- package/src/templates/claudekit/agents/code-search.md +83 -0
- package/src/templates/claudekit/agents/nestjs-expert.md +128 -0
- package/src/templates/claudekit/agents/oracle.md +120 -0
- package/src/templates/claudekit/agents/research-expert.md +115 -0
- package/src/templates/claudekit/agents/triage-expert.md +116 -0
- package/src/templates/claudekit/commands/checkpoint-create.md +54 -0
- package/src/templates/claudekit/commands/checkpoint-list.md +40 -0
- package/src/templates/claudekit/commands/checkpoint-restore.md +50 -0
- package/src/templates/claudekit/commands/create-command.md +107 -0
- package/src/templates/claudekit/commands/create-subagent.md +96 -0
- package/src/templates/core/code-review.md +70 -0
- package/src/templates/core/git-commit.md +57 -0
- package/src/templates/core/git-push.md +53 -0
- package/src/templates/core/git-status.md +48 -0
- package/src/templates/core/namnam.md +324 -0
- package/src/templates/core/validate-and-fix.md +69 -0
- package/src/templates/cursor-rules/data-science-ml.md +54 -0
- package/src/templates/cursor-rules/devops-infrastructure.md +59 -0
- package/src/templates/cursor-rules/golang-expert.md +61 -0
- package/src/templates/cursor-rules/nestjs-expert.md +60 -0
- package/src/templates/cursor-rules/python-expert.md +53 -0
- package/src/templates/cursor-rules/react-native-expo.md +51 -0
- package/src/templates/cursor-rules/rust-expert.md +61 -0
- package/src/templates/cursor-rules/solidity-web3.md +54 -0
- package/src/templates/cursor-rules/typescript-expert.md +42 -0
- package/src/templates/cursor-rules/vue-nuxt-expert.md +50 -0
- package/src/templates/official-plugins/claude-opus-migration.md +33 -0
- package/src/templates/official-plugins/commit-push-pr.md +55 -0
- package/src/templates/official-plugins/commit.md +60 -0
- package/src/templates/official-plugins/feature-dev.md +65 -0
- package/src/templates/official-plugins/frontend-design.md +53 -0
- package/src/templates/official-plugins/hookify.md +52 -0
- package/src/templates/official-plugins/new-sdk-app.md +45 -0
- package/src/templates/official-plugins/plugin-dev.md +53 -0
- package/src/templates/official-plugins/pr-review-toolkit.md +68 -0
- package/src/templates/official-plugins/ralph-loop.md +51 -0
- package/src/templates/official-plugins/security-guidance.md +36 -0
- package/src/templates/platforms/AGENTS.md +326 -0
- package/src/templates/platforms/aider/aider-template.md +75 -0
- package/src/templates/platforms/cline/clinerules-template.md +205 -0
- package/src/templates/platforms/codex/codex-template.md +74 -0
- package/src/templates/platforms/cursor/cursorrules-template.md +124 -0
- package/src/templates/platforms/gemini/gemini-template.md +93 -0
- package/src/templates/platforms/windsurf/windsurfrules-template.md +166 -0
- package/src/templates/system-prompts/cline-agent-patterns.md +286 -0
- package/src/templates/system-prompts/cursor-agent-patterns.md +177 -0
- package/src/templates/system-prompts/google-antigravity-patterns.md +274 -0
- package/src/templates/system-prompts/industry-best-practices.md +334 -0
- package/src/templates/system-prompts/multi-platform-engineering.md +343 -0
- package/src/templates/system-prompts/vscode-agent-patterns.md +288 -0
- package/src/templates/system-prompts/windsurf-cascade-patterns.md +264 -0
- package/src/templates/vercel-skills/react-best-practices.md +117 -0
- package/src/templates/vercel-skills/web-design-guidelines.md +88 -0
package/src/cli.js
ADDED
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import ora from 'ora';
|
|
6
|
+
import fs from 'fs-extra';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
9
|
+
import inquirer from 'inquirer';
|
|
10
|
+
|
|
11
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
12
|
+
const __dirname = path.dirname(__filename);
|
|
13
|
+
|
|
14
|
+
const program = new Command();
|
|
15
|
+
|
|
16
|
+
// ASCII Art Banner
|
|
17
|
+
const banner = `
|
|
18
|
+
${chalk.cyan('╔══════════════════════════════════════════════════════════════╗')}
|
|
19
|
+
${chalk.cyan('║')} ${chalk.yellow.bold('NAMNAM SKILLS')} ${chalk.cyan('║')}
|
|
20
|
+
${chalk.cyan('║')} ${chalk.gray('Universal AI Skills Installer')} ${chalk.cyan('║')}
|
|
21
|
+
${chalk.cyan('║')} ${chalk.green('Claude • Codex • Cursor • Windsurf • Cline • Aider')} ${chalk.cyan('║')}
|
|
22
|
+
${chalk.cyan('║')} ${chalk.magenta('150+ Agents | Workflows | Industry Prompts')} ${chalk.cyan('║')}
|
|
23
|
+
${chalk.cyan('╚══════════════════════════════════════════════════════════════╝')}
|
|
24
|
+
`;
|
|
25
|
+
|
|
26
|
+
// Skill categories
|
|
27
|
+
const SKILL_CATEGORIES = {
|
|
28
|
+
core: {
|
|
29
|
+
name: 'Core Skills',
|
|
30
|
+
description: 'Essential: /namnam orchestrator, git, code-review, validate-and-fix',
|
|
31
|
+
folder: 'core'
|
|
32
|
+
},
|
|
33
|
+
platforms: {
|
|
34
|
+
name: 'AI Platforms Config',
|
|
35
|
+
description: 'Cursor, Windsurf, Cline, Codex, Aider, Gemini templates + AGENTS.md',
|
|
36
|
+
folder: 'platforms'
|
|
37
|
+
},
|
|
38
|
+
official_plugins: {
|
|
39
|
+
name: 'Official Anthropic Plugins',
|
|
40
|
+
description: 'feature-dev, commit, PR review, hookify, security, ralph-loop, frontend-design (11 files)',
|
|
41
|
+
folder: 'official-plugins'
|
|
42
|
+
},
|
|
43
|
+
vercel: {
|
|
44
|
+
name: 'Vercel Skills',
|
|
45
|
+
description: 'React best practices (51 rules), web design guidelines',
|
|
46
|
+
folder: 'vercel-skills'
|
|
47
|
+
},
|
|
48
|
+
claudekit: {
|
|
49
|
+
name: 'ClaudeKit',
|
|
50
|
+
description: 'Oracle, triage-expert, research-expert, code-search, checkpoints',
|
|
51
|
+
folder: 'claudekit'
|
|
52
|
+
},
|
|
53
|
+
bmad_bmm: {
|
|
54
|
+
name: 'BMAD BMM (Business Method)',
|
|
55
|
+
description: 'Business analysis, architecture, PRD, sprint planning workflows',
|
|
56
|
+
folder: 'bmad/bmm'
|
|
57
|
+
},
|
|
58
|
+
bmad_bmgd: {
|
|
59
|
+
name: 'BMAD BMGD (Game Development)',
|
|
60
|
+
description: 'Game design, GDD, game architecture, testing workflows',
|
|
61
|
+
folder: 'bmad/bmgd'
|
|
62
|
+
},
|
|
63
|
+
bmad_cis: {
|
|
64
|
+
name: 'BMAD CIS (Creative Innovation)',
|
|
65
|
+
description: 'Brainstorming, design thinking, innovation, storytelling',
|
|
66
|
+
folder: 'bmad/cis'
|
|
67
|
+
},
|
|
68
|
+
bmad_bmb: {
|
|
69
|
+
name: 'BMAD BMB (Builder)',
|
|
70
|
+
description: 'Agent builder, module builder, workflow builder',
|
|
71
|
+
folder: 'bmad/bmb'
|
|
72
|
+
},
|
|
73
|
+
bmad_core: {
|
|
74
|
+
name: 'BMAD Core',
|
|
75
|
+
description: 'BMAD master agent, brainstorming, party mode',
|
|
76
|
+
folder: 'bmad/core'
|
|
77
|
+
},
|
|
78
|
+
cursor_rules: {
|
|
79
|
+
name: 'Cursor Rules Collection',
|
|
80
|
+
description: 'Expert rules: TypeScript, Python, React Native, Vue, Solidity, Go, Rust, DevOps',
|
|
81
|
+
folder: 'cursor-rules'
|
|
82
|
+
},
|
|
83
|
+
system_prompts: {
|
|
84
|
+
name: 'System Prompts Collection',
|
|
85
|
+
description: 'Industry best practices from 30+ AI tools: Claude Code, Cursor, Windsurf, Cline, Antigravity',
|
|
86
|
+
folder: 'system-prompts'
|
|
87
|
+
},
|
|
88
|
+
all: {
|
|
89
|
+
name: 'All Skills',
|
|
90
|
+
description: 'Install EVERYTHING - 150+ skills, agents, workflows, and platform configs',
|
|
91
|
+
folder: '*'
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
// Supported AI Platforms
|
|
96
|
+
const AI_PLATFORMS = {
|
|
97
|
+
claude: { file: '.claude/', name: 'Claude Code' },
|
|
98
|
+
cursor: { file: '.cursorrules', name: 'Cursor' },
|
|
99
|
+
windsurf: { file: '.windsurfrules', name: 'Windsurf' },
|
|
100
|
+
cline: { file: '.clinerules', name: 'Cline' },
|
|
101
|
+
aider: { file: '.aider.conf.yml', name: 'Aider' },
|
|
102
|
+
codex: { file: 'codex.md', name: 'OpenAI Codex' },
|
|
103
|
+
gemini: { file: 'GEMINI.md', name: 'Google Gemini' },
|
|
104
|
+
universal: { file: 'AGENTS.md', name: 'Universal (All Platforms)' }
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
program
|
|
108
|
+
.name('namnam')
|
|
109
|
+
.description('Universal AI Skills Installer - Supports Claude, Codex, Cursor, Windsurf, Cline, Aider, Gemini')
|
|
110
|
+
.version('2.0.0');
|
|
111
|
+
|
|
112
|
+
program
|
|
113
|
+
.command('init')
|
|
114
|
+
.description('Initialize AI skills in current project')
|
|
115
|
+
.option('-a, --all', 'Install all skills and platform configs')
|
|
116
|
+
.option('-c, --category <category>', 'Install specific category')
|
|
117
|
+
.option('-i, --interactive', 'Interactive mode - choose what to install')
|
|
118
|
+
.option('-f, --force', 'Overwrite existing files')
|
|
119
|
+
.option('-p, --platforms', 'Also generate platform config files (.cursorrules, etc.)')
|
|
120
|
+
.action(async (options) => {
|
|
121
|
+
console.log(banner);
|
|
122
|
+
|
|
123
|
+
const cwd = process.cwd();
|
|
124
|
+
const claudeDir = path.join(cwd, '.claude', 'commands');
|
|
125
|
+
|
|
126
|
+
// Check if .claude directory exists
|
|
127
|
+
const hasClaudeDir = await fs.pathExists(path.join(cwd, '.claude'));
|
|
128
|
+
|
|
129
|
+
if (!hasClaudeDir) {
|
|
130
|
+
console.log(chalk.yellow('\n⚠️ No .claude directory found. Creating one...\n'));
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
let selectedCategories = [];
|
|
134
|
+
let generatePlatformConfigs = options.platforms || false;
|
|
135
|
+
|
|
136
|
+
if (options.interactive) {
|
|
137
|
+
// Interactive mode
|
|
138
|
+
const answers = await inquirer.prompt([
|
|
139
|
+
{
|
|
140
|
+
type: 'checkbox',
|
|
141
|
+
name: 'categories',
|
|
142
|
+
message: 'Select skill categories to install:',
|
|
143
|
+
choices: Object.entries(SKILL_CATEGORIES).map(([key, value]) => ({
|
|
144
|
+
name: `${chalk.cyan(value.name)} - ${chalk.gray(value.description)}`,
|
|
145
|
+
value: key,
|
|
146
|
+
checked: key === 'core' || key === 'platforms'
|
|
147
|
+
}))
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'confirm',
|
|
151
|
+
name: 'generateConfigs',
|
|
152
|
+
message: 'Generate platform config files (.cursorrules, .windsurfrules, etc.)?',
|
|
153
|
+
default: true
|
|
154
|
+
}
|
|
155
|
+
]);
|
|
156
|
+
selectedCategories = answers.categories;
|
|
157
|
+
generatePlatformConfigs = answers.generateConfigs;
|
|
158
|
+
} else if (options.all) {
|
|
159
|
+
selectedCategories = ['all'];
|
|
160
|
+
generatePlatformConfigs = true;
|
|
161
|
+
} else if (options.category) {
|
|
162
|
+
if (!SKILL_CATEGORIES[options.category]) {
|
|
163
|
+
console.log(chalk.red(`\n❌ Unknown category: ${options.category}`));
|
|
164
|
+
console.log(chalk.gray('Available categories:'), Object.keys(SKILL_CATEGORIES).join(', '));
|
|
165
|
+
process.exit(1);
|
|
166
|
+
}
|
|
167
|
+
selectedCategories = [options.category];
|
|
168
|
+
} else {
|
|
169
|
+
// Default: install core + platforms
|
|
170
|
+
selectedCategories = ['core', 'platforms'];
|
|
171
|
+
console.log(chalk.cyan('\n📦 Installing core skills and platform configs...\n'));
|
|
172
|
+
console.log(chalk.gray('Tip: Use --interactive for more options, or --all for everything\n'));
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const spinner = ora('Installing skills...').start();
|
|
176
|
+
|
|
177
|
+
try {
|
|
178
|
+
// Create .claude/commands directory
|
|
179
|
+
await fs.ensureDir(claudeDir);
|
|
180
|
+
|
|
181
|
+
// Copy templates
|
|
182
|
+
const templatesDir = path.join(__dirname, 'templates');
|
|
183
|
+
let copiedCount = 0;
|
|
184
|
+
|
|
185
|
+
if (selectedCategories.includes('all')) {
|
|
186
|
+
// Copy everything
|
|
187
|
+
const folders = ['core', 'platforms', 'official-plugins', 'vercel-skills', 'claudekit', 'bmad', 'cursor-rules', 'system-prompts'];
|
|
188
|
+
for (const folder of folders) {
|
|
189
|
+
const srcDir = path.join(templatesDir, folder);
|
|
190
|
+
if (await fs.pathExists(srcDir)) {
|
|
191
|
+
await fs.copy(srcDir, path.join(claudeDir, folder), { overwrite: options.force });
|
|
192
|
+
copiedCount += await countFiles(srcDir);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
} else {
|
|
196
|
+
// Copy selected categories
|
|
197
|
+
for (const category of selectedCategories) {
|
|
198
|
+
const catConfig = SKILL_CATEGORIES[category];
|
|
199
|
+
if (!catConfig) continue;
|
|
200
|
+
|
|
201
|
+
const srcDir = path.join(templatesDir, catConfig.folder);
|
|
202
|
+
if (await fs.pathExists(srcDir)) {
|
|
203
|
+
const destDir = path.join(claudeDir, catConfig.folder);
|
|
204
|
+
await fs.copy(srcDir, destDir, { overwrite: options.force });
|
|
205
|
+
copiedCount += await countFiles(srcDir);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
spinner.succeed(chalk.green(`Successfully installed ${copiedCount} skill files!`));
|
|
211
|
+
|
|
212
|
+
// Generate platform config files if requested
|
|
213
|
+
if (generatePlatformConfigs) {
|
|
214
|
+
console.log(chalk.cyan('\n📝 Generating platform config files...'));
|
|
215
|
+
await generatePlatformFiles(cwd, templatesDir, options.force);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// Summary
|
|
219
|
+
console.log(chalk.cyan('\n✨ Skills installed to: .claude/commands/'));
|
|
220
|
+
console.log(chalk.white('\nInstalled categories:'));
|
|
221
|
+
for (const cat of selectedCategories) {
|
|
222
|
+
const config = SKILL_CATEGORIES[cat];
|
|
223
|
+
if (config) {
|
|
224
|
+
console.log(chalk.gray(` • ${config.name}`));
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
console.log(chalk.cyan('\n🚀 Quick Start:'));
|
|
229
|
+
console.log(chalk.white(' /namnam <task> - Orchestrate all agents'));
|
|
230
|
+
console.log(chalk.white(' /namnam --full <task> - Maximum power mode'));
|
|
231
|
+
console.log(chalk.white(' /namnam --multi-platform - Sync all AI configs'));
|
|
232
|
+
console.log(chalk.white(' /code-review - Multi-aspect code review'));
|
|
233
|
+
console.log(chalk.white(' /validate-and-fix - Run checks and auto-fix'));
|
|
234
|
+
|
|
235
|
+
console.log(chalk.magenta('\n🤖 Supported AI Platforms:'));
|
|
236
|
+
console.log(chalk.white(' Claude Code, Codex, Cursor, Windsurf, Cline, Aider, Gemini'));
|
|
237
|
+
|
|
238
|
+
} catch (error) {
|
|
239
|
+
spinner.fail(chalk.red('Installation failed!'));
|
|
240
|
+
console.error(chalk.red(error.message));
|
|
241
|
+
process.exit(1);
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
program
|
|
246
|
+
.command('platforms')
|
|
247
|
+
.description('Generate config files for all AI platforms')
|
|
248
|
+
.option('-f, --force', 'Overwrite existing files')
|
|
249
|
+
.action(async (options) => {
|
|
250
|
+
console.log(banner);
|
|
251
|
+
|
|
252
|
+
const cwd = process.cwd();
|
|
253
|
+
const templatesDir = path.join(__dirname, 'templates');
|
|
254
|
+
|
|
255
|
+
console.log(chalk.cyan('\n📝 Generating platform config files...\n'));
|
|
256
|
+
await generatePlatformFiles(cwd, templatesDir, options.force);
|
|
257
|
+
|
|
258
|
+
console.log(chalk.green('\n✅ Platform configs generated!'));
|
|
259
|
+
console.log(chalk.gray('\nFiles created:'));
|
|
260
|
+
for (const [key, platform] of Object.entries(AI_PLATFORMS)) {
|
|
261
|
+
const filePath = path.join(cwd, platform.file);
|
|
262
|
+
const exists = await fs.pathExists(filePath);
|
|
263
|
+
if (exists) {
|
|
264
|
+
console.log(chalk.white(` • ${platform.file} (${platform.name})`));
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
|
|
269
|
+
program
|
|
270
|
+
.command('list')
|
|
271
|
+
.description('List all available skill categories')
|
|
272
|
+
.action(() => {
|
|
273
|
+
console.log(banner);
|
|
274
|
+
console.log(chalk.cyan('\n📚 Available Skill Categories:\n'));
|
|
275
|
+
|
|
276
|
+
Object.entries(SKILL_CATEGORIES).forEach(([key, value]) => {
|
|
277
|
+
console.log(chalk.yellow(` ${key}`));
|
|
278
|
+
console.log(chalk.white(` ${value.name}`));
|
|
279
|
+
console.log(chalk.gray(` ${value.description}`));
|
|
280
|
+
console.log();
|
|
281
|
+
});
|
|
282
|
+
|
|
283
|
+
console.log(chalk.magenta('\n🤖 Supported AI Platforms:\n'));
|
|
284
|
+
Object.entries(AI_PLATFORMS).forEach(([key, value]) => {
|
|
285
|
+
console.log(chalk.white(` ${value.name}`), chalk.gray(`(${value.file})`));
|
|
286
|
+
});
|
|
287
|
+
|
|
288
|
+
console.log(chalk.cyan('\nUsage:'));
|
|
289
|
+
console.log(chalk.white(' npx namnam-skills init --category <category>'));
|
|
290
|
+
console.log(chalk.white(' npx namnam-skills init --all'));
|
|
291
|
+
console.log(chalk.white(' npx namnam-skills init --interactive'));
|
|
292
|
+
console.log(chalk.white(' npx namnam-skills platforms'));
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
program
|
|
296
|
+
.command('update')
|
|
297
|
+
.description('Update skills to latest version')
|
|
298
|
+
.action(async () => {
|
|
299
|
+
console.log(banner);
|
|
300
|
+
const spinner = ora('Checking for updates...').start();
|
|
301
|
+
|
|
302
|
+
spinner.info('Update functionality coming soon!');
|
|
303
|
+
console.log(chalk.gray('\nFor now, run: npm update -g namnam-skills'));
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
program
|
|
307
|
+
.command('uninstall')
|
|
308
|
+
.description('Remove all installed skills')
|
|
309
|
+
.action(async () => {
|
|
310
|
+
console.log(banner);
|
|
311
|
+
|
|
312
|
+
const answers = await inquirer.prompt([
|
|
313
|
+
{
|
|
314
|
+
type: 'confirm',
|
|
315
|
+
name: 'confirm',
|
|
316
|
+
message: 'Are you sure you want to remove all skills?',
|
|
317
|
+
default: false
|
|
318
|
+
}
|
|
319
|
+
]);
|
|
320
|
+
|
|
321
|
+
if (answers.confirm) {
|
|
322
|
+
const spinner = ora('Removing skills...').start();
|
|
323
|
+
const cwd = process.cwd();
|
|
324
|
+
const claudeDir = path.join(cwd, '.claude', 'commands');
|
|
325
|
+
|
|
326
|
+
try {
|
|
327
|
+
await fs.remove(claudeDir);
|
|
328
|
+
spinner.succeed(chalk.green('Skills removed successfully!'));
|
|
329
|
+
} catch (error) {
|
|
330
|
+
spinner.fail(chalk.red('Failed to remove skills'));
|
|
331
|
+
console.error(error.message);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
|
|
336
|
+
program
|
|
337
|
+
.command('info')
|
|
338
|
+
.description('Show information about installed skills and detected platforms')
|
|
339
|
+
.action(async () => {
|
|
340
|
+
console.log(banner);
|
|
341
|
+
|
|
342
|
+
const cwd = process.cwd();
|
|
343
|
+
const claudeDir = path.join(cwd, '.claude', 'commands');
|
|
344
|
+
|
|
345
|
+
// Detect AI platforms
|
|
346
|
+
console.log(chalk.magenta('\n🤖 Detected AI Platforms:\n'));
|
|
347
|
+
for (const [key, platform] of Object.entries(AI_PLATFORMS)) {
|
|
348
|
+
const filePath = path.join(cwd, platform.file);
|
|
349
|
+
const exists = await fs.pathExists(filePath);
|
|
350
|
+
const status = exists ? chalk.green('✓') : chalk.gray('○');
|
|
351
|
+
console.log(` ${status} ${platform.name} (${platform.file})`);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
// Skills info
|
|
355
|
+
if (!(await fs.pathExists(claudeDir))) {
|
|
356
|
+
console.log(chalk.yellow('\n⚠️ No skills installed. Run `namnam init` to install.'));
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
const count = await countFiles(claudeDir);
|
|
361
|
+
console.log(chalk.green(`\n✅ ${count} skill files installed`));
|
|
362
|
+
console.log(chalk.gray(` Location: ${claudeDir}`));
|
|
363
|
+
|
|
364
|
+
// List folders
|
|
365
|
+
const items = await fs.readdir(claudeDir, { withFileTypes: true });
|
|
366
|
+
const folders = items.filter(i => i.isDirectory()).map(i => i.name);
|
|
367
|
+
|
|
368
|
+
if (folders.length > 0) {
|
|
369
|
+
console.log(chalk.cyan('\nInstalled categories:'));
|
|
370
|
+
for (const folder of folders) {
|
|
371
|
+
const folderPath = path.join(claudeDir, folder);
|
|
372
|
+
const folderCount = await countFiles(folderPath);
|
|
373
|
+
console.log(chalk.white(` • ${folder} (${folderCount} files)`));
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
// Helper function to count files recursively
|
|
379
|
+
async function countFiles(dir) {
|
|
380
|
+
let count = 0;
|
|
381
|
+
|
|
382
|
+
if (!(await fs.pathExists(dir))) {
|
|
383
|
+
return 0;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
const items = await fs.readdir(dir, { withFileTypes: true });
|
|
387
|
+
|
|
388
|
+
for (const item of items) {
|
|
389
|
+
if (item.isDirectory()) {
|
|
390
|
+
count += await countFiles(path.join(dir, item.name));
|
|
391
|
+
} else if (item.name.endsWith('.md') || item.name.endsWith('.yml') || item.name.endsWith('.json')) {
|
|
392
|
+
count++;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
return count;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
// Generate platform config files
|
|
400
|
+
async function generatePlatformFiles(cwd, templatesDir, force = false) {
|
|
401
|
+
const platformsDir = path.join(templatesDir, 'platforms');
|
|
402
|
+
|
|
403
|
+
// Copy AGENTS.md to project root
|
|
404
|
+
const agentsSrc = path.join(platformsDir, 'AGENTS.md');
|
|
405
|
+
const agentsDest = path.join(cwd, 'AGENTS.md');
|
|
406
|
+
if (await fs.pathExists(agentsSrc)) {
|
|
407
|
+
if (force || !(await fs.pathExists(agentsDest))) {
|
|
408
|
+
await fs.copy(agentsSrc, agentsDest);
|
|
409
|
+
console.log(chalk.green(' ✓ AGENTS.md (Universal)'));
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
// Generate .cursorrules
|
|
414
|
+
const cursorSrc = path.join(platformsDir, 'cursor', 'cursorrules-template.md');
|
|
415
|
+
const cursorDest = path.join(cwd, '.cursorrules');
|
|
416
|
+
if (await fs.pathExists(cursorSrc)) {
|
|
417
|
+
if (force || !(await fs.pathExists(cursorDest))) {
|
|
418
|
+
const content = await fs.readFile(cursorSrc, 'utf-8');
|
|
419
|
+
// Extract the rules content from the markdown
|
|
420
|
+
const match = content.match(/```[\s\S]*?```/);
|
|
421
|
+
if (match) {
|
|
422
|
+
const rules = match[0].replace(/```/g, '').trim();
|
|
423
|
+
await fs.writeFile(cursorDest, rules);
|
|
424
|
+
console.log(chalk.green(' ✓ .cursorrules (Cursor)'));
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
// Generate .windsurfrules
|
|
430
|
+
const windsurfSrc = path.join(platformsDir, 'windsurf', 'windsurfrules-template.md');
|
|
431
|
+
const windsurfDest = path.join(cwd, '.windsurfrules');
|
|
432
|
+
if (await fs.pathExists(windsurfSrc)) {
|
|
433
|
+
if (force || !(await fs.pathExists(windsurfDest))) {
|
|
434
|
+
const content = await fs.readFile(windsurfSrc, 'utf-8');
|
|
435
|
+
const match = content.match(/```[\s\S]*?```/);
|
|
436
|
+
if (match) {
|
|
437
|
+
const rules = match[0].replace(/```/g, '').trim();
|
|
438
|
+
await fs.writeFile(windsurfDest, rules);
|
|
439
|
+
console.log(chalk.green(' ✓ .windsurfrules (Windsurf)'));
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
// Generate .clinerules
|
|
445
|
+
const clineSrc = path.join(platformsDir, 'cline', 'clinerules-template.md');
|
|
446
|
+
const clineDest = path.join(cwd, '.clinerules');
|
|
447
|
+
if (await fs.pathExists(clineSrc)) {
|
|
448
|
+
if (force || !(await fs.pathExists(clineDest))) {
|
|
449
|
+
const content = await fs.readFile(clineSrc, 'utf-8');
|
|
450
|
+
const match = content.match(/```yaml[\s\S]*?```/);
|
|
451
|
+
if (match) {
|
|
452
|
+
const rules = match[0].replace(/```yaml/g, '').replace(/```/g, '').trim();
|
|
453
|
+
await fs.writeFile(clineDest, rules);
|
|
454
|
+
console.log(chalk.green(' ✓ .clinerules (Cline)'));
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
program.parse();
|
package/src/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './cli.js';
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import { fileURLToPath } from 'url';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
|
|
8
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
+
const __dirname = path.dirname(__filename);
|
|
10
|
+
|
|
11
|
+
// Find the actual project root (where user ran npm install)
|
|
12
|
+
function findProjectRoot() {
|
|
13
|
+
// npm sets INIT_CWD to the directory where npm install was run
|
|
14
|
+
if (process.env.INIT_CWD) {
|
|
15
|
+
return process.env.INIT_CWD;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Fallback: navigate from current directory
|
|
19
|
+
let current = process.cwd();
|
|
20
|
+
|
|
21
|
+
// If we're in node_modules, go to parent
|
|
22
|
+
if (current.includes('node_modules')) {
|
|
23
|
+
const parts = current.split(path.sep + 'node_modules');
|
|
24
|
+
current = parts[0];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return current;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
async function autoInstall() {
|
|
31
|
+
const projectRoot = findProjectRoot();
|
|
32
|
+
const silent = process.env.NAMNAM_SILENT === 'true' || process.env.CI === 'true';
|
|
33
|
+
|
|
34
|
+
// Don't run during npm publish or in the package itself
|
|
35
|
+
if (process.env.npm_lifecycle_event === 'prepublishOnly') return;
|
|
36
|
+
if (projectRoot.includes('namnam-cli') || projectRoot.includes('namnam-skills')) return;
|
|
37
|
+
|
|
38
|
+
const claudeDir = path.join(projectRoot, '.claude', 'commands');
|
|
39
|
+
const templatesDir = path.join(__dirname, 'templates');
|
|
40
|
+
|
|
41
|
+
if (!silent) {
|
|
42
|
+
console.log(chalk.cyan('\n╔══════════════════════════════════════════════════════════════╗'));
|
|
43
|
+
console.log(chalk.cyan('║') + ' ' + chalk.yellow.bold('NAMNAM SKILLS') + ' - Auto Installing... ' + chalk.cyan('║'));
|
|
44
|
+
console.log(chalk.cyan('╚══════════════════════════════════════════════════════════════╝\n'));
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const results = { success: 0, failed: 0 };
|
|
48
|
+
|
|
49
|
+
try {
|
|
50
|
+
// Create .claude/commands directory
|
|
51
|
+
await fs.ensureDir(claudeDir);
|
|
52
|
+
|
|
53
|
+
// Copy ALL templates with per-folder error handling
|
|
54
|
+
const folders = ['core', 'platforms', 'official-plugins', 'vercel-skills', 'claudekit', 'bmad', 'cursor-rules'];
|
|
55
|
+
|
|
56
|
+
for (const folder of folders) {
|
|
57
|
+
try {
|
|
58
|
+
const srcDir = path.join(templatesDir, folder);
|
|
59
|
+
if (await fs.pathExists(srcDir)) {
|
|
60
|
+
await fs.copy(srcDir, path.join(claudeDir, folder), { overwrite: true });
|
|
61
|
+
results.success += await countFiles(srcDir);
|
|
62
|
+
}
|
|
63
|
+
} catch (error) {
|
|
64
|
+
results.failed++;
|
|
65
|
+
if (!silent) {
|
|
66
|
+
console.log(chalk.yellow(`⚠️ Skipped ${folder}: ${error.message}`));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Generate platform config files
|
|
72
|
+
try {
|
|
73
|
+
await generatePlatformFiles(projectRoot, templatesDir);
|
|
74
|
+
} catch (error) {
|
|
75
|
+
if (!silent) {
|
|
76
|
+
console.log(chalk.yellow(`⚠️ Some platform configs skipped: ${error.message}`));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (!silent) {
|
|
81
|
+
if (results.success > 0) {
|
|
82
|
+
console.log(chalk.green(`✅ Installed ${results.success}+ skill files to .claude/commands/`));
|
|
83
|
+
console.log(chalk.green('✅ Generated platform configs (AGENTS.md, .cursorrules, etc.)'));
|
|
84
|
+
console.log(chalk.cyan('\n🚀 Quick Start:'));
|
|
85
|
+
console.log(chalk.white(' /namnam <task> - Orchestrate all agents'));
|
|
86
|
+
console.log(chalk.white(' /namnam --full <task> - Maximum power mode'));
|
|
87
|
+
console.log(chalk.white(' /code-review - Multi-aspect code review'));
|
|
88
|
+
console.log(chalk.white(' /validate-and-fix - Run checks and auto-fix\n'));
|
|
89
|
+
}
|
|
90
|
+
if (results.failed > 0) {
|
|
91
|
+
console.log(chalk.yellow(`\n⚠️ ${results.failed} folders skipped. Run manually: npx namnam-skills init --all`));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
} catch (error) {
|
|
96
|
+
// Silent fail - don't break user's install
|
|
97
|
+
if (!silent) {
|
|
98
|
+
console.log(chalk.yellow('⚠️ Auto-install skipped. Run manually: npx namnam-skills init --all'));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
async function countFiles(dir) {
|
|
104
|
+
let count = 0;
|
|
105
|
+
if (!(await fs.pathExists(dir))) return 0;
|
|
106
|
+
|
|
107
|
+
const items = await fs.readdir(dir, { withFileTypes: true });
|
|
108
|
+
for (const item of items) {
|
|
109
|
+
if (item.isDirectory()) {
|
|
110
|
+
count += await countFiles(path.join(dir, item.name));
|
|
111
|
+
} else if (item.name.endsWith('.md') || item.name.endsWith('.yml') || item.name.endsWith('.json')) {
|
|
112
|
+
count++;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return count;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
async function generatePlatformFiles(projectRoot, templatesDir) {
|
|
119
|
+
const platformsDir = path.join(templatesDir, 'platforms');
|
|
120
|
+
|
|
121
|
+
// Copy AGENTS.md (always overwrite for updates)
|
|
122
|
+
const agentsSrc = path.join(platformsDir, 'AGENTS.md');
|
|
123
|
+
const agentsDest = path.join(projectRoot, 'AGENTS.md');
|
|
124
|
+
if (await fs.pathExists(agentsSrc)) {
|
|
125
|
+
await fs.copy(agentsSrc, agentsDest, { overwrite: true });
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Generate .cursorrules
|
|
129
|
+
const cursorSrc = path.join(platformsDir, 'cursor', 'cursorrules-template.md');
|
|
130
|
+
const cursorDest = path.join(projectRoot, '.cursorrules');
|
|
131
|
+
if (await fs.pathExists(cursorSrc) && !(await fs.pathExists(cursorDest))) {
|
|
132
|
+
const content = await fs.readFile(cursorSrc, 'utf-8');
|
|
133
|
+
const match = content.match(/```[\s\S]*?```/);
|
|
134
|
+
if (match) {
|
|
135
|
+
await fs.writeFile(cursorDest, match[0].replace(/```/g, '').trim());
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Generate .windsurfrules
|
|
140
|
+
const windsurfSrc = path.join(platformsDir, 'windsurf', 'windsurfrules-template.md');
|
|
141
|
+
const windsurfDest = path.join(projectRoot, '.windsurfrules');
|
|
142
|
+
if (await fs.pathExists(windsurfSrc) && !(await fs.pathExists(windsurfDest))) {
|
|
143
|
+
const content = await fs.readFile(windsurfSrc, 'utf-8');
|
|
144
|
+
const match = content.match(/```[\s\S]*?```/);
|
|
145
|
+
if (match) {
|
|
146
|
+
await fs.writeFile(windsurfDest, match[0].replace(/```/g, '').trim());
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// Generate .clinerules
|
|
151
|
+
const clineSrc = path.join(platformsDir, 'cline', 'clinerules-template.md');
|
|
152
|
+
const clineDest = path.join(projectRoot, '.clinerules');
|
|
153
|
+
if (await fs.pathExists(clineSrc) && !(await fs.pathExists(clineDest))) {
|
|
154
|
+
const content = await fs.readFile(clineSrc, 'utf-8');
|
|
155
|
+
const match = content.match(/```yaml[\s\S]*?```/);
|
|
156
|
+
if (match) {
|
|
157
|
+
await fs.writeFile(clineDest, match[0].replace(/```yaml/g, '').replace(/```/g, '').trim());
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
autoInstall();
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'agent-builder'
|
|
3
|
+
description: 'agent-builder agent'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You must fully embody this agent's persona and follow all activation instructions exactly as specified. NEVER break character until given an exit command.
|
|
7
|
+
|
|
8
|
+
<agent-activation CRITICAL="TRUE">
|
|
9
|
+
1. LOAD the FULL agent file from @_bmad/bmb/agents/agent-builder.md
|
|
10
|
+
2. READ its entire contents - this contains the complete agent persona, menu, and instructions
|
|
11
|
+
3. Execute ALL activation steps exactly as written in the agent file
|
|
12
|
+
4. Follow the agent's persona and menu system precisely
|
|
13
|
+
5. Stay in character throughout the session
|
|
14
|
+
</agent-activation>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'module-builder'
|
|
3
|
+
description: 'module-builder agent'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You must fully embody this agent's persona and follow all activation instructions exactly as specified. NEVER break character until given an exit command.
|
|
7
|
+
|
|
8
|
+
<agent-activation CRITICAL="TRUE">
|
|
9
|
+
1. LOAD the FULL agent file from @_bmad/bmb/agents/module-builder.md
|
|
10
|
+
2. READ its entire contents - this contains the complete agent persona, menu, and instructions
|
|
11
|
+
3. Execute ALL activation steps exactly as written in the agent file
|
|
12
|
+
4. Follow the agent's persona and menu system precisely
|
|
13
|
+
5. Stay in character throughout the session
|
|
14
|
+
</agent-activation>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'workflow-builder'
|
|
3
|
+
description: 'workflow-builder agent'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You must fully embody this agent's persona and follow all activation instructions exactly as specified. NEVER break character until given an exit command.
|
|
7
|
+
|
|
8
|
+
<agent-activation CRITICAL="TRUE">
|
|
9
|
+
1. LOAD the FULL agent file from @_bmad/bmb/agents/workflow-builder.md
|
|
10
|
+
2. READ its entire contents - this contains the complete agent persona, menu, and instructions
|
|
11
|
+
3. Execute ALL activation steps exactly as written in the agent file
|
|
12
|
+
4. Follow the agent's persona and menu system precisely
|
|
13
|
+
5. Stay in character throughout the session
|
|
14
|
+
</agent-activation>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 'Tri-modal workflow for creating, editing, and validating BMAD Core compliant agents'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
IT IS CRITICAL THAT YOU FOLLOW THIS COMMAND: LOAD the FULL @_bmad/bmb/workflows/agent/workflow.md, READ its entire contents and follow its directions exactly!
|