appydave-tools 0.21.2 → 0.22.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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/bin/dam +137 -0
  4. data/docs/README.md +187 -90
  5. data/docs/architecture/dam/dam-cli-enhancements.md +642 -0
  6. data/docs/architecture/dam/dam-cli-implementation-guide.md +1041 -0
  7. data/docs/architecture/dam/dam-data-model.md +466 -0
  8. data/docs/architecture/dam/dam-visualization-requirements.md +641 -0
  9. data/docs/architecture/dam/implementation-roadmap.md +328 -0
  10. data/docs/architecture/dam/jan-collaboration-guide.md +309 -0
  11. data/lib/appydave/tools/dam/s3_operations.rb +57 -5
  12. data/lib/appydave/tools/dam/s3_scanner.rb +139 -0
  13. data/lib/appydave/tools/version.rb +1 -1
  14. data/lib/appydave/tools.rb +1 -0
  15. data/package.json +1 -1
  16. metadata +37 -32
  17. data/docs/development/CODEX-recommendations.md +0 -258
  18. data/docs/development/README.md +0 -100
  19. /data/docs/{development/pattern-comparison.md → architecture/cli/cli-pattern-comparison.md} +0 -0
  20. /data/docs/{development/cli-architecture-patterns.md → architecture/cli/cli-patterns.md} +0 -0
  21. /data/docs/{project-brand-systems-analysis.md → architecture/configuration/configuration-systems.md} +0 -0
  22. /data/docs/{dam → architecture/dam}/dam-vision.md +0 -0
  23. /data/docs/{dam/prd-client-sharing.md → architecture/dam/design-decisions/002-client-sharing.md} +0 -0
  24. /data/docs/{dam/prd-git-integration.md → architecture/dam/design-decisions/003-git-integration.md} +0 -0
  25. /data/docs/{prd-unified-brands-configuration.md → architecture/design-decisions/001-unified-brands-config.md} +0 -0
  26. /data/docs/{dam/session-summary-2025-11-09.md → architecture/design-decisions/session-2025-11-09.md} +0 -0
  27. /data/docs/{configuration/README.md → guides/configuration-setup.md} +0 -0
  28. /data/docs/{dam → guides/platforms}/windows/README.md +0 -0
  29. /data/docs/{dam → guides/platforms}/windows/dam-testing-plan-windows-powershell.md +0 -0
  30. /data/docs/{dam → guides/platforms}/windows/installation.md +0 -0
  31. /data/docs/{tools → guides/tools}/bank-reconciliation.md +0 -0
  32. /data/docs/{tools → guides/tools}/cli-actions.md +0 -0
  33. /data/docs/{tools → guides/tools}/configuration.md +0 -0
  34. /data/docs/{dam → guides/tools/dam}/dam-testing-plan.md +0 -0
  35. /data/docs/{dam/usage.md → guides/tools/dam/dam-usage.md} +0 -0
  36. /data/docs/{tools → guides/tools}/gpt-context.md +0 -0
  37. /data/docs/{tools → guides/tools}/index.md +0 -0
  38. /data/docs/{tools → guides/tools}/move-images.md +0 -0
  39. /data/docs/{tools → guides/tools}/name-manager.md +0 -0
  40. /data/docs/{tools → guides/tools}/prompt-tools.md +0 -0
  41. /data/docs/{tools → guides/tools}/subtitle-processor.md +0 -0
  42. /data/docs/{tools → guides/tools}/youtube-automation.md +0 -0
  43. /data/docs/{tools → guides/tools}/youtube-manager.md +0 -0
  44. /data/docs/{configuration → templates}/.env.example +0 -0
  45. /data/docs/{configuration → templates}/channels.example.json +0 -0
  46. /data/docs/{configuration → templates}/settings.example.json +0 -0
@@ -0,0 +1,642 @@
1
+ # DAM CLI Enhancements
2
+
3
+ **Digital Asset Management - Command Line Tool Requirements**
4
+
5
+ This document specifies all CLI tool enhancements needed to support the DAM visualization dashboard, including new commands, naming consolidation, and architectural improvements.
6
+
7
+ ---
8
+
9
+ ## Overview
10
+
11
+ The DAM system requires CLI tool enhancements in three areas:
12
+
13
+ 1. **Naming Consolidation** - Consistent naming across `exe/`, `bin/`, and `lib/`
14
+ 2. **New Commands** - S3 scanning, project manifests, bulk operations
15
+ 3. **Manifest Schema Changes** - Support for richer data structures
16
+
17
+ ---
18
+
19
+ ## 1. Naming Convention Consolidation
20
+
21
+ ### Current State (Inconsistent)
22
+
23
+ **Problem:** Executables have inconsistent naming patterns:
24
+
25
+ | Current Name | Type | Issue |
26
+ |--------------|------|-------|
27
+ | `ad_config` | Configuration tool | Underscore, not dash |
28
+ | `dam` | Video asset management | Short, ambiguous (was `vat`) |
29
+ | `youtube_manager` | YouTube operations | Underscore, verbose |
30
+ | `gpt_context` | Context gathering | Underscore |
31
+ | `subtitle_processor` | Subtitle operations | Underscore |
32
+
33
+ **Three-Layer Confusion:**
34
+
35
+ ```
36
+ exe/ # Installed commands (what users run)
37
+ ├── ad_config # → `ad_config` command
38
+ ├── dam # → `dam` command
39
+ └── (missing others)
40
+
41
+ bin/ # Development scripts (internal)
42
+ ├── configuration.rb # → Implements ad_config
43
+ ├── dam # → Implements dam
44
+ ├── youtube_manager.rb # → NOT in exe/ (missing!)
45
+ ├── gpt_context.rb # → NOT in exe/ (missing!)
46
+ └── ...
47
+
48
+ lib/appydave/tools/ # Library code
49
+ ├── dam/ # → DAM module
50
+ ├── configuration/ # → Configuration module
51
+ ├── youtube_manager/ # → YouTube module
52
+ └── ...
53
+ ```
54
+
55
+ **Issue:** Some tools missing from `exe/` (not installable via gem), naming inconsistency makes discoverability hard.
56
+
57
+ ---
58
+
59
+ ### Proposed Solution: Option B (Consistent Dash Naming)
60
+
61
+ **Naming Convention:**
62
+ - All commands prefixed with `ad-` (AppyDave namespace)
63
+ - Use dashes, not underscores
64
+ - Descriptive but concise
65
+
66
+ **New Command Structure:**
67
+
68
+ ```
69
+ exe/ # Installed commands
70
+ ├── ad-dam # Video asset management (rename from `dam`)
71
+ ├── ad-config # Configuration management (rename from `ad_config`)
72
+ ├── ad-youtube # YouTube operations (rename from `youtube_manager`)
73
+ ├── ad-context # GPT context gathering (rename from `gpt_context`)
74
+ ├── ad-subtitles # Subtitle processing (rename from `subtitle_processor`)
75
+ └── ad-prompts # Prompt tools (rename from `prompt_tools`)
76
+
77
+ bin/ # Development scripts (match exe/)
78
+ ├── ad-dam # DAM CLI implementation
79
+ ├── ad-config # Config CLI implementation
80
+ ├── ad-youtube # YouTube CLI implementation
81
+ ├── ad-context # Context CLI implementation
82
+ ├── ad-subtitles # Subtitles CLI implementation
83
+ └── ad-prompts # Prompts CLI implementation
84
+
85
+ lib/appydave/tools/ # Library modules (no change)
86
+ ├── dam/ # DAM module
87
+ ├── configuration/ # Configuration module
88
+ ├── youtube_manager/ # YouTube module (keep internal name)
89
+ ├── gpt_context/ # GPT context module (keep internal name)
90
+ └── ...
91
+ ```
92
+
93
+ **Migration Strategy:**
94
+
95
+ 1. **Create new `exe/` wrappers** with `ad-` prefix
96
+ 2. **Keep old names as symlinks** (backward compatibility)
97
+ 3. **Deprecation warnings** when old names used
98
+ 4. **Remove old names** in next major version (1.0.0)
99
+
100
+ **Example Deprecation Warning:**
101
+ ```
102
+ $ ad_config -l
103
+ ⚠️ WARNING: 'ad_config' is deprecated. Use 'ad-config' instead.
104
+ This alias will be removed in v1.0.0
105
+
106
+ NAME | EXISTS | PATH
107
+ ...
108
+ ```
109
+
110
+ ---
111
+
112
+ ### File Structure After Consolidation
113
+
114
+ ```
115
+ exe/
116
+ ├── ad-dam # NEW: Primary DAM command
117
+ ├── ad-config # NEW: Renamed from ad_config
118
+ ├── ad-youtube # NEW: Replaces youtube_manager
119
+ ├── ad-context # NEW: Replaces gpt_context
120
+ ├── ad-subtitles # NEW: Replaces subtitle_processor
121
+ ├── ad-prompts # NEW: Replaces prompt_tools
122
+
123
+ ├── dam # DEPRECATED: Symlink to ad-dam
124
+ ├── ad_config # DEPRECATED: Symlink to ad-config
125
+ └── (no other legacy commands in exe/ yet)
126
+
127
+ bin/
128
+ ├── ad-dam # Rename from dam
129
+ ├── ad-config # Rename from configuration.rb
130
+ ├── ad-youtube # Rename from youtube_manager.rb
131
+ ├── ad-context # Rename from gpt_context.rb
132
+ ├── ad-subtitles # Rename from subtitle_processor.rb
133
+ └── ad-prompts # Rename from prompt_tools.rb
134
+
135
+ lib/appydave/tools/
136
+ ├── dam/ # No change (internal module name)
137
+ ├── configuration/ # No change
138
+ ├── youtube_manager/ # No change
139
+ ├── gpt_context/ # No change
140
+ └── subtitle_processor/ # No change
141
+ ```
142
+
143
+ **Note:** `lib/` module names stay the same (internal implementation detail). Only user-facing `exe/` and `bin/` scripts are renamed.
144
+
145
+ ---
146
+
147
+ ## 2. New Commands
148
+
149
+ ### 2.1 Brand-Level S3 Scan
150
+
151
+ **Command:** `ad-dam s3-scan <brand>`
152
+
153
+ **Purpose:** Query AWS S3 to discover actual files in staging, update manifest with real S3 data.
154
+
155
+ **Current Limitation:** Manifest only knows about local `s3-staging/` folder existence, not actual S3 contents.
156
+
157
+ **Behavior:**
158
+ ```bash
159
+ # Scan single brand
160
+ ad-dam s3-scan appydave
161
+
162
+ # Scan all brands
163
+ ad-dam s3-scan all
164
+
165
+ # Dry run (show what would be scanned)
166
+ ad-dam s3-scan appydave --dry-run
167
+ ```
168
+
169
+ **What It Does:**
170
+ 1. Read brand configuration (AWS profile, S3 bucket, prefix)
171
+ 2. Query AWS S3: `aws s3 ls s3://{bucket}/{prefix}/ --recursive`
172
+ 3. For each project found in S3:
173
+ - List files and sizes
174
+ - Calculate total S3 storage per project
175
+ - Detect if project exists locally
176
+ 4. Update `{brand}/projects.json` manifest with S3 data
177
+
178
+ **Manifest Schema Change:**
179
+ ```json
180
+ {
181
+ "projects": [
182
+ {
183
+ "id": "b65-guy-monroe-marketing-plan",
184
+ "storage": {
185
+ "s3": {
186
+ "exists": true,
187
+ "last_scanned": "2025-11-18T12:00:00Z",
188
+ "file_count": 2,
189
+ "total_bytes": 125000000,
190
+ "files": [
191
+ {
192
+ "key": "b65-guy-monroe-marketing-plan.mp4",
193
+ "size": 125000000,
194
+ "last_modified": "2025-11-17T15:30:00Z"
195
+ },
196
+ {
197
+ "key": "b65-guy-monroe-marketing-plan.srt",
198
+ "size": 50000,
199
+ "last_modified": "2025-11-17T15:35:00Z"
200
+ }
201
+ ]
202
+ }
203
+ }
204
+ }
205
+ ]
206
+ }
207
+ ```
208
+
209
+ **Usage in Dashboard:**
210
+ - Shows accurate "Jan uploaded files" status
211
+ - Displays S3 file count and size
212
+ - Warns if manifest is stale (last_scanned > 1 day ago)
213
+
214
+ ---
215
+
216
+ ### 2.2 Project-Level Manifest Generator
217
+
218
+ **Command:** `ad-dam project-manifest <brand> <project>`
219
+
220
+ **Purpose:** Generate detailed file tree for a single project.
221
+
222
+ **Output:** `{project}/.project-manifest.json`
223
+
224
+ **Behavior:**
225
+ ```bash
226
+ # Generate manifest for specific project
227
+ ad-dam project-manifest appydave b64-bmad-claude-sdk
228
+
229
+ # Output location: /path/to/v-appydave/b64-bmad-claude-sdk/.project-manifest.json
230
+ ```
231
+
232
+ **What It Does:**
233
+ 1. Scan project directory recursively
234
+ 2. Build tree structure with file counts and sizes per directory
235
+ 3. Include subdirectories (e.g., `recordings/recordings-bmad-v6/`)
236
+ 4. Write JSON to project root
237
+
238
+ **Manifest Schema:**
239
+ ```json
240
+ {
241
+ "project_id": "b64-bmad-claude-sdk",
242
+ "brand": "appydave",
243
+ "type": "flivideo",
244
+ "generated_at": "2025-11-18T12:00:00Z",
245
+ "tree": {
246
+ "recordings": {
247
+ "type": "directory",
248
+ "file_count": 75,
249
+ "total_bytes": 6800000000,
250
+ "subdirectories": {
251
+ "recordings-bmad-v6": {
252
+ "type": "directory",
253
+ "file_count": 26,
254
+ "total_bytes": 1200000000
255
+ }
256
+ }
257
+ },
258
+ "assets": {
259
+ "type": "directory",
260
+ "file_count": 12,
261
+ "total_bytes": 2000000,
262
+ "subdirectories": {}
263
+ },
264
+ "s3-staging": {
265
+ "type": "directory",
266
+ "file_count": 2,
267
+ "total_bytes": 125000000,
268
+ "subdirectories": {}
269
+ },
270
+ "transcripts": {
271
+ "type": "directory",
272
+ "file_count": 3,
273
+ "total_bytes": 500000,
274
+ "subdirectories": {}
275
+ }
276
+ },
277
+ "heavy_files": {
278
+ "count": 75,
279
+ "total_bytes": 6800000000,
280
+ "extensions": [".mov", ".mp4"]
281
+ },
282
+ "light_files": {
283
+ "count": 17,
284
+ "total_bytes": 2500000,
285
+ "extensions": [".srt", ".txt", ".png", ".jpg", ".md"]
286
+ }
287
+ }
288
+ ```
289
+
290
+ **Characteristics:**
291
+ - **Transient** - Not committed to git (add to `.gitignore`)
292
+ - **Optional** - Dashboard works without it
293
+ - **On-demand** - Only generated when needed
294
+ - **Future:** Button in Astro to trigger generation
295
+
296
+ **Gitignore Addition:**
297
+ ```gitignore
298
+ # Project manifests (transient, regenerate on demand)
299
+ .project-manifest.json
300
+ ```
301
+
302
+ ---
303
+
304
+ ### 2.3 Bulk Manifest Operations
305
+
306
+ **Command:** `ad-dam manifest all`
307
+
308
+ **Purpose:** Generate manifests for all brands in one command.
309
+
310
+ **Behavior:**
311
+ ```bash
312
+ # Generate all brand manifests
313
+ ad-dam manifest all
314
+
315
+ # Equivalent to:
316
+ # ad-dam manifest appydave
317
+ # ad-dam manifest aitldr
318
+ # ad-dam manifest voz
319
+ # ad-dam manifest kiros
320
+ # ad-dam manifest beauty-and-joy
321
+ # ad-dam manifest supportsignal
322
+ ```
323
+
324
+ **What It Does:**
325
+ 1. Read `brands.json` configuration
326
+ 2. Loop through all brands
327
+ 3. Generate manifest for each
328
+ 4. Show summary report
329
+
330
+ **Output:**
331
+ ```
332
+ 📊 Generating manifests for all brands...
333
+
334
+ ✅ appydave (21 projects, 11.5 GB local, 400 GB SSD)
335
+ ✅ aitldr (3 projects, 0.5 GB local, 0 GB SSD)
336
+ ✅ voz (2 projects, 0.45 GB local, 0 GB SSD)
337
+ ✅ kiros (0 projects)
338
+ ✅ beauty-and-joy (0 projects)
339
+ ✅ supportsignal (0 projects)
340
+
341
+ Summary:
342
+ Total projects: 26
343
+ Total local storage: 12.45 GB
344
+ Total SSD storage: 400 GB
345
+ ```
346
+
347
+ ---
348
+
349
+ ### 2.4 Combined Scan and Manifest
350
+
351
+ **Command:** `ad-dam refresh <brand>`
352
+
353
+ **Purpose:** Full refresh - regenerate manifest + S3 scan in one command.
354
+
355
+ **Behavior:**
356
+ ```bash
357
+ # Full refresh for one brand
358
+ ad-dam refresh appydave
359
+
360
+ # Full refresh for all brands
361
+ ad-dam refresh all
362
+ ```
363
+
364
+ **What It Does:**
365
+ 1. Generate brand manifest (local + SSD scan)
366
+ 2. Run S3 scan (query AWS for real S3 data)
367
+ 3. Update manifest with combined data
368
+ 4. Show summary
369
+
370
+ **Equivalent to:**
371
+ ```bash
372
+ ad-dam manifest appydave && ad-dam s3-scan appydave
373
+ ```
374
+
375
+ ---
376
+
377
+ ## 3. Existing Command Changes
378
+
379
+ ### 3.1 Manifest Generator Enhancements
380
+
381
+ **File:** `lib/appydave/tools/dam/manifest_generator.rb`
382
+
383
+ **Changes Needed:**
384
+
385
+ 1. **Add S3 scan integration**
386
+ - After filesystem scan, optionally query S3
387
+ - Merge S3 data into manifest
388
+ - Add `last_scanned` timestamp
389
+
390
+ 2. **Add project type detection for transcripts**
391
+ - FliVideo: Check for `transcripts/` folder
392
+ - Storyline: Check for `data/source/transcript.*`
393
+ - Add `has_transcript` boolean to project entry
394
+
395
+ 3. **Enhanced disk usage**
396
+ - Add S3 storage totals
397
+ - Separate heavy/light file breakdowns
398
+
399
+ **New Manifest Fields:**
400
+ ```json
401
+ {
402
+ "config": {
403
+ "brand": "appydave",
404
+ "local_base": "/path/to/v-appydave",
405
+ "ssd_base": "/Volumes/T7/appydave",
406
+ "s3_bucket": "appydave-video-projects",
407
+ "s3_prefix": "staging/v-appydave/",
408
+ "last_updated": "2025-11-18T12:00:00Z",
409
+ "last_s3_scan": "2025-11-18T11:55:00Z",
410
+ "disk_usage": {
411
+ "local": { "total_gb": 11.55 },
412
+ "ssd": { "total_gb": 400.24 },
413
+ "s3": { "total_gb": 2.5 }
414
+ }
415
+ },
416
+ "projects": [
417
+ {
418
+ "id": "b64-bmad-claude-sdk",
419
+ "type": "flivideo",
420
+ "has_transcript": true,
421
+ "storage": {
422
+ "local": { "exists": true, "..." },
423
+ "s3": {
424
+ "exists": true,
425
+ "last_scanned": "2025-11-18T11:55:00Z",
426
+ "file_count": 2,
427
+ "total_bytes": 125000000
428
+ },
429
+ "ssd": { "exists": false }
430
+ }
431
+ }
432
+ ]
433
+ }
434
+ ```
435
+
436
+ ---
437
+
438
+ ### 3.2 Transcript Detection
439
+
440
+ **Add to ManifestGenerator:**
441
+
442
+ ```ruby
443
+ def has_transcript?(project_path, project_type)
444
+ case project_type
445
+ when 'flivideo'
446
+ # Check for transcripts/ folder
447
+ transcripts_dir = File.join(project_path, 'transcripts')
448
+ return true if Dir.exist?(transcripts_dir) && !Dir.empty?(transcripts_dir)
449
+
450
+ # Legacy: check s3-staging/ for .srt files
451
+ s3_staging = File.join(project_path, 's3-staging')
452
+ return true if Dir.exist?(s3_staging) && Dir.glob(File.join(s3_staging, '*.srt')).any?
453
+
454
+ false
455
+ when 'storyline'
456
+ # Check data/source/ for transcript files
457
+ source_dir = File.join(project_path, 'data', 'source')
458
+ return false unless Dir.exist?(source_dir)
459
+
460
+ Dir.glob(File.join(source_dir, 'transcript.*')).any?
461
+ else
462
+ false
463
+ end
464
+ end
465
+ ```
466
+
467
+ ---
468
+
469
+ ## 4. Implementation Priority
470
+
471
+ ### Phase 1: Naming Consolidation (Foundation)
472
+ **Priority:** High
473
+ **Blocks:** User confusion, gem discoverability
474
+
475
+ **Tasks:**
476
+ 1. Create `exe/ad-dam`, `exe/ad-config`, etc. (new names)
477
+ 2. Keep old names as symlinks (backward compatibility)
478
+ 3. Add deprecation warnings
479
+ 4. Update documentation
480
+
481
+ **Estimated Effort:** 1 day
482
+
483
+ ---
484
+
485
+ ### Phase 2: S3 Scan Command (Critical for Dashboard)
486
+ **Priority:** Critical
487
+ **Blocks:** Dashboard S3 sync detection
488
+
489
+ **Tasks:**
490
+ 1. Implement `ad-dam s3-scan <brand>`
491
+ 2. Implement `ad-dam s3-scan all`
492
+ 3. Update manifest schema with S3 fields
493
+ 4. Add `last_s3_scan` timestamp
494
+ 5. Test with real S3 data
495
+
496
+ **Estimated Effort:** 2 days
497
+
498
+ ---
499
+
500
+ ### Phase 3: Bulk Operations (Convenience)
501
+ **Priority:** Medium
502
+ **Blocks:** Nothing, nice-to-have
503
+
504
+ **Tasks:**
505
+ 1. Implement `ad-dam manifest all`
506
+ 2. Implement `ad-dam refresh <brand>`
507
+ 3. Implement `ad-dam refresh all`
508
+ 4. Add progress reporting
509
+
510
+ **Estimated Effort:** 1 day
511
+
512
+ ---
513
+
514
+ ### Phase 4: Project-Level Manifests (Optional)
515
+ **Priority:** Low
516
+ **Blocks:** Detailed dashboard views
517
+
518
+ **Tasks:**
519
+ 1. Implement `ad-dam project-manifest <brand> <project>`
520
+ 2. Define tree structure schema
521
+ 3. Add to `.gitignore`
522
+ 4. Dashboard integration (read if exists)
523
+
524
+ **Estimated Effort:** 2 days
525
+
526
+ ---
527
+
528
+ ### Phase 5: Transcript Detection (Polish)
529
+ **Priority:** Low
530
+ **Blocks:** Dashboard transcript indicators
531
+
532
+ **Tasks:**
533
+ 1. Add `has_transcript?` method to ManifestGenerator
534
+ 2. Update manifest schema with `has_transcript` field
535
+ 3. Handle both FliVideo and Storyline locations
536
+
537
+ **Estimated Effort:** 0.5 days
538
+
539
+ ---
540
+
541
+ ## 5. Testing Requirements
542
+
543
+ ### Unit Tests
544
+
545
+ **New test files needed:**
546
+ - `spec/appydave/tools/dam/s3_scanner_spec.rb`
547
+ - `spec/appydave/tools/dam/project_manifest_generator_spec.rb`
548
+ - `spec/appydave/tools/dam/transcript_detector_spec.rb`
549
+
550
+ ### Integration Tests
551
+
552
+ **Test scenarios:**
553
+ 1. `ad-dam s3-scan` with mock AWS S3 (VCR cassette)
554
+ 2. `ad-dam manifest all` across multiple brands
555
+ 3. `ad-dam project-manifest` with complex directory tree
556
+ 4. Transcript detection for FliVideo vs Storyline projects
557
+
558
+ ### Manual Testing
559
+
560
+ **Windows/WSL (Jan's environment):**
561
+ - All renamed commands work (`ad-dam`, `ad-config`, etc.)
562
+ - S3 scan with Windows paths
563
+ - Manifest generation
564
+
565
+ **Mac (David's environment):**
566
+ - SSD detection with external drive
567
+ - S3 scan with multiple AWS profiles
568
+ - Bulk operations
569
+
570
+ ---
571
+
572
+ ## 6. Documentation Updates
573
+
574
+ **Files to update:**
575
+
576
+ 1. **`docs/guides/tools/dam-usage.md`**
577
+ - Add `s3-scan` examples
578
+ - Add `project-manifest` examples
579
+ - Add `manifest all`, `refresh` examples
580
+
581
+ 2. **`docs/guides/tools/configuration.md`**
582
+ - Update command name to `ad-config`
583
+ - Add deprecation notice for `ad_config`
584
+
585
+ 3. **`CLAUDE.md`** (root and appydave-tools)
586
+ - Update all command examples
587
+ - Add new commands to reference
588
+
589
+ 4. **`README.md`**
590
+ - Update quick start examples
591
+ - Add new command summary
592
+
593
+ ---
594
+
595
+ ## 7. Migration Guide (for Users)
596
+
597
+ **For David:**
598
+ ```bash
599
+ # Old way
600
+ dam list
601
+ ad_config -l
602
+ gpt_context -i '**/*.rb'
603
+
604
+ # New way (after v0.22.0)
605
+ ad-dam list
606
+ ad-config -l
607
+ ad-context -i '**/*.rb'
608
+
609
+ # Old commands still work (with warning) until v1.0.0
610
+ ```
611
+
612
+ **For Jan (Windows/WSL):**
613
+ ```bash
614
+ # Update gem
615
+ gem update appydave-tools
616
+
617
+ # Update bash aliases (if using git clone approach)
618
+ alias ad-dam="ruby ~/dev/ad/appydave-tools/bin/ad-dam"
619
+ alias ad-config="ruby ~/dev/ad/appydave-tools/bin/ad-config"
620
+ ```
621
+
622
+ ---
623
+
624
+ ## 8. Breaking Changes (v1.0.0)
625
+
626
+ **When we remove old command names:**
627
+
628
+ - `dam` → removed (use `ad-dam`)
629
+ - `ad_config` → removed (use `ad-config`)
630
+ - `youtube_manager` → removed (use `ad-youtube`)
631
+ - `gpt_context` → removed (use `ad-context`)
632
+ - `subtitle_processor` → removed (use `ad-subtitles`)
633
+ - `prompt_tools` → removed (use `ad-prompts`)
634
+
635
+ **Migration path:**
636
+ 1. v0.22.0 - Add new names, deprecation warnings
637
+ 2. v0.23.0-0.99.0 - Both names work, warnings continue
638
+ 3. v1.0.0 - Remove old names (major version bump)
639
+
640
+ ---
641
+
642
+ **Last updated:** 2025-11-18