@aicgen/aicgen 1.0.0-beta.1

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.
Files changed (287) hide show
  1. package/.claude/agents/architecture-reviewer.md +88 -0
  2. package/.claude/agents/guideline-checker.md +73 -0
  3. package/.claude/agents/security-auditor.md +108 -0
  4. package/.claude/guidelines/api-design.md +645 -0
  5. package/.claude/guidelines/architecture.md +2503 -0
  6. package/.claude/guidelines/best-practices.md +618 -0
  7. package/.claude/guidelines/code-style.md +304 -0
  8. package/.claude/guidelines/design-patterns.md +573 -0
  9. package/.claude/guidelines/devops.md +226 -0
  10. package/.claude/guidelines/error-handling.md +413 -0
  11. package/.claude/guidelines/language.md +782 -0
  12. package/.claude/guidelines/performance.md +706 -0
  13. package/.claude/guidelines/security.md +583 -0
  14. package/.claude/guidelines/testing.md +568 -0
  15. package/.claude/settings.json +98 -0
  16. package/.claude/settings.local.json +8 -0
  17. package/.env.example +23 -0
  18. package/.eslintrc.json +28 -0
  19. package/.github/workflows/release.yml +180 -0
  20. package/.github/workflows/test.yml +81 -0
  21. package/.gitmodules +3 -0
  22. package/.vs/ProjectSettings.json +3 -0
  23. package/.vs/VSWorkspaceState.json +16 -0
  24. package/.vs/aicgen.slnx/FileContentIndex/5f0ce2a3-fd68-4863-9e23-e428cf1794e3.vsidx +0 -0
  25. package/.vs/aicgen.slnx/v18/.wsuo +0 -0
  26. package/.vs/aicgen.slnx/v18/DocumentLayout.json +54 -0
  27. package/.vs/slnx.sqlite +0 -0
  28. package/AGENTS.md +121 -0
  29. package/CLAUDE.md +36 -0
  30. package/CONTRIBUTING.md +821 -0
  31. package/LICENSE +21 -0
  32. package/README.md +199 -0
  33. package/assets/icon.svg +34 -0
  34. package/assets/logo.svg +41 -0
  35. package/bun.lock +848 -0
  36. package/data/LICENSE +21 -0
  37. package/data/README.md +203 -0
  38. package/data/api/basics.md +292 -0
  39. package/data/api/index.md +8 -0
  40. package/data/api/pagination.md +142 -0
  41. package/data/api/rest.md +137 -0
  42. package/data/api/versioning.md +60 -0
  43. package/data/architecture/clean-architecture/index.md +7 -0
  44. package/data/architecture/clean-architecture/layers.md +111 -0
  45. package/data/architecture/ddd/index.md +8 -0
  46. package/data/architecture/ddd/strategic.md +89 -0
  47. package/data/architecture/ddd/tactical.md +132 -0
  48. package/data/architecture/event-driven/index.md +7 -0
  49. package/data/architecture/event-driven/messaging.md +242 -0
  50. package/data/architecture/event-driven/patterns.md +129 -0
  51. package/data/architecture/feature-toggles/index.md +7 -0
  52. package/data/architecture/feature-toggles/patterns.md +73 -0
  53. package/data/architecture/gui/index.md +7 -0
  54. package/data/architecture/gui/patterns.md +132 -0
  55. package/data/architecture/hexagonal/ports-adapters.md +132 -0
  56. package/data/architecture/index.md +12 -0
  57. package/data/architecture/layered/index.md +7 -0
  58. package/data/architecture/layered/layers.md +100 -0
  59. package/data/architecture/microservices/api-gateway.md +56 -0
  60. package/data/architecture/microservices/boundaries.md +80 -0
  61. package/data/architecture/microservices/communication.md +97 -0
  62. package/data/architecture/microservices/data.md +92 -0
  63. package/data/architecture/microservices/index.md +11 -0
  64. package/data/architecture/microservices/resilience.md +111 -0
  65. package/data/architecture/modular-monolith/boundaries.md +133 -0
  66. package/data/architecture/modular-monolith/structure.md +131 -0
  67. package/data/architecture/serverless/best-practices.md +322 -0
  68. package/data/architecture/serverless/index.md +7 -0
  69. package/data/architecture/serverless/patterns.md +80 -0
  70. package/data/architecture/solid/index.md +7 -0
  71. package/data/architecture/solid/principles.md +187 -0
  72. package/data/database/basics.md +365 -0
  73. package/data/database/design-patterns.md +68 -0
  74. package/data/database/index.md +8 -0
  75. package/data/database/indexing.md +136 -0
  76. package/data/database/nosql.md +223 -0
  77. package/data/database/schema.md +137 -0
  78. package/data/devops/ci-cd.md +66 -0
  79. package/data/devops/index.md +8 -0
  80. package/data/devops/observability.md +73 -0
  81. package/data/devops/practices.md +77 -0
  82. package/data/error-handling/basics.md +222 -0
  83. package/data/error-handling/index.md +7 -0
  84. package/data/error-handling/strategy.md +185 -0
  85. package/data/guideline-mappings.yml +1077 -0
  86. package/data/index.md +3 -0
  87. package/data/language/csharp/basics.md +210 -0
  88. package/data/language/csharp/testing.md +252 -0
  89. package/data/language/go/basics.md +158 -0
  90. package/data/language/go/testing.md +192 -0
  91. package/data/language/index.md +14 -0
  92. package/data/language/java/basics.md +184 -0
  93. package/data/language/java/testing.md +273 -0
  94. package/data/language/javascript/basics.md +217 -0
  95. package/data/language/javascript/testing.md +269 -0
  96. package/data/language/python/async.md +100 -0
  97. package/data/language/python/basics.md +100 -0
  98. package/data/language/python/index.md +10 -0
  99. package/data/language/python/testing.md +125 -0
  100. package/data/language/python/types.md +99 -0
  101. package/data/language/ruby/basics.md +227 -0
  102. package/data/language/ruby/testing.md +267 -0
  103. package/data/language/rust/basics.md +175 -0
  104. package/data/language/rust/testing.md +219 -0
  105. package/data/language/typescript/async.md +103 -0
  106. package/data/language/typescript/basics.md +87 -0
  107. package/data/language/typescript/config.md +95 -0
  108. package/data/language/typescript/error-handling.md +98 -0
  109. package/data/language/typescript/generics.md +85 -0
  110. package/data/language/typescript/index.md +14 -0
  111. package/data/language/typescript/interfaces-types.md +83 -0
  112. package/data/language/typescript/performance.md +103 -0
  113. package/data/language/typescript/testing.md +98 -0
  114. package/data/patterns/base-patterns.md +105 -0
  115. package/data/patterns/concurrency.md +87 -0
  116. package/data/patterns/data-access.md +83 -0
  117. package/data/patterns/distribution.md +86 -0
  118. package/data/patterns/domain-logic.md +81 -0
  119. package/data/patterns/gof.md +109 -0
  120. package/data/patterns/index.md +12 -0
  121. package/data/performance/async.md +148 -0
  122. package/data/performance/basics.md +324 -0
  123. package/data/performance/caching-strategies.md +68 -0
  124. package/data/performance/caching.md +152 -0
  125. package/data/performance/index.md +8 -0
  126. package/data/practices/code-review.md +52 -0
  127. package/data/practices/documentation.md +260 -0
  128. package/data/practices/index.md +11 -0
  129. package/data/practices/planning.md +142 -0
  130. package/data/practices/refactoring.md +91 -0
  131. package/data/practices/version-control.md +55 -0
  132. package/data/security/auth-jwt.md +159 -0
  133. package/data/security/headers.md +143 -0
  134. package/data/security/index.md +10 -0
  135. package/data/security/injection.md +119 -0
  136. package/data/security/secrets.md +148 -0
  137. package/data/style/index.md +8 -0
  138. package/data/style/naming.md +136 -0
  139. package/data/style/organization.md +162 -0
  140. package/data/templates/agents/architecture-reviewer.md +88 -0
  141. package/data/templates/agents/guideline-checker.md +73 -0
  142. package/data/templates/agents/security-auditor.md +108 -0
  143. package/data/templates/antigravity/rules/architecture.md.hbs +5 -0
  144. package/data/templates/antigravity/rules/code-style.md.hbs +5 -0
  145. package/data/templates/antigravity/rules/language.md.hbs +5 -0
  146. package/data/templates/antigravity/rules/performance.md.hbs +5 -0
  147. package/data/templates/antigravity/rules/security.md.hbs +5 -0
  148. package/data/templates/antigravity/rules/testing.md.hbs +5 -0
  149. package/data/templates/antigravity/workflows/add-documentation.md.hbs +23 -0
  150. package/data/templates/antigravity/workflows/generate-integration-tests.md.hbs +17 -0
  151. package/data/templates/antigravity/workflows/generate-unit-tests.md.hbs +20 -0
  152. package/data/templates/antigravity/workflows/performance-audit.md.hbs +24 -0
  153. package/data/templates/antigravity/workflows/refactor-extract-module.md.hbs +17 -0
  154. package/data/templates/antigravity/workflows/security-audit.md.hbs +20 -0
  155. package/data/templates/hooks/formatting.json +26 -0
  156. package/data/templates/hooks/security.json +35 -0
  157. package/data/templates/hooks/testing.json +17 -0
  158. package/data/testing/basics.md +151 -0
  159. package/data/testing/index.md +9 -0
  160. package/data/testing/integration.md +159 -0
  161. package/data/testing/unit-fundamentals.md +128 -0
  162. package/data/testing/unit-mocking.md +116 -0
  163. package/data/version.json +49 -0
  164. package/dist/commands/init.d.ts +8 -0
  165. package/dist/commands/init.d.ts.map +1 -0
  166. package/dist/commands/init.js +46 -0
  167. package/dist/commands/init.js.map +1 -0
  168. package/dist/config/profiles.d.ts +4 -0
  169. package/dist/config/profiles.d.ts.map +1 -0
  170. package/dist/config/profiles.js +30 -0
  171. package/dist/config/profiles.js.map +1 -0
  172. package/dist/config/settings.d.ts +7 -0
  173. package/dist/config/settings.d.ts.map +1 -0
  174. package/dist/config/settings.js +7 -0
  175. package/dist/config/settings.js.map +1 -0
  176. package/dist/index.d.ts +3 -0
  177. package/dist/index.d.ts.map +1 -0
  178. package/dist/index.js +58489 -0
  179. package/dist/index.js.map +1 -0
  180. package/dist/models/guideline.d.ts +15 -0
  181. package/dist/models/guideline.d.ts.map +1 -0
  182. package/dist/models/guideline.js +2 -0
  183. package/dist/models/guideline.js.map +1 -0
  184. package/dist/models/preference.d.ts +9 -0
  185. package/dist/models/preference.d.ts.map +1 -0
  186. package/dist/models/preference.js +2 -0
  187. package/dist/models/preference.js.map +1 -0
  188. package/dist/models/profile.d.ts +9 -0
  189. package/dist/models/profile.d.ts.map +1 -0
  190. package/dist/models/profile.js +2 -0
  191. package/dist/models/profile.js.map +1 -0
  192. package/dist/models/project.d.ts +13 -0
  193. package/dist/models/project.d.ts.map +1 -0
  194. package/dist/models/project.js +2 -0
  195. package/dist/models/project.js.map +1 -0
  196. package/dist/services/ai/anthropic.d.ts +7 -0
  197. package/dist/services/ai/anthropic.d.ts.map +1 -0
  198. package/dist/services/ai/anthropic.js +39 -0
  199. package/dist/services/ai/anthropic.js.map +1 -0
  200. package/dist/services/generator.d.ts +2 -0
  201. package/dist/services/generator.d.ts.map +1 -0
  202. package/dist/services/generator.js +4 -0
  203. package/dist/services/generator.js.map +1 -0
  204. package/dist/services/learner.d.ts +2 -0
  205. package/dist/services/learner.d.ts.map +1 -0
  206. package/dist/services/learner.js +4 -0
  207. package/dist/services/learner.js.map +1 -0
  208. package/dist/services/scanner.d.ts +3 -0
  209. package/dist/services/scanner.d.ts.map +1 -0
  210. package/dist/services/scanner.js +54 -0
  211. package/dist/services/scanner.js.map +1 -0
  212. package/dist/utils/errors.d.ts +15 -0
  213. package/dist/utils/errors.d.ts.map +1 -0
  214. package/dist/utils/errors.js +27 -0
  215. package/dist/utils/errors.js.map +1 -0
  216. package/dist/utils/file.d.ts +7 -0
  217. package/dist/utils/file.d.ts.map +1 -0
  218. package/dist/utils/file.js +32 -0
  219. package/dist/utils/file.js.map +1 -0
  220. package/dist/utils/logger.d.ts +6 -0
  221. package/dist/utils/logger.d.ts.map +1 -0
  222. package/dist/utils/logger.js +17 -0
  223. package/dist/utils/logger.js.map +1 -0
  224. package/dist/utils/path.d.ts +6 -0
  225. package/dist/utils/path.d.ts.map +1 -0
  226. package/dist/utils/path.js +14 -0
  227. package/dist/utils/path.js.map +1 -0
  228. package/docs/planning/memory-lane.md +83 -0
  229. package/package.json +64 -0
  230. package/packaging/linux/aicgen.spec +23 -0
  231. package/packaging/linux/control +9 -0
  232. package/packaging/macos/scripts/postinstall +12 -0
  233. package/packaging/windows/setup.nsi +92 -0
  234. package/planning/BRANDING-SUMMARY.md +194 -0
  235. package/planning/BRANDING.md +174 -0
  236. package/planning/BUILD.md +186 -0
  237. package/planning/CHUNK-IMPLEMENTATION-PLAN.md +87 -0
  238. package/planning/CHUNK-TAXONOMY.md +375 -0
  239. package/planning/CHUNKS-COMPLETE.md +382 -0
  240. package/planning/DESIGN.md +313 -0
  241. package/planning/DYNAMIC-GUIDELINES-DESIGN.md +265 -0
  242. package/planning/ENTERPRISE-UX-COMPLETE.md +281 -0
  243. package/planning/IMPLEMENTATION-PLAN.md +20 -0
  244. package/planning/PHASE1-COMPLETE.md +211 -0
  245. package/planning/PHASE2-COMPLETE.md +350 -0
  246. package/planning/PHASE3-COMPLETE.md +399 -0
  247. package/planning/PHASE4-COMPLETE.md +361 -0
  248. package/planning/PHASE4.5-CHUNKS.md +462 -0
  249. package/planning/STRUCTURE.md +170 -0
  250. package/scripts/add-categories.ts +87 -0
  251. package/scripts/build-binary.ts +46 -0
  252. package/scripts/embed-data.ts +105 -0
  253. package/scripts/generate-version.ts +150 -0
  254. package/scripts/test-decompress.ts +27 -0
  255. package/scripts/test-extract.ts +31 -0
  256. package/src/__tests__/services/assistant-file-writer.test.ts +400 -0
  257. package/src/__tests__/services/guideline-loader.test.ts +281 -0
  258. package/src/__tests__/services/tarball-extraction.test.ts +125 -0
  259. package/src/commands/add-guideline.ts +296 -0
  260. package/src/commands/clear.ts +61 -0
  261. package/src/commands/guideline-selector.ts +123 -0
  262. package/src/commands/init.ts +645 -0
  263. package/src/commands/quick-add.ts +586 -0
  264. package/src/commands/remove-guideline.ts +152 -0
  265. package/src/commands/stats.ts +49 -0
  266. package/src/commands/update.ts +240 -0
  267. package/src/config.ts +82 -0
  268. package/src/embedded-data.ts +1492 -0
  269. package/src/index.ts +67 -0
  270. package/src/models/profile.ts +24 -0
  271. package/src/models/project.ts +43 -0
  272. package/src/services/assistant-file-writer.ts +612 -0
  273. package/src/services/config-generator.ts +150 -0
  274. package/src/services/config-manager.ts +70 -0
  275. package/src/services/data-source.ts +248 -0
  276. package/src/services/first-run-init.ts +148 -0
  277. package/src/services/guideline-loader.ts +311 -0
  278. package/src/services/hook-generator.ts +178 -0
  279. package/src/services/subagent-generator.ts +310 -0
  280. package/src/utils/banner.ts +66 -0
  281. package/src/utils/errors.ts +27 -0
  282. package/src/utils/file.ts +67 -0
  283. package/src/utils/formatting.ts +172 -0
  284. package/src/utils/logger.ts +89 -0
  285. package/src/utils/path.ts +17 -0
  286. package/src/utils/wizard-state.ts +132 -0
  287. package/tsconfig.json +25 -0
@@ -0,0 +1,265 @@
1
+ # Dynamic Guidelines System Design
2
+
3
+ ## Problem
4
+
5
+ Current system embeds all guidelines at build time. Users can't:
6
+ - Add new guidelines without rebuilding
7
+ - Update existing guidelines
8
+ - Contribute custom guidelines
9
+ - Download community guidelines
10
+
11
+ ## Proposed Solution: Hybrid System
12
+
13
+ ### Architecture
14
+
15
+ ```
16
+ Priority (highest to lowest):
17
+ 1. ~/.aicgen/guidelines/ (user custom)
18
+ 2. ~/.aicgen/cache/latest/ (downloaded updates)
19
+ 3. Embedded data (bundled fallback)
20
+ ```
21
+
22
+ ### Directory Structure
23
+
24
+ ```
25
+ ~/.aicgen/
26
+ ├── config.yml # User config
27
+ ├── guidelines/ # User custom guidelines
28
+ │ ├── custom-mappings.yml # User-added mappings
29
+ │ └── custom/
30
+ │ ├── my-react-guide.md
31
+ │ └── my-nextjs-guide.md
32
+
33
+ └── cache/
34
+ └── latest/ # Downloaded official updates
35
+ ├── guideline-mappings.yml
36
+ └── guidelines/*.md
37
+ ```
38
+
39
+ ### Implementation Plan
40
+
41
+ #### 1. Data Source Layer (`src/services/data-source.ts`)
42
+
43
+ ```typescript
44
+ interface DataSource {
45
+ getMappings(): Promise<Record<string, GuidelineMapping>>;
46
+ getGuideline(path: string): Promise<string>;
47
+ }
48
+
49
+ class EmbeddedDataSource implements DataSource {
50
+ // Uses EMBEDDED_DATA (current implementation)
51
+ }
52
+
53
+ class FileSystemDataSource implements DataSource {
54
+ constructor(private basePath: string) {}
55
+ // Reads from filesystem
56
+ }
57
+
58
+ class HybridDataSource implements DataSource {
59
+ constructor(
60
+ private userPath: string, // ~/.aicgen/guidelines
61
+ private cachePath: string, // ~/.aicgen/cache/latest
62
+ private embedded: DataSource // Fallback
63
+ ) {}
64
+
65
+ async getMappings() {
66
+ // Merge: user > cache > embedded
67
+ }
68
+
69
+ async getGuideline(path: string) {
70
+ // Try: user > cache > embedded
71
+ }
72
+ }
73
+ ```
74
+
75
+ #### 2. Updated GuidelineLoader
76
+
77
+ ```typescript
78
+ export class GuidelineLoader {
79
+ private dataSource: DataSource;
80
+
81
+ constructor(dataSource?: DataSource) {
82
+ this.dataSource = dataSource || this.createDefaultDataSource();
83
+ }
84
+
85
+ private createDefaultDataSource(): DataSource {
86
+ const userDir = join(homedir(), '.aicgen', 'guidelines');
87
+ const cacheDir = join(homedir(), '.aicgen', 'cache', 'latest');
88
+
89
+ return new HybridDataSource(
90
+ userDir,
91
+ cacheDir,
92
+ new EmbeddedDataSource()
93
+ );
94
+ }
95
+
96
+ // Rest of implementation uses dataSource
97
+ }
98
+ ```
99
+
100
+ #### 3. New Commands
101
+
102
+ ```bash
103
+ # Update official guidelines from GitHub
104
+ aicgen update
105
+
106
+ # Add custom guideline
107
+ aicgen add-guideline <path> --category <cat> --language <lang>
108
+
109
+ # List all available guidelines
110
+ aicgen list-guidelines [--source user|cache|embedded|all]
111
+
112
+ # Remove guideline
113
+ aicgen remove-guideline <id>
114
+
115
+ # Reset to embedded (clear cache and user)
116
+ aicgen reset-guidelines
117
+ ```
118
+
119
+ ### Update Command Flow
120
+
121
+ ```typescript
122
+ // src/commands/update.ts
123
+ export async function updateCommand() {
124
+ const spinner = ora('Checking for updates...').start();
125
+
126
+ // 1. Fetch latest from GitHub
127
+ const latest = await fetchLatestGuidelines();
128
+
129
+ // 2. Compare versions
130
+ const currentVersion = getEmbeddedVersion();
131
+ if (latest.version <= currentVersion) {
132
+ spinner.succeed('Already up to date');
133
+ return;
134
+ }
135
+
136
+ // 3. Download and extract
137
+ const cachePath = join(homedir(), '.aicgen', 'cache', 'latest');
138
+ await downloadAndExtract(latest.url, cachePath);
139
+
140
+ spinner.succeed(`Updated to v${latest.version}`);
141
+ console.log(chalk.cyan(`\n📦 New guidelines available:`));
142
+ latest.changes.forEach(change => {
143
+ console.log(` ${chalk.gray('•')} ${change}`);
144
+ });
145
+ }
146
+ ```
147
+
148
+ ### Custom Guideline Format
149
+
150
+ ```yaml
151
+ # ~/.aicgen/guidelines/custom-mappings.yml
152
+ my-react-hooks:
153
+ path: custom/react-hooks-guide.md
154
+ category: Best Practices
155
+ languages: [typescript, javascript]
156
+ levels: [standard, expert, full]
157
+ architectures: [layered, modular-monolith]
158
+ tags: [react, hooks, frontend]
159
+
160
+ my-nextjs-patterns:
161
+ path: custom/nextjs-patterns.md
162
+ category: Architecture
163
+ languages: [typescript]
164
+ levels: [expert, full]
165
+ tags: [nextjs, react, ssr]
166
+ ```
167
+
168
+ ## Benefits
169
+
170
+ ### For Users
171
+ - ✅ Add custom guidelines without rebuild
172
+ - ✅ Update official guidelines via `aicgen update`
173
+ - ✅ Works offline (embedded fallback)
174
+ - ✅ Customize for their tech stack
175
+
176
+ ### For Maintainers
177
+ - ✅ Push guideline updates without new releases
178
+ - ✅ Faster iteration on guidelines
179
+ - ✅ Community contributions easier
180
+
181
+ ### For Teams
182
+ - ✅ Share team-specific guidelines
183
+ - ✅ Enforce company standards
184
+ - ✅ Version control custom guidelines
185
+
186
+ ## Migration Path
187
+
188
+ ### Phase 1: Keep Current System
189
+ - No breaking changes
190
+ - Embedded data still works
191
+
192
+ ### Phase 2: Add Hybrid Support
193
+ - Implement data source layer
194
+ - Add filesystem loading
195
+ - Merge logic for multiple sources
196
+
197
+ ### Phase 3: Add Update Command
198
+ - GitHub integration
199
+ - Version checking
200
+ - Download and cache
201
+
202
+ ### Phase 4: Add Custom Guidelines
203
+ - CLI commands for adding/removing
204
+ - Validation and linting
205
+ - Documentation
206
+
207
+ ## Implementation Checklist
208
+
209
+ - [ ] Create `DataSource` interface
210
+ - [ ] Implement `EmbeddedDataSource`
211
+ - [ ] Implement `FileSystemDataSource`
212
+ - [ ] Implement `HybridDataSource`
213
+ - [ ] Update `GuidelineLoader` to use data sources
214
+ - [ ] Create `~/.aicgen/` directory structure
215
+ - [ ] Implement `update` command
216
+ - [ ] Implement `add-guideline` command
217
+ - [ ] Implement `list-guidelines` command
218
+ - [ ] Add version tracking
219
+ - [ ] GitHub integration for updates
220
+ - [ ] Validation for custom guidelines
221
+ - [ ] Documentation and examples
222
+
223
+ ## Alternative: Remote-First Approach
224
+
225
+ If internet is always available:
226
+
227
+ ```typescript
228
+ // Fetch from CDN/GitHub on every run (with cache)
229
+ const guidelines = await fetch('https://cdn.aicgen.dev/guidelines/latest.json');
230
+ ```
231
+
232
+ **Pros**: Always latest
233
+ **Cons**: Requires internet, slower startup
234
+
235
+ **Verdict**: Hybrid approach is better - works offline, updates when available.
236
+
237
+ ---
238
+
239
+ ## Questions for Implementation
240
+
241
+ 1. **Should we implement this now or later?**
242
+ - Now: Full flexibility from day 1
243
+ - Later: Ship faster, add when needed
244
+
245
+ 2. **Update frequency?**
246
+ - Manual: `aicgen update` when user wants
247
+ - Auto-check: Check on init, download in background
248
+ - Both: Auto-check + manual command
249
+
250
+ 3. **Custom guideline validation?**
251
+ - Strict: Must match schema, linting required
252
+ - Loose: Any markdown file works
253
+ - Medium: Basic validation, warnings for issues
254
+
255
+ 4. **Storage location?**
256
+ - `~/.aicgen/` (Unix-style)
257
+ - Platform-specific config dirs
258
+ - Both with fallback
259
+
260
+ 5. **Versioning?**
261
+ - Semantic versioning (1.0.0)
262
+ - Date-based (2025-12-08)
263
+ - Git commit hash
264
+
265
+ My recommendation: **Implement Phase 1-2 now** (hybrid system), **Phase 3-4 later** (update commands).
@@ -0,0 +1,281 @@
1
+ # Enterprise UX Implementation Complete ✅
2
+
3
+ ## What Was Implemented
4
+
5
+ ### 1. Box Formatting Utility (`src/utils/formatting.ts`)
6
+
7
+ **Functions:**
8
+ - `drawBox()` - Draw bordered boxes with titles and padding
9
+ - `drawSeparator()` - Horizontal separators
10
+ - `drawTable()` - Full bordered tables with headers
11
+ - `createSummaryBox()` - Formatted key-value summary boxes
12
+ - `createMetricsBox()` - Metrics display with custom styling
13
+ - `padLeft()`, `padRight()`, `center()` - Text alignment helpers
14
+
15
+ **Example:**
16
+ ```
17
+ ╭──────────────────────────────── 📁 Project Detection ─────────────────────────────────╮
18
+ │ │
19
+ │ Name: my-project │
20
+ │ Language: typescript │
21
+ │ │
22
+ ╰────────────────────────────────────────────────────────────────────────────────────────╯
23
+ ```
24
+
25
+ ### 2. Wizard State Management (`src/utils/wizard-state.ts`)
26
+
27
+ **Features:**
28
+ - Full state tracking for wizard flow
29
+ - History management for back navigation
30
+ - Step validation and conditional skipping
31
+ - Helper functions for back navigation
32
+
33
+ **Key Classes/Functions:**
34
+ - `WizardStateManager` - Manages wizard state and navigation
35
+ - `addBackOption()` - Adds "← Back" to choice lists
36
+ - `isBackSelected()` - Checks if back was selected
37
+ - Constants: `BACK_OPTION`, `BACK_VALUE`
38
+
39
+ ### 3. Complete Wizard Refactor (`src/commands/init.ts`)
40
+
41
+ **Implemented:**
42
+ - ✅ State-based wizard flow
43
+ - ✅ Back navigation on every prompt
44
+ - ✅ Box-formatted output
45
+ - ✅ Summary preview before generation
46
+ - ✅ Profile metrics in level descriptions
47
+ - ✅ Smart navigation (skip steps based on setup type)
48
+
49
+ **Flow:**
50
+ 1. Project Detection → Box-formatted display
51
+ 2. Language Selection → Confirm detected or select
52
+ 3. Project Type → With back option
53
+ 4. AI Assistant → With back option
54
+ 5. Setup Type (Quick/Custom) → With back option
55
+ 6. Architecture → With back option
56
+ 7. Level → **Shows metrics in description!**
57
+ 8. Guidelines (if custom) → With back option
58
+ 9. **Summary Preview** → Box-formatted with back option
59
+ 10. Generation → Progress indicators
60
+
61
+ ### 4. Smart Guideline Selector (`src/commands/guideline-selector.ts`)
62
+
63
+ **Features:**
64
+ - ✅ Category-child synchronization
65
+ - ✅ Back navigation support
66
+ - ✅ Clear instructions
67
+ - ✅ Selection summary
68
+
69
+ **Behavior:**
70
+ - Check category → All children checked
71
+ - Uncheck category → Can still select individual children
72
+ - Shows "Selected X of Y guidelines" summary
73
+
74
+ ### 5. Enhanced Banner Display
75
+
76
+ **Updates:**
77
+ - ✅ Redesigned ASCII art to match SVG
78
+ - ✅ Shows on main CLI entry (not just init)
79
+ - ✅ Navigation instructions displayed
80
+ - ✅ Professional formatting
81
+
82
+ ## Visual Examples
83
+
84
+ ### Main CLI Banner
85
+ ```
86
+ ◉ ╭──────────╮
87
+ ◉ ╲ │ ───── │
88
+ ◉ ╲ ──► ◆ ─► │ ──── │
89
+ ◉ ╱ │ ───── │
90
+ ◉ ╱ │ ──── │
91
+ ◉ ╰──────────╯
92
+
93
+ aicgen ─ AI Config Generator
94
+ v0.1.0 · MIT License
95
+
96
+ Navigation:
97
+ ↑↓ arrows - Navigate options
98
+ Space - Select/deselect (checkboxes)
99
+ Enter - Confirm selection
100
+ Ctrl+C - Cancel anytime
101
+ ```
102
+
103
+ ### Level Selection with Metrics
104
+ ```
105
+ ? Instruction detail level?
106
+ ← Back
107
+ ────────────────────────────────────────
108
+ ❯ Basic - Essential guidelines for quick projects
109
+ (12 guidelines, 1 hook, 1 agent, ~30 KB)
110
+
111
+ Standard - Production-ready practices
112
+ (28 guidelines, 3 hooks, 2 agents, ~70 KB)
113
+
114
+ Expert - Advanced patterns for scaling
115
+ (45 guidelines, 4 hooks, 3 agents, ~110 KB)
116
+
117
+ Full - Everything - all guidelines
118
+ (57 guidelines, 4 hooks, 3 agents, ~140 KB)
119
+ ```
120
+
121
+ ### Summary Preview
122
+ ```
123
+ ╭─────────────────────── 📋 Configuration Summary ───────────────────────╮
124
+ │ │
125
+ │ Assistant: Claude Code │
126
+ │ Language: TypeScript │
127
+ │ Project Type: Web Application │
128
+ │ Architecture: Modular Monolith │
129
+ │ Level: Standard │
130
+ │ │
131
+ ╰────────────────────────────────────────────────────────────────────────╯
132
+
133
+ ╭────────────────────── 📊 Configuration Preview ───────────────────────╮
134
+ │ │
135
+ │ • 28 guidelines │
136
+ │ • 3 hooks │
137
+ │ • 2 sub-agents │
138
+ │ • ~70 KB estimated size │
139
+ │ │
140
+ ╰────────────────────────────────────────────────────────────────────────╯
141
+
142
+ ? Proceed with generation?
143
+ ❯ Yes, generate configuration
144
+ ← Back (modify settings)
145
+ Cancel
146
+ ```
147
+
148
+ ### Guideline Selection
149
+ ```
150
+ 📚 Select Guidelines
151
+
152
+ 💡 Tip: Uncheck a category to uncheck all items in that category
153
+ Use Space to toggle, Enter to confirm
154
+
155
+ ? Select guidelines to include:
156
+ ← Back to previous step
157
+ ──────────────────────────────────────────────────
158
+ ◉ Language (8 guidelines)
159
+ ◉ TypeScript basics
160
+ ◉ TypeScript advanced types
161
+ ◉ TypeScript decorators
162
+ ...
163
+
164
+ ◉ Architecture (5 guidelines)
165
+ ◉ Layered architecture patterns
166
+ ◉ Modular monolith structure
167
+ ...
168
+
169
+ ◯ Testing (3 guidelines)
170
+ ◯ Unit testing standards
171
+ ◯ Integration testing
172
+ ◯ E2E testing
173
+
174
+ ✓ Selected 28 of 57 guidelines
175
+ ```
176
+
177
+ ## Files Created
178
+
179
+ 1. `src/utils/formatting.ts` - Box formatting utilities
180
+ 2. `src/utils/wizard-state.ts` - Wizard state management
181
+ 3. `src/commands/guideline-selector.ts` - Smart guideline selector
182
+ 4. `src/commands/init-old-backup.ts` - Backup of old init.ts
183
+ 5. `ENTERPRISE-UX-COMPLETE.md` - This file
184
+
185
+ ## Files Modified
186
+
187
+ 1. `src/commands/init.ts` - Complete refactor with enterprise UX
188
+ 2. `src/utils/banner.ts` - Redesigned ASCII art
189
+ 3. `src/index.ts` - Added banner to main CLI
190
+
191
+ ## TypeScript Compilation
192
+
193
+ ✅ All code compiles successfully
194
+ ```bash
195
+ npx tsc --noEmit
196
+ # No errors
197
+ ```
198
+
199
+ ## Testing
200
+
201
+ To test the enterprise UX:
202
+
203
+ ```bash
204
+ # Build binary
205
+ bun run build:binary:windows
206
+
207
+ # Run init wizard
208
+ ./aicgen.exe init
209
+
210
+ # Or just run main CLI to see banner
211
+ ./aicgen.exe
212
+ ```
213
+
214
+ ## User Experience Improvements
215
+
216
+ ### Before
217
+ - No back navigation (had to Ctrl+C and restart)
218
+ - No metrics preview (guessing what each level includes)
219
+ - No summary (can't review before generating)
220
+ - Simple text output
221
+ - Category selection didn't affect children
222
+ - No banner on main CLI
223
+
224
+ ### After
225
+ - ✅ Back navigation on every step
226
+ - ✅ Real-time metrics in level descriptions
227
+ - ✅ Box-formatted summary with preview
228
+ - ✅ Professional box formatting throughout
229
+ - ✅ Smart category-child sync
230
+ - ✅ Beautiful banner on main CLI
231
+ - ✅ Clear navigation instructions
232
+ - ✅ State management for robust flow
233
+
234
+ ## Architecture Decisions
235
+
236
+ ### State Management Pattern
237
+ Used explicit WizardStateManager class instead of inline state for:
238
+ - Better testability
239
+ - Clear state transitions
240
+ - Easier debugging
241
+ - Type safety
242
+
243
+ ### Back Navigation Implementation
244
+ Used "← Back" option in prompts instead of global listener because:
245
+ - More intuitive for users
246
+ - Works with all terminal types
247
+ - Consistent with prompt flow
248
+ - Easier to implement
249
+
250
+ ### Box Formatting
251
+ Used custom utility instead of library because:
252
+ - Full control over styling
253
+ - No external dependencies
254
+ - Optimized for our color scheme
255
+ - Custom functions for our use cases
256
+
257
+ ## What Users Get
258
+
259
+ 1. **Professional First Impression** - Beautiful banner and formatting
260
+ 2. **Confidence** - See exactly what they're getting (metrics)
261
+ 3. **Control** - Back navigation, review before generation
262
+ 4. **Clarity** - Box formatting makes information easy to scan
263
+ 5. **Efficiency** - Smart category selection, skip unnecessary steps
264
+ 6. **Guidance** - Clear instructions at every step
265
+
266
+ ## Next Steps (Optional Enhancements)
267
+
268
+ 1. **Loading Animations** - Better progress indicators with sub-tasks
269
+ 2. **Error Recovery** - Graceful error handling with recovery options
270
+ 3. **Keyboard Shortcuts** - Advanced navigation (Ctrl+B for back, etc.)
271
+ 4. **Theme Support** - User-configurable color schemes
272
+ 5. **Saved Preferences** - Remember last selections
273
+ 6. **Interactive Preview** - Show example generated files
274
+ 7. **Validation Hints** - Real-time feedback on selections
275
+
276
+ ---
277
+
278
+ **Status**: ✅ Complete and production-ready
279
+ **Date**: 2025-12-08
280
+ **Version**: 0.1.0
281
+ **Impact**: Enterprise-grade CLI experience
@@ -0,0 +1,20 @@
1
+ # Dynamic Guidelines Implementation Plan
2
+
3
+ See DYNAMIC-GUIDELINES-DESIGN.md for full details.
4
+
5
+ ## Quick Summary
6
+
7
+ **Storage:**
8
+ - Official: GitHub repo `aicgen/guidelines`
9
+ - Cache: `~/.aicgen/cache/official/`
10
+ - User custom: `~/.aicgen/data/`
11
+ - Embedded: Binary fallback
12
+
13
+ **Commands:**
14
+ - `aicgen update` - Download latest from GitHub
15
+ - `aicgen add-guideline` - Interactive guideline creator
16
+ - Auto-check on `aicgen init`
17
+
18
+ **Priority:** User data > Official cache > Embedded
19
+
20
+ Ready to implement!