vikit-cli 1.0.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ha Nguyen
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,650 @@
1
+ # vikit Config UI
2
+
3
+ Command-line tool and web dashboard for managing vikit projects.
4
+
5
+ **Version**: 1.0.0
6
+
7
+ ## Overview
8
+
9
+ vikit Config UI (`vk`) provides both CLI and web dashboard for managing vikit projects. It is built with Bun, TypeScript, and React for development, while the published CLI runs on plain Node.js so end users do not need Bun installed.
10
+
11
+ **Key Features:**
12
+ - **CLI Commands (16)**: new, init, config, projects, setup, skills, agents, commands, migrate, doctor, versions, update, uninstall, watch, content, easter-egg
13
+ - **Web Dashboard**: Interactive React UI via `vk config ui` for configuration and project management
14
+ - **Hook Diagnostics Dashboard**: Inspect recent Claude hook activity and failures from `vk config` across global and project scopes
15
+ - **Projects Registry**: Centralized registry at `~/.vikit/projects.json` with file locking
16
+ - **Skill Installation**: Install vikit skills to other coding agents (Cursor, Codex, etc.)
17
+ - **Multi-tier Authentication**: gh CLI → env vars → keychain → prompt fallback
18
+ - **Smart Merging**: Conflict detection with user customization preservation
19
+ - **Skills Migration**: Auto-detects and migrates skills structure changes
20
+ - **Offline Installation**: From local archives or directories
21
+ - **Security**: Path traversal protection, symlink validation, UNC path protection
22
+ - **Cross-Platform**: macOS, Linux, Windows with platform-specific optimizations
23
+ - **Update Notifications**: Intelligent 7-day cache for version checks
24
+
25
+ ## Documentation
26
+
27
+ Comprehensive documentation in `/docs`:
28
+
29
+ - **[Codebase Summary](./docs/codebase-summary.md)** - Overview, structure, key components
30
+ - **[Project Overview & PDR](./docs/project-overview-pdr.md)** - Requirements, features, roadmap
31
+ - **[System Architecture](./docs/system-architecture.md)** - Architecture diagrams, data flow
32
+ - **[Reconciliation Architecture](./docs/reconciliation-architecture.md)** - `vk migrate` RECONCILE → EXECUTE → REPORT design
33
+ - **[Code Standards](./docs/code-standards.md)** - Coding conventions, best practices
34
+ - **[Project Roadmap](./docs/project-roadmap.md)** - Release timeline, feature status
35
+ - **[Deployment Guide](./docs/deployment-guide.md)** - Release procedures
36
+ - **[vk watch](./docs/vk-watch.md)** - GitHub issue monitoring daemon
37
+ - **[vk content](./docs/vk-content.md)** - Automated content generation from git activity
38
+
39
+ ## Prerequisites
40
+
41
+ ## Installation
42
+
43
+ The vikit CLI is published on npm at [npmjs.com/package/vikit-cli](https://www.npmjs.com/package/vikit-cli).
44
+
45
+ End-user runtime note: global installs from `npm`, `pnpm`, `yarn`, or `bun` all execute the packaged Node.js CLI. Bun is optional for users and only needed for local vikit CLI development workflows.
46
+
47
+ ### Using npm (Recommended)
48
+
49
+ ```bash
50
+ npm install -g vikit-cli
51
+ ```
52
+
53
+ ### Using Bun
54
+
55
+ ```bash
56
+ bun add -g vikit-cli
57
+ ```
58
+
59
+ ### Using Yarn
60
+
61
+ ```bash
62
+ yarn global add vikit-cli
63
+ ```
64
+
65
+ ### Using pnpm
66
+
67
+ ```bash
68
+ pnpm add -g vikit-cli
69
+ ```
70
+
71
+ After installation, verify it's working:
72
+
73
+ ```bash
74
+ vk --version
75
+ ```
76
+
77
+ ## Usage
78
+
79
+ ### Discoverability Quick Start
80
+
81
+ ```bash
82
+ # Top-level command discovery
83
+ vk --help
84
+
85
+ # Open config dashboard immediately
86
+ vk config
87
+
88
+ # Expose the dashboard intentionally to your LAN/Tailscale
89
+ vk config --host 0.0.0.0 --no-open
90
+
91
+ # Command-level help (recommended)
92
+ vk config --help
93
+ vk skills --help
94
+ vk agents --help
95
+ vk commands --help
96
+ vk migrate --help
97
+ ```
98
+
99
+ ### Config Dashboard Access
100
+
101
+ By default, `vk config` binds the dashboard to `127.0.0.1` for local-only access.
102
+
103
+ Use `--host` when you intentionally want remote access from another device on the same trusted network:
104
+
105
+ ```bash
106
+ # Bind to all interfaces
107
+ vk config --host 0.0.0.0 --no-open
108
+
109
+ # Bind to a specific interface or hostname
110
+ vk config --host 100.88.12.4 --no-open
111
+ vk config --host dashboard.local --no-open
112
+ ```
113
+
114
+ The dashboard still enforces same-origin browser access. Remote access works when you open the UI from the same host/origin that reaches the server, instead of relying on a hardcoded IP allowlist.
115
+
116
+ ### Create New Project
117
+
118
+ ```bash
119
+ # Interactive mode
120
+ vk new
121
+
122
+ # With options
123
+ vk new --dir my-project --kit engineer
124
+
125
+ # Show beta versions
126
+ vk new --beta
127
+
128
+ # With exclude patterns
129
+ vk new --exclude "*.log" --exclude "temp/**"
130
+
131
+ # Optional packages (OpenCode, Gemini)
132
+ vk new --opencode --gemini
133
+
134
+ # Install skills dependencies (Python, Node packages, system tools)
135
+ vk new --install-skills
136
+
137
+ # Command prefix (/vk: namespace to avoid conflicts)
138
+ vk new --prefix
139
+
140
+ # Offline installation (from local archive or directory)
141
+ vk new --archive ~/downloads/engineer-v1.16.0.zip
142
+ vk new --kit-path ~/extracted-kit/
143
+ ```
144
+
145
+ **Flags:**
146
+ - `--install-skills`: Auto-install Python packages, system tools (FFmpeg, ImageMagick), Node.js packages
147
+ - `--prefix`: Move commands to /vk: namespace (/plan → /vk:plan)
148
+ - `--beta`: Show pre-release versions in selection
149
+ - `--opencode/--gemini`: Install optional packages
150
+ - `--archive <path>`: Use local archive (zip/tar.gz) instead of downloading
151
+ - `--kit-path <path>`: Use local kit directory instead of downloading
152
+
153
+ ### Initialize or Update Project
154
+
155
+ **Note:** Run from project root.
156
+
157
+ ```bash
158
+ # Interactive mode
159
+ vk init
160
+
161
+ # Non-interactive mode with sensible defaults
162
+ vk init --yes
163
+ vk init -y
164
+
165
+ # Combine with other flags
166
+ vk init -g --kit engineer -y
167
+
168
+ # With options
169
+ vk init --kit engineer --beta
170
+
171
+ # Global mode (platform-specific paths)
172
+ vk init --global
173
+
174
+ # Fresh installation (⚠️ DESTRUCTIVE - removes ALL customizations)
175
+ vk init --fresh
176
+
177
+ # With exclude patterns and prefix
178
+ vk init --exclude "*.local" --prefix
179
+
180
+ # Offline installation (from local archive or directory)
181
+ vk init --archive ~/downloads/engineer-v1.16.0.zip
182
+ vk init --kit-path ~/extracted-kit/
183
+ ```
184
+
185
+ **Flags:**
186
+ - `--yes/-y`: Non-interactive mode with sensible defaults (skip all prompts)
187
+ - `--global/-g`: Use platform-specific config (macOS/Linux: ~/.claude, Windows: %USERPROFILE%\.claude)
188
+ - `--fresh`: Clean reinstall, removes .claude directory (requires "yes" confirmation)
189
+ - `--beta`: Show pre-release versions
190
+ - `--prefix`: Apply /vk: namespace to commands
191
+ - `--archive <path>`: Use local archive (zip/tar.gz) instead of downloading
192
+ - `--kit-path <path>`: Use local kit directory instead of downloading
193
+
194
+ **Default Behavior with `-y` Flag:**
195
+
196
+ | Prompt | Default |
197
+ |--------|---------|
198
+ | Select vikit | engineer (first option) |
199
+ | Target directory | Current directory (`.`) |
200
+ | Version selection | Latest stable release |
201
+ | Google Gemini setup | Skip |
202
+ | Other optional features | Skip |
203
+
204
+ ### Update CLI
205
+
206
+ Keep the vikit CLI up to date:
207
+
208
+ ```bash
209
+ # Check for CLI updates
210
+ vk update --check
211
+
212
+ # Update to latest version
213
+ vk update
214
+
215
+ # Update to specific version
216
+ vk update --version 1.1.0
217
+
218
+ # Update to beta / skip confirmation
219
+ vk update --beta
220
+ vk update --yes
221
+ ```
222
+
223
+ The CLI notifies you when updates are available via `vk --version`.
224
+
225
+ **Skills Migration:**
226
+ - Auto-detects structure changes (flat → categorized)
227
+ - Preserves customizations (SHA-256 hashing)
228
+ - Creates backup before migration
229
+ - Rollback on failure
230
+
231
+ ### List Available Versions
232
+
233
+ ```bash
234
+ # Show all available versions for all kits
235
+ vk versions
236
+
237
+ # Filter by specific kit
238
+ vk versions --kit engineer
239
+ vk versions --kit marketing
240
+
241
+ # Show more versions (default: 30)
242
+ vk versions --limit 50
243
+
244
+ # Include prereleases and drafts
245
+ vk versions --all
246
+ ```
247
+
248
+ ### Diagnostics & Doctor
249
+
250
+ ```bash
251
+ # Full health check (default)
252
+ vk doctor
253
+
254
+ # Verbose mode with execution timing and command details
255
+ vk doctor --verbose
256
+
257
+ # Generate shareable diagnostic report (prompts for gist upload)
258
+ vk doctor --report
259
+
260
+ # Auto-fix all fixable issues
261
+ vk doctor --fix
262
+
263
+ # CI mode: no prompts, exit 1 on failures
264
+ vk doctor --check-only
265
+
266
+ # Machine-readable JSON output
267
+ vk doctor --json
268
+
269
+ # Combine flags
270
+ vk doctor --verbose --check-only --json
271
+ vk doctor --verbose --fix
272
+ ```
273
+
274
+ **Health Checks:**
275
+ - **System**: Node.js, npm, Python, pip, Claude CLI, git, gh CLI
276
+ - **vikit**: Global/project installation, versions, skills
277
+ - **Auth**: GitHub CLI authentication, repository access
278
+ - **Project**: package.json, node_modules, lock files
279
+ - **Modules**: Dynamic skill dependency resolution
280
+
281
+ **Auto-Fix Capabilities:**
282
+ | Issue | Fix Action |
283
+ |-------|------------|
284
+ | Missing dependencies | Install via package manager |
285
+ | Missing gh auth | Run `gh auth login` |
286
+ | Corrupted node_modules | Reinstall dependencies |
287
+ | Missing global install | Run `vk init --global` |
288
+ | Missing skill deps | Install in skill directory |
289
+
290
+ **Exit Codes:**
291
+ - `0`: All checks pass or issues fixed
292
+ - `1`: Failures detected (only with `--check-only`)
293
+
294
+ > **Note:** `vk diagnose` is deprecated. Use `vk doctor` instead.
295
+
296
+ ### Uninstall
297
+
298
+ Remove vikit installations from your system:
299
+
300
+ ```bash
301
+ vk uninstall # Interactive mode - prompts for scope and confirmation
302
+ vk uninstall --local # Uninstall only local installation (current project)
303
+ vk uninstall --global # Uninstall only global installation (~/.claude/)
304
+ vk uninstall -l -y # Local only, skip confirmation
305
+ vk uninstall -g -y # Global only, skip confirmation
306
+ vk uninstall --yes # Non-interactive - skip confirmation (for scripts)
307
+ ```
308
+
309
+ **Scope Selection:**
310
+ - When both local and global installations exist, you'll be prompted to choose:
311
+ - **Local only**: Remove from current project (`.claude/`)
312
+ - **Global only**: Remove from user directory (`~/.claude/`)
313
+ - **Both**: Remove all vikit installations
314
+ - Use `--local` or `--global` flags to skip the prompt
315
+
316
+ **What it does:**
317
+ - Detects local `.claude` directory in current project
318
+ - Detects global `~/.claude` vikit installation
319
+ - Shows paths before deletion
320
+ - Requires confirmation (unless `--yes` flag)
321
+ - Removes vikit subdirectories (`commands/`, `agents/`, `skills/`, `workflows/`, `hooks/`, `metadata.json`)
322
+ - **Preserves user configs** like `settings.json`, `settings.local.json`, and `CLAUDE.md`
323
+
324
+ **Note:** Only removes valid vikit installations (with metadata.json). Regular `.claude` directories from Claude Desktop are not affected.
325
+
326
+ ### Watch GitHub Issues (`vk watch`)
327
+
328
+ Autonomous daemon that monitors GitHub issues, analyzes them with Claude, generates plans, and creates PRs.
329
+
330
+ ```bash
331
+ # Start watching (single repo)
332
+ vk watch
333
+
334
+ # Dry-run mode (no posts/PRs)
335
+ vk watch --dry-run
336
+
337
+ # Custom poll interval (ms)
338
+ vk watch --interval 60000
339
+
340
+ # Force restart (clear state)
341
+ vk watch --force
342
+
343
+ # Verbose logging
344
+ vk watch --verbose
345
+ ```
346
+
347
+ **Features:** issue lifecycle management (10 statuses), Claude-powered brainstorming/planning, automatic PR creation, rate limiting (persisted across restarts), maintainer reply filtering, processedIssues TTL, optional git worktree isolation per issue, multi-repo support, graceful shutdown.
348
+
349
+ **Config:** `.vk.json` under `watch` key. See [docs/vk-watch.md](./docs/vk-watch.md) for full configuration reference.
350
+
351
+ ### Content Generation (`vk content`)
352
+
353
+ Daemon that scans git activity (commits, PRs, tags), generates social media content with Claude, and publishes to X/Twitter and Facebook.
354
+
355
+ ```bash
356
+ # Interactive setup wizard
357
+ vk content setup
358
+
359
+ # Start daemon
360
+ vk content start
361
+
362
+ # Check status
363
+ vk content status
364
+
365
+ # View logs
366
+ vk content logs
367
+
368
+ # Queue manual content
369
+ vk content queue
370
+
371
+ # Review workflow
372
+ vk content approve <id>
373
+ vk content reject <id>
374
+
375
+ # Dry-run / verbose
376
+ vk content start --dry-run
377
+ vk content start --verbose
378
+ ```
379
+
380
+ **Features:** 11-phase pipeline (scan → filter → classify → context → create → validate → review → photo → publish → engage → analyze), noise filtering, context caching (24h TTL), content validation, photo generation, 3 review modes (auto/manual/hybrid), quiet hours scheduling, engagement tracking, SQLite database, platform-specific adapters.
381
+
382
+ **Config:** `.vk.json` under `content` key. See [docs/vk-content.md](./docs/vk-content.md) for full configuration reference.
383
+
384
+ ### Other Commands
385
+
386
+ ```bash
387
+ # Show CLI version (shows local + global kit versions)
388
+ vk --version
389
+
390
+ # Show help
391
+ vk --help
392
+ vk -h
393
+
394
+ # Command-specific help
395
+ vk new --help
396
+ vk init --help
397
+ vk config --help
398
+ vk skills --help
399
+ vk versions --help
400
+ ```
401
+
402
+ ### Debugging
403
+
404
+ ```bash
405
+ vk new --verbose # Enable verbose logging
406
+ vk new --verbose --log-file debug.log # Save to file
407
+ VIKIT_VERBOSE=1 vk new # Via environment variable
408
+ ```
409
+
410
+ ### Cache Configuration
411
+
412
+ Release data is cached locally to improve performance. You can configure the cache TTL:
413
+
414
+ ```bash
415
+ # Set custom cache TTL (in seconds, default: 3600 = 1 hour)
416
+ VK_CACHE_TTL=7200 vk versions # Cache for 2 hours
417
+ VK_CACHE_TTL=0 vk versions # Disable caching (always fetch fresh)
418
+
419
+ # Permanent configuration (add to ~/.bashrc or ~/.zshrc)
420
+ export VK_CACHE_TTL=1800 # 30 minutes
421
+ ```
422
+
423
+ **Cache Location:** `~/.vikit/cache/releases/`
424
+
425
+ ### Update Notifications
426
+
427
+ The `vk --version` command checks for newer versions of your installed vikit and displays a notification if an update is available. The check is cached for 7 days to minimize API calls.
428
+
429
+ **Disable Update Notifications:**
430
+ ```bash
431
+ # Set environment variable to disable
432
+ NO_UPDATE_NOTIFIER=1 vk --version
433
+
434
+ # Windows (permanent)
435
+ [System.Environment]::SetEnvironmentVariable("NO_UPDATE_NOTIFIER", "1", [System.EnvironmentVariableTarget]::User)
436
+
437
+ # macOS/Linux (add to ~/.bashrc or ~/.zshrc)
438
+ export NO_UPDATE_NOTIFIER=1
439
+ ```
440
+
441
+ **Cache Location:** `~/.vikit/cache/version-check.json` (Windows: `%USERPROFILE%\.vikit\cache\`)
442
+
443
+ ## Authentication
444
+
445
+ The CLI requires GitHub authentication to download releases from private repositories.
446
+
447
+ ### Authentication Flow
448
+
449
+ ```
450
+ ┌─────────────────────────────────────────────────┐
451
+ │ Multi-Tier Authentication │
452
+ │ │
453
+ │ 1. GitHub CLI (gh auth token) │
454
+ │ ↓ (if not available) │
455
+ │ 2. Environment Variables (GITHUB_TOKEN) │
456
+ │ ↓ (if not set) │
457
+ │ 3. Config File (~/.vikit/config.json) │
458
+ │ ↓ (if not found) │
459
+ │ 4. OS Keychain (secure storage) │
460
+ │ ↓ (if not stored) │
461
+ │ 5. User Prompt (with save option) │
462
+ └─────────────────────────────────────────────────┘
463
+ ```
464
+
465
+ ### Quick Setup
466
+
467
+ **Step 1: Install GitHub CLI**
468
+ ```bash
469
+ # Windows
470
+ winget install GitHub.cli
471
+
472
+ # macOS
473
+ brew install gh
474
+
475
+ # Linux
476
+ sudo apt install gh
477
+ ```
478
+
479
+ **Step 2: Authenticate with GitHub CLI**
480
+ ```bash
481
+ gh auth login
482
+ ```
483
+
484
+ When prompted, follow these steps:
485
+ 1. Select **GitHub.com**
486
+ 2. Select **HTTPS** (or SSH if preferred)
487
+ 3. Authenticate Git? → **Yes**
488
+ 4. Select **Login with a web browser** (⚠️ recommended)
489
+ 5. Copy the one-time code shown
490
+ 6. Press Enter to open browser and paste the code
491
+ 7. Authorize GitHub CLI
492
+
493
+ > **⚠️ Important**: Select "Login with a web browser" - do NOT use "Paste an authentication token" as PAT authentication is no longer supported for accessing private repositories.
494
+
495
+ ## Troubleshooting
496
+
497
+ Run the doctor command to diagnose issues:
498
+
499
+ ```bash
500
+ # Interactive diagnostics
501
+ vk doctor
502
+
503
+ # Generate report for support
504
+ vk doctor --report
505
+
506
+ # CI/automation
507
+ vk doctor --check-only --json
508
+
509
+ # Verbose logging
510
+ vk new --verbose
511
+ vk init --verbose
512
+ ```
513
+
514
+ **Common Issues:**
515
+ - **"Access denied"**: Run `vk doctor` to check auth, use `--fix` to auto-repair
516
+ - **"Authentication failed"**: Run `vk doctor --fix` to re-authenticate, or manually run `gh auth login` (select 'Login with a web browser')
517
+ - **"GitHub CLI not authenticated"**: Run `gh auth login` and select 'Login with a web browser' (NOT 'Paste token')
518
+ - **Module errors**: Run `vk doctor --fix` to reinstall skill dependencies
519
+ - **Need help**: Run `vk doctor --report` and share the gist URL
520
+
521
+ ## Available Kits
522
+
523
+ vikit offers premium starter kits available for purchase at [vikit.cc](https://vikit.cc):
524
+
525
+ - **engineer**: vikit Engineer - Engineering toolkit for building with Claude (v1.0.0+)
526
+
527
+ Each kit provides a comprehensive project template with best practices, tooling, and workflows optimized for Claude Code development.
528
+
529
+ ## Configuration
530
+
531
+ Configuration is stored in `~/.vikit/config.json`:
532
+
533
+ ```json
534
+ {
535
+ "github": {
536
+ "token": "stored_in_keychain"
537
+ },
538
+ "defaults": {
539
+ "kit": "engineer",
540
+ "dir": "."
541
+ }
542
+ }
543
+ ```
544
+
545
+ ## Protected Files
546
+
547
+ The following file patterns are protected and will not be overwritten during updates:
548
+
549
+ - `.env`, `.env.local`, `.env.*.local`
550
+ - `*.key`, `*.pem`, `*.p12`
551
+ - `node_modules/**`, `.git/**`
552
+ - `dist/**`, `build/**`
553
+
554
+ ## Excluding Files
555
+
556
+ Use `--exclude` flag with glob patterns to skip files:
557
+
558
+ ```bash
559
+ vk new --exclude "*.log" --exclude "temp/**"
560
+ vk update --exclude "node_modules/**" --exclude "dist/**"
561
+ ```
562
+
563
+ **Patterns:** `*` (any chars), `**` (recursive), `?` (single char), `[abc]`, `{a,b}`
564
+ **Restrictions:** No absolute paths, no path traversal (..), 1-500 chars
565
+ **Note:** User patterns are ADDED to default protected patterns
566
+
567
+ ### Custom .claude Files & Skills Migration
568
+
569
+ **Custom File Preservation:**
570
+ The CLI automatically preserves your custom `.claude/` files during updates:
571
+
572
+ - Custom slash commands
573
+ - Personal workflows
574
+ - Project-specific configurations
575
+ - Any other custom files in `.claude/` directory
576
+
577
+ **Skills Directory Migration:**
578
+ Automatic migration when structure changes (flat → categorized):
579
+
580
+ - **Detection**: Manifest-based + heuristic fallback
581
+ - **Customizations**: SHA-256 hash comparison detects modifications
582
+ - **Safety**: Backup before migration, rollback on failure
583
+ - **Preservation**: All customizations preserved during migration
584
+ - **Interactive**: Prompts for confirmation (can skip in CI/CD)
585
+
586
+ **Example Migration:**
587
+ ```
588
+ Before (flat):
589
+ .claude/skills/
590
+ ├── gemini-vision/
591
+ ├── postgresql-psql/
592
+ └── cloudflare-dns/
593
+
594
+ After (categorized):
595
+ .claude/skills/
596
+ ├── ai-multimodal/
597
+ │ └── gemini-vision/
598
+ ├── databases/
599
+ │ └── postgresql-psql/
600
+ └── devops/
601
+ └── cloudflare-dns/
602
+ ```
603
+
604
+ Customizations in any skill are detected and preserved automatically.
605
+
606
+ ## Development
607
+
608
+ See [Development Guide](./docs/codebase-summary.md) for:
609
+ - Project structure (modular domain-driven architecture)
610
+ - Build & compilation (`bun run build`, `bun run compile`)
611
+ - Testing & type checking
612
+ - Code standards & linting
613
+
614
+ **Architecture Highlights:**
615
+ - **Modular design**: 122 focused modules (target: <100 lines each)
616
+ - **Facade pattern**: Each domain exposes public API via facade
617
+ - **Phase handlers**: Complex commands use orchestrator + phase handlers
618
+ - **Self-documenting names**: kebab-case file names describe purpose
619
+
620
+ **Quick Start:**
621
+ ```bash
622
+ bun install
623
+ bun run dev new --kit engineer
624
+ bun test
625
+ # Optional: run expensive CLI integration tests explicitly
626
+ bun run test:integration
627
+ ```
628
+
629
+ ## FAQ
630
+
631
+ **Q: Do I need GitHub CLI?**
632
+ A: Yes, GitHub CLI is required. vikit uses it exclusively for authentication with private repositories.
633
+
634
+ **Q: How do I authenticate?**
635
+ A: Run `gh auth login`, select 'Login with a web browser', complete OAuth in browser. Do NOT use 'Paste an authentication token'.
636
+
637
+ **Q: "Access denied" error?**
638
+ A: Accept GitHub repo invitation, re-run `gh auth login` with web browser login, wait 2-5min for permissions.
639
+
640
+ **Q: "GitHub CLI not authenticated" error?**
641
+ A: Run `gh auth login` and select 'Login with a web browser' (NOT 'Paste token'). PAT authentication is no longer supported.
642
+
643
+ **Q: Is my token secure?**
644
+ A: Yes. GitHub CLI manages tokens securely via OAuth, stored encrypted in OS keychain.
645
+
646
+ ## License
647
+
648
+ MIT
649
+
650
+ This project is inspired from claudekit-cli, used under the MIT License