-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocs.html
More file actions
904 lines (748 loc) · 58.3 KB
/
Copy pathdocs.html
File metadata and controls
904 lines (748 loc) · 58.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documentation  DevForge</title>
<meta name="description" content="Quickstart guides, installation instructions, and example commands for all DevForge CLI tools: API Contract Guardian, json2sql, DeployDiff, ConfigDrift, APIAuth, APIGhost, Envault, SchemaForge, click-to-mcp, and DeadCode.">
<meta name="keywords" content="CLI tools documentation, OpenAPI diff, JSON to SQL, infrastructure diff, config drift, devops CLI">
<meta property="og:title" content="DevForge  Documentation">
<meta property="og:description" content="Quickstart guides and installation for all 11 developer CLI tools.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://coding-dev-tools.github.io/devforge/docs.html">
<meta name="twitter:site" content="@DevForge">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="DevForge  Documentation">
<meta name="twitter:description" content="Quickstart guides and installation for all 11 developer CLI tools.">
<meta name="twitter:image" content="https://coding-dev-tools.github.io/devforge/og-image.svg">
<meta property="og:image" content="https://coding-dev-tools.github.io/devforge/og-image.svg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<link rel="canonical" href="https://coding-dev-tools.github.io/devforge/docs.html">
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>âš’</text></svg>">
<meta name="twitter:title" content="DevForge  Documentation">
<meta name="twitter:description" content="Quickstart guides and installation for all 10 developer CLI tools.">
<meta name="twitter:image" content="https://coding-dev-tools.github.io/devforge.dev/og-image.svg">
<meta property="og:image" content="https://coding-dev-tools.github.io/devforge.dev/og-image.svg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>â›Â</text></svg>">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.28.0/themes/prism-tomorrow.min.css" rel="stylesheet">
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: 'Inter', -apple-system, sans-serif; background: #0a0a0b; color: #e1e1e3; line-height: 1.6; }
/* Navigation */
nav { position: fixed; top: 0; width: 100%; z-index: 100; background: rgba(10,10,11,0.85); backdrop-filter: blur(12px); border-bottom: 1px solid #1e1e20; }
nav .inner { max-width: 1100px; margin: 0 auto; padding: 14px 24px; display: flex; align-items: center; justify-content: space-between; }
nav .logo { font-weight: 700; font-size: 1.15rem; color: #fff; letter-spacing: -0.02em; }
nav .logo span { color: #6366f1; }
nav .links a { color: #888; text-decoration: none; font-size: 0.85rem; margin-left: 28px; transition: color .15s; }
nav .links a:hover { color: #fff; }
nav .links a.active { color: #fff; }
/* Hero */
.hero { max-width: 1100px; margin: 0 auto; padding: 140px 24px 60px; text-align: center; }
.hero h1 { font-size: 3rem; font-weight: 800; line-height: 1.15; letter-spacing: -0.04em; color: #fff; }
.hero h1 span { background: linear-gradient(135deg, #6366f1, #a78bfa); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
.hero p { font-size: 1.05rem; color: #888; max-width: 650px; margin: 16px auto 0; }
.hero .badge { display: inline-block; padding: 6px 16px; border-radius: 32px; font-size: 0.75rem; font-weight: 600; background: rgba(99,102,241,0.12); color: #a78bfa; border: 1px solid rgba(99,102,241,0.2); margin-bottom: 20px; letter-spacing: 0.3px; text-transform: uppercase; }
/* Quick Jump */
.quick-jump { max-width: 1100px; margin: 0 auto; padding: 0 24px 40px; display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }
.quick-jump a { padding: 8px 18px; border-radius: 8px; font-size: 0.82rem; font-weight: 500; text-decoration: none; background: #121213; color: #888; border: 1px solid #1e1e20; transition: all .15s; }
.quick-jump a:hover { border-color: #6366f1; color: #fff; }
/* Content */
.content { max-width: 850px; margin: 0 auto; padding: 0 24px 80px; }
/* Tool Section */
.tool-section { background: #121213; border: 1px solid #1e1e20; border-radius: 14px; padding: 32px; margin-bottom: 24px; scroll-margin-top: 80px; }
.tool-section h2 { font-size: 1.5rem; font-weight: 700; color: #fff; letter-spacing: -0.03em; margin-bottom: 4px; display: flex; align-items: center; gap: 10px; }
.tool-section h2 .icon { width: 32px; height: 32px; border-radius: 8px; display: inline-flex; align-items: center; justify-content: center; font-size: 1rem; }
.tool-section .subtitle { font-size: 0.85rem; color: #888; margin-bottom: 16px; }
.tool-section .desc { font-size: 0.88rem; color: #999; line-height: 1.65; margin-bottom: 20px; }
.tool-section .gh-link { display: inline-block; font-size: 0.78rem; color: #6366f1; text-decoration: none; font-weight: 500; margin-bottom: 18px; }
.tool-section .gh-link:hover { color: #a78bfa; text-decoration: underline; }
.icon-acg { background: rgba(99,102,241,0.15); }
.icon-j2s { background: rgba(16,185,129,0.15); }
.icon-dd { background: rgba(245,158,11,0.15); }
.icon-cd { background: rgba(239,68,68,0.15); }
.icon-aa { background: rgba(236,72,153,0.15); }
.icon-ag { background: rgba(6,182,212,0.15); }
.icon-ev { background: rgba(34,197,94,0.15); }
.icon-sf { background: rgba(251,146,60,0.15); }
.icon-rh { background: rgba(139,92,246,0.15); }
/* Install Block */
.install-block { background: #0a0a0b; border: 1px solid #1e1e20; border-radius: 10px; padding: 14px 18px; margin-bottom: 18px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; }
.install-block code { font-family: 'Fira Code', 'JetBrains Mono', monospace; font-size: 0.82rem; color: #a78bfa; }
.install-block .note { font-size: 0.75rem; color: #666; }
/* Notice banner */
.notice-banner { max-width: 780px; margin: 0 auto 24px; padding: 12px 20px; background: rgba(99,102,241,0.06); border: 1px solid rgba(99,102,241,0.15); border-radius: 10px; font-size: 0.82rem; color: #a78bfa; }
.notice-banner code { color: #34d399; background: rgba(16,185,129,0.1); padding: 1px 6px; border-radius: 4px; font-size: 0.8rem; }
.notice-banner strong { color: #c4b5fd; }
/* Code blocks */
pre { background: #0a0a0b !important; border: 1px solid #1e1e20; border-radius: 10px; padding: 16px 20px !important; margin-bottom: 18px !important; font-size: 0.8rem; }
pre code { font-family: 'Fira Code', 'JetBrains Mono', monospace; }
code { font-family: 'Fira Code', 'JetBrains Mono', monospace; }
/* Feature Lists */
.features { list-style: none; display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-bottom: 16px; }
.features li { font-size: 0.82rem; color: #aaa; padding: 4px 0; display: flex; align-items: center; gap: 8px; }
.features li::before { content: '✓'; color: #6366f1; font-weight: 700; }
.features li.single-col { grid-column: 1 / -1; }
/* Insight box */
.insight { background: rgba(99,102,241,0.06); border: 1px solid rgba(99,102,241,0.15); border-radius: 10px; padding: 16px 20px; margin-bottom: 18px; }
.insight p { font-size: 0.82rem; color: #999; line-height: 1.6; }
.insight strong { color: #a78bfa; }
/* Workflow example */
.workflow { background: rgba(16,185,129,0.06); border: 1px solid rgba(16,185,129,0.15); border-radius: 10px; padding: 16px 20px; margin-bottom: 18px; }
.workflow p { font-size: 0.82rem; color: #999; line-height: 1.6; }
/* Footer */
footer { max-width: 1100px; margin: 0 auto; padding: 40px 24px; border-top: 1px solid #1e1e20; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; }
footer span { font-size: 0.8rem; color: #555; }
footer a { color: #888; text-decoration: none; font-size: 0.8rem; }
footer a:hover { color: #fff; }
@media (max-width: 640px) {
.hero h1 { font-size: 2.2rem; }
.features { grid-template-columns: 1fr; }
.tool-section { padding: 24px; }
nav .links a { margin-left: 12px; font-size: 0.75rem; }
}
</style>
<!-- Plausible Analytics -->
<script defer data-domain="devforge" src="https://plausible.io/js/script.js"></script>
</head>
<body>
<nav>
<div class="inner">
<div class="logo"><a href=""><span>âš’</span> DevForge</a></div>
<div class="links">
<a href="start-here.html">Start Here</a>
<a href="quickstart.html">Get Started</a>
<a href="#products">Products</a>
<a href="docs.html" style="font-weight:700">Docs</a>
<a href="quickstart.html">Get Started</a>
<a href="index.html">Home</a>
<a href="docs.html" class="active">Docs</a>
<a href="pricing.html">Pricing</a>
<a href="alternatives.html">Alternatives</a>
<a href="releases.html">Changelog</a>
<a href="blog.html">Blog</a>
<a href="about.html">About</a>
<a href="https://github.com/Coding-Dev-Tools" target="_blank">GitHub</a>
</div>
</div>
</nav>
<!-- Hero -->
<section class="hero">
<div class="badge">Documentation</div>
<h1>Quickstart & <span>Usage Guide</span></h1>
<p>Install any tool in seconds and see it in action. Every CLI command below is a real, working example  copy, paste, and run.</p>
<div style="margin-top:20px;padding:12px 20px;background:rgba(16,185,129,0.08);border:1px solid rgba(16,185,129,0.2);border-radius:8px;max-width:600px;margin-left:auto;margin-right:auto;">
<p style="color:#10b981;font-weight:600;font-size:0.8rem;margin:0 0 4px;">✅ Available now via GitHub</p>
<code style="color:#d1d5db;font-size:0.78rem;">pip install git+https://github.com/Coding-Dev-Tools/devforge.git</code>
<p style="color:#10b981;font-weight:600;font-size:0.8rem;margin:0 0 4px;">✓ Available now via GitHub</p>
<code style="color:#d1d5db;font-size:0.78rem;">pip install git+https://github.com/Coding-Dev-Tools/devforge.git</code>
</div>
</section>
<!-- Quick Jump -->
<div class="quick-jump">
<a href="#api-contract-guardian">? API Contract Guardian</a>
<a href="#json2sql">??? json2sql</a>
<a href="#deploydiff">?? DeployDiff</a>
<a href="#configdrift">? ConfigDrift</a>
<a href="#apighost">?? APIGhost</a>
<a href="#apiauth">?? APIAuth</a>
<a href="#envault">??? Envault</a>
<a href="#schemaforge">?? SchemaForge</a>
<a href="#click-to-mcp">?? click-to-mcp</a>
<a href="#datamorph">?? DataMorph</a>
<a href="#deadcode">?? DeadCode</a>
<a href="#meta-package">?? DevForge Suite</a>
<a href="#ci-pipeline">?? CI Pipeline</a>
<a href="#license">?? License</a>
</div>
<div class="notice-banner">
<strong>📦</strong> Install via GitHub, npm, Homebrew, or Scoop. PyPI publishing is pending platform resolution  all tools install directly from <code>pip install git+https://...</code> with no account or token needed.
<a href="#api-contract-guardian">âš¡ API Contract Guardian</a>
<a href="#json2sql">↻ json2sql</a>
<a href="#deploydiff">☠DeployDiff</a>
<a href="#configdrift">⌘ ConfigDrift</a>
<a href="#apighost">👻 APIGhost</a>
<a href="#apiauth">ðŸâ€â€˜ APIAuth</a>
<a href="#envault">🛡 Envault</a>
<a href="#schemaforge">âš— SchemaForge</a>
<a href="#click-to-mcp">ðŸâ€Å’ click-to-mcp</a>
<a href="#deadcode">🧹 DeadCode</a>
<a href="#meta-package">â› DevForge Suite</a>
<a href="#ci-pipeline">ðŸâ€Â CI Pipeline</a>
</div>
<div class="content">
<!-- ==================== API CONTRACT GUARDIAN ==================== -->
<div class="tool-section" id="api-contract-guardian">
<h2><span class="icon icon-acg">âš¡</span> API Contract Guardian</h2>
<div class="subtitle">v0.1.0  OpenAPI diff scanner & contract enforcement</div>
<p class="desc">Monitors OpenAPI schema diffs across git branches, detects breaking changes, generates migration guides, and gates CI pipelines on contract violations. Works with OpenAPI 3.0 and 3.1 specs in YAML or JSON.</p>
<a href="https://github.com/Coding-Dev-Tools/api-contract-guardian" class="gh-link" target="_blank">View on GitHub →</a>
<div class="install-block">
<code>pip install git+https://github.com/Coding-Dev-Tools/api-contract-guardian.git</code>
<span class="note">Requires Python 3.9+</span>
</div>
<ul class="features">
<li>Breaking change detection</li>
<li>Auto-generated migration guide</li>
<li>Git branch diff comparison</li>
<li>CI pipeline integration</li>
<li>JSON + YAML spec support</li>
<li>Configurable rule severity</li>
</ul>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Compare two spec files</p>
<pre><code class="language-bash">api-contract-guardian check spec-v1.yaml spec-v2.yaml</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Compare git branches</p>
<pre><code class="language-bash">api-contract-guardian check --base main --head feature-api-v2 openapi.yaml</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Generate migration guide</p>
<pre><code class="language-bash">api-contract-guardian migrate spec-v1.yaml spec-v2.yaml --output MIGRATION.md</code></pre>
<div class="insight">
<p><strong>Why you need it:</strong> API breaking changes in production cost teams hours of debugging and incident response. ACG catches them in CI before they merge  the same way a linter catches syntax errors before runtime.</p>
</div>
</div>
<!-- ==================== JSON2SQL ==================== -->
<div class="tool-section" id="json2sql">
<h2><span class="icon icon-j2s">🗃ï¸Â</span> json2sql</h2>
<div class="subtitle">v0.1.0  JSON to SQL converter with smart type inference</div>
<p class="desc">Convert JSON files and datasets to SQL INSERT statements instantly. Supports PostgreSQL, MySQL, SQLite, and generic SQL dialects with automatic type inference  no schema definition required.</p>
<a href="https://github.com/Coding-Dev-Tools/json2sql" class="gh-link" target="_blank">View on GitHub →</a>
<div class="install-block">
<code>pip install git+https://github.com/Coding-Dev-Tools/json2sql.git</code>
<span class="note">Requires Python 3.9+</span>
</div>
<ul class="features">
<li>4 SQL dialects (pg, mysql, sqlite, generic)</li>
<li>Automatic type inference</li>
<li>Large file streaming support</li>
<li>Nested JSON flattening</li>
<li>Pretty-print output</li>
<li>Stdin pipe support</li>
</ul>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Basic conversion</p>
<pre><code class="language-bash">json2sql convert data.json</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Specify output dialect</p>
<pre><code class="language-bash">json2sql convert data.json --dialect postgres
json2sql convert data.json --dialect mysql
json2sql convert data.json --dialect sqlite</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Pipe from stdin</p>
<pre><code class="language-bash">curl -s https://api.example.com/users | json2sql convert --dialect postgres</code></pre>
<div class="insight">
<p><strong>Why you need it:</strong> Writing SQL seed data by hand is error-prone and tedious. json2sql turns hours of manual INSERT statement construction into a one-liner  especially useful for ETL pipelines, database seeding, and test data generation.</p>
</div>
<a href="blog/json-to-sql-one-command.html" style="display:inline-block;margin-top:12px;color:#a78bfa;font-size:0.85rem;font-weight:500;text-decoration:none;">📖 Read the json2sql tutorial →</a>
</div>
<!-- ==================== DEPLOYDIFF ==================== -->
<div class="tool-section" id="deploydiff">
<h2><span class="icon icon-dd">â˜Âï¸Â</span> DeployDiff</h2>
<div class="subtitle">v0.1.0  Infrastructure change preview & cost estimator</div>
<p class="desc">Preview infrastructure changes with human-readable diffs, cost impact estimation, and pre-generated rollback commands  before you hit deploy. Supports Terraform plan JSON, CloudFormation change sets, and Pulumi previews.</p>
<a href="https://github.com/Coding-Dev-Tools/deploydiff" class="gh-link" target="_blank">View on GitHub →</a>
<div class="install-block">
<code>pip install git+https://github.com/Coding-Dev-Tools/deploydiff.git</code>
<span class="note">Requires Python 3.9+</span>
</div>
<ul class="features">
<li>Terraform plan analysis</li>
<li>CloudFormation change sets</li>
<li>Pulumi preview support</li>
<li>Cost impact estimation</li>
<li>Auto-generated rollback commands</li>
<li>Blast radius visualization</li>
</ul>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Preview infrastructure changes</p>
<pre><code class="language-bash">deploydiff preview --tf plan.json</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">CloudFormation change set</p>
<pre><code class="language-bash">deploydiff preview --cf change-set.json</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Pulumi diff</p>
<pre><code class="language-bash">deploydiff preview --pulumi pulumi-preview.json</code></pre>
<div class="insight">
<p><strong>Why you need it:</strong> Every infrastructure change carries risk  wrong config, unexpected cost, unreachable state. DeployDiff gives you a clear preview <em>before</em> your IaC tool applies it, with rollback commands pre-generated so recovery isn't panic-mode.</p>
</div>
<a href="blog/preview-infra-cost-before-deploy.html" style="display:inline-block;margin-top:12px;color:#a78bfa;font-size:0.85rem;font-weight:500;text-decoration:none;">📖 Read the DeployDiff tutorial →</a>
</div>
<!-- ==================== CONFIGDRIFT ==================== -->
<div class="tool-section" id="configdrift">
<h2><span class="icon icon-cd">⌘</span> ConfigDrift</h2>
<div class="subtitle">v0.1.0  Configuration drift detection & compliance</div>
<p class="desc">Catch config drift before it breaks production. Compare configs across dev, staging, and prod  flag missing keys, deprecated values, value mismatches, and compliance issues instantly. Supports YAML, JSON, TOML, and .env files.</p>
<a href="https://github.com/Coding-Dev-Tools/configdrift" class="gh-link" target="_blank">View on GitHub →</a>
<div class="install-block">
<code>pip install git+https://github.com/Coding-Dev-Tools/configdrift.git</code>
<span class="note">Requires Python 3.9+</span>
</div>
<ul class="features">
<li>YAML / JSON / TOML / .env support</li>
<li>Multi-environment comparison</li>
<li>Missing key detection</li>
<li>Value mismatch highlighting</li>
<li>Deprecated value flagging</li>
<li>Table, JSON, and silent output modes</li>
</ul>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Compare two config files</p>
<pre><code class="language-bash">configdrift check dev.yaml prod.yaml</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Environment-style comparison</p>
<pre><code class="language-bash">configdrift check --baseline dev --target prod configs/</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">JSON output for CI</p>
<pre><code class="language-bash">configdrift check dev.yaml prod.yaml --output json</code></pre>
<div class="insight">
<p><strong>Why you need it:</strong> Config drift is the silent killer of deployments  a missing key in prod that exists in staging, a deprecated value that's still in dev. ConfigDrift automates the comparison so you catch it in CI, not in an incident post-mortem.</p>
</div>
<a href="blog/catch-config-drift-before-production.html" style="display:inline-block;margin-top:12px;color:#a78bfa;font-size:0.85rem;font-weight:500;text-decoration:none;">📖 Read the ConfigDrift tutorial →</a>
</div>
<div class="tool-section" id="apighost">
<h2><span class="icon icon-ag">👻</span> APIGhost</h2>
<div class="subtitle">v0.1.0  OpenAPI mock server with VCR recording</div>
<p class="desc">Turn any OpenAPI 3.0/3.1 spec into a running mock API server with realistic fake data, scenario-based response overrides, and VCR-style cassette recording/replay. Perfect for frontend teams, integration testing, and contract-first development.</p>
<a href="https://github.com/Coding-Dev-Tools/apighost" class="gh-link" target="_blank">View on GitHub →</a>
<div class="install-block">
<code>pip install git+https://github.com/Coding-Dev-Tools/apighost.git</code>
<span class="note">Requires Python 3.9+</span>
</div>
<ul class="features">
<li>OpenAPI 3.0/3.1 spec → mock server in one command</li>
<li>Realistic fake data generation from schemas</li>
<li>Scenario-based response overrides (success, error, timeout)</li>
<li>VCR cassette record & replay for deterministic tests</li>
<li>Remote spec support (URLs, not just local files)</li>
</ul>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Start a mock server from a spec</p>
<pre><code class="language-bash">apighost serve petstore.yaml</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Record real interactions & replay deterministically</p>
<pre><code class="language-bash">apighost record petstore.yaml --output my-cassette
apighost replay my-cassette</code></pre>
<div class="insight">
<p><strong>Why you need it:</strong> Frontend teams shouldn't wait for backend APIs. APIGhost spins up a working mock from your OpenAPI spec instantly  with realistic data, error scenarios, and record/replay for integration tests. Ship UI against a stable mock, swap in the real API when ready.</p>
</div>
<a href="blog/api-mock-server-from-openapi-spec.html" style="display:inline-block;margin-top:12px;color:#a78bfa;font-size:0.85rem;font-weight:500;text-decoration:none;">📖 Read the APIGhost tutorial →</a>
</div>
<div class="tool-section" id="apiauth">
<h2><span class="icon icon-aa">ðŸâ€â€˜</span> APIAuth</h2>
<div class="subtitle">v0.1.0  API key & JWT lifecycle management</div>
<p class="desc">Generate, import, verify, rotate, and revoke API keys and JWTs from the terminal. Encrypted local keystore with AES-256-GCM, CI/CD export formats, and audit trail for compliance. No more secrets scattered in .env files.</p>
<a href="https://github.com/Coding-Dev-Tools/apiauth" class="gh-link" target="_blank">View on GitHub →</a>
<div class="install-block">
<code>pip install git+https://github.com/Coding-Dev-Tools/apiauth.git</code>
<span class="note">Requires Python 3.9+</span>
</div>
<ul class="features">
<li>Generate API keys & JWTs with expiry & custom claims</li>
<li>Encrypted keystore (AES-256-GCM, master key in ~/.apiauth/)</li>
<li>Verify keys against stored hashes  no plaintext stored</li>
<li>Safe rotation  previous values hashed out</li>
<li>Instant revocation for compromised keys</li>
<li>Export as env, dotenv, JSON, or GitHub Actions format</li>
<li>Audit trail: expired, expiring, revoked key detection</li>
</ul>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Generate and manage keys</p>
<pre><code class="language-bash">apiauth generate api-key --name "Gateway Key" --service api-gateway --expiry-days 90
apiauth list --service api-gateway
apiauth rotate <key-id></code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Export for CI/CD pipelines</p>
<pre><code class="language-bash">apiauth export --format github-actions --service api-gateway</code></pre>
<div class="insight">
<p><strong>Why you need it:</strong> API keys in .env files are a security incident waiting to happen. APIAuth gives you a proper keystore  encrypted, auditable, rotatable  with one-command CI/CD export. Stop copying secrets into config files and start managing them like infrastructure.</p>
</div>
<a href="blog/api-key-management-from-terminal.html" style="display:inline-block;margin-top:12px;color:#a78bfa;font-size:0.85rem;font-weight:500;text-decoration:none;">📖 Read the APIAuth tutorial →</a>
</div>
<div class="tool-section" id="envault">
<h2><span class="icon icon-ev">🛡ï¸Â</span> Envault</h2>
<div class="subtitle">v0.1.0  Environment variable syncing, diffing & secret rotation</div>
<p class="desc">Compare .env files across environments, sync variables with conflict resolution, and rotate secrets with auto-generated cryptographically secure values. Integrates with AWS SSM, HashiCorp Vault, Doppler, and 1Password  one tool for all your secret stores.</p>
<a href="https://github.com/Coding-Dev-Tools/envault" class="gh-link" target="_blank">View on GitHub →</a>
<div class="install-block">
<code>pip install git+https://github.com/Coding-Dev-Tools/envault.git</code>
<span class="note">Requires Python 3.10+</span>
</div>
<ul class="features">
<li>Diff .env files across dev, staging, prod</li>
<li>Sync with conflict resolution strategies (source wins, target wins)</li>
<li>Smart secret rotation (DB passwords, API keys, JWT secrets, webhook keys)</li>
<li>AWS SSM, Vault, Doppler, 1Password integrations</li>
<li>Audit trail for all operations</li>
<li>Dry-run mode for safe previews</li>
</ul>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Diff environments</p>
<pre><code class="language-bash">envault diff dev prod</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Rotate a secret (smart type inference)</p>
<pre><code class="language-bash">envault rotate DB_PASSWORD # database-safe password
envault rotate API_KEY # prefixed API key
envault rotate JWT_SECRET # 256-bit base64 secret</code></pre>
<div class="insight">
<p><strong>Why you need it:</strong> .env drift is how staging works but prod doesn't  a missing variable, a different value, a stale secret. Envault catches the diff, syncs safely, and rotates secrets with one command. Connect it to your secret store and stop managing .env files by hand.</p>
</div>
<a href="blog/sync-env-variables-across-environments.html" style="display:inline-block;margin-top:12px;color:#a78bfa;font-size:0.85rem;font-weight:500;text-decoration:none;">📖 Read the Envault tutorial →</a>
</div>
<div class="tool-section" id="schemaforge">
<h2><span class="icon icon-sf">ðŸâ€â€ž</span> SchemaForge</h2>
<div class="subtitle">v1.7.0  Bidirectional ORM schema converter (11 formats) + VS Code extension</div>
<p class="desc">Convert between SQL DDL, Prisma, Drizzle, TypeORM, Django, SQLAlchemy, GraphQL SDL, JSON Schema, OpenAPI 3.0, Protobuf, and Avro with zero-loss roundtripping. 110 bidirectional conversion paths. Now with a full VS Code extension for live preview, quick convert, and format detection.</p>
<a href="https://github.com/Coding-Dev-Tools/schemaforge" class="gh-link" target="_blank">View on GitHub →</a>
<a href="https://github.com/Coding-Dev-Tools/vscode-schemaforge" class="gh-link" target="_blank" style="margin-left:16px;">VS Code Extension →</a>
<div class="install-block">
<code>pip install git+https://github.com/Coding-Dev-Tools/schemaforge.git</code>
<span class="note">Requires Python 3.9+</span>
</div>
<ul class="features">
<li>SQL DDL ↆPrisma ↆDrizzle ↆTypeORM ↆDjango ↆSQLAlchemy ↆGraphQL SDL ↆJSON Schema ↆOpenAPI 3.0 ↆProtobuf ↆAvro</li>
<li>110 bidirectional conversion paths with zero-loss roundtripping</li>
<li>VS Code extension: live preview, quick convert (Ctrl+Alt+S), format detection (Ctrl+Alt+D), two-file diff</li>
<li>Schema diff between any two formats</li>
<li>Custom type mappings for edge cases</li>
</ul>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Convert Prisma ↆDrizzle</p>
<pre><code class="language-bash">schemaforge convert --from prisma --to drizzle --input schema.prisma</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Diff two schemas</p>
<pre><code class="language-bash">schemaforge diff schema.prisma schema.drizzle.ts</code></pre>
<div class="insight">
<p><strong>Why you need it:</strong> Every ORM migration is a one-way street  Prisma introspects SQL but can't export back, Drizzle users manually rewrite schemas when switching. SchemaForge is the only tool that goes both ways across 11 formats. Stop rewriting schemas by hand and start converting them.</p>
</div>
<a href="blog/schemaforge-v1-7-0-vscode-extension.html" style="display:inline-block;margin-top:12px;color:#a78bfa;font-size:0.85rem;font-weight:500;text-decoration:none;">📖 Read the v1.7.0 release (VS Code + 11 formats) →</a>
<a href="blog/schemaforge-v0-5-0-sqlalchemy.html" style="display:inline-block;margin-top:12px;margin-left:16px;color:#888;font-size:0.82rem;text-decoration:none;">v0.5.0: SQLAlchemy →</a>
</div>
<!-- ==================== CLICK-TO-MCP ==================== -->
<div class="tool-section" id="click-to-mcp">
<h2><span class="icon" style="background:rgba(139,92,246,.15)">ðŸâ€Å’</span> click-to-mcp</h2>
<div class="subtitle">v0.2.1  Auto-wrap Click/Typer CLIs as MCP servers</div>
<p class="desc">Turn any Click or Typer CLI into an MCP server with a single command. Expose your tools to Claude, GPT, Cursor, and any MCP-compatible AI  no code changes needed. Auto-discovers commands, generates tool schemas, and handles stdio/SSE transport.</p>
<a href="https://github.com/Coding-Dev-Tools/click-to-mcp" class="gh-link" target="_blank">View on GitHub →</a>
<div class="install-block">
<code>pip install git+https://github.com/Coding-Dev-Tools/click-to-mcp.git</code>
<span class="note">Requires Python 3.9+</span>
</div>
<ul class="features">
<li>Auto-discovery of Click/Typer commands and options</li>
<li>One-command MCP server generation</li>
<li>Stdio & SSE transport support</li>
<li>Multi-server orchestration</li>
<li>Zero code changes to existing CLIs</li>
</ul>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Wrap a CLI as MCP server</p>
<pre><code class="language-bash">click-to-mcp wrap mycli --transport stdio</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Auto-discover Click apps</p>
<pre><code class="language-bash">click-to-mcp discover --dir ./src</code></pre>
<div class="insight">
<p><strong>Why you need it:</strong> MCP is the standard for AI-tool integration, but wrapping CLIs as MCP servers is manual boilerplate. click-to-mcp eliminates that  point it at any Click/Typer app and get a fully compatible MCP server in seconds. The only tool that does Click→MCP conversion (mcp2cli does the reverse).</p>
</div>
</div>
<!-- ==================== DATAMORPH ==================== -->
<div class="tool-section" id="datamorph">
<h2><span class="icon" style="background:rgba(59,130,246,.15)">??</span> DataMorph</h2>
<div class="subtitle">v0.1.0 � Convert between CSV, JSON, YAML, Parquet, Avro & Protobuf</div>
<p class="desc">Convert data files between CSV, JSON, YAML, Parquet, Avro, and Protobuf with a single command. Auto-detects input format, preserves schemas, handles batch conversions, and outputs clean structured data � no manual parsing scripts needed.</p>
<a href="https://github.com/Coding-Dev-Tools/datamorph" class="gh-link" target="_blank">View on GitHub ?</a>
<div class="install-block">
<code>pip install git+https://github.com/Coding-Dev-Tools/datamorph.git</code>
<span class="note">Requires Python 3.9+</span>
</div>
<ul class="features">
<li>Auto-detect input format from file extension</li>
<li>Convert between CSV, JSON, YAML, Parquet, Avro, Protobuf</li>
<li>Batch conversion across multiple files</li>
<li>Schema inference and preservation</li>
<li>Streaming support for large datasets</li>
</ul>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Convert JSON to CSV</p>
<pre><code class="language-bash">datamorph convert data.json data.csv</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Batch convert a directory</p>
<pre><code class="language-bash">datamorph batch ./input/ --format csv --output ./output/</code></pre>
<div class="insight">
<p><strong>Why you need it:</strong> Data format conversion is a recurring chore � parsing CSV into JSON, flattening YAML, converting Parquet for analysis. Writing one-off scripts is error-prone and time-wasting. DataMorph handles all common formats with a single command, auto-detecting types and preserving schemas so you never lose data in translation.</p>
</div>
</div>
<!-- ==================== DEADCODE ==================== -->
<div class="tool-section" id="deadcode">
<h2><span class="icon" style="background:rgba(239,68,68,.15)">🧹</span> DeadCode</h2>
<div class="subtitle">v0.1.0  Unused export & dead route detector for TypeScript/React</div>
<p class="desc">Detect and remove unused exports, dead routes, orphaned CSS, and unreferenced components in TypeScript/React/Next.js projects. Uses the full TypeScript compiler API for accurate analysis  ESLint catches unused variables but misses the structural decay that bloats bundles.</p>
<a href="https://github.com/Coding-Dev-Tools/deadcode" class="gh-link" target="_blank">View on GitHub →</a>
<div class="install-block">
<code>pip install git+https://github.com/Coding-Dev-Tools/deadcode.git</code>
<span class="note">Requires Python 3.9+ & Node.js 18+</span>
</div>
<ul class="features">
<li>Unused export detection across entire project</li>
<li>Dead route identification (React Router, Next.js)</li>
<li>Orphaned CSS class scanning</li>
<li>Unreferenced component detection</li>
<li>Dry-run removal preview  never delete something you need</li>
</ul>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Scan current project</p>
<pre><code class="language-bash">deadcode scan</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Preview what can be removed</p>
<pre><code class="language-bash">deadcode remove --dry-run</code></pre>
<div class="insight">
<p><strong>Why you need it:</strong> ESLint catches unused variables but misses structural decay  orphaned exports bloat bundles, stale routes confuse teammates, orphaned CSS silently accumulates. DeadCode uses the TypeScript compiler API for whole-project analysis that linters can't match. Scan, preview, then clean with confidence.</p>
</div>
</div>
<div class="tool-section" id="apighost">
<h2><span class="icon icon-ag">👻</span> APIGhost</h2>
<div class="subtitle">v0.1.0  OpenAPI mock server with VCR recording</div>
<p class="desc">Turn any OpenAPI 3.0/3.1 spec into a running mock API server with realistic fake data, scenario-based response overrides, and VCR-style cassette recording/replay. Perfect for frontend teams, integration testing, and contract-first development.</p>
<a href="https://github.com/Coding-Dev-Tools/apighost" class="gh-link" target="_blank">View on GitHub →</a>
<div class="install-block">
<code>pip install apighost</code>
<span class="note">Requires Python 3.9+</span>
</div>
<ul class="features">
<li>OpenAPI 3.0/3.1 spec → mock server in one command</li>
<li>Realistic fake data generation from schemas</li>
<li>Scenario-based response overrides (success, error, timeout)</li>
<li>VCR cassette record & replay for deterministic tests</li>
<li>Remote spec support (URLs, not just local files)</li>
</ul>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Start a mock server from a spec</p>
<pre><code class="language-bash">apighost serve petstore.yaml</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Record real interactions & replay deterministically</p>
<pre><code class="language-bash">apighost record petstore.yaml --output my-cassette
apighost replay my-cassette</code></pre>
<div class="insight">
<p><strong>Why you need it:</strong> Frontend teams shouldn't wait for backend APIs. APIGhost spins up a working mock from your OpenAPI spec instantly  with realistic data, error scenarios, and record/replay for integration tests. Ship UI against a stable mock, swap in the real API when ready.</p>
</div>
</div>
<div class="tool-section" id="apiauth">
<h2><span class="icon icon-aa">ðŸâ€â€˜</span> APIAuth</h2>
<div class="subtitle">v0.1.0  API key & JWT lifecycle management</div>
<p class="desc">Generate, import, verify, rotate, and revoke API keys and JWTs from the terminal. Encrypted local keystore with AES-256-GCM, CI/CD export formats, and audit trail for compliance. No more secrets scattered in .env files.</p>
<a href="https://github.com/Coding-Dev-Tools/apiauth" class="gh-link" target="_blank">View on GitHub →</a>
<div class="install-block">
<code>pip install apiauth</code>
<span class="note">Requires Python 3.9+</span>
</div>
<ul class="features">
<li>Generate API keys & JWTs with expiry & custom claims</li>
<li>Encrypted keystore (AES-256-GCM, master key in ~/.apiauth/)</li>
<li>Verify keys against stored hashes  no plaintext stored</li>
<li>Safe rotation  previous values hashed out</li>
<li>Instant revocation for compromised keys</li>
<li>Export as env, dotenv, JSON, or GitHub Actions format</li>
<li>Audit trail: expired, expiring, revoked key detection</li>
</ul>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Generate and manage keys</p>
<pre><code class="language-bash">apiauth generate api-key --name "Gateway Key" --service api-gateway --expiry-days 90
apiauth list --service api-gateway
apiauth rotate <key-id></code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Export for CI/CD pipelines</p>
<pre><code class="language-bash">apiauth export --format github-actions --service api-gateway</code></pre>
<div class="insight">
<p><strong>Why you need it:</strong> API keys in .env files are a security incident waiting to happen. APIAuth gives you a proper keystore  encrypted, auditable, rotatable  with one-command CI/CD export. Stop copying secrets into config files and start managing them like infrastructure.</p>
</div>
</div>
<div class="tool-section" id="envault">
<h2><span class="icon icon-ev">🛡</span> Envault</h2>
<div class="subtitle">v0.1.0  Environment variable syncing, diffing & secret rotation</div>
<p class="desc">Compare .env files across environments, sync variables with conflict resolution, and rotate secrets with auto-generated cryptographically secure values. Integrates with AWS SSM, HashiCorp Vault, Doppler, and 1Password  one tool for all your secret stores.</p>
<a href="https://github.com/Coding-Dev-Tools/envault" class="gh-link" target="_blank">View on GitHub →</a>
<div class="install-block">
<code>pip install envault</code>
<span class="note">Requires Python 3.10+</span>
</div>
<ul class="features">
<li>Diff .env files across dev, staging, prod</li>
<li>Sync with conflict resolution strategies (source wins, target wins)</li>
<li>Smart secret rotation (DB passwords, API keys, JWT secrets, webhook keys)</li>
<li>AWS SSM, Vault, Doppler, 1Password integrations</li>
<li>Audit trail for all operations</li>
<li>Dry-run mode for safe previews</li>
</ul>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Diff environments</p>
<pre><code class="language-bash">envault diff dev prod</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Rotate a secret (smart type inference)</p>
<pre><code class="language-bash">envault rotate DB_PASSWORD # → database-safe password
envault rotate API_KEY # → prefixed API key
envault rotate JWT_SECRET # → 256-bit base64 secret</code></pre>
<div class="insight">
<p><strong>Why you need it:</strong> .env drift is how staging works but prod doesn't  a missing variable, a different value, a stale secret. Envault catches the diff, syncs safely, and rotates secrets with one command. Connect it to your secret store and stop managing .env files by hand.</p>
</div>
</div>
<div class="tool-section" id="schemaforge">
<h2><span class="icon icon-sf">âš—</span> SchemaForge</h2>
<div class="subtitle">v0.1.0  Bidirectional ORM schema converter</div>
<p class="desc">Convert between SQL DDL, Prisma, Drizzle, TypeORM, and Django models with zero-loss roundtripping. The only tool that does bidirectional, lossless conversion between 5+ ORM formats  no more manual rewrites when switching ORMs.</p>
<a href="https://github.com/Coding-Dev-Tools/schemaforge" class="gh-link" target="_blank">View on GitHub →</a>
<div class="install-block">
<code>pip install schemaforge</code>
<span class="note">Requires Python 3.9+</span>
</div>
<ul class="features">
<li>SQL DDL ↆPrisma ↆDrizzle ↆTypeORM ↆDjango</li>
<li>Zero-loss roundtripping  convert back and forth without data loss</li>
<li>Schema diff between any two formats</li>
<li>Batch directory conversion</li>
<li>Custom type mappings for edge cases</li>
</ul>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Convert Prisma → Drizzle</p>
<pre><code class="language-bash">schemaforge convert --from prisma --to drizzle --input schema.prisma</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Diff two schemas</p>
<pre><code class="language-bash">schemaforge diff schema.prisma schema.drizzle.ts</code></pre>
<div class="insight">
<p><strong>Why you need it:</strong> Every ORM migration is a one-way street  Prisma introspects SQL but can't export back, Drizzle users manually rewrite schemas when switching. SchemaForge is the only tool that goes both ways across 5 ORM formats. Stop rewriting schemas by hand and start converting them.</p>
</div>
</div>
<!-- ==================== CLICK-TO-MCP ==================== -->
<div class="tool-section" id="click-to-mcp">
<h2><span class="icon" style="background:rgba(139,92,246,.15)">ðŸâ€Å’</span> click-to-mcp</h2>
<div class="subtitle">v0.2.1  Auto-wrap Click/Typer CLIs as MCP servers</div>
<p class="desc">Turn any Click or Typer CLI into an MCP server with a single command. Expose your tools to Claude, GPT, Cursor, and any MCP-compatible AI  no code changes needed. Auto-discovers commands, generates tool schemas, and handles stdio/SSE transport.</p>
<a href="https://github.com/Coding-Dev-Tools/click-to-mcp" class="gh-link" target="_blank">View on GitHub →</a>
<div class="install-block">
<code>pip install click-to-mcp</code>
<span class="note">Requires Python 3.9+</span>
</div>
<ul class="features">
<li>Auto-discovery of Click/Typer commands and options</li>
<li>One-command MCP server generation</li>
<li>Stdio & SSE transport support</li>
<li>Multi-server orchestration</li>
<li>Zero code changes to existing CLIs</li>
</ul>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Wrap a CLI as MCP server</p>
<pre><code class="language-bash">click-to-mcp wrap mycli --transport stdio</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Auto-discover Click apps</p>
<pre><code class="language-bash">click-to-mcp discover --dir ./src</code></pre>
<div class="insight">
<p><strong>Why you need it:</strong> MCP is the standard for AI-tool integration, but wrapping CLIs as MCP servers is manual boilerplate. click-to-mcp eliminates that  point it at any Click/Typer app and get a fully compatible MCP server in seconds. The only tool that does Click→MCP conversion (mcp2cli does the reverse).</p>
</div>
</div>
<!-- ==================== DEADCODE ==================== -->
<div class="tool-section" id="deadcode">
<h2><span class="icon" style="background:rgba(239,68,68,.15)">🧹</span> DeadCode</h2>
<div class="subtitle">v0.1.0  Unused export & dead route detector for TypeScript/React</div>
<p class="desc">Detect and remove unused exports, dead routes, orphaned CSS, and unreferenced components in TypeScript/React/Next.js projects. Uses the full TypeScript compiler API for accurate analysis  ESLint catches unused variables but misses the structural decay that bloats bundles.</p>
<a href="https://github.com/Coding-Dev-Tools/deadcode" class="gh-link" target="_blank">View on GitHub →</a>
<div class="install-block">
<code>pip install deadcode</code>
<span class="note">Requires Python 3.9+ & Node.js 18+</span>
</div>
<ul class="features">
<li>Unused export detection across entire project</li>
<li>Dead route identification (React Router, Next.js)</li>
<li>Orphaned CSS class scanning</li>
<li>Unreferenced component detection</li>
<li>Dry-run removal preview  never delete something you need</li>
</ul>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Scan current project</p>
<pre><code class="language-bash">deadcode scan</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Preview what can be removed</p>
<pre><code class="language-bash">deadcode remove --dry-run</code></pre>
<div class="insight">
<p><strong>Why you need it:</strong> ESLint catches unused variables but misses structural decay  orphaned exports bloat bundles, stale routes confuse teammates, orphaned CSS silently accumulates. DeadCode uses the TypeScript compiler API for whole-project analysis that linters can't match. Scan, preview, then clean with confidence.</p>
</div>
</div>
<!-- ==================== META PACKAGE ==================== -->
<div class="tool-section" id="meta-package">
<h2><span class="icon icon-rh">âš’ï¸Â</span> DevForge Suite</h2>
<div class="subtitle">One install. All eleven tools.</div>
<p class="desc">Install every tool in the DevForge ecosystem with a single command. Perfect for CI/CD pipelines, dev workstations, or teams that want the full safety net across API contracts, SQL, infrastructure, configs, API mocking, key management, env syncing, schema conversion, data format conversion, MCP wrapping, and dead code cleanup.</p>
<a href="https://github.com/Coding-Dev-Tools/devforge" class="gh-link" target="_blank">View on GitHub ?</a>
<div class="install-block">
<code>pip install git+https://github.com/Coding-Dev-Tools/devforge.git</code>
<span class="note">Installs all 11 tools as dependencies</span>
<h2><span class="icon icon-rh">â›Â</span> DevForge Suite</h2>
<div class="subtitle">One install. All ten tools.</div>
<p class="desc">Install every tool in the DevForge ecosystem with a single command. Perfect for CI/CD pipelines, dev workstations, or teams that want the full safety net across API contracts, SQL, infrastructure, configs, API mocking, key management, env syncing, schema conversion, MCP wrapping, and dead code cleanup.</p>
<a href="https://github.com/Coding-Dev-Tools/devforge" class="gh-link" target="_blank">View on GitHub →</a>
<div class="install-block">
<code>pip install devforge-tools</code>
<span class="note">Installs all 10 tools as dependencies</span>
</div>
<div class="workflow">
<p><strong>CI Pipeline Example</strong>  A single script runs all four checks in sequence. If any check fails, the pipeline stops and the developer gets a clear error message telling them exactly what broke and where.</p>
</div>
<pre><code class="language-yaml"># .github/workflows/ci-safety-net.yml
name: CI Safety Net
on: [pull_request]
jobs:
checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: pip install git+https://github.com/Coding-Dev-Tools/devforge.git
# 1. API Contract Guardian  detect breaking schema changes
- run: api-contract-guardian check --base origin/main --head HEAD openapi.yaml
# 2. json2sql  validate SQL output from seed data
- run: json2sql convert --dialect postgres data/seed.json
# 3. DeployDiff  preview infra changes
- run: deploydiff preview --tf plan.json
# 4. ConfigDrift  catch environment drift
- run: configdrift check dev.yaml prod.yaml --output json</code></pre>
<div class="insight">
<p><strong>Pro tip:</strong> Use the meta-package in CI so your pipeline automatically gets all new tools as they're released. Pin the major version for production stability: <code style="color:#a78bfa;">pip install git+https://github.com/Coding-Dev-Tools/devforge.git@v0.1</code></p>
</div>
</div>
<!-- ==================== CI PIPELINE ==================== -->
<div class="tool-section" id="ci-pipeline">
<h2>⚙︠CI & Integration Guide</h2>
<div class="subtitle">Adding safety checks to your existing pipeline</div>
<p class="desc">All eleven tools are designed as stateless CLI commands that fit naturally into CI pipelines. Each returns a non-zero exit code on failure, so they integrate with any CI system that supports shell commands  GitHub Actions, GitLab CI, CircleCI, Jenkins, or raw bash scripts.</p>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Per-tool install for minimal dependencies</p>
<pre><code class="language-bash"># Install only what you need
pip install git+https://github.com/Coding-Dev-Tools/api-contract-guardian.git # API contract checks
pip install git+https://github.com/Coding-Dev-Tools/deploydiff.git # Infra change previews
pip install git+https://github.com/Coding-Dev-Tools/json2sql.git # SQL validation
pip install git+https://github.com/Coding-Dev-Tools/configdrift.git # Config drift detection
pip install git+https://github.com/Coding-Dev-Tools/apighost.git # OpenAPI mock server
pip install git+https://github.com/Coding-Dev-Tools/apiauth.git # API key & JWT management
pip install git+https://github.com/Coding-Dev-Tools/envault.git # .env syncing & secret rotation
pip install git+https://github.com/Coding-Dev-Tools/schemaforge.git # ORM schema converter
pip install git+https://github.com/Coding-Dev-Tools/click-to-mcp.git # MCP server wrapper
pip install git+https://github.com/Coding-Dev-Tools/deadcode.git # Dead code detector
pip install git+https://github.com/Coding-Dev-Tools/datamorph.git # Data format converter</code></pre>
<p class="desc">All ten tools are designed as stateless CLI commands that fit naturally into CI pipelines. Each returns a non-zero exit code on failure, so they integrate with any CI system that supports shell commands  GitHub Actions, GitLab CI, CircleCI, Jenkins, or raw bash scripts.</p>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Per-tool install for minimal dependencies</p>
<pre><code class="language-bash"># Install only what you need
pip install api-contract-guardian # API contract checks
pip install deploydiff # Infra change previews
pip install json2sql # SQL validation
pip install configdrift # Config drift detection
pip install apighost # OpenAPI mock server
pip install apiauth # API key & JWT management
pip install envault # .env syncing & secret rotation
pip install schemaforge # ORM schema converter</code></pre>
<p style="font-size:0.82rem;color:#888;font-weight:600;margin-bottom:8px;">Exit codes (all tools)</p>
<pre><code class="language-text">0  Success (no issues found)
1  Issues found (breaking change, drift, mismatch)
2  Error (invalid input, file not found)</code></pre>
<div class="insight">
<p><strong>CI best practice:</strong> Start with <code>--output json</code> or <code>--output silent</code> mode on all tools to keep CI logs clean. Gate merges only on breaking changes  use warning-level violations as advisory feedback in PR comments instead of blocking the pipeline.</p>
</div>
</div>
<!-- ==================== LICENSE ==================== -->
<div class="tool-section" id="license">
<h2><span class="icon" style="width:40px;height:40px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:rgba(99,102,241,0.15);margin-bottom:14px;">ðŸâ€â€˜</span> License Key Setup</h2>
<p class="desc">Each tool checks a license key on startup to determine your tier. Free tier works out of the box (50 uses/day per tool). Set a license key to unlock unlimited Pro access.</p>
<div class="install-block">
<code>devforge license activate YOUR_LICENSE_KEY</code>
<span class="note">Or set DEVFORGE_LICENSE_KEY env var</span>
</div>
<ul class="features">
<li><strong>devforge license activate <key></strong>  Activate a new license key (stores in ~/.devforge/)</li>
<li><strong>devforge license status</strong>  Show current tier, usage counts, and remaining rate limit</li>
<li><strong>devforge license deactivate</strong>  Remove the current license (reverts to free tier)</li>
<li>Works offline for up to 7 days between automatic verifications</li>
<li>Free tier: 50 uses/day per tool. Pro tier: unlimited, all features.</li>
</ul>
<div class="insight">
<p><strong>Get a license key:</strong> Free keys available on the <a href="pricing.html" style="color:#a78bfa;">pricing page</a>  no credit card needed. Set the <code>DEVFORGE_LICENSE_KEY</code> environment variable for automated CI/CD deployments.</p>
</div>
<a href="pricing.html" style="display:inline-block;margin-top:12px;color:#a78bfa;font-size:0.85rem;font-weight:500;text-decoration:none;">📖 View pricing & get your key →</a>
</div>
<p style="text-align:center;margin-top:40px;font-size:0.85rem;color:#555;">
Something missing? <a href="https://github.com/Coding-Dev-Tools/devforge/issues/new" style="color:#6366f1;text-decoration:none;">Open an issue</a> or <a href="mailto:support@devforge" style="color:#6366f1;text-decoration:none;">email us</a>.
</p>
</div>
<footer>
<span>© 2026 DevForge. Open-source developer tools.</span>
<a href="">Home</a>
<a href="pricing.html">Pricing</a>
<a href="docs.html">Docs</a>
<a href="blog.html">Blog</a>
<a href="https://github.com/Coding-Dev-Tools" target="_blank">GitHub</a>
</footer>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.28.0/prism.min.js"></script>
</body>
</html>