universal-agent-memory 0.5.0 → 0.5.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.
package/README.md CHANGED
@@ -3,404 +3,221 @@
3
3
  [![npm version](https://img.shields.io/npm/v/universal-agent-memory.svg)](https://www.npmjs.com/package/universal-agent-memory)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
5
 
6
- A complete autonomous agent operating system for AI coding assistants. Provides memory, task management, agent coordination, and workflow automation for Claude Code, Factory.AI, VSCode, OpenCode, and web-based LLMs.
6
+ **Give your AI coding assistant persistent memory and autonomous workflows.**
7
7
 
8
- ## What It Does
8
+ UAM transforms AI coding assistants (Claude Code, Factory.AI, etc.) into autonomous agents that remember context across sessions, coordinate with other agents, and follow consistent workflows.
9
9
 
10
- UAM transforms AI coding assistants into autonomous agents with:
10
+ ## How It Works
11
11
 
12
- - **4-Layer Memory System** - Working, session, semantic, and knowledge graph memory
13
- - **Task Management** - Git-backed issue tracking with dependency DAG (superior to Beads)
14
- - **Agent Coordination** - Multi-agent overlap detection and merge conflict prevention
15
- - **Deploy Batching** - Batch commits/pushes to save CI minutes
16
- - **Git Worktree Automation** - Isolated development branches with PR workflows
17
- - **CLAUDE.md Generation** - Auto-generated project context files
12
+ 1. **Install UAM** in your project
13
+ 2. **Generate CLAUDE.md** - a context file your AI reads automatically
14
+ 3. **The AI handles everything** - memory, tasks, worktrees, coordination
18
15
 
19
- ## Installation
16
+ **You don't manage memory manually.** The AI agent reads CLAUDE.md and autonomously uses the memory system, creates worktrees, tracks tasks, and coordinates with other agents.
20
17
 
21
- ### Quick Install (Recommended)
18
+ ## Quick Start
22
19
 
23
20
  ```bash
24
- # Install globally
21
+ # Install
25
22
  npm install -g universal-agent-memory
26
23
 
27
24
  # Initialize in your project
28
25
  cd your-project
29
- uam init --interactive
30
- ```
31
-
32
- ### One-Line Installers
33
-
34
- ```bash
35
- # Desktop (with Docker for Qdrant)
36
- bash <(curl -fsSL https://raw.githubusercontent.com/DammianMiller/universal-agent-memory/main/scripts/install-desktop.sh)
37
-
38
- # Web browsers (claude.ai, factory.ai)
39
- bash <(curl -fsSL https://raw.githubusercontent.com/DammianMiller/universal-agent-memory/main/scripts/install-web.sh)
40
- ```
41
-
42
- ### Using npx (No Install)
43
-
44
- ```bash
45
- npx universal-agent-memory init --interactive
46
- ```
47
-
48
- ## Quick Start
49
-
50
- ```bash
51
- # 1. Initialize project
52
26
  uam init --with-memory --with-worktrees
53
27
 
54
- # 2. Start memory services (requires Docker)
28
+ # Start memory services (optional, for persistent semantic memory)
55
29
  uam memory start
56
30
 
57
- # 3. Generate CLAUDE.md
31
+ # Generate the CLAUDE.md context file
58
32
  uam generate
59
-
60
- # 4. Create your first task
61
- uam task create --title "My first task" --type task
62
-
63
- # 5. Start working
64
- uam task claim <task-id>
65
- uam worktree create my-feature
66
33
  ```
67
34
 
68
- ## Core Features
35
+ That's it! Your AI assistant now has:
36
+ - **Persistent memory** across sessions
37
+ - **Task tracking** with dependencies
38
+ - **Git worktree workflows** (never commits to main)
39
+ - **Multi-agent coordination** (prevents merge conflicts)
69
40
 
70
- ### Task Management
41
+ ## Example: Working With an AI Agent
71
42
 
72
- A complete task tracking system integrated with memory and coordination.
43
+ After setup, just talk to your AI assistant normally:
73
44
 
74
- ```bash
75
- # Create tasks
76
- uam task create --title "Fix auth bug" --type bug --priority 0
77
- uam task create --title "Add dark mode" --type feature --priority 2
78
-
79
- # View tasks
80
- uam task list # All open tasks
81
- uam task ready # Tasks with no blockers
82
- uam task blocked # Blocked tasks
83
- uam task stats # Statistics
84
-
85
- # Work on tasks
86
- uam task claim <id> # Claim task (announces to other agents)
87
- uam task show <id> # View details
88
- uam task release <id> --reason "Fixed" # Complete task
89
-
90
- # Dependencies
91
- uam task dep --from <child> --to <parent> # Add blocker
92
- uam task undep --from <child> --to <parent># Remove blocker
93
-
94
- # Git sync (version control your tasks)
95
- uam task sync # Export to JSONL
96
- uam task compact --days 90 # Archive old tasks
97
45
  ```
98
-
99
- **Task Types**: `task`, `bug`, `feature`, `chore`, `epic`, `story`
100
-
101
- **Priority Levels**: P0 (critical) → P4 (backlog)
102
-
103
- ### Memory System
104
-
105
- 4-layer architecture for complete context retention.
106
-
107
- ```bash
108
- # Start services
109
- uam memory start # Start Qdrant (Docker)
110
- uam memory status # Check status
111
- uam memory stop # Stop services
112
-
113
- # Query memories
114
- uam memory query "authentication JWT" # Semantic search
115
-
116
- # Store learnings
117
- uam memory store "lesson learned" --tags "auth,security" --importance 8
46
+ You: "Fix the authentication bug in the login handler"
47
+
48
+ AI: *Automatically:*
49
+ 1. Checks memory for past context on auth/login
50
+ 2. Creates task: "Fix auth bug in login handler"
51
+ 3. Creates worktree: feature/fix-auth-bug
52
+ 4. Makes changes, runs tests
53
+ 5. Creates PR
54
+ 6. Stores learnings in memory for next time
118
55
  ```
119
56
 
120
- **Layers:**
121
-
122
- | Layer | Storage | Purpose | Speed |
123
- |-------|---------|---------|-------|
124
- | L1: Working | SQLite | Recent actions (last 50) | ~0.15ms |
125
- | L2: Session | SQLite | Session decisions | ~0.2ms |
126
- | L3: Semantic | Qdrant | Reusable learnings | ~1-2ms |
127
- | L4: Knowledge Graph | SQLite | Entity relationships | ~0.17ms |
128
-
129
- ### Agent Coordination
57
+ The AI follows the workflow defined in CLAUDE.md without you managing any of it.
130
58
 
131
- Multi-agent support with overlap detection and messaging.
59
+ ## What Gets Generated
132
60
 
133
- ```bash
134
- # Register agent
135
- uam agent register --name "feature-agent" --capabilities "coding,review"
136
-
137
- # Announce work (enables overlap detection)
138
- uam agent announce --id <agent-id> --resource "src/auth/" --intent editing
139
-
140
- # Check for conflicts
141
- uam agent overlaps --resource "src/auth/"
61
+ `uam generate` creates a `CLAUDE.md` file that includes:
142
62
 
143
- # Complete work
144
- uam agent complete --id <agent-id> --resource "src/auth/"
63
+ - **Project structure** auto-detected from your codebase
64
+ - **Memory system** configuration (SQLite + Qdrant)
65
+ - **Workflow rules** (worktrees, testing, PR creation)
66
+ - **Agent coordination** protocols
67
+ - **Troubleshooting** from git history
145
68
 
146
- # Status
147
- uam agent status # View all agents
148
- uam coord status # Coordination overview
149
- ```
150
-
151
- **Conflict Risk Levels**: `none`, `low`, `medium`, `high`, `critical`
69
+ The AI reads this file and follows the instructions autonomously.
152
70
 
153
- ### Deploy Batching
71
+ ## Installation Options
154
72
 
155
- Batch multiple commits/pushes to reduce CI runs.
73
+ ### npm (Recommended)
156
74
 
157
75
  ```bash
158
- # Queue commits
159
- uam deploy queue --agent-id <id> --action-type commit \
160
- --message "feat: add feature" --files "src/feature.ts"
161
-
162
- # View queue
163
- uam deploy status
164
-
165
- # Execute batched deploys
166
- uam deploy flush # Squashes commits, single push
76
+ npm install -g universal-agent-memory
167
77
  ```
168
78
 
169
- ### Git Worktrees
170
-
171
- Isolated development branches with automated PR workflow.
79
+ ### One-Line Installers
172
80
 
173
81
  ```bash
174
- # Create worktree
175
- uam worktree create my-feature # Creates feature/NNN-my-feature
176
-
177
- # List worktrees
178
- uam worktree list
179
-
180
- # Create PR
181
- uam worktree pr <id> # Push + create PR
82
+ # Desktop (includes Docker for Qdrant)
83
+ bash <(curl -fsSL https://raw.githubusercontent.com/DammianMiller/universal-agent-memory/main/scripts/install-desktop.sh)
182
84
 
183
- # Cleanup
184
- uam worktree cleanup <id> # Remove worktree + delete branch
85
+ # Web browsers (claude.ai, factory.ai)
86
+ bash <(curl -fsSL https://raw.githubusercontent.com/DammianMiller/universal-agent-memory/main/scripts/install-web.sh)
185
87
  ```
186
88
 
187
- ### CLAUDE.md Generation
188
-
189
- Auto-generate context files for AI assistants.
89
+ ### npx (No Install)
190
90
 
191
91
  ```bash
192
- # Analyze project
193
- uam analyze --output json
194
-
195
- # Generate CLAUDE.md
196
- uam generate # Interactive merge with existing
197
- uam generate --force # Overwrite
198
- uam generate --dry-run # Preview only
92
+ npx universal-agent-memory init --interactive
199
93
  ```
200
94
 
201
- ## Command Reference
95
+ ## Commands
202
96
 
203
- ### Core Commands
97
+ ### Essential Commands
204
98
 
205
99
  | Command | Description |
206
100
  |---------|-------------|
207
101
  | `uam init` | Initialize UAM in a project |
208
- | `uam analyze` | Analyze project structure |
209
- | `uam generate` | Generate CLAUDE.md |
210
- | `uam sync` | Sync between platforms |
102
+ | `uam generate` | Generate/update CLAUDE.md |
103
+ | `uam memory start` | Start Qdrant (for semantic memory) |
104
+ | `uam memory status` | Check if services are running |
211
105
 
212
- ### Task Commands
106
+ ### Task Commands (Used by AI)
213
107
 
214
108
  | Command | Description |
215
109
  |---------|-------------|
216
110
  | `uam task create` | Create a new task |
217
- | `uam task list` | List tasks (with filters) |
218
- | `uam task show <id>` | Show task details |
219
- | `uam task claim <id>` | Claim task for work |
220
- | `uam task release <id>` | Complete and release task |
221
- | `uam task ready` | Show unblocked tasks |
222
- | `uam task blocked` | Show blocked tasks |
223
- | `uam task dep` | Add dependency |
224
- | `uam task stats` | Show statistics |
225
- | `uam task sync` | Sync with JSONL |
226
-
227
- ### Memory Commands
228
-
229
- | Command | Description |
230
- |---------|-------------|
231
- | `uam memory start` | Start Qdrant (Docker) |
232
- | `uam memory stop` | Stop memory services |
233
- | `uam memory status` | Check service status |
234
- | `uam memory query` | Semantic search |
235
- | `uam memory store` | Store a learning |
236
-
237
- ### Agent Commands
111
+ | `uam task list` | List all tasks |
112
+ | `uam task ready` | Show tasks with no blockers |
113
+ | `uam task claim <id>` | Claim a task for work |
238
114
 
239
- | Command | Description |
240
- |---------|-------------|
241
- | `uam agent register` | Register new agent |
242
- | `uam agent announce` | Announce work on resource |
243
- | `uam agent overlaps` | Check for conflicts |
244
- | `uam agent complete` | Mark work complete |
245
- | `uam agent status` | Show agent status |
246
- | `uam agent broadcast` | Send to all agents |
247
- | `uam agent send` | Direct message |
248
- | `uam agent receive` | Get pending messages |
249
-
250
- ### Coordination Commands
115
+ ### Worktree Commands (Used by AI)
251
116
 
252
117
  | Command | Description |
253
118
  |---------|-------------|
254
- | `uam coord status` | Overview of coordination |
255
- | `uam coord flush` | Execute pending deploys |
256
- | `uam coord cleanup` | Clean stale data |
119
+ | `uam worktree create <name>` | Create isolated branch |
120
+ | `uam worktree pr <id>` | Create PR from worktree |
121
+ | `uam worktree cleanup <id>` | Remove worktree |
257
122
 
258
- ### Deploy Commands
123
+ ### Agent Coordination (Used by AI)
259
124
 
260
125
  | Command | Description |
261
126
  |---------|-------------|
262
- | `uam deploy queue` | Queue a deploy action |
263
- | `uam deploy status` | View deploy queue |
264
- | `uam deploy batch` | Create batch from queue |
265
- | `uam deploy execute` | Execute a batch |
266
- | `uam deploy flush` | Batch and execute all |
127
+ | `uam agent overlaps` | Check for file conflicts |
128
+ | `uam agent announce` | Announce work on files |
129
+ | `uam agent status` | View active agents |
267
130
 
268
- ### Worktree Commands
131
+ ## Memory Architecture
269
132
 
270
- | Command | Description |
271
- |---------|-------------|
272
- | `uam worktree create` | Create feature worktree |
273
- | `uam worktree list` | List all worktrees |
274
- | `uam worktree pr` | Create PR from worktree |
275
- | `uam worktree cleanup` | Remove worktree |
133
+ UAM uses a 4-layer memory system, all managed automatically by the AI:
276
134
 
277
- ### Droids Commands
135
+ | Layer | Purpose | Storage |
136
+ |-------|---------|---------|
137
+ | Working | Recent actions (last 50) | SQLite |
138
+ | Session | Current session context | SQLite |
139
+ | Semantic | Reusable learnings | Qdrant |
140
+ | Knowledge Graph | Entity relationships | SQLite |
278
141
 
279
- | Command | Description |
280
- |---------|-------------|
281
- | `uam droids list` | List available droids |
282
- | `uam droids add` | Add a new droid |
283
- | `uam droids import` | Import from path |
142
+ **You don't need to understand this** - the AI handles memory storage and retrieval automatically based on the CLAUDE.md instructions.
284
143
 
285
144
  ## Configuration
286
145
 
287
- Configuration is stored in `.uam.json`:
146
+ After `uam init`, configuration is in `.uam.json`:
288
147
 
289
148
  ```json
290
149
  {
291
- "version": "1.0.0",
292
150
  "project": {
293
151
  "name": "my-project",
294
152
  "defaultBranch": "main"
295
153
  },
296
154
  "memory": {
297
- "shortTerm": {
298
- "enabled": true,
299
- "path": "./agents/data/memory/short_term.db",
300
- "maxEntries": 50
301
- },
302
- "longTerm": {
303
- "enabled": true,
304
- "provider": "qdrant",
305
- "endpoint": "localhost:6333",
306
- "collection": "agent_memory"
307
- }
155
+ "shortTerm": { "enabled": true },
156
+ "longTerm": { "enabled": true, "provider": "qdrant" }
308
157
  },
309
158
  "worktrees": {
310
159
  "enabled": true,
311
- "directory": ".worktrees",
312
- "branchPrefix": "feature/"
160
+ "directory": ".worktrees"
313
161
  }
314
162
  }
315
163
  ```
316
164
 
317
165
  ## Platform Support
318
166
 
319
- | Platform | Environment | Context File | Agents/Droids |
320
- |----------|-------------|--------------|---------------|
321
- | Claude Code | Desktop | `CLAUDE.md` | `.claude/agents/` |
322
- | claude.ai | Web | `CLAUDE.md` | Project context |
323
- | Factory.AI | Desktop | `CLAUDE.md` | `.factory/droids/` |
324
- | factory.ai | Web | `CLAUDE.md` | Project context |
325
- | VSCode | Desktop | `CLAUDE.md` | Extension-based |
326
- | OpenCode | Desktop | `opencode.json` | `.opencode/agent/` |
327
-
328
- ## Workflow Engine
329
-
330
- UAM enforces a 5-phase workflow for every agent action:
331
-
332
- ```
333
- START → TASK → CONTEXT → WORK → COMPLETE
334
- ```
167
+ | Platform | Context File | Works With |
168
+ |----------|--------------|------------|
169
+ | Claude Code | `CLAUDE.md` | Desktop app |
170
+ | Factory.AI | `CLAUDE.md` | Desktop/web |
171
+ | claude.ai | `CLAUDE.md` | Web browser |
172
+ | VSCode + Extensions | `CLAUDE.md` | Desktop |
335
173
 
336
- 1. **START**: Check existing tasks, read memory
337
- 2. **TASK**: Create/claim task before any work
338
- 3. **CONTEXT**: Query memory, check skills
339
- 4. **WORK**: Create worktree, make changes, test, PR
340
- 5. **COMPLETE**: Update memory, release task
174
+ ## Built-in Droids
341
175
 
342
- Each phase has **gates** that must pass before proceeding.
176
+ Quality review agents that run automatically before PRs:
343
177
 
344
- ## Memory Backends
178
+ | Droid | Purpose |
179
+ |-------|---------|
180
+ | `code-quality-guardian` | Code review, SOLID principles |
181
+ | `security-auditor` | OWASP, secrets detection |
182
+ | `performance-optimizer` | Algorithm efficiency |
183
+ | `documentation-expert` | Docs completeness |
345
184
 
346
- ### Desktop
185
+ ## Requirements
347
186
 
348
- - **Short-term**: SQLite (local file)
349
- - **Long-term**: Qdrant (Docker) or Qdrant Cloud
187
+ - Node.js 18+
188
+ - Docker (optional, for persistent semantic memory)
189
+ - Git
350
190
 
351
- ### Web (claude.ai, factory.ai)
191
+ ## FAQ
352
192
 
353
- - **Short-term**: IndexedDB (browser)
354
- - **Long-term**: GitHub or Qdrant Cloud
193
+ **Q: Do I need to run memory commands manually?**
194
+ A: No. The AI reads CLAUDE.md and manages memory automatically.
355
195
 
356
- ```bash
357
- # Cloud backends (optional)
358
- export QDRANT_API_KEY=your_key
359
- export QDRANT_URL=https://xxx.aws.cloud.qdrant.io:6333
360
- export GITHUB_TOKEN=your_token
361
- ```
196
+ **Q: What if I don't have Docker?**
197
+ A: UAM works without Docker. You lose semantic (long-term) memory, but short-term and session memory still work via SQLite.
362
198
 
363
- ## Built-in Droids
199
+ **Q: Can multiple AI agents work on the same project?**
200
+ A: Yes. UAM includes coordination protocols to prevent merge conflicts.
364
201
 
365
- | Droid | Purpose |
366
- |-------|---------|
367
- | `code-quality-guardian` | Code review, complexity, SOLID |
368
- | `security-auditor` | OWASP, secrets, injection |
369
- | `performance-optimizer` | Algorithms, memory, caching |
370
- | `documentation-expert` | JSDoc, README, accuracy |
202
+ **Q: How do I update CLAUDE.md after project changes?**
203
+ A: Run `uam generate` again. It will intelligently merge with your existing file.
371
204
 
372
205
  ## Development
373
206
 
374
207
  ```bash
375
- # Clone
376
208
  git clone https://github.com/DammianMiller/universal-agent-memory.git
377
209
  cd universal-agent-memory
378
-
379
- # Install
380
210
  npm install
381
-
382
- # Build
383
211
  npm run build
384
-
385
- # Test
386
212
  npm test
387
-
388
- # Run locally
389
- npm start -- init --interactive
390
213
  ```
391
214
 
392
- ## Requirements
393
-
394
- - Node.js 18+
395
- - Docker (for local Qdrant)
396
- - Git
397
-
398
215
  ## License
399
216
 
400
217
  MIT
401
218
 
402
219
  ## Links
403
220
 
404
- - [GitHub Repository](https://github.com/DammianMiller/universal-agent-memory)
405
- - [npm Package](https://www.npmjs.com/package/universal-agent-memory)
406
- - [Issue Tracker](https://github.com/DammianMiller/universal-agent-memory/issues)
221
+ - [GitHub](https://github.com/DammianMiller/universal-agent-memory)
222
+ - [npm](https://www.npmjs.com/package/universal-agent-memory)
223
+ - [Issues](https://github.com/DammianMiller/universal-agent-memory/issues)
@@ -4,6 +4,13 @@ interface GenerateOptions {
4
4
  platform?: string;
5
5
  web?: boolean;
6
6
  }
7
+ interface DependencyStatus {
8
+ git: boolean;
9
+ docker: boolean;
10
+ node: boolean;
11
+ qdrant: boolean;
12
+ }
13
+ export declare function printDependencyHelp(deps: DependencyStatus): void;
7
14
  export declare function generateCommand(options: GenerateOptions): Promise<void>;
8
15
  export {};
9
16
  //# sourceMappingURL=generate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"AAWA,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA4K7E"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"AAYA,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,UAAU,gBAAgB;IACxB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAoCD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAqBhE;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAoN7E"}
@@ -3,13 +3,72 @@ import ora from 'ora';
3
3
  import inquirer from 'inquirer';
4
4
  import { existsSync, readFileSync, writeFileSync } from 'fs';
5
5
  import { join } from 'path';
6
+ import { execSync } from 'child_process';
6
7
  import { analyzeProject } from '../analyzers/index.js';
7
8
  import { generateClaudeMd } from '../generators/claude-md.js';
8
9
  import { AgentContextConfigSchema } from '../types/index.js';
9
- import { mergeClaudeMd } from '../utils/merge-claude-md.js';
10
+ import { mergeClaudeMd, validateMerge } from '../utils/merge-claude-md.js';
11
+ function checkDependencies() {
12
+ const status = {
13
+ git: false,
14
+ docker: false,
15
+ node: true, // We're running, so Node exists
16
+ qdrant: false,
17
+ };
18
+ try {
19
+ execSync('git --version', { stdio: 'pipe' });
20
+ status.git = true;
21
+ }
22
+ catch {
23
+ // git not found
24
+ }
25
+ try {
26
+ execSync('docker --version', { stdio: 'pipe' });
27
+ status.docker = true;
28
+ // Check if Qdrant container is running
29
+ try {
30
+ const output = execSync('docker ps --filter "name=qdrant" --format "{{.Names}}"', { stdio: 'pipe' }).toString();
31
+ status.qdrant = output.includes('qdrant');
32
+ }
33
+ catch {
34
+ // docker ps failed
35
+ }
36
+ }
37
+ catch {
38
+ // docker not found
39
+ }
40
+ return status;
41
+ }
42
+ // Print dependency status - used when verbose flag is enabled
43
+ export function printDependencyHelp(deps) {
44
+ console.log(chalk.bold('\nšŸ“¦ Dependency Status:\n'));
45
+ console.log(` ${deps.git ? 'āœ…' : 'āŒ'} Git: ${deps.git ? 'Available' : 'Not found'}`);
46
+ if (!deps.git) {
47
+ console.log(chalk.dim(' Install: https://git-scm.com/downloads'));
48
+ }
49
+ console.log(` ${deps.docker ? 'āœ…' : 'āš ļø '} Docker: ${deps.docker ? 'Available' : 'Not found (optional)'}`);
50
+ if (!deps.docker) {
51
+ console.log(chalk.dim(' Install for semantic memory: https://docs.docker.com/get-docker/'));
52
+ }
53
+ console.log(` ${deps.qdrant ? 'āœ…' : 'āš ļø '} Qdrant: ${deps.qdrant ? 'Running' : 'Not running (optional)'}`);
54
+ if (deps.docker && !deps.qdrant) {
55
+ console.log(chalk.dim(' Start with: uam memory start'));
56
+ }
57
+ else if (!deps.docker) {
58
+ console.log(chalk.dim(' Requires Docker - UAM works without it (no semantic memory)'));
59
+ }
60
+ console.log('');
61
+ }
10
62
  export async function generateCommand(options) {
11
63
  const cwd = process.cwd();
12
64
  const configPath = join(cwd, '.uam.json');
65
+ // Check dependencies
66
+ const deps = checkDependencies();
67
+ if (!deps.git) {
68
+ console.error(chalk.red('\nāŒ Git is required but not found.'));
69
+ console.log(chalk.dim(' Install Git: https://git-scm.com/downloads\n'));
70
+ process.exit(1);
71
+ }
13
72
  console.log(chalk.bold('\nšŸ“ Generate Agent Context Files\n'));
14
73
  // Load config if exists
15
74
  let config;
@@ -129,6 +188,18 @@ export async function generateCommand(options) {
129
188
  try {
130
189
  const newClaudeMd = await generateClaudeMd(analysis, effectiveConfig);
131
190
  const claudeMd = existingContent ? mergeClaudeMd(existingContent, newClaudeMd) : newClaudeMd;
191
+ // Validate merge if we merged existing content
192
+ if (existingContent) {
193
+ const validation = validateMerge(existingContent, claudeMd);
194
+ if (!validation.valid) {
195
+ genSpinner.warn(`Merged with warnings`);
196
+ console.log(chalk.yellow('\n Merge validation warnings:'));
197
+ for (const warning of validation.warnings) {
198
+ console.log(chalk.dim(` - ${warning}`));
199
+ }
200
+ console.log('');
201
+ }
202
+ }
132
203
  if (options.dryRun) {
133
204
  genSpinner.succeed(`${existingContent ? 'Merged' : 'Generated'} (dry run)`);
134
205
  console.log(chalk.dim(`\n--- ${targetFileName} Preview ---\n`));
@@ -139,7 +210,7 @@ export async function generateCommand(options) {
139
210
  writeFileSync(targetPath, claudeMd);
140
211
  genSpinner.succeed(`${existingContent ? 'Merged and updated' : 'Generated'} ${targetFileName}`);
141
212
  if (existingContent) {
142
- console.log(chalk.dim(' Preserved custom sections from existing file'));
213
+ console.log(chalk.dim(' Preserved custom sections and extracted valuable content from existing file'));
143
214
  }
144
215
  }
145
216
  }
@@ -169,6 +240,22 @@ export async function generateCommand(options) {
169
240
  }
170
241
  if (!options.dryRun) {
171
242
  console.log(chalk.green('\nāœ… Generation complete!\n'));
243
+ // Print helpful next steps
244
+ console.log(chalk.bold('Next Steps:\n'));
245
+ console.log(' 1. Your AI assistant will now read CLAUDE.md automatically');
246
+ console.log(' 2. The AI handles memory, tasks, and workflows autonomously');
247
+ console.log(' 3. Just talk to your AI naturally - it follows the CLAUDE.md instructions\n');
248
+ // Show optional enhancements
249
+ if (!deps.docker || !deps.qdrant) {
250
+ console.log(chalk.dim('Optional: For persistent semantic memory across sessions:'));
251
+ if (!deps.docker) {
252
+ console.log(chalk.dim(' - Install Docker: https://docs.docker.com/get-docker/'));
253
+ }
254
+ if (deps.docker && !deps.qdrant) {
255
+ console.log(chalk.dim(' - Start Qdrant: uam memory start'));
256
+ }
257
+ console.log('');
258
+ }
172
259
  }
173
260
  }
174
261
  async function generatePlatformFiles(_cwd, platform, _analysis, _config, dryRun) {