@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.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,81 @@ All notable changes to `@azerogluemin/ai-bootstrap` are documented here.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.6.0] — 2026-06-21
9
+
10
+ Preset-based project bootstrap — folder scaffolding + CLAUDE.md per preset.
11
+
12
+ ### Added — 8 new production skills
13
+
14
+ Real production-quality content (~150-280 lines each, with sources):
15
+
16
+ Dev specialists:
17
+ - `frontend-developer` — React 19/Next 16/Vue 3/Svelte 5, state mgmt, performance, WCAG 2.2, testing
18
+ - `backend-developer` — REST/GraphQL, NestJS/Hono/FastAPI, multi-tenant, OWASP, caching, queues
19
+ - `devops-developer` — Docker, K8s, CI/CD, IaC, secrets, monitoring, SLOs
20
+ - `mobile-developer` — React Native (New Arch), Flutter, native iOS/Android, offline sync
21
+
22
+ Film production specialists:
23
+ - `editor` — Cut grammar, J/L cuts, vertical pacing, sound editing, Resolve/Premiere/FCP/CapCut
24
+ - `colorist` — Scopes (waveform/vector/parade), LUT design, Pixar/Wong Kar-wai/Deakins/A24 looks
25
+ - `art-director` — Visual treatment, mood board, palette per scene/character, era research (AZ-specific)
26
+ - `cinematographer` — Camera/lens/light decision trees, Deakins/Lubezki/Fraser craft
27
+
28
+ ### Added — 3 project presets
29
+
30
+ Replaces bundle abstraction in user-facing CLI. Each preset includes
31
+ folder structure + CLAUDE.md template + skill+agent install list + MCP suggestions.
32
+
33
+ **SaaS Development** (~58 skills, ~50 agents, ~22 MCPs)
34
+ - Folders: \`apps/{web,api,admin}\`, \`packages/{ui,db,shared}\`, \`docs/00-27\`, \`infra/\`, \`scripts/\`
35
+ - CLAUDE.md rules: TS strict, multi-tenant, JWT+refresh, OWASP, decisions-log append-only
36
+ - 28 numbered docs scaffolded (00-claude-code-guide → 27-go-live-runbook)
37
+
38
+ **Social Page** (~44 skills, ~22 agents, ~21 MCPs)
39
+ - Folders: \`strategy/\`, \`calendar/\`, \`days/YYYY-MM-DD/{characters,shots,video,music,thumbnail,final}\`,
40
+ \`prompts-library/\`, \`assets/\`, \`analytics/\`
41
+ - CLAUDE.md rules: **Prompt-first** (vizual təsdiqsiz fayl qadağa), daily folder isolation
42
+ - Strategy MD skeletons: brand-guide, content-pillars, audience-personas, competitors
43
+
44
+ **AI Studio** (~34 skills, ~11 agents, ~14 MCPs)
45
+ - Folders: \`projects/<client>/{brief,characters,locations,shots,video,music}\`,
46
+ \`days/YYYY-MM-DD/\`, \`references/{pixar-style,cinematography,color-grading}\`,
47
+ \`prompts-library/\`
48
+ - CLAUDE.md rules: Prompt-first, style refs before prompt, file naming convention
49
+ - NO social platform skills/MCPs (studio doesn't publish)
50
+
51
+ ### Changed — `ai-bootstrap new` is now preset-based
52
+
53
+ Previous (v0.5.0): multi-select bundle checkbox
54
+ New (v0.6.0): single-select preset → 3 questions only:
55
+ 1. Layihə adı?
56
+ 2. Bu qovluqda nə qurmaq istəyirsən? (SaaS / Social Page / AI Studio)
57
+ 3. Qısa təsvir?
58
+
59
+ After selection: skills+agents symlinked from pool, MCPs auto-suggested,
60
+ folder structure scaffolded, CLAUDE.md written with preset-specific rules.
61
+
62
+ ### Architecture
63
+
64
+ - New: \`packages/cli/src/applier/preset-definitions.ts\` — 3 preset metadata
65
+ - New: \`packages/cli/src/applier/preset-scaffolder.ts\` — folder scaffolder per preset
66
+ - Bundles still exist internally (\`resolvePlan\`, \`SKILL_BUNDLES\`, \`AGENT_BUNDLES\`)
67
+ but no longer surface to users — presets replaced them
68
+ - Project state schema bumped to v2.0: \`{ preset, name, description, createdAt }\`
69
+
70
+ ### Tests
71
+
72
+ - 176 passing (was 142): 121 smoke + 55 e2e
73
+ - New: 30+ preset definition assertions (skill counts, MCP presence, preset uniqueness)
74
+ - New: 11 scaffolder assertions (SaaS 28 docs, Social strategy MDs, AI Studio refs)
75
+
76
+ ### Migration
77
+
78
+ - v0.5.0 projects (multi-bundle): continue to work; new \`ai-bootstrap new\` writes preset state
79
+ - Old multi-bundle CLAUDE.md template still readable; project state v2.0 backward compat
80
+
81
+ [0.6.0]: https://github.com/eminazeroglu/ai-bootstrap/releases/tag/v0.6.0
82
+
8
83
  ## [0.5.0] — 2026-06-21
9
84
 
10
85
  Big architectural + UX redesign from real-world test feedback.
@@ -0,0 +1,15 @@
1
+ export type PresetId = 'saas-development' | 'social-page' | 'ai-studio';
2
+ export interface PresetDefinition {
3
+ id: PresetId;
4
+ label: string;
5
+ description: string;
6
+ skills: string[];
7
+ agents: string[];
8
+ mcps: string[];
9
+ }
10
+ export declare const SAAS_DEVELOPMENT: PresetDefinition;
11
+ export declare const SOCIAL_PAGE: PresetDefinition;
12
+ export declare const AI_STUDIO: PresetDefinition;
13
+ export declare const PRESETS: Record<PresetId, PresetDefinition>;
14
+ export declare function getPreset(id: PresetId): PresetDefinition;
15
+ export declare function listPresets(): PresetDefinition[];
@@ -0,0 +1,225 @@
1
+ // Preset definitions — v0.6.0 architecture
2
+ //
3
+ // A preset = full project starter:
4
+ // - Skills to install (project scope)
5
+ // - Agents to install (project scope)
6
+ // - MCPs to suggest (user scope; user may already have them)
7
+ // - Folder structure to scaffold
8
+ // - CLAUDE.md template
9
+ // - Wizard questions specific to this preset
10
+ //
11
+ // Presets REPLACE the bundle abstraction in user-facing CLI.
12
+ // Bundles still exist internally (resolvePlan) for sharing skill lists.
13
+ // ════════════════════════════════════════════════════════════
14
+ // SaaS Development — full-stack SaaS startup
15
+ // ════════════════════════════════════════════════════════════
16
+ export const SAAS_DEVELOPMENT = {
17
+ id: 'saas-development',
18
+ label: 'SaaS Development',
19
+ description: 'Fullstack SaaS (web + mobile + API + DB). Backend/frontend/devops + product + marketing + scale C-Level.',
20
+ skills: [
21
+ // Engineering core
22
+ 'architect', 'code-reviewer', 'doc-writer', 'test-writer', 'refactor',
23
+ 'simplify', 'verify', 'security-auditor',
24
+ // Advanced engineering
25
+ 'rag-architect', 'ci-cd-builder', 'mcp-server-builder', 'migration-architect',
26
+ 'incident-commander', 'chaos-engineer', 'kubernetes-operator',
27
+ // Dev specialists (v0.6.0 new)
28
+ 'frontend-developer', 'backend-developer', 'devops-developer', 'mobile-developer',
29
+ // Product / UX
30
+ 'product-manager', 'ux-researcher', 'ui-ux-pro-max', 'landing-page-builder',
31
+ 'accessibility-auditor', 'analytics-expert', 'experiment-designer',
32
+ // Brand for landing
33
+ 'brand-identity-designer', 'brand-kit-builder', 'logo-designer',
34
+ 'color-palette-builder', 'typography-system-designer',
35
+ 'copywriter-pro', 'conversion-optimizer',
36
+ // Marketing & growth
37
+ 'seo-optimizer', 'aeo-specialist', 'email-sequence-builder', 'growth-strategist',
38
+ 'content-strategist', 'paid-ads-strategist',
39
+ // Distribution
40
+ 'linkedin-expert',
41
+ // Docs / Knowledge
42
+ 'knowledge-base-builder',
43
+ // I18n
44
+ 'multilingual-copywriter', 'multilingual-content', 'cultural-translator',
45
+ // Operations
46
+ 'process-mapper', 'decision-maker', 'meeting-notes', 'inbox-triage',
47
+ // Strategic C-Level
48
+ 'cto-advisor', 'cfo-advisor', 'cmo-advisor', 'cro-advisor', 'coo-advisor',
49
+ 'ciso-advisor', 'gc-advisor', 'chro-advisor', 'founder-mode',
50
+ // Finance / coaching
51
+ 'finance-analyst', 'business-coach',
52
+ ],
53
+ agents: [
54
+ // Engineering
55
+ 'code-architect', 'code-explorer', 'backend-engineer', 'frontend-engineer',
56
+ 'devops-engineer', 'db-migrator', 'data-engineer', 'ai-ml-engineer',
57
+ // Quality
58
+ 'code-reviewer', 'security-auditor', 'qa-reviewer', 'stack-tester',
59
+ 'performance-profiler',
60
+ // Planning
61
+ 'refactor-planner', 'debugger', 'decision-recorder',
62
+ // Marketing
63
+ 'email-marketer', 'content-marketer', 'growth-hacker', 'competitive-intel',
64
+ 'market-researcher',
65
+ // SEO suite
66
+ 'seo-technical', 'seo-content', 'seo-schema', 'seo-aeo', 'seo-local',
67
+ 'seo-backlinks', 'seo-ecommerce', 'seo-international', 'seo-spa',
68
+ 'seo-semantic', 'seo-drift', 'seo-google-api', 'seo-brief', 'seo-programmatic',
69
+ 'seo-competitor', 'seo-sxo', 'seo-image', 'seo-maps',
70
+ // Business
71
+ 'business-analyst', 'analyst-agent', 'launch-orchestrator',
72
+ // Strategic
73
+ 'cfo-agent', 'cmo-agent', 'ciso-agent', 'gc-agent', 'cto-agent',
74
+ 'product-manager-agent', 'product-strategist-agent', 'ux-researcher-agent',
75
+ 'designer-agent',
76
+ ],
77
+ mcps: [
78
+ 'github', 'postgres', 'supabase', 'vercel', 'sentry', 'stripe', 'linear',
79
+ 'notion', 'openai', 'anthropic', 'brave-search', 'posthog', 'ga4', 'figma',
80
+ 'playwright', 'browserbase', 'hubspot', 'atlassian', 'slack', 'discord',
81
+ 'elevenlabs', 'perplexity',
82
+ ],
83
+ };
84
+ // ════════════════════════════════════════════════════════════
85
+ // Social Page — personal social brand workflow
86
+ // ════════════════════════════════════════════════════════════
87
+ export const SOCIAL_PAGE = {
88
+ id: 'social-page',
89
+ label: 'Social Page',
90
+ description: 'Sosial brand idarəsi (Instagram/TikTok/YouTube/LinkedIn). Gündəlik kontent yaratma + strateji + analitika.',
91
+ skills: [
92
+ // Brand strategy
93
+ 'brand-identity-designer', 'brand-kit-builder', 'logo-designer',
94
+ 'color-palette-builder', 'typography-system-designer',
95
+ // Creator craft
96
+ 'showrunner', 'screenwriter', 'character-designer', 'location-designer',
97
+ 'director', 'storyboard-builder', 'image-prompt-engineer', 'image-validator',
98
+ 'video-prompt-engineer', 'composer', 'lyricist', 'suno-prompt-engineer',
99
+ 'elevenlabs', 'youtube-thumbnail-designer',
100
+ // Film production (v0.6.0 new)
101
+ 'editor', 'colorist', 'art-director', 'cinematographer',
102
+ // Copy + language
103
+ 'copywriter-pro', 'multilingual-copywriter', 'multilingual-content',
104
+ 'cultural-translator',
105
+ // Platform expertise
106
+ 'instagram-expert', 'tiktok-expert', 'youtube-expert', 'linkedin-expert',
107
+ 'social-strategist', 'cross-platform-strategist', 'community-manager',
108
+ // Marketing & growth
109
+ 'seo-optimizer', 'aeo-specialist', 'content-strategist', 'growth-strategist',
110
+ 'conversion-optimizer', 'paid-ads-strategist', 'email-sequence-builder',
111
+ // Operations
112
+ 'analytics-expert', 'decision-maker', 'meeting-notes', 'inbox-triage',
113
+ 'learning-keeper',
114
+ // Creator wellbeing
115
+ 'psychologist', 'life-coach', 'growth-coach', 'journal-keeper',
116
+ // Strategic monetization
117
+ 'cmo-advisor', 'founder-mode',
118
+ ],
119
+ agents: [
120
+ // Content orchestrators
121
+ 'storyboard-orchestrator', 'research-orchestrator',
122
+ 'content-calendar-orchestrator', 'sound-designer', 'video-pipeline',
123
+ 'publishing-orchestrator',
124
+ // Platform orchestrators
125
+ 'instagram-orchestrator', 'tiktok-orchestrator', 'youtube-orchestrator',
126
+ 'linkedin-orchestrator', 'twitter-orchestrator',
127
+ // Marketing
128
+ 'content-marketer', 'social-media-manager', 'email-marketer',
129
+ 'growth-hacker', 'competitive-intel', 'market-researcher',
130
+ // Design
131
+ 'designer-agent',
132
+ // Analytics
133
+ 'analyst-agent', 'business-analyst',
134
+ // Research
135
+ 'researcher',
136
+ // Strategic
137
+ 'cmo-agent',
138
+ ],
139
+ mcps: [
140
+ // Social platforms
141
+ 'instagram', 'tiktok', 'youtube', 'linkedin', 'twitter', 'meta',
142
+ // Audio
143
+ 'elevenlabs', 'spotify',
144
+ // Visual
145
+ 'figma',
146
+ // Research
147
+ 'youtube-transcript', 'perplexity', 'brave-search', 'firecrawl', 'tavily',
148
+ // Productivity
149
+ 'notion', 'airtable',
150
+ // AI gen
151
+ 'openai', 'replicate', 'anthropic',
152
+ // Comms
153
+ 'telegram',
154
+ ],
155
+ };
156
+ // ════════════════════════════════════════════════════════════
157
+ // AI Studio — AI content production studio (client work / personal)
158
+ // ════════════════════════════════════════════════════════════
159
+ export const AI_STUDIO = {
160
+ id: 'ai-studio',
161
+ label: 'AI Studio',
162
+ description: 'AI ilə video / şəkil / musiqi production studio. Müştəri sifarişləri + şəxsi eksperimentlər. Sosial nəşr yoxdur.',
163
+ skills: [
164
+ // Creator craft
165
+ 'showrunner', 'screenwriter', 'character-designer', 'location-designer',
166
+ 'director', 'storyboard-builder', 'image-prompt-engineer', 'image-validator',
167
+ 'video-prompt-engineer', 'composer', 'lyricist', 'suno-prompt-engineer',
168
+ 'elevenlabs', 'youtube-thumbnail-designer',
169
+ // Film production (v0.6.0 new)
170
+ 'editor', 'colorist', 'art-director', 'cinematographer',
171
+ // Brand (client work)
172
+ 'brand-identity-designer', 'brand-kit-builder', 'logo-designer',
173
+ 'color-palette-builder', 'typography-system-designer',
174
+ // Copy
175
+ 'copywriter-pro', 'multilingual-copywriter', 'multilingual-content',
176
+ 'cultural-translator',
177
+ // Operations
178
+ 'analytics-expert', 'decision-maker', 'meeting-notes', 'learning-keeper',
179
+ 'journal-keeper', 'growth-coach',
180
+ // Business (client management)
181
+ 'business-coach', 'finance-analyst', 'cmo-advisor',
182
+ ],
183
+ agents: [
184
+ // Content orchestrators
185
+ 'storyboard-orchestrator', 'research-orchestrator', 'sound-designer',
186
+ 'video-pipeline',
187
+ // Design
188
+ 'designer-agent',
189
+ // Research
190
+ 'researcher',
191
+ // Marketing (studio self-promotion)
192
+ 'content-marketer', 'market-researcher', 'competitive-intel',
193
+ // Analytics
194
+ 'analyst-agent', 'business-analyst',
195
+ ],
196
+ mcps: [
197
+ // Audio
198
+ 'elevenlabs', 'spotify',
199
+ // Visual
200
+ 'figma', 'replicate', 'youtube-transcript',
201
+ // AI
202
+ 'openai', 'anthropic', 'perplexity',
203
+ // Research
204
+ 'brave-search', 'firecrawl', 'tavily',
205
+ // Productivity
206
+ 'notion', 'airtable',
207
+ // Client comms
208
+ 'telegram', 'slack',
209
+ ],
210
+ };
211
+ // ════════════════════════════════════════════════════════════
212
+ // Public catalog
213
+ // ════════════════════════════════════════════════════════════
214
+ export const PRESETS = {
215
+ 'saas-development': SAAS_DEVELOPMENT,
216
+ 'social-page': SOCIAL_PAGE,
217
+ 'ai-studio': AI_STUDIO,
218
+ };
219
+ export function getPreset(id) {
220
+ return PRESETS[id];
221
+ }
222
+ export function listPresets() {
223
+ return Object.values(PRESETS);
224
+ }
225
+ //# sourceMappingURL=preset-definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset-definitions.js","sourceRoot":"","sources":["../../src/applier/preset-definitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { PresetId } from './preset-definitions.js';
2
+ export interface ScaffoldResult {
3
+ foldersCreated: string[];
4
+ filesWritten: string[];
5
+ filesSkipped: string[];
6
+ }
7
+ interface ScaffoldOptions {
8
+ cwd: string;
9
+ projectName: string;
10
+ description: string;
11
+ bundles?: string[];
12
+ }
13
+ export declare function scaffoldPreset(presetId: PresetId, opts: ScaffoldOptions): ScaffoldResult;
14
+ export {};