@chiendt/ack-cli 0.0.0-dev.5 → 1.0.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +103 -604
- package/cli-manifest.json +2 -2
- package/dist/index.js +200 -246
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,566 +1,143 @@
|
|
|
1
|
-
#
|
|
1
|
+
# ACK CLI
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`ack` is the command-line tool for bootstrapping, updating, and managing **AckKit** projects — curated kits of Claude Code skills, agents, commands, and hooks.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
[](https://www.npmjs.com/package/@chiendt/ack-cli)
|
|
6
|
+
[](./LICENSE)
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
---
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
## What you get
|
|
10
11
|
|
|
11
|
-
**
|
|
12
|
-
- **
|
|
13
|
-
- **Web
|
|
14
|
-
- **
|
|
15
|
-
- **
|
|
16
|
-
- **Skill Installation**: Install AckKit 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)** - `ack 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
|
-
- **[ck watch](./docs/ck-watch.md)** - GitHub issue monitoring daemon
|
|
37
|
-
- **[ck content](./docs/ck-content.md)** - Automated content generation from git activity
|
|
38
|
-
|
|
39
|
-
## Prerequisites
|
|
40
|
-
|
|
41
|
-
Before using ACK CLI, you need to:
|
|
42
|
-
|
|
43
|
-
1. **Purchase a AckKit Starter Kit** from [AckKit.cc](https://AckKit.cc)
|
|
44
|
-
2. **Get Repository Access**: After purchase, you'll receive access to the private GitHub repository containing your kit
|
|
45
|
-
3. **Create a GitHub Personal Access Token** (PAT) with `repo` scope to download releases
|
|
46
|
-
|
|
47
|
-
Without a purchased kit and repository access, the CLI will not be able to download any project templates.
|
|
12
|
+
- **One command to bootstrap** a Claude-ready project from a kit (engineer, QA, marketing).
|
|
13
|
+
- **Idempotent installs and updates** — your customizations are preserved across upgrades.
|
|
14
|
+
- **Web dashboard** for managing skills, agents, commands, and hooks (`ack config ui`).
|
|
15
|
+
- **Multi-provider migration** — move config between Claude Code, Cursor, Codex, Gemini CLI, and more.
|
|
16
|
+
- **Built-in doctor** with auto-fix for the most common setup problems.
|
|
48
17
|
|
|
49
18
|
## Installation
|
|
50
19
|
|
|
51
|
-
The
|
|
52
|
-
|
|
53
|
-
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 ACK CLI development workflows.
|
|
54
|
-
|
|
55
|
-
### Using npm (Recommended)
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
npm install -g @chiendt1108/ack-cli
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### Using Bun
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
bun add -g @chiendt1108/ack-cli
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### Using Yarn
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
yarn global add @chiendt1108/ack-cli
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### Using pnpm
|
|
20
|
+
The CLI is published on npm at [`@chiendt/ack-cli`](https://www.npmjs.com/package/@chiendt/ack-cli). Pick one:
|
|
74
21
|
|
|
75
22
|
```bash
|
|
76
|
-
|
|
23
|
+
npm install -g @chiendt/ack-cli
|
|
24
|
+
pnpm add -g @chiendt/ack-cli
|
|
25
|
+
yarn global add @chiendt/ack-cli
|
|
26
|
+
bun add -g @chiendt/ack-cli
|
|
77
27
|
```
|
|
78
28
|
|
|
79
|
-
|
|
29
|
+
Verify:
|
|
80
30
|
|
|
81
31
|
```bash
|
|
82
32
|
ack --version
|
|
83
33
|
```
|
|
84
34
|
|
|
85
|
-
|
|
35
|
+
> **Requirements:** Node.js ≥ 18, [GitHub CLI](https://cli.github.com/) (`gh`) for kit downloads.
|
|
86
36
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
# Top-level command discovery
|
|
91
|
-
ack --help
|
|
92
|
-
|
|
93
|
-
# Open config dashboard immediately
|
|
94
|
-
ack config
|
|
95
|
-
|
|
96
|
-
# Expose the dashboard intentionally to your LAN/Tailscale
|
|
97
|
-
ack config --host 0.0.0.0 --no-open
|
|
98
|
-
|
|
99
|
-
# Command-level help (recommended)
|
|
100
|
-
ack config --help
|
|
101
|
-
ack skills --help
|
|
102
|
-
ack agents --help
|
|
103
|
-
ack commands --help
|
|
104
|
-
ack migrate --help
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### Config Dashboard Access
|
|
108
|
-
|
|
109
|
-
By default, `ack config` binds the dashboard to `127.0.0.1` for local-only access.
|
|
37
|
+
## Authentication
|
|
110
38
|
|
|
111
|
-
|
|
39
|
+
AckKit kits live in private GitHub repos. Authenticate once with the GitHub CLI:
|
|
112
40
|
|
|
113
41
|
```bash
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
# Bind to a specific interface or hostname
|
|
118
|
-
ack config --host 100.88.12.4 --no-open
|
|
119
|
-
ack config --host dashboard.local --no-open
|
|
42
|
+
gh auth login
|
|
43
|
+
# choose: GitHub.com → HTTPS → Login with a web browser
|
|
120
44
|
```
|
|
121
45
|
|
|
122
|
-
|
|
46
|
+
> Don't use *"Paste an authentication token"* — OAuth via web browser is the supported path. The CLI reads `gh`'s token automatically; tokens are stored in your OS keychain.
|
|
123
47
|
|
|
124
|
-
|
|
48
|
+
## Quick start
|
|
125
49
|
|
|
126
50
|
```bash
|
|
127
|
-
#
|
|
128
|
-
ack new
|
|
129
|
-
|
|
130
|
-
# With options
|
|
131
|
-
ack new --dir my-project --kit engineer
|
|
132
|
-
|
|
133
|
-
# Show beta versions
|
|
134
|
-
ack new --beta
|
|
135
|
-
|
|
136
|
-
# With exclude patterns
|
|
137
|
-
ack new --exclude "*.log" --exclude "temp/**"
|
|
138
|
-
|
|
139
|
-
# Optional packages (OpenCode, Gemini)
|
|
140
|
-
ack new --opencode --gemini
|
|
141
|
-
|
|
142
|
-
# Install skills dependencies (Python, Node packages, system tools)
|
|
143
|
-
ack new --install-skills
|
|
144
|
-
|
|
145
|
-
# Command prefix (/ck: namespace to avoid conflicts)
|
|
146
|
-
ack new --prefix
|
|
147
|
-
|
|
148
|
-
# Offline installation (from local archive or directory)
|
|
149
|
-
ack new --archive ~/downloads/engineer-v1.16.0.zip
|
|
150
|
-
ack new --kit-path ~/extracted-kit/
|
|
151
|
-
|
|
152
|
-
# Direct repo downloads are also supported
|
|
153
|
-
ack new --archive ~/downloads/AckKit-engineer-main.zip
|
|
154
|
-
ack new --kit-path ~/downloads/AckKit-engineer-main/
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
**Flags:**
|
|
158
|
-
- `--install-skills`: Auto-install Python packages, system tools (FFmpeg, ImageMagick), Node.js packages
|
|
159
|
-
- `--prefix`: Move commands to /ck: namespace (/plan → /ck:plan)
|
|
160
|
-
- `--beta`: Show pre-release versions in selection
|
|
161
|
-
- `--opencode/--gemini`: Install optional packages
|
|
162
|
-
- `--archive <path>`: Use local archive (zip/tar.gz) instead of downloading
|
|
163
|
-
- `--kit-path <path>`: Use local kit directory instead of downloading
|
|
51
|
+
# Bootstrap a new project from a kit
|
|
52
|
+
ack new --kit engineer
|
|
164
53
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
### Initialize or Update Project
|
|
168
|
-
|
|
169
|
-
**Note:** Run from project root.
|
|
170
|
-
|
|
171
|
-
```bash
|
|
172
|
-
# Interactive mode
|
|
54
|
+
# Initialize / update an existing project
|
|
173
55
|
ack init
|
|
174
56
|
|
|
175
|
-
#
|
|
176
|
-
ack
|
|
177
|
-
ack init -y
|
|
178
|
-
|
|
179
|
-
# Combine with other flags
|
|
180
|
-
ack init -g --kit engineer -y
|
|
181
|
-
|
|
182
|
-
# With options
|
|
183
|
-
ack init --kit engineer --beta
|
|
184
|
-
|
|
185
|
-
# Global mode (platform-specific paths)
|
|
186
|
-
ack init --global
|
|
187
|
-
|
|
188
|
-
# Fresh installation (⚠️ DESTRUCTIVE - removes ALL customizations)
|
|
189
|
-
ack init --fresh
|
|
190
|
-
|
|
191
|
-
# With exclude patterns and prefix
|
|
192
|
-
ack init --exclude "*.local" --prefix
|
|
193
|
-
|
|
194
|
-
# Offline installation (from local archive or directory)
|
|
195
|
-
ack init --archive ~/downloads/engineer-v1.16.0.zip
|
|
196
|
-
ack init --kit-path ~/extracted-kit/
|
|
197
|
-
|
|
198
|
-
# Direct repo downloads are also supported
|
|
199
|
-
ack init --archive ~/downloads/AckKit-engineer-main.zip
|
|
200
|
-
ack init --kit-path ~/downloads/AckKit-engineer-main/
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
**Flags:**
|
|
204
|
-
- `--yes/-y`: Non-interactive mode with sensible defaults (skip all prompts)
|
|
205
|
-
- `--global/-g`: Use platform-specific config (macOS/Linux: ~/.claude, Windows: %USERPROFILE%\.claude)
|
|
206
|
-
- `--fresh`: Clean reinstall, removes .claude directory (requires "yes" confirmation)
|
|
207
|
-
- `--beta`: Show pre-release versions
|
|
208
|
-
- `--prefix`: Apply /ck: namespace to commands
|
|
209
|
-
- `--archive <path>`: Use local archive (zip/tar.gz) instead of downloading
|
|
210
|
-
- `--kit-path <path>`: Use local kit directory instead of downloading
|
|
211
|
-
|
|
212
|
-
`--archive` and `--kit-path` both accept direct repo downloads with a single wrapper directory, including GitHub "Download ZIP" archives and extracted repo folders that still contain `AckKit-engineer-main/` or similar at the top level.
|
|
213
|
-
|
|
214
|
-
**Default Behavior with `-y` Flag:**
|
|
215
|
-
|
|
216
|
-
| Prompt | Default |
|
|
217
|
-
|--------|---------|
|
|
218
|
-
| Select AckKit | engineer (first option) |
|
|
219
|
-
| Target directory | Current directory (`.`) |
|
|
220
|
-
| Version selection | Latest stable release |
|
|
221
|
-
| Google Gemini setup | Skip |
|
|
222
|
-
| Other optional features | Skip |
|
|
223
|
-
|
|
224
|
-
### Update CLI
|
|
225
|
-
|
|
226
|
-
Keep the ACK CLI up to date:
|
|
227
|
-
|
|
228
|
-
```bash
|
|
229
|
-
# Check for CLI updates
|
|
230
|
-
ack update --check
|
|
231
|
-
|
|
232
|
-
# Update to latest version
|
|
233
|
-
ack update
|
|
234
|
-
|
|
235
|
-
# Update to specific version
|
|
236
|
-
ack update --version 1.17.0
|
|
237
|
-
|
|
238
|
-
# Update to beta / skip confirmation
|
|
239
|
-
ack update --beta
|
|
240
|
-
ack update --yes
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
The CLI notifies you when updates are available via `ack --version`.
|
|
244
|
-
|
|
245
|
-
**Skills Migration:**
|
|
246
|
-
- Auto-detects structure changes (flat → categorized)
|
|
247
|
-
- Preserves customizations (SHA-256 hashing)
|
|
248
|
-
- Creates backup before migration
|
|
249
|
-
- Rollback on failure
|
|
250
|
-
|
|
251
|
-
### List Available Versions
|
|
252
|
-
|
|
253
|
-
```bash
|
|
254
|
-
# Show all available versions for all kits
|
|
255
|
-
ack versions
|
|
256
|
-
|
|
257
|
-
# Filter by specific kit
|
|
258
|
-
ack versions --kit engineer
|
|
259
|
-
ack versions --kit marketing
|
|
260
|
-
|
|
261
|
-
# Show more versions (default: 30)
|
|
262
|
-
ack versions --limit 50
|
|
263
|
-
|
|
264
|
-
# Include prereleases and drafts
|
|
265
|
-
ack versions --all
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
### Diagnostics & Doctor
|
|
269
|
-
|
|
270
|
-
```bash
|
|
271
|
-
# Full health check (default)
|
|
272
|
-
ack doctor
|
|
273
|
-
|
|
274
|
-
# Verbose mode with execution timing and command details
|
|
275
|
-
ack doctor --verbose
|
|
276
|
-
|
|
277
|
-
# Generate shareable diagnostic report (prompts for gist upload)
|
|
278
|
-
ack doctor --report
|
|
57
|
+
# Open the web dashboard
|
|
58
|
+
ack config
|
|
279
59
|
|
|
280
|
-
#
|
|
60
|
+
# Health check + auto-fix
|
|
281
61
|
ack doctor --fix
|
|
282
|
-
|
|
283
|
-
# CI mode: no prompts, exit 1 on failures
|
|
284
|
-
ack doctor --check-only
|
|
285
|
-
|
|
286
|
-
# Machine-readable JSON output
|
|
287
|
-
ack doctor --json
|
|
288
|
-
|
|
289
|
-
# Combine flags
|
|
290
|
-
ack doctor --verbose --check-only --json
|
|
291
|
-
ack doctor --verbose --fix
|
|
292
62
|
```
|
|
293
63
|
|
|
294
|
-
|
|
295
|
-
- **System**: Node.js, npm, Python, pip, Claude CLI, git, gh CLI
|
|
296
|
-
- **AckKit**: Global/project installation, versions, skills, skill listing budget, duplicate skill inventory
|
|
297
|
-
- **Auth**: GitHub CLI authentication, repository access
|
|
298
|
-
- **Project**: package.json, node_modules, lock files
|
|
299
|
-
- **Modules**: Dynamic skill dependency resolution
|
|
300
|
-
|
|
301
|
-
**Auto-Fix Capabilities:**
|
|
302
|
-
| Issue | Fix Action |
|
|
303
|
-
|-------|------------|
|
|
304
|
-
| Missing dependencies | Install via package manager |
|
|
305
|
-
| Missing gh auth | Run `gh auth login` |
|
|
306
|
-
| Corrupted node_modules | Reinstall dependencies |
|
|
307
|
-
| Missing global install | Run `ack init --global` |
|
|
308
|
-
| Missing skill deps | Install in skill directory |
|
|
309
|
-
| Missing/low Engineer skill listing budget | Ensure computed `skillListingBudgetFraction` and a valid AckKit-recommended `skillListingMaxDescChars` ceiling in project settings |
|
|
310
|
-
|
|
311
|
-
`ack doctor` never writes `skillOverrides`, hides skills, or deletes duplicate skills automatically. It reports existing `skillOverrides` and inventory issues so all active project/global skills can stay user-invocable while listing pressure is managed through 200k-context-floor project settings and bounded descriptions.
|
|
64
|
+
Run `ack --help` for the full command list, or `ack <command> --help` for any one. The full machine-readable command reference is at [`docs/cli-reference.md`](./docs/cli-reference.md).
|
|
312
65
|
|
|
313
|
-
|
|
314
|
-
- `0`: All checks pass or issues fixed
|
|
315
|
-
- `1`: Failures detected (only with `--check-only`)
|
|
66
|
+
## Available kits
|
|
316
67
|
|
|
317
|
-
|
|
68
|
+
| Kit | Slash prefix | Repo | Description |
|
|
69
|
+
|-------------|--------------|-----------------------------------|------------------------------------------------------------|
|
|
70
|
+
| `engineer` | `/ck:` | `chiendt1108/ack-engineer` | Engineering toolkit for building with Claude |
|
|
71
|
+
| `marketing` | `/mkt:` | `chiendt1108/claudekit-marketing` | Content automation: campaigns, social, analytics |
|
|
72
|
+
| `fqc-qa` | `/fqc:` | `chiendt1108/ack-fqc-qa` | QA: test design, debugging, security, scenario coverage |
|
|
318
73
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
Remove AckKit installations from your system:
|
|
322
|
-
|
|
323
|
-
```bash
|
|
324
|
-
ack uninstall # Interactive mode - prompts for scope and confirmation
|
|
325
|
-
ack uninstall --local # Uninstall only local installation (current project)
|
|
326
|
-
ack uninstall --global # Uninstall only global installation (~/.claude/)
|
|
327
|
-
ack uninstall -g --kit marketing # Remove only global Marketing kit
|
|
328
|
-
ack uninstall -l -y # Local only, skip confirmation
|
|
329
|
-
ack uninstall -g -y # Global only, skip confirmation
|
|
330
|
-
ack uninstall --yes # Non-interactive - skip confirmation (for scripts)
|
|
331
|
-
```
|
|
332
|
-
|
|
333
|
-
**Scope Selection:**
|
|
334
|
-
- When both local and global installations exist, you'll be prompted to choose:
|
|
335
|
-
- **Local only**: Remove from current project (`.claude/`)
|
|
336
|
-
- **Global only**: Remove from user directory (`~/.claude/`)
|
|
337
|
-
- **Both**: Remove all AckKit installations
|
|
338
|
-
- When multiple kits are installed in the selected scope, interactive uninstall prompts for:
|
|
339
|
-
- **Marketing kit only** or **Engineer kit only**: Remove one kit and preserve the other
|
|
340
|
-
- **All AckKit kits**: Remove the full selected installation scope
|
|
341
|
-
- Use `--local` or `--global` flags to skip the prompt
|
|
342
|
-
- Use `--kit engineer` or `--kit marketing` to skip the kit prompt
|
|
74
|
+
Kits are sold as part of [AckKit](https://AckKit.cc). Use `ack versions --kit <name>` to see released versions.
|
|
343
75
|
|
|
344
|
-
|
|
345
|
-
- Detects local `.claude` directory in current project
|
|
346
|
-
- Detects global `~/.claude` AckKit installation
|
|
347
|
-
- Shows paths before deletion
|
|
348
|
-
- Requires confirmation (unless `--yes` flag)
|
|
349
|
-
- Removes AckKit subdirectories (`commands/`, `agents/`, `skills/`, `workflows/`, `hooks/`, `metadata.json`)
|
|
350
|
-
- **Preserves user configs** like `settings.json`, `settings.local.json`, and `CLAUDE.md`
|
|
76
|
+
## Common workflows
|
|
351
77
|
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
### Watch GitHub Issues (`ack watch`)
|
|
355
|
-
|
|
356
|
-
Autonomous daemon that monitors GitHub issues, analyzes them with Claude, generates plans, and creates PRs.
|
|
78
|
+
### Create a project
|
|
357
79
|
|
|
358
80
|
```bash
|
|
359
|
-
#
|
|
360
|
-
ack
|
|
361
|
-
|
|
362
|
-
# Dry-run mode (no posts/PRs)
|
|
363
|
-
ack watch --dry-run
|
|
364
|
-
|
|
365
|
-
# Custom poll interval (ms)
|
|
366
|
-
ack watch --interval 60000
|
|
367
|
-
|
|
368
|
-
# Force restart (clear state)
|
|
369
|
-
ack watch --force
|
|
370
|
-
|
|
371
|
-
# Verbose logging
|
|
372
|
-
ack watch --verbose
|
|
81
|
+
ack new # interactive
|
|
82
|
+
ack new --kit engineer --yes # non-interactive
|
|
83
|
+
ack new --kit fqc-qa --prefix qa # custom slash prefix → /qa:
|
|
373
84
|
```
|
|
374
85
|
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
**Config:** `.ck.json` under `watch` key. See [docs/ck-watch.md](./docs/ck-watch.md) for full configuration reference.
|
|
378
|
-
|
|
379
|
-
### Content Generation (`ack content`)
|
|
380
|
-
|
|
381
|
-
Daemon that scans git activity (commits, PRs, tags), generates social media content with Claude, and publishes to X/Twitter and Facebook.
|
|
86
|
+
### Update an existing project
|
|
382
87
|
|
|
383
88
|
```bash
|
|
384
|
-
#
|
|
385
|
-
ack
|
|
386
|
-
|
|
387
|
-
# Start daemon
|
|
388
|
-
ack content start
|
|
389
|
-
|
|
390
|
-
# Check status
|
|
391
|
-
ack content status
|
|
392
|
-
|
|
393
|
-
# View logs
|
|
394
|
-
ack content logs
|
|
395
|
-
|
|
396
|
-
# Queue manual content
|
|
397
|
-
ack content queue
|
|
398
|
-
|
|
399
|
-
# Review workflow
|
|
400
|
-
ack content approve <id>
|
|
401
|
-
ack content reject <id>
|
|
402
|
-
|
|
403
|
-
# Dry-run / verbose
|
|
404
|
-
ack content start --dry-run
|
|
405
|
-
ack content start --verbose
|
|
89
|
+
ack init # update to latest, preserve your customizations
|
|
90
|
+
ack init --fresh # ⚠️ destructive: wipe and reinstall
|
|
406
91
|
```
|
|
407
92
|
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
**Config:** `.ck.json` under `content` key. See [docs/ck-content.md](./docs/ck-content.md) for full configuration reference.
|
|
93
|
+
`--fresh` is destructive. `--force` is **not** a fresh install — it only skips prompts.
|
|
411
94
|
|
|
412
|
-
###
|
|
95
|
+
### Update the CLI itself
|
|
413
96
|
|
|
414
97
|
```bash
|
|
415
|
-
|
|
416
|
-
ack
|
|
417
|
-
|
|
418
|
-
# Show help
|
|
419
|
-
ack --help
|
|
420
|
-
ack -h
|
|
421
|
-
|
|
422
|
-
# Command-specific help
|
|
423
|
-
ack new --help
|
|
424
|
-
ack init --help
|
|
425
|
-
ack config --help
|
|
426
|
-
ack skills --help
|
|
427
|
-
ack versions --help
|
|
98
|
+
ack update --check # check for newer CLI
|
|
99
|
+
ack update # install latest stable
|
|
100
|
+
ack update --dev # install latest @dev prerelease
|
|
428
101
|
```
|
|
429
102
|
|
|
430
|
-
###
|
|
103
|
+
### Health check
|
|
431
104
|
|
|
432
105
|
```bash
|
|
433
|
-
ack
|
|
434
|
-
ack
|
|
435
|
-
|
|
106
|
+
ack doctor # full health check
|
|
107
|
+
ack doctor --fix # auto-repair fixable issues
|
|
108
|
+
ack doctor --report # generate a shareable gist
|
|
109
|
+
ack doctor --json # machine-readable output
|
|
436
110
|
```
|
|
437
111
|
|
|
438
|
-
###
|
|
439
|
-
|
|
440
|
-
Release data is cached locally to improve performance. You can configure the cache TTL:
|
|
441
|
-
|
|
442
|
-
```bash
|
|
443
|
-
# Set custom cache TTL (in seconds, default: 3600 = 1 hour)
|
|
444
|
-
CK_CACHE_TTL=7200 ack versions # Cache for 2 hours
|
|
445
|
-
CK_CACHE_TTL=0 ack versions # Disable caching (always fetch fresh)
|
|
446
|
-
|
|
447
|
-
# Permanent configuration (add to ~/.bashrc or ~/.zshrc)
|
|
448
|
-
export CK_CACHE_TTL=1800 # 30 minutes
|
|
449
|
-
```
|
|
450
|
-
|
|
451
|
-
**Cache Location:** `~/.ack/cache/releases/`
|
|
452
|
-
|
|
453
|
-
### Update Notifications
|
|
454
|
-
|
|
455
|
-
The `ack --version` command checks for newer versions of your installed AckKit and displays a notification if an update is available. The check is cached for 7 days to minimize API calls.
|
|
112
|
+
### Migrate config to another agent
|
|
456
113
|
|
|
457
|
-
**Disable Update Notifications:**
|
|
458
114
|
```bash
|
|
459
|
-
#
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
# Windows (permanent)
|
|
463
|
-
[System.Environment]::SetEnvironmentVariable("NO_UPDATE_NOTIFIER", "1", [System.EnvironmentVariableTarget]::User)
|
|
464
|
-
|
|
465
|
-
# macOS/Linux (add to ~/.bashrc or ~/.zshrc)
|
|
466
|
-
export NO_UPDATE_NOTIFIER=1
|
|
115
|
+
ack migrate --dry-run # preview the migration plan
|
|
116
|
+
ack migrate # apply it (interactive conflict resolution)
|
|
467
117
|
```
|
|
468
118
|
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
## Authentication
|
|
472
|
-
|
|
473
|
-
The CLI requires GitHub authentication to download releases from private repositories.
|
|
474
|
-
|
|
475
|
-
### Authentication Flow
|
|
476
|
-
|
|
477
|
-
```
|
|
478
|
-
┌─────────────────────────────────────────────────┐
|
|
479
|
-
│ Multi-Tier Authentication │
|
|
480
|
-
│ │
|
|
481
|
-
│ 1. GitHub CLI (gh auth token) │
|
|
482
|
-
│ ↓ (if not available) │
|
|
483
|
-
│ 2. Environment Variables (GITHUB_TOKEN) │
|
|
484
|
-
│ ↓ (if not set) │
|
|
485
|
-
│ 3. Config File (~/.ack/config.json) │
|
|
486
|
-
│ ↓ (if not found) │
|
|
487
|
-
│ 4. OS Keychain (secure storage) │
|
|
488
|
-
│ ↓ (if not stored) │
|
|
489
|
-
│ 5. User Prompt (with save option) │
|
|
490
|
-
└─────────────────────────────────────────────────┘
|
|
491
|
-
```
|
|
492
|
-
|
|
493
|
-
### Quick Setup
|
|
494
|
-
|
|
495
|
-
**Step 1: Install GitHub CLI**
|
|
496
|
-
```bash
|
|
497
|
-
# Windows
|
|
498
|
-
winget install GitHub.cli
|
|
499
|
-
|
|
500
|
-
# macOS
|
|
501
|
-
brew install gh
|
|
119
|
+
Supported providers: Claude Code, Cursor, Codex, Gemini CLI, Windsurf, Amp, Antigravity, OpenCode, OpenHands, Droid, Roo, Kilo. See [`docs/reconciliation-architecture.md`](./docs/reconciliation-architecture.md) for the RECONCILE → EXECUTE → REPORT design.
|
|
502
120
|
|
|
503
|
-
|
|
504
|
-
sudo apt install gh
|
|
505
|
-
```
|
|
121
|
+
### Uninstall
|
|
506
122
|
|
|
507
|
-
**Step 2: Authenticate with GitHub CLI**
|
|
508
123
|
```bash
|
|
509
|
-
|
|
124
|
+
ack uninstall # interactive — pick scope and kits
|
|
125
|
+
ack uninstall --local # remove project install only
|
|
126
|
+
ack uninstall --global # remove ~/.claude install only
|
|
510
127
|
```
|
|
511
128
|
|
|
512
|
-
|
|
513
|
-
1. Select **GitHub.com**
|
|
514
|
-
2. Select **HTTPS** (or SSH if preferred)
|
|
515
|
-
3. Authenticate Git? → **Yes**
|
|
516
|
-
4. Select **Login with a web browser** (⚠️ recommended)
|
|
517
|
-
5. Copy the one-time code shown
|
|
518
|
-
6. Press Enter to open browser and paste the code
|
|
519
|
-
7. Authorize GitHub CLI
|
|
520
|
-
|
|
521
|
-
> **⚠️ 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.
|
|
522
|
-
|
|
523
|
-
## Troubleshooting
|
|
524
|
-
|
|
525
|
-
Run the doctor command to diagnose issues:
|
|
129
|
+
## Web dashboard
|
|
526
130
|
|
|
527
131
|
```bash
|
|
528
|
-
#
|
|
529
|
-
ack
|
|
530
|
-
|
|
531
|
-
# Generate report for support
|
|
532
|
-
ack doctor --report
|
|
533
|
-
|
|
534
|
-
# CI/automation
|
|
535
|
-
ack doctor --check-only --json
|
|
536
|
-
|
|
537
|
-
# Verbose logging
|
|
538
|
-
ack new --verbose
|
|
539
|
-
ack init --verbose
|
|
132
|
+
ack config # http://localhost:3456
|
|
133
|
+
ack config --host 0.0.0.0 # expose on LAN
|
|
540
134
|
```
|
|
541
135
|
|
|
542
|
-
|
|
543
|
-
- **"Access denied"**: Run `ack doctor` to check auth, use `--fix` to auto-repair
|
|
544
|
-
- **"Authentication failed"**: Run `ack doctor --fix` to re-authenticate, or manually run `gh auth login` (select 'Login with a web browser')
|
|
545
|
-
- **"GitHub CLI not authenticated"**: Run `gh auth login` and select 'Login with a web browser' (NOT 'Paste token')
|
|
546
|
-
- **Module errors**: Run `ack doctor --fix` to reinstall skill dependencies
|
|
547
|
-
- **Need help**: Run `ack doctor --report` and share the gist URL
|
|
548
|
-
|
|
549
|
-
## Available Kits
|
|
550
|
-
|
|
551
|
-
AckKit offers premium starter kits available for purchase at [AckKit.cc](https://AckKit.cc):
|
|
136
|
+
The dashboard lets you browse and toggle skills, agents, commands, and hooks; inspect recent Claude hook activity; and run migrations interactively.
|
|
552
137
|
|
|
553
|
-
|
|
554
|
-
|------|--------------|------|-------------|
|
|
555
|
-
| `engineer` | `/ck:` | `chiendt1108/ack-engineer` | Engineering toolkit for building with Claude |
|
|
556
|
-
| `marketing` | `/mkt:` | `claudekit/claudekit-marketing` | Content automation: campaigns, social media, analytics |
|
|
557
|
-
| `fqc-qa` | `/fqc:` | `chiendt1108/ack-fqc-qa` | QA kit: test design, debugging, security, scenario coverage |
|
|
138
|
+
## Per-project layout
|
|
558
139
|
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
### Per-project layout override
|
|
562
|
-
|
|
563
|
-
A user project can pin where the kit installs files via its `package.json`:
|
|
140
|
+
Override where a kit installs files via `package.json`:
|
|
564
141
|
|
|
565
142
|
```json
|
|
566
143
|
{
|
|
@@ -571,144 +148,66 @@ A user project can pin where the kit installs files via its `package.json`:
|
|
|
571
148
|
}
|
|
572
149
|
```
|
|
573
150
|
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
## Configuration
|
|
577
|
-
|
|
578
|
-
Configuration is stored in `~/.ack/config.json`:
|
|
579
|
-
|
|
580
|
-
```json
|
|
581
|
-
{
|
|
582
|
-
"github": {
|
|
583
|
-
"token": "stored_in_keychain"
|
|
584
|
-
},
|
|
585
|
-
"defaults": {
|
|
586
|
-
"kit": "engineer",
|
|
587
|
-
"dir": "."
|
|
588
|
-
}
|
|
589
|
-
}
|
|
590
|
-
```
|
|
591
|
-
|
|
592
|
-
## Protected Files
|
|
151
|
+
## Protected files
|
|
593
152
|
|
|
594
|
-
The following
|
|
153
|
+
The following are never overwritten by `ack init` or updates:
|
|
595
154
|
|
|
596
155
|
- `.env`, `.env.local`, `.env.*.local`
|
|
597
156
|
- `*.key`, `*.pem`, `*.p12`
|
|
598
|
-
- `node_modules/**`, `.git/**`
|
|
599
|
-
- `dist/**`, `build/**`
|
|
157
|
+
- `node_modules/**`, `.git/**`, `dist/**`, `build/**`
|
|
600
158
|
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
Use `--exclude` flag with glob patterns to skip files:
|
|
159
|
+
Add your own patterns with `--exclude`:
|
|
604
160
|
|
|
605
161
|
```bash
|
|
606
|
-
ack
|
|
607
|
-
ack update --exclude "node_modules/**" --exclude "dist/**"
|
|
608
|
-
```
|
|
609
|
-
|
|
610
|
-
**Patterns:** `*` (any chars), `**` (recursive), `?` (single char), `[abc]`, `{a,b}`
|
|
611
|
-
**Restrictions:** No absolute paths, no path traversal (..), 1-500 chars
|
|
612
|
-
**Note:** User patterns are ADDED to default protected patterns
|
|
613
|
-
|
|
614
|
-
### Custom .claude Files & Skills Migration
|
|
615
|
-
|
|
616
|
-
**Custom File Preservation:**
|
|
617
|
-
The CLI automatically preserves your custom `.claude/` files during updates:
|
|
618
|
-
|
|
619
|
-
- Custom slash commands
|
|
620
|
-
- Personal workflows
|
|
621
|
-
- Project-specific configurations
|
|
622
|
-
- Any other custom files in `.claude/` directory
|
|
623
|
-
|
|
624
|
-
**Skills Directory Migration:**
|
|
625
|
-
Automatic migration when structure changes (flat → categorized):
|
|
626
|
-
|
|
627
|
-
- **Detection**: Manifest-based + heuristic fallback
|
|
628
|
-
- **Customizations**: SHA-256 hash comparison detects modifications
|
|
629
|
-
- **Safety**: Backup before migration, rollback on failure
|
|
630
|
-
- **Preservation**: All customizations preserved during migration
|
|
631
|
-
- **Interactive**: Prompts for confirmation (can skip in CI/CD)
|
|
632
|
-
|
|
633
|
-
**Example Migration:**
|
|
634
|
-
```
|
|
635
|
-
Before (flat):
|
|
636
|
-
.claude/skills/
|
|
637
|
-
├── gemini-vision/
|
|
638
|
-
├── postgresql-psql/
|
|
639
|
-
└── cloudflare-dns/
|
|
640
|
-
|
|
641
|
-
After (categorized):
|
|
642
|
-
.claude/skills/
|
|
643
|
-
├── ai-multimodal/
|
|
644
|
-
│ └── gemini-vision/
|
|
645
|
-
├── databases/
|
|
646
|
-
│ └── postgresql-psql/
|
|
647
|
-
└── devops/
|
|
648
|
-
└── cloudflare-dns/
|
|
162
|
+
ack init --exclude "*.log" --exclude "vendor/**"
|
|
649
163
|
```
|
|
650
164
|
|
|
651
|
-
Customizations in any skill are detected and preserved automatically.
|
|
652
|
-
|
|
653
165
|
## Development
|
|
654
166
|
|
|
655
|
-
See [Development Guide](./docs/codebase-summary.md) for:
|
|
656
|
-
- Project structure (modular domain-driven architecture)
|
|
657
|
-
- Build & compilation (`bun run build`, `bun run compile`)
|
|
658
|
-
- Testing & type checking
|
|
659
|
-
- Code standards & linting
|
|
660
|
-
|
|
661
|
-
**Architecture Highlights:**
|
|
662
|
-
- **Modular design**: 122 focused modules (target: <100 lines each)
|
|
663
|
-
- **Facade pattern**: Each domain exposes public API via facade
|
|
664
|
-
- **Phase handlers**: Complex commands use orchestrator + phase handlers
|
|
665
|
-
- **Self-documenting names**: kebab-case file names describe purpose
|
|
666
|
-
|
|
667
|
-
**Quick Start:**
|
|
668
167
|
```bash
|
|
168
|
+
git clone https://github.com/chiendt1108/ack-cli.git
|
|
169
|
+
cd ack-cli
|
|
669
170
|
bun install
|
|
670
|
-
bun run dev new --kit engineer
|
|
171
|
+
bun run dev new --kit engineer # run locally without installing globally
|
|
671
172
|
bun test
|
|
672
|
-
|
|
673
|
-
bun run test:integration
|
|
173
|
+
bun run ci:local # full quality gate (matches GitHub Actions)
|
|
674
174
|
```
|
|
675
175
|
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
Playwright E2E tests cover the `ack migrate` dashboard (3 scenarios). Tests run against the local dev server and use API mocking — no real filesystem state is modified.
|
|
176
|
+
See [`CLAUDE.md`](./CLAUDE.md) for the contributor guide, [`docs/codebase-summary.md`](./docs/codebase-summary.md) for architecture, and [`docs/code-standards.md`](./docs/code-standards.md) for conventions.
|
|
679
177
|
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
```bash
|
|
683
|
-
# One-time browser setup (if not already installed)
|
|
684
|
-
./node_modules/.bin/playwright install chromium
|
|
178
|
+
## Documentation
|
|
685
179
|
|
|
686
|
-
|
|
687
|
-
|
|
180
|
+
| Doc | Topic |
|
|
181
|
+
|-----|-------|
|
|
182
|
+
| [`docs/cli-reference.md`](./docs/cli-reference.md) | Full command + flag reference |
|
|
183
|
+
| [`docs/codebase-summary.md`](./docs/codebase-summary.md) | Architecture & module map |
|
|
184
|
+
| [`docs/system-architecture.md`](./docs/system-architecture.md) | Design diagrams, data flow |
|
|
185
|
+
| [`docs/reconciliation-architecture.md`](./docs/reconciliation-architecture.md) | `ack migrate` internals |
|
|
186
|
+
| [`docs/deployment-guide.md`](./docs/deployment-guide.md) | Release & publishing |
|
|
187
|
+
| [`docs/project-roadmap.md`](./docs/project-roadmap.md) | Roadmap & release timeline |
|
|
688
188
|
|
|
689
|
-
|
|
690
|
-
bun run test:e2e:ui
|
|
691
|
-
```
|
|
189
|
+
## Troubleshooting
|
|
692
190
|
|
|
693
|
-
|
|
191
|
+
| Symptom | First step |
|
|
192
|
+
|---------|------------|
|
|
193
|
+
| `Access denied` / kit download fails | `ack doctor --fix` |
|
|
194
|
+
| `GitHub CLI not authenticated` | `gh auth login` (web browser flow) |
|
|
195
|
+
| Module / dependency errors | `ack doctor --fix` |
|
|
196
|
+
| Want a sharable diagnostic | `ack doctor --report` |
|
|
197
|
+
| Skill not appearing after install | Check `~/.ack/projects.json`, then `ack config` |
|
|
694
198
|
|
|
695
199
|
## FAQ
|
|
696
200
|
|
|
697
|
-
**
|
|
698
|
-
A: Yes, GitHub CLI is required. AckKit uses it exclusively for authentication with private repositories.
|
|
201
|
+
**Do I need GitHub CLI?** Yes — `gh` is the only supported auth path; tokens are stored in your OS keychain.
|
|
699
202
|
|
|
700
|
-
**
|
|
701
|
-
A: Run `gh auth login`, select 'Login with a web browser', complete OAuth in browser. Do NOT use 'Paste an authentication token'.
|
|
203
|
+
**Can I use a Personal Access Token?** No. PAT-paste auth was removed. Use `gh auth login` with the web browser flow.
|
|
702
204
|
|
|
703
|
-
**
|
|
704
|
-
A: Accept GitHub repo invitation, re-run `gh auth login` with web browser login, wait 2-5min for permissions.
|
|
205
|
+
**Will updating overwrite my custom skills/commands?** No. Custom files in `.claude/` are detected (SHA-256 hash comparison) and preserved. Use `--fresh` if you want a clean reinstall.
|
|
705
206
|
|
|
706
|
-
**
|
|
707
|
-
A: Run `gh auth login` and select 'Login with a web browser' (NOT 'Paste token'). PAT authentication is no longer supported.
|
|
207
|
+
**Where is my config stored?** `~/.ack/config.json`, with the GitHub token in the OS keychain. The projects registry is at `~/.ack/projects.json`.
|
|
708
208
|
|
|
709
|
-
**
|
|
710
|
-
A: Yes. GitHub CLI manages tokens securely via OAuth, stored encrypted in OS keychain.
|
|
209
|
+
**How do I get help?** `ack doctor --report` produces a shareable gist URL. Or open an issue at [github.com/chiendt1108/ack-cli/issues](https://github.com/chiendt1108/ack-cli/issues).
|
|
711
210
|
|
|
712
211
|
## License
|
|
713
212
|
|
|
714
|
-
MIT
|
|
213
|
+
[MIT](./LICENSE)
|