@azerogluemin/ai-bootstrap 0.5.0 → 0.6.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.
@@ -1,173 +1,108 @@
1
- // ai-bootstrap new — bootstrap a project folder with project-scope skills + agents.
1
+ // ai-bootstrap new — preset-based project bootstrap (v0.6.0)
2
2
  //
3
- // v0.5.0 changes (per user feedback):
4
- // - 3 questions only (was 5)
5
- // - MULTI-SELECT bundles (was single-select + override)
6
- // - No custom rules question (placeholder in CLAUDE.md instead)
3
+ // User picks a PRESET (SaaS / Social Page / AI Studio).
4
+ // Each preset:
5
+ // - Installs its skills + agents (symlinked from pool)
6
+ // - Suggests MCPs (user-scope; auto-add if not already configured)
7
+ // - Scaffolds folder structure
8
+ // - Writes CLAUDE.md with preset-specific rules
7
9
  //
8
- // Flow:
9
- // 1) Project name (default: folder basename)
10
- // 2) Bundles (multi-select checkbox)
11
- // 3) Description (1-2 sentences for CLAUDE.md)
12
- //
13
- // Installation uses Pool+Symlink: skills/agents are symlinked from
14
- // ~/.claude/skills-pool/ — no per-project duplication on disk.
10
+ // Bundles no longer surface in user-facing CLI — presets replace them.
15
11
  import chalk from 'chalk';
16
- import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
17
- import { join, basename } from 'node:path';
18
- import { input, confirm, checkbox } from '@inquirer/prompts';
12
+ import { basename, join } from 'node:path';
13
+ import { existsSync, mkdirSync } from 'node:fs';
14
+ import { input, select, confirm } from '@inquirer/prompts';
19
15
  import { installSkills } from '../applier/skills-installer.js';
20
16
  import { installAgents } from '../applier/agents-installer.js';
21
- import { resolvePlan } from '../applier/bundle-definitions.js';
22
- const BUNDLES_INFO = [
23
- { id: 'foundation', label: 'Foundation', description: '10 universal skill (artıq qlobalda var)' },
24
- { id: 'developer', label: 'Developer', description: 'SaaS, fullstack, mobile, data (21 skill, 18 agent)' },
25
- { id: 'creator', label: 'Creator', description: 'Video, Reel, sosial, brand (26 skill, 13 agent)' },
26
- { id: 'marketer', label: 'Marketer', description: 'SEO, SMM, copy, ads (24 skill, 29 agent)' },
27
- { id: 'founder', label: 'Founder', description: 'C-Level + product + marketing + coaching (35, 38)' },
28
- { id: 'full-stack', label: 'Full Stack', description: 'HƏR ŞEY — 85 skill, 78 agent' },
29
- ];
30
- function projectClaudeMd(name, description, bundles) {
31
- return `# CLAUDE.md — ${name}
32
-
33
- Bu fayl bu layihə üçün xüsusi instruksiyalardır. Hər söhbətdə avtomatik yüklənir.
34
-
35
- ## Layihə haqqında
36
-
37
- ${description || '(təsvir verilməyib — buraya yaz)'}
38
-
39
- ## Bundle(lər)
40
-
41
- ${bundles.map((b) => '- `' + b + '`').join('\n')}
42
-
43
- Skill + agent siyahısı: \`.claude/skills/\` və \`.claude/agents/\` qovluqlarında (symlinks).
44
- Pool: \`~/.claude/skills-pool/\` — bütün skill-lər bir dəfə saxlanır, hər layihə link verir.
45
-
46
- Əlavə skill/bundle əlavə etmək:
47
- \`\`\`
48
- ai-bootstrap add showrunner # tək skill
49
- ai-bootstrap add --bundle marketer # bütün bundle
50
- ai-bootstrap add # interaktiv siyahı
51
- \`\`\`
52
-
53
- ## Custom rules (bu layihəyə xas)
54
-
55
- <!-- Buraya layihə-spesifik qaydalar yaz. Misal:
56
- 1. AZ-də danış, RU sözləri qarışdırma
57
- 2. Bu layihədə Tailwind v4 istifadə olunur
58
- 3. Müştəri "Restoran X" şirkətidir, terminlərinə hörmət et
59
- -->
60
- `;
61
- }
62
- function projectGitignore() {
63
- return [
64
- '# ai-bootstrap project-scope installations',
65
- '# Skills + agents qovluqlarını git-ə salmaq istəyirsənsə commentdə qoy:',
66
- '# skills/',
67
- '# agents/',
68
- '',
69
- '# Həmişə xaric:',
70
- '*.log',
71
- '.DS_Store',
72
- '',
73
- ].join('\n');
74
- }
17
+ import { writeMcpConfig } from '../applier/mcp-config.js';
18
+ import { listPresets, getPreset } from '../applier/preset-definitions.js';
19
+ import { scaffoldPreset } from '../applier/preset-scaffolder.js';
20
+ import { writeFileSync } from 'node:fs';
75
21
  export async function runNewCommand(_args) {
76
22
  const cwd = process.cwd();
77
23
  const folderName = basename(cwd);
78
- console.log(chalk.bold(`\nai-bootstrap new — layihə skill + agent quraşdırması\n`));
79
- console.log(chalk.dim(` Qovluq: ${cwd}\n`));
80
- // Step 1: project name
24
+ console.log(chalk.bold(`\nai-bootstrap new — layihə bootstrap\n`));
25
+ console.log(chalk.dim(` Qovluq: ${cwd}\n`));
26
+ // 1) Project name
81
27
  const projectName = await input({
82
28
  message: '1/3 — Layihə adı?',
83
29
  default: folderName,
84
30
  });
85
- // Step 2: multi-select bundles
86
- const bundleIds = await checkbox({
87
- message: '2/3 — Hansı bundle(ləri) istəyirsən? (Space = seç, Enter = bitir)',
88
- choices: BUNDLES_INFO.map((b) => ({
89
- name: `${b.label} ${chalk.dim(b.description)}`,
90
- value: b.id,
91
- disabled: b.id === 'foundation' ? '(artıq qlobalda)' : false,
31
+ // 2) Preset
32
+ const presetId = (await select({
33
+ message: '2/3 — Bu qovluqda nə qurmaq istəyirsən?',
34
+ choices: listPresets().map((p) => ({
35
+ name: `${chalk.cyan(p.label.padEnd(20))} ${chalk.dim(p.description)}`,
36
+ value: p.id,
92
37
  })),
93
- required: true,
94
- });
95
- // Step 3: description
38
+ }));
39
+ const preset = getPreset(presetId);
40
+ // 3) Description
96
41
  const description = await input({
97
42
  message: '3/3 — Qısa təsvir (1-2 cümlə) — CLAUDE.md-yə yazılacaq:',
98
43
  default: '',
99
44
  });
100
- // Install
45
+ // ════ Install ════
101
46
  const projectClaudeDir = join(cwd, '.claude');
102
47
  const projectSkillsDir = join(projectClaudeDir, 'skills');
103
48
  const projectAgentsDir = join(projectClaudeDir, 'agents');
104
- if (!existsSync(projectClaudeDir)) {
49
+ if (!existsSync(projectClaudeDir))
105
50
  mkdirSync(projectClaudeDir, { recursive: true });
106
- }
107
51
  console.log('');
108
- console.log(chalk.bold(`Quraşdırılır ${chalk.cyan(projectClaudeDir)}`));
109
- console.log(chalk.dim(` Pool: ~/.claude/skills-pool/ + ~/.claude/agents-pool/ (symlinks)\n`));
110
- // Aggregate skills + agents from all selected bundles (dedupe)
111
- const allSkills = new Set();
112
- const allAgents = new Set();
113
- for (const id of bundleIds) {
114
- const plan = resolvePlan(id, id);
115
- for (const s of plan.skills)
116
- allSkills.add(s);
117
- for (const a of plan.agents)
118
- allAgents.add(a);
119
- }
120
- console.log(chalk.dim(` Skills (${allSkills.size})...`));
121
- const skillResult = installSkills([...allSkills], projectSkillsDir);
122
- console.log(` ${chalk.green('')} ${skillResult.installed.length} installed` +
123
- (skillResult.skipped.length > 0 ? `, ${chalk.dim(skillResult.skipped.length + ' skipped')}` : '') +
124
- (skillResult.errors.length > 0 ? `, ${chalk.red(skillResult.errors.length + ' errors')}` : '') +
125
- (skillResult.linkMode ? chalk.dim(` [${skillResult.linkMode}]`) : ''));
126
- console.log(chalk.dim(` Agents (${allAgents.size})...`));
127
- const agentResult = installAgents([...allAgents], projectAgentsDir);
128
- console.log(` ${chalk.green('✓')} ${agentResult.installed.length} installed` +
129
- (agentResult.skipped.length > 0 ? `, ${chalk.dim(agentResult.skipped.length + ' skipped')}` : '') +
130
- (agentResult.errors.length > 0 ? `, ${chalk.red(agentResult.errors.length + ' errors')}` : ''));
131
- // Write CLAUDE.md
132
- const claudeMdPath = join(cwd, 'CLAUDE.md');
133
- if (existsSync(claudeMdPath)) {
134
- const overwrite = await confirm({
135
- message: 'CLAUDE.md artıq var. Üstünə yazaq?',
136
- default: false,
137
- });
138
- if (overwrite) {
139
- writeFileSync(claudeMdPath, projectClaudeMd(projectName, description, bundleIds), 'utf-8');
140
- console.log(` ${chalk.green('✓')} CLAUDE.md yenilədi`);
141
- }
142
- else {
143
- console.log(` ${chalk.dim('−')} CLAUDE.md saxlandı (üstünə yazılmadı)`);
52
+ console.log(chalk.bold(`Quraşdırılır: ${chalk.cyan(preset.label)}`));
53
+ console.log(chalk.dim(` ${preset.skills.length} skill, ${preset.agents.length} agent, ${preset.mcps.length} MCP suggested\n`));
54
+ // Install skills
55
+ console.log(chalk.dim(` Skills (${preset.skills.length})...`));
56
+ const sr = installSkills(preset.skills, projectSkillsDir);
57
+ console.log(` ${chalk.green('✓')} ${sr.installed.length} installed` +
58
+ (sr.skipped.length > 0 ? `, ${chalk.dim(sr.skipped.length + ' skipped')}` : '') +
59
+ (sr.errors.length > 0 ? `, ${chalk.red(sr.errors.length + ' errors')}` : '') +
60
+ (sr.linkMode ? chalk.dim(` [${sr.linkMode}]`) : ''));
61
+ // Install agents
62
+ console.log(chalk.dim(` Agents (${preset.agents.length})...`));
63
+ const ar = installAgents(preset.agents, projectAgentsDir);
64
+ console.log(` ${chalk.green('✓')} ${ar.installed.length} installed` +
65
+ (ar.skipped.length > 0 ? `, ${chalk.dim(ar.skipped.length + ' skipped')}` : '') +
66
+ (ar.errors.length > 0 ? `, ${chalk.red(ar.errors.length + ' errors')}` : ''));
67
+ // MCPs ask if user wants to auto-add suggested
68
+ console.log(chalk.dim(` MCPs (${preset.mcps.length} təklif olunur)...`));
69
+ const addMcps = await confirm({
70
+ message: ` ${preset.mcps.length} MCP təklif olunur — avtomatik konfiq edək? (credentials sonra)`,
71
+ default: true,
72
+ });
73
+ if (addMcps) {
74
+ const mcpResult = writeMcpConfig(preset.mcps);
75
+ console.log(` ${chalk.green('✓')} ${mcpResult.installed.length} yeni MCP` +
76
+ (mcpResult.skipped.length > 0 ? `, ${chalk.dim(mcpResult.skipped.length + ' artıq var')}` : '') +
77
+ (mcpResult.missingFromCatalog.length > 0 ? chalk.yellow(`, ${mcpResult.missingFromCatalog.length} kataloqda yox`) : ''));
78
+ if (mcpResult.credentialsRequired.length > 0) {
79
+ console.log(chalk.dim(` Credential gözləyən: ${mcpResult.credentialsRequired.length} ${chalk.cyan('ai-bootstrap mcp credentials')}`));
144
80
  }
145
81
  }
146
- else {
147
- writeFileSync(claudeMdPath, projectClaudeMd(projectName, description, bundleIds), 'utf-8');
148
- console.log(` ${chalk.green('✓')} CLAUDE.md yazıldı`);
149
- }
150
- // Project gitignore (in .claude/)
151
- const gitignorePath = join(projectClaudeDir, '.gitignore');
152
- if (!existsSync(gitignorePath)) {
153
- writeFileSync(gitignorePath, projectGitignore(), 'utf-8');
154
- }
155
- // Project state
82
+ // Scaffold folder structure + CLAUDE.md + README + .gitignore
83
+ console.log('');
84
+ console.log(chalk.dim(' Folder strukturu + CLAUDE.md yazılır...'));
85
+ const scaffold = scaffoldPreset(presetId, { cwd, projectName, description });
86
+ console.log(` ${chalk.green('✓')} ${scaffold.foldersCreated.length} qovluq, ${scaffold.filesWritten.length} fayl yaradıldı` +
87
+ (scaffold.filesSkipped.length > 0 ? chalk.dim(`, ${scaffold.filesSkipped.length} skip (mövcud)`) : ''));
88
+ // Save project state
156
89
  const projectStatePath = join(projectClaudeDir, 'ai-bootstrap-project.json');
157
90
  writeFileSync(projectStatePath, JSON.stringify({
158
- version: '1.0',
91
+ version: '2.0',
159
92
  name: projectName,
160
- bundles: bundleIds,
93
+ preset: presetId,
161
94
  description,
162
95
  createdAt: new Date().toISOString(),
163
96
  }, null, 2), 'utf-8');
97
+ // Final summary
164
98
  console.log('');
165
99
  console.log(chalk.bold.green('🎉 Layihə hazırdır.\n'));
166
100
  console.log(chalk.dim('Növbəti:'));
167
- console.log(` ${chalk.cyan('claude')} — sessiyanı başlat`);
168
- console.log(` ${chalk.cyan('cat CLAUDE.md')} layihə qaydalarını yoxla`);
169
- console.log(` ${chalk.cyan('ai-bootstrap list')} — quraşdırılanlar`);
170
- console.log(` ${chalk.cyan('ai-bootstrap add <skill>')} — əlavə skill əlavə`);
101
+ console.log(` ${chalk.cyan('claude')} — sessiyanı başlat`);
102
+ console.log(` ${chalk.cyan('cat CLAUDE.md')} preset qaydalarını yoxla`);
103
+ console.log(` ${chalk.cyan('ai-bootstrap list')} — quraşdırılanlar`);
104
+ console.log(` ${chalk.cyan('ai-bootstrap add <skill>')} — əlavə skill əlavə et`);
105
+ console.log(` ${chalk.cyan('ai-bootstrap mcp credentials')} — MCP token əlavə et`);
171
106
  console.log('');
172
107
  }
173
108
  //# sourceMappingURL=new.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,EAAE;AACF,sCAAsC;AACtC,+BAA+B;AAC/B,0DAA0D;AAC1D,kEAAkE;AAClE,EAAE;AACF,QAAQ;AACR,+CAA+C;AAC/C,uCAAuC;AACvC,iDAAiD;AACjD,EAAE;AACF,mEAAmE;AACnE,+DAA+D;AAE/D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAgC,MAAM,kCAAkC,CAAC;AAE7F,MAAM,YAAY,GAA6E;IAC7F,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,yCAAyC,EAAE;IACjG,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,oDAAoD,EAAE;IAC1G,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,iDAAiD,EAAE;IACnG,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,0CAA0C,EAAE;IAC9F,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,mDAAmD,EAAE;IACrG,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,8BAA8B,EAAE;CACvF,CAAC;AAEF,SAAS,eAAe,CAAC,IAAY,EAAE,WAAmB,EAAE,OAAiB;IAC3E,OAAO,iBAAiB,IAAI;;;;;;EAM5B,WAAW,IAAI,kCAAkC;;;;EAIjD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;CAmB/C,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO;QACL,4CAA4C;QAC5C,yEAAyE;QACzE,WAAW;QACX,WAAW;QACX,EAAE;QACF,iBAAiB;QACjB,OAAO;QACP,WAAW;QACX,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAe;IACjD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAEjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC;IAE9C,uBAAuB;IACvB,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC;QAC9B,OAAO,EAAE,mBAAmB;QAC5B,OAAO,EAAE,UAAU;KACpB,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC;QAC/B,OAAO,EAAE,mEAAmE;QAC5E,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE;YAChD,KAAK,EAAE,CAAC,CAAC,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK;SAC7D,CAAC,CAAC;QACH,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,sBAAsB;IACtB,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC;QAC9B,OAAO,EAAE,yDAAyD;QAClE,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC;IAEH,UAAU;IACV,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAE1D,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC,CAAC;IAE/F,+DAA+D;IAC/D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM;YAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM;YAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,SAAS,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,YAAY;QAC/D,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjG,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CACzE,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,SAAS,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,YAAY;QAC/D,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjG,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACjG,CAAC;IAEF,kBAAkB;IAClB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC5C,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,oCAAoC;YAC7C,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,IAAI,SAAS,EAAE,CAAC;YACd,aAAa,CAAC,YAAY,EAAE,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;YAC3F,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,YAAY,EAAE,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;QAC3F,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACzD,CAAC;IAED,kCAAkC;IAClC,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;IAC3D,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,aAAa,CAAC,aAAa,EAAE,gBAAgB,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,gBAAgB;IAChB,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,CAAC;IAC7E,aAAa,CACX,gBAAgB,EAChB,IAAI,CAAC,SAAS,CACZ;QACE,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,SAAS;QAClB,WAAW;QACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,EACD,IAAI,EACJ,CAAC,CACF,EACD,OAAO,CACR,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,8CAA8C,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,gDAAgD,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,mCAAmC,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,8BAA8B,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@azerogluemin/ai-bootstrap",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Personal AI infrastructure bootstrap for Claude Code — interactive setup wizard with skills, agents, MCPs, and cross-project memory",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -0,0 +1,209 @@
1
+ ---
2
+ name: art-director
3
+ description: Senior art director responsible for overall visual identity across a project — production design, color palette, costume, props, set dressing, era specificity. Activates on visual world-building, project visual language, mood board design, look/feel direction. Triggers on AZ phrases like "vizual dil", "atmosfer", "art direction", "mood board", "production design" and EN equivalents.
4
+ license: MIT
5
+ ---
6
+
7
+ # Art Director
8
+
9
+ Senior art director (bədii rejissor) who designs the visual world of a project — every choice that appears on screen.
10
+
11
+ ## When this skill activates
12
+
13
+ - User asks for visual direction / mood / look of a project
14
+ - User wants mood board, reference deck, visual brief
15
+ - User asks about production design (sets, props, costumes, era)
16
+ - User mentions "world-building" for ad / film / video / brand
17
+ - User asks for visual coherence critique across project
18
+
19
+ ## Core principles
20
+
21
+ 1. **One world, many choices** — Every visible element (set, costume, prop, color, texture, lighting hint) reinforces the same world. A wrong prop breaks the spell.
22
+ 2. **Era specificity** — If your story is set in 1973 Soviet Baku, the typography, fabric weave, ceramic glaze, and lighting fixtures all need to be 1973. Anachronisms destroy trust.
23
+ 3. **Color tells story** — Color palette per scene/character planned in pre-production, not improvised on set.
24
+ 4. **Subtraction over addition** — Best production design removes distractions, focuses eye on actor/subject.
25
+ 5. **Reference, don't copy** — Borrow from real films/artists/photographers; never paste their look verbatim.
26
+
27
+ ## Pre-production deliverables
28
+
29
+ ### 1. Visual treatment (5-15 pages)
30
+ - Project synopsis (1 paragraph)
31
+ - Visual logline (1 sentence: "It looks like ___ meets ___")
32
+ - Mood board (8-20 reference images, grouped by theme)
33
+ - Color palette (5-8 swatches with hex codes + intended use)
34
+ - Lighting language (key + fill + back + ambient — described per location)
35
+ - Texture + material (3-5 dominant materials: brushed steel, raw linen, polished concrete)
36
+ - Costume notes per character
37
+ - Era + cultural reference notes
38
+
39
+ ### 2. Mood board structure
40
+
41
+ Don't dump 50 random images. Curate:
42
+
43
+ ```
44
+ Mood board sections:
45
+ ├── Overall vibe (3-4 hero refs)
46
+ ├── Color (5-6 swatches + sample frames)
47
+ ├── Lighting (key looks per scene type)
48
+ ├── Costume (per character/scene)
49
+ ├── Set / location (3-5 per primary set)
50
+ ├── Props (hero objects — 5-10)
51
+ └── Composition references (framing/depth/scale)
52
+ ```
53
+
54
+ ### 3. Production bible
55
+ - Locked palettes per scene
56
+ - Costume continuity per character
57
+ - Hero prop list with sourcing notes
58
+ - Hand-drawn or 3D set sketches
59
+ - Visual continuity rules ("never see fluorescent lighting", "no plastic visible")
60
+
61
+ ## Color palette design
62
+
63
+ ### Approach: per-scene palette
64
+ Each scene has dominant + supporting + accent colors.
65
+
66
+ **Wes Anderson Hotel Budapest** (example):
67
+ - Lobby: Pink (#E8B4B8) + bronze (#B8956A) + cream (#F2EDDA)
68
+ - Confectionery: Pastel violet + sky blue + raspberry
69
+ - Prison: Olive + faded denim + steel
70
+ - Mountain: White + cobalt + spruce green
71
+
72
+ ### Approach: per-character palette
73
+ Each character associated with 1-2 colors throughout.
74
+
75
+ **Joker (Joaquin Phoenix)**:
76
+ - Early Arthur: drab brown, washed-out cream
77
+ - Becoming Joker: emerald + violet + blood red (saturation increases as character transforms)
78
+
79
+ ### Color wheel patterns
80
+ - **Complementary** (opposite) — high contrast, tension
81
+ - **Analogous** (adjacent) — harmony, calm
82
+ - **Triadic** — vibrant balance
83
+ - **Split-complementary** — dynamic without harshness
84
+ - **Monochromatic** + accent — singular mood with one pop
85
+
86
+ ### Tools
87
+ - **Pantone Studio** — match real-world colors
88
+ - **Adobe Color** — extract palette from image
89
+ - **Color Hunt** / **Coolors** — discover palettes
90
+ - **Khroma** — AI palette gen trained on your taste
91
+
92
+ ## Era + cultural research
93
+
94
+ For period work (or culture-specific work):
95
+
96
+ ### Research checklist
97
+ - [ ] Decade-specific typography (Helvetica was 1957; don't use it for 1940s)
98
+ - [ ] Fabric availability + weaving patterns
99
+ - [ ] Color palettes of the era (Kodachrome looks different from Technicolor)
100
+ - [ ] Furniture + appliances (1973 Soviet kitchen ≠ 1973 Western kitchen)
101
+ - [ ] Cars, signage, advertising
102
+ - [ ] Hair + makeup (silhouettes, products of the era)
103
+ - [ ] Lighting tech (gas lamp ≠ tungsten ≠ fluorescent ≠ LED)
104
+ - [ ] Hand gestures + posture norms
105
+
106
+ ### AZ specific (Azerbaijani context)
107
+ - 1970s-80s: Soviet color palettes (muted reds, ochre, olive); brutalist + ornament fusion
108
+ - 1990s post-Soviet: faded propaganda + emerging consumer goods
109
+ - 2000s: Heydar Aliyev era public space aesthetics
110
+ - Karabakh war references: handle with care; cultural sensitivity required
111
+ - Religious imagery: Shi'a Muslim majority — avoid casual desecration of symbols
112
+
113
+ ## Costume design
114
+
115
+ ### Per character process
116
+ 1. **Backstory** — Where do they live? What income? What taste?
117
+ 2. **Color story** — 1-2 dominant colors that follow character arc
118
+ 3. **Texture story** — Materials reflect status (silk = elite, denim = working, wool = professional, synthetic = utilitarian)
119
+ 4. **Continuity** — Same costume across scenes unless story justifies change
120
+ 5. **Distress / wear** — New shoes scream "fresh from prop room"; intentional wear sells reality
121
+
122
+ ### Continuity tracker
123
+ | Scene | Character | Costume | Notes |
124
+ |---|---|---|---|
125
+ | 01 | Aida | Cream silk blouse, charcoal trouser, gold ring | First impression: composed |
126
+ | 02 | Aida | Same trouser, white tee, ring removed | Day later, cracked composure |
127
+
128
+ ## Set + location
129
+
130
+ ### Choosing locations
131
+ - **Practical location** (real space) — authenticity, cheap, limits (size, time, control)
132
+ - **Studio set build** — control over everything, expensive, requires time
133
+ - **Mixed (location + extension/dressing)** — most common
134
+
135
+ ### Dressing a location
136
+ - Layer 1: Architecture (given)
137
+ - Layer 2: Furniture + large objects
138
+ - Layer 3: Dressing (rugs, curtains, art)
139
+ - Layer 4: Set decoration (hero props placed for camera)
140
+ - Layer 5: Continuity touches (coffee cup placement, book stack)
141
+
142
+ ## Working with director + DP
143
+
144
+ - Art director **proposes**, director **decides**
145
+ - DP + art director must agree on lighting compatible with set materials (shiny surfaces vs matte)
146
+ - Continuity supervisor catches mistakes — share continuity tracker with them
147
+ - Costume designer reports to art director on coherence; both report to director
148
+
149
+ ## Output format
150
+
151
+ When asked to design a visual treatment:
152
+
153
+ ```markdown
154
+ ## Visual treatment — <project>
155
+
156
+ ### Visual logline
157
+ "It looks like <A> meets <B>"
158
+
159
+ ### Mood
160
+ - Overall: <emotion + atmosphere>
161
+ - Key scene tonal map: <list>
162
+
163
+ ### Palette
164
+ - Dominant: #XXXXXX (<name>)
165
+ - Supporting: #YYYYYY (<name>)
166
+ - Accent: #ZZZZZZ (<name>)
167
+ - Application: <how used scene-to-scene>
168
+
169
+ ### Lighting language
170
+ - Day exteriors: <style>
171
+ - Night interiors: <style>
172
+ - Dramatic / climax: <style>
173
+
174
+ ### Era / setting
175
+ - Time: <year/range>
176
+ - Place: <city/region>
177
+ - Cultural notes: <important specifics>
178
+
179
+ ### Costume per character
180
+ | Character | Color story | Texture | Notes |
181
+
182
+ ### Hero props
183
+ -
184
+
185
+ ### Set / location refs
186
+ - <Pinterest board / drive link>
187
+
188
+ ### Anti-references (avoid)
189
+ -
190
+ ```
191
+
192
+ ## Anti-patterns (qadağa)
193
+
194
+ - Generic "moody + cinematic" without specific era/culture
195
+ - Mood board of 30 random Pinterest screenshots without theme
196
+ - Costume continuity errors (different watch each scene)
197
+ - Modern appliances in period piece (microwaves in 1972 kitchen)
198
+ - Color palette decided in post (must drive pre-production)
199
+ - Ignoring cultural specificity (generic "Middle East look" applied to AZ)
200
+ - Hero prop visible but story-irrelevant (distracts eye)
201
+
202
+ ## Sources
203
+
204
+ - "Production Design" — Vincent LoBrutto
205
+ - "The Visual Story" — Bruce Block (visual structure)
206
+ - ASC American Cinematographer magazine
207
+ - AFI / NYFA production design courses
208
+ - Pinterest + Are.na (curation tools)
209
+ - Real museum archives for era research