myaidev-method 0.0.8 → 0.1.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.
@@ -0,0 +1,750 @@
1
+ # Coolify Deployment Agent
2
+
3
+ Optimized Coolify deployment agent for Claude Code 2.0 with modern agent patterns, efficient API utilities, and scriptable deployment workflows.
4
+
5
+ ## Overview
6
+
7
+ The Coolify deployment agent is a specialized subagent optimized for deploying applications to Coolify infrastructure. It follows Claude Code 2.0 best practices:
8
+
9
+ - **Lightweight pattern** (<3k tokens) for fast operations
10
+ - **Extended thinking** support for complex deployment decisions
11
+ - **Subagent delegation** for parallel multi-component deployments
12
+ - **Security-first** with permission scoping and credential safety
13
+
14
+ ## Features
15
+
16
+ ✅ **Application Deployment** - Git, Docker, Nixpacks, Docker Compose
17
+ ✅ **Resource Management** - Servers, projects, databases, services
18
+ ✅ **Environment Configuration** - Secure env var and secret management
19
+ ✅ **Monitoring & Logs** - Real-time deployment tracking
20
+ ✅ **Scriptable API** - Reusable utilities for automation
21
+ ✅ **Claude Code 2.0 Optimized** - Modern agent patterns
22
+
23
+ ## Installation
24
+
25
+ ```bash
26
+ npm install myaidev-method
27
+ # or
28
+ npx myaidev-method init --claude
29
+ ```
30
+
31
+ ## Configuration
32
+
33
+ Add Coolify credentials to `.env`:
34
+
35
+ ```bash
36
+ COOLIFY_URL=https://coolify.myai1.ai
37
+ COOLIFY_API_KEY=your_api_key_here
38
+ ```
39
+
40
+ **Get API Key:**
41
+ 1. Login to Coolify
42
+ 2. Go to Settings → Keys & Tokens
43
+ 3. Create API Token
44
+ 4. Copy token to `.env`
45
+
46
+ **Verify Configuration:**
47
+ ```bash
48
+ npm run coolify:status
49
+ ```
50
+
51
+ ## Quick Start
52
+
53
+ ### Using Slash Command (Recommended)
54
+
55
+ ```bash
56
+ # Check status
57
+ /myai-coolify-deploy status
58
+
59
+ # List resources
60
+ /myai-coolify-deploy list servers
61
+ /myai-coolify-deploy list applications
62
+
63
+ # Deploy application
64
+ /myai-coolify-deploy deploy --repo https://github.com/user/app --name myapp
65
+ ```
66
+
67
+ ### Using NPM Scripts
68
+
69
+ ```bash
70
+ # Check Coolify status
71
+ npm run coolify:status
72
+
73
+ # List all servers
74
+ npm run coolify:list -- --type servers
75
+
76
+ # List applications with details
77
+ npm run coolify:list -- --type applications --detailed
78
+
79
+ # Get JSON output
80
+ npm run coolify:list -- --type all --json
81
+ ```
82
+
83
+ ### Using Utilities Directly
84
+
85
+ ```javascript
86
+ import { CoolifyUtils } from 'myaidev-method/src/lib/coolify-utils.js';
87
+
88
+ const coolify = new CoolifyUtils();
89
+
90
+ // List servers
91
+ const servers = await coolify.listServers();
92
+ console.log(servers);
93
+
94
+ // Deploy application
95
+ const deployment = await coolify.deployApplication(uuid, {
96
+ force: true,
97
+ instant: false
98
+ });
99
+
100
+ // Wait for deployment
101
+ const result = await coolify.waitForDeployment(uuid);
102
+ console.log(result.success ? '✓ Deployed' : '✗ Failed');
103
+ ```
104
+
105
+ ## Agent Usage
106
+
107
+ ### Pattern 1: Simple Deployment
108
+
109
+ For standard deployments, use the lightweight pattern:
110
+
111
+ ```bash
112
+ /myai-coolify-deploy deploy --repo https://github.com/user/nextjs-app --name production
113
+ ```
114
+
115
+ **Agent workflow:**
116
+ 1. Verifies Coolify connectivity (script)
117
+ 2. Lists available servers (script)
118
+ 3. Selects optimal server (logic)
119
+ 4. Creates application (API)
120
+ 5. Triggers deployment (API)
121
+ 6. Monitors progress (script)
122
+ 7. Reports URL and status
123
+
124
+ **Token usage:** ~2-3k tokens
125
+ **Duration:** 2-5 minutes (depends on build)
126
+
127
+ ### Pattern 2: Extended Thinking
128
+
129
+ For complex decisions, use extended thinking:
130
+
131
+ ```bash
132
+ /myai-coolify-deploy think about optimal deployment strategy for multi-region app
133
+ ```
134
+
135
+ **Thinking triggers:**
136
+ - `think` - Standard analysis (~4k tokens)
137
+ - `think hard` - Deep analysis (~10k tokens)
138
+ - `think harder` - Comprehensive analysis (~20k tokens)
139
+ - `ultrathink` - Maximum depth (~32k tokens)
140
+
141
+ **Use cases:**
142
+ - Server selection optimization
143
+ - Deployment troubleshooting
144
+ - Architecture planning
145
+ - Performance optimization
146
+
147
+ ### Pattern 3: Subagent Delegation
148
+
149
+ For multi-component applications, delegate to subagents:
150
+
151
+ ```bash
152
+ /myai-coolify-deploy deploy-stack --config full-stack.json
153
+ ```
154
+
155
+ **Agent creates parallel subagents:**
156
+ ```
157
+ Main Agent
158
+ ├─ Database Subagent → Deploy PostgreSQL
159
+ ├─ Cache Subagent → Deploy Redis
160
+ ├─ API Subagent → Deploy Backend (waits for DB)
161
+ └─ Frontend Subagent → Deploy Frontend (waits for API)
162
+ ```
163
+
164
+ **Benefits:**
165
+ - Parallel execution (faster)
166
+ - Focused responsibility (reliable)
167
+ - Independent context (efficient)
168
+ - Clear interfaces (maintainable)
169
+
170
+ ## Available Scripts
171
+
172
+ ### Resource Management
173
+
174
+ ```bash
175
+ # System status
176
+ npm run coolify:status
177
+ npm run coolify:status -- --comprehensive
178
+
179
+ # List resources
180
+ npm run coolify:list -- --type servers
181
+ npm run coolify:list -- --type projects
182
+ npm run coolify:list -- --type applications
183
+ npm run coolify:list -- --type databases
184
+ npm run coolify:list -- --type services
185
+ npm run coolify:list -- --type all --detailed
186
+ ```
187
+
188
+ ### Deployment Operations
189
+
190
+ ```bash
191
+ # Deploy application
192
+ node src/scripts/coolify-deploy-app.js \
193
+ --name "myapp" \
194
+ --repo "https://github.com/user/myapp" \
195
+ --branch "main" \
196
+ --server-uuid "server-uuid" \
197
+ --project-uuid "project-uuid" \
198
+ --build-pack "nixpacks" \
199
+ --port "3000" \
200
+ --domain "myapp.example.com"
201
+
202
+ # Watch deployment
203
+ node src/scripts/coolify-watch-deployment.js --uuid <app-uuid>
204
+
205
+ # Restart application
206
+ node src/scripts/coolify-restart-app.js --uuid <app-uuid>
207
+
208
+ # Stop application
209
+ node src/scripts/coolify-stop-app.js --uuid <app-uuid>
210
+ ```
211
+
212
+ ### Environment Variables
213
+
214
+ ```bash
215
+ # Get environment variables
216
+ node src/scripts/coolify-get-env.js --uuid <app-uuid>
217
+
218
+ # Set environment variables
219
+ node src/scripts/coolify-set-env.js \
220
+ --uuid <app-uuid> \
221
+ --key "API_KEY" \
222
+ --value "secret123"
223
+
224
+ # Load from file
225
+ node src/scripts/coolify-set-env.js \
226
+ --uuid <app-uuid> \
227
+ --file ".env.production"
228
+ ```
229
+
230
+ ### Logs & Debugging
231
+
232
+ ```bash
233
+ # View logs
234
+ node src/scripts/coolify-logs.js --uuid <app-uuid>
235
+
236
+ # Follow logs
237
+ node src/scripts/coolify-logs.js --uuid <app-uuid> --follow
238
+
239
+ # Deployment report
240
+ node src/scripts/coolify-deployment-report.js --uuid <app-uuid>
241
+ ```
242
+
243
+ ## Library API
244
+
245
+ ### CoolifyUtils Class
246
+
247
+ ```javascript
248
+ import { CoolifyUtils } from 'myaidev-method/src/lib/coolify-utils.js';
249
+
250
+ const coolify = new CoolifyUtils({
251
+ url: 'https://coolify.myai1.ai',
252
+ apiKey: 'your-api-key'
253
+ });
254
+
255
+ // Or auto-load from .env
256
+ const coolify = new CoolifyUtils();
257
+ ```
258
+
259
+ ### Server Management
260
+
261
+ ```javascript
262
+ // List all servers
263
+ const servers = await coolify.listServers();
264
+
265
+ // Get server details
266
+ const server = await coolify.getServer(uuid);
267
+
268
+ // Get server resources
269
+ const resources = await coolify.getServerResources(uuid);
270
+
271
+ // Find server by name
272
+ const server = await coolify.findServerByName('production');
273
+
274
+ // Format for display
275
+ const formatted = coolify.formatServerList(servers);
276
+ ```
277
+
278
+ ### Project Management
279
+
280
+ ```javascript
281
+ // List projects
282
+ const projects = await coolify.listProjects();
283
+
284
+ // Get project
285
+ const project = await coolify.getProject(uuid);
286
+
287
+ // Create project
288
+ const newProject = await coolify.createProject({
289
+ name: 'My Project',
290
+ description: 'Production applications'
291
+ });
292
+
293
+ // Find by name
294
+ const project = await coolify.findProjectByName('My Project');
295
+ ```
296
+
297
+ ### Application Management
298
+
299
+ ```javascript
300
+ // List applications
301
+ const apps = await coolify.listApplications();
302
+
303
+ // Get application
304
+ const app = await coolify.getApplication(uuid);
305
+
306
+ // Create application
307
+ const config = coolify.buildApplicationConfig({
308
+ name: 'myapp',
309
+ repository: 'https://github.com/user/myapp',
310
+ branch: 'main',
311
+ buildPack: 'nixpacks',
312
+ ports: '3000',
313
+ domains: ['myapp.example.com'],
314
+ projectUuid: 'project-uuid',
315
+ serverUuid: 'server-uuid',
316
+ envVars: {
317
+ NODE_ENV: 'production',
318
+ PORT: '3000'
319
+ }
320
+ });
321
+
322
+ const app = await coolify.createApplication(config);
323
+
324
+ // Update application
325
+ await coolify.updateApplication(uuid, {
326
+ domains: ['app.example.com', 'www.app.example.com']
327
+ });
328
+
329
+ // Delete application
330
+ await coolify.deleteApplication(uuid);
331
+ ```
332
+
333
+ ### Deployment Operations
334
+
335
+ ```javascript
336
+ // Deploy application
337
+ const deployment = await coolify.deployApplication(uuid, {
338
+ force: true, // Force rebuild
339
+ instant: false, // Instant deploy (skip queue)
340
+ deployConfig: {} // Additional config
341
+ });
342
+
343
+ // Deploy by tag
344
+ const deployment = await coolify.deployApplication(null, {
345
+ tag: 'v1.0.0'
346
+ });
347
+
348
+ // Wait for deployment to complete
349
+ const result = await coolify.waitForDeployment(uuid, {
350
+ maxAttempts: 60, // 5 minutes
351
+ interval: 5000 // Check every 5s
352
+ });
353
+
354
+ if (result.success) {
355
+ console.log('Deployment successful!');
356
+ } else {
357
+ console.log(`Deployment failed: ${result.status}`);
358
+ }
359
+
360
+ // Get deployment logs
361
+ const logs = await coolify.getDeploymentLogs(uuid);
362
+
363
+ // Restart/Stop application
364
+ await coolify.restartApplication(uuid);
365
+ await coolify.stopApplication(uuid);
366
+ ```
367
+
368
+ ### Environment Variables
369
+
370
+ ```javascript
371
+ // Get environment variables
372
+ const envVars = await coolify.getEnvironmentVariables(uuid);
373
+
374
+ // Update environment variables
375
+ await coolify.updateEnvironmentVariables(uuid, {
376
+ API_KEY: 'secret123',
377
+ DATABASE_URL: 'postgresql://...',
378
+ NODE_ENV: 'production'
379
+ });
380
+ ```
381
+
382
+ ### Database Management
383
+
384
+ ```javascript
385
+ // List databases
386
+ const databases = await coolify.listDatabases();
387
+
388
+ // Get database
389
+ const db = await coolify.getDatabase(uuid);
390
+
391
+ // Create database
392
+ const dbConfig = coolify.buildDatabaseConfig({
393
+ name: 'myapp-db',
394
+ type: 'postgresql',
395
+ version: '16',
396
+ projectUuid: 'project-uuid',
397
+ serverUuid: 'server-uuid',
398
+ publicPort: 5432,
399
+ envVars: {
400
+ POSTGRES_USER: 'admin',
401
+ POSTGRES_PASSWORD: 'secure-password',
402
+ POSTGRES_DB: 'myapp'
403
+ }
404
+ });
405
+
406
+ const db = await coolify.createDatabase(dbConfig);
407
+ ```
408
+
409
+ ### Health & Status
410
+
411
+ ```javascript
412
+ // Health check
413
+ const healthy = await coolify.healthCheck();
414
+
415
+ // System status
416
+ const status = await coolify.getSystemStatus();
417
+ // Returns: { healthy, servers: {...}, projects: {...}, applications: {...} }
418
+ ```
419
+
420
+ ## Deployment Patterns
421
+
422
+ ### Pattern 1: Single Application
423
+
424
+ ```javascript
425
+ const coolify = new CoolifyUtils();
426
+
427
+ // 1. Verify connectivity
428
+ const healthy = await coolify.healthCheck();
429
+ if (!healthy) throw new Error('Coolify not reachable');
430
+
431
+ // 2. Find or create project
432
+ let project = await coolify.findProjectByName('Production');
433
+ if (!project) {
434
+ project = await coolify.createProject({ name: 'Production' });
435
+ }
436
+
437
+ // 3. Select server
438
+ const servers = await coolify.listServers();
439
+ const server = servers.find(s => s.is_usable && s.is_reachable);
440
+
441
+ // 4. Create application
442
+ const config = coolify.buildApplicationConfig({
443
+ name: 'myapp',
444
+ repository: 'https://github.com/user/myapp',
445
+ branch: 'main',
446
+ buildPack: 'nixpacks',
447
+ projectUuid: project.uuid,
448
+ serverUuid: server.uuid,
449
+ ports: '3000',
450
+ domains: ['myapp.example.com']
451
+ });
452
+
453
+ const app = await coolify.createApplication(config);
454
+
455
+ // 5. Deploy
456
+ const deployment = await coolify.deployApplication(app.uuid);
457
+
458
+ // 6. Wait for completion
459
+ const result = await coolify.waitForDeployment(app.uuid, {
460
+ maxAttempts: 120,
461
+ interval: 5000
462
+ });
463
+
464
+ console.log(result.success ? '✓ Deployed!' : '✗ Failed');
465
+ ```
466
+
467
+ ### Pattern 2: Full Stack with Database
468
+
469
+ ```javascript
470
+ const coolify = new CoolifyUtils();
471
+
472
+ // Deploy database first
473
+ const dbConfig = coolify.buildDatabaseConfig({
474
+ name: 'myapp-db',
475
+ type: 'postgresql',
476
+ version: '16',
477
+ projectUuid: projectUuid,
478
+ serverUuid: serverUuid
479
+ });
480
+
481
+ const db = await coolify.createDatabase(dbConfig);
482
+
483
+ // Wait for database to be ready
484
+ await new Promise(resolve => setTimeout(resolve, 30000));
485
+
486
+ // Get database connection string
487
+ const connectionString = db.internal_db_url;
488
+
489
+ // Deploy application with database connection
490
+ const appConfig = coolify.buildApplicationConfig({
491
+ name: 'myapp',
492
+ repository: 'https://github.com/user/myapp',
493
+ projectUuid: projectUuid,
494
+ serverUuid: serverUuid,
495
+ envVars: {
496
+ DATABASE_URL: connectionString,
497
+ NODE_ENV: 'production'
498
+ }
499
+ });
500
+
501
+ const app = await coolify.createApplication(appConfig);
502
+ await coolify.deployApplication(app.uuid);
503
+ ```
504
+
505
+ ### Pattern 3: Multi-Environment
506
+
507
+ ```javascript
508
+ const coolify = new CoolifyUtils();
509
+
510
+ const environments = [
511
+ { name: 'staging', branch: 'develop', domain: 'staging.app.com' },
512
+ { name: 'production', branch: 'main', domain: 'app.com' }
513
+ ];
514
+
515
+ for (const env of environments) {
516
+ const config = coolify.buildApplicationConfig({
517
+ name: `myapp-${env.name}`,
518
+ repository: 'https://github.com/user/myapp',
519
+ branch: env.branch,
520
+ domains: [env.domain],
521
+ projectUuid: projectUuid,
522
+ serverUuid: serverUuid,
523
+ envVars: {
524
+ NODE_ENV: env.name
525
+ }
526
+ });
527
+
528
+ const app = await coolify.createApplication(config);
529
+ await coolify.deployApplication(app.uuid);
530
+
531
+ console.log(`✓ Deployed ${env.name} environment`);
532
+ }
533
+ ```
534
+
535
+ ## Agent Integration Examples
536
+
537
+ ### Example 1: Agent-Driven Deployment
538
+
539
+ **User:** "Deploy my Next.js app to Coolify"
540
+
541
+ **Agent workflow (using utilities):**
542
+
543
+ ```javascript
544
+ // 1. Read package.json to detect Next.js
545
+ const packageJson = JSON.parse(await readFile('package.json'));
546
+ const isNextJS = packageJson.dependencies?.next;
547
+
548
+ // 2. Connect to Coolify
549
+ const coolify = new CoolifyUtils();
550
+ await coolify.healthCheck(); // Verify connectivity
551
+
552
+ // 3. List available servers
553
+ const servers = await coolify.listServers();
554
+ const usableServers = servers.filter(s => s.is_usable && s.is_reachable);
555
+
556
+ // 4. Prompt user for server (if multiple)
557
+ const selectedServer = usableServers[0]; // Or ask user
558
+
559
+ // 5. Build configuration
560
+ const config = coolify.buildApplicationConfig({
561
+ name: 'nextjs-app',
562
+ repository: await detectGitRemote(), // Or prompt
563
+ branch: 'main',
564
+ buildPack: 'nixpacks',
565
+ projectUuid: await getOrCreateProject(),
566
+ serverUuid: selectedServer.uuid,
567
+ ports: '3000',
568
+ domains: [] // Or prompt for domain
569
+ });
570
+
571
+ // 6. Create and deploy
572
+ const app = await coolify.createApplication(config);
573
+ await coolify.deployApplication(app.uuid);
574
+
575
+ // 7. Monitor deployment
576
+ const result = await coolify.waitForDeployment(app.uuid);
577
+
578
+ // 8. Report to user
579
+ if (result.success) {
580
+ console.log(`✓ Deployed successfully!`);
581
+ console.log(`URL: ${app.fqdn || 'Configure domain in Coolify'}`);
582
+ } else {
583
+ console.log(`✗ Deployment failed: ${result.status}`);
584
+ const logs = await coolify.getDeploymentLogs(app.uuid);
585
+ console.log('Logs:', logs);
586
+ }
587
+ ```
588
+
589
+ ### Example 2: Multi-Agent Orchestration
590
+
591
+ **User:** "Set up full production environment with database and Redis"
592
+
593
+ **Main agent delegates to subagents:**
594
+
595
+ ```markdown
596
+ Main Agent (orchestration)
597
+ ├─ Database Agent
598
+ │ └─ Deploy PostgreSQL database
599
+ │ └─ Return connection string
600
+ ├─ Cache Agent
601
+ │ └─ Deploy Redis cache
602
+ │ └─ Return connection string
603
+ ├─ Backend Agent (waits for DB + Redis)
604
+ │ └─ Deploy API with connections
605
+ │ └─ Run migrations
606
+ │ └─ Return API URL
607
+ └─ Frontend Agent (waits for Backend)
608
+ └─ Deploy frontend with API URL
609
+ └─ Configure domains
610
+ └─ Return app URL
611
+ ```
612
+
613
+ Each subagent uses `CoolifyUtils` independently with focused responsibilities.
614
+
615
+ ## Security Best Practices
616
+
617
+ ### Credential Management
618
+
619
+ ```bash
620
+ # .env file (never commit)
621
+ COOLIFY_URL=https://coolify.myai1.ai
622
+ COOLIFY_API_KEY=1|xxxxxxxxxxxx
623
+
624
+ # .env.example (commit this)
625
+ COOLIFY_URL=https://your-coolify-instance.com
626
+ COOLIFY_API_KEY=your_api_key_here
627
+ ```
628
+
629
+ ### Permission Scoping
630
+
631
+ Agent frontmatter limits tool access:
632
+
633
+ ```yaml
634
+ ---
635
+ name: coolify-deploy
636
+ tools: Bash, Read
637
+ allowed-directories: [".env", "src/scripts/coolify-*.js"]
638
+ forbidden-commands: ["rm -rf", "sudo", "chmod 777"]
639
+ ---
640
+ ```
641
+
642
+ ### Production Gates
643
+
644
+ Always confirm production deployments:
645
+
646
+ ```javascript
647
+ if (environment === 'production') {
648
+ const confirm = await promptUser('Deploy to PRODUCTION? (yes/no)');
649
+ if (confirm !== 'yes') {
650
+ console.log('Deployment cancelled');
651
+ process.exit(0);
652
+ }
653
+ }
654
+ ```
655
+
656
+ ## Troubleshooting
657
+
658
+ ### Connection Issues
659
+
660
+ ```bash
661
+ # Test API connectivity
662
+ curl -H "Authorization: Bearer $COOLIFY_API_KEY" \
663
+ https://coolify.myai1.ai/api/v1/servers
664
+
665
+ # Check credentials
666
+ cat .env | grep COOLIFY
667
+
668
+ # Verify status
669
+ npm run coolify:status
670
+ ```
671
+
672
+ ### Deployment Failures
673
+
674
+ ```bash
675
+ # Check logs
676
+ node src/scripts/coolify-logs.js --uuid <app-uuid>
677
+
678
+ # Get detailed report
679
+ node src/scripts/coolify-deployment-report.js --uuid <app-uuid>
680
+
681
+ # Retry deployment
682
+ node src/scripts/coolify-deploy-app.js --uuid <app-uuid> --force
683
+ ```
684
+
685
+ ### Common Errors
686
+
687
+ **"API key invalid"**
688
+ - Regenerate API key in Coolify
689
+ - Update `.env` file
690
+ - Verify no extra spaces in `.env`
691
+
692
+ **"Server not reachable"**
693
+ - Check server status in Coolify
694
+ - Verify SSH connectivity
695
+ - Check firewall rules
696
+
697
+ **"Build failed"**
698
+ - Review build logs
699
+ - Check repository accessibility
700
+ - Verify build pack compatibility
701
+
702
+ ## Performance Optimization
703
+
704
+ ### Caching
705
+
706
+ Nixpacks automatically caches dependencies:
707
+ - Node.js: `node_modules` cached
708
+ - Python: Virtual env cached
709
+ - Docker: Layer caching enabled
710
+
711
+ ### Parallel Builds
712
+
713
+ Configure concurrent builds in server settings:
714
+ ```javascript
715
+ // Default: 2 concurrent builds per server
716
+ // Increase for faster multi-app deployments
717
+ ```
718
+
719
+ ### Resource Allocation
720
+
721
+ Set appropriate limits:
722
+ ```javascript
723
+ const config = coolify.buildApplicationConfig({
724
+ // ... other config
725
+ settings: {
726
+ memory_limit: '512m',
727
+ cpu_limit: '1.0'
728
+ }
729
+ });
730
+ ```
731
+
732
+ ## Contributing
733
+
734
+ To extend the Coolify agent:
735
+
736
+ 1. Add functions to `src/lib/coolify-utils.js`
737
+ 2. Create scripts in `src/scripts/coolify-*.js`
738
+ 3. Update agent documentation
739
+ 4. Add npm scripts to `package.json`
740
+
741
+ ## Resources
742
+
743
+ - [Coolify Documentation](https://coolify.io/docs)
744
+ - [Coolify API Reference](https://coolify.io/docs/api-reference)
745
+ - [Claude Code 2.0 Best Practices](https://docs.claude.com/en/docs/claude-code)
746
+ - [Agent Engineering Guide](https://www.anthropic.com/engineering/claude-code-best-practices)
747
+
748
+ ## License
749
+
750
+ MIT - See LICENSE file for details