acker-dacker
v0.1.0
Published
Create deterministic, privacy-aware repository ZIPs for AI handoffs and code review.
Readme
Acker Dacker
A Bun CLI for making deterministic repository ZIPs for AI handoffs and code review.
Requirements
- Bun 1.0 or newer
- Git only for
--git-handoff
Use it
Run the published CLI without a global install:
bunx acker-dacker <repository-path> [options]Examples:
# Privacy-oriented default pack
bunx acker-dacker ../my-repository
# Include only Markdown and TypeScript files
bunx acker-dacker ../my-repository --filter "*.md" --filter "*.ts"
# Include an additional local directory
bunx acker-dacker ../my-repository --include ../shared-fixtures
# Capture the Git worktree, including eligible untracked files
bunx acker-dacker ../my-repository --git-handoff --output ./handoff.zip
# Create the minimal Rust Stage 3 handoff and a content-free report
bunx acker-dacker ../codex --git-handoff --profile rust-stage3 \
--output ./rust-stage3.zip --report ./rust-stage3.jsonIf <repository-path> is omitted, the current directory is used. Default-mode output is ./<repository-name>-pack.zip unless --output is supplied.
Run bunx acker-dacker --help for the current usage text. The options are:
| Option | Description |
| --- | --- |
| --git-handoff | Use Git's tracked plus eligible-untracked file set and preserve modes and safe symlinks. |
| --profile <name> | Select a Git handoff profile. Currently rust-stage3; requires --git-handoff. |
| --filter, -f <pattern> | Include only matching paths or file names. Repeatable. |
| --include, -i <path> | Add a local directory or repository dependency in default mode. Repeatable. |
| --exclude <path\|glob> | Exclude a root-relative path or glob in Git handoff mode. Repeatable. |
| --output, -o <path> | Set the ZIP output path. |
| --report <path> | Write a content-free Git handoff JSON report. Requires --git-handoff. |
| --help, -h | Show help. |
Modes and safety
Default mode recursively discovers local file: and link: package dependencies, follows root and nested .gitignore files, and omits common generated output, Xcode build artifacts, and sensitive file names. It also supports explicit --include paths.
Git handoff mode asks Git for tracked files and standard-ignore-aware untracked files. Tracked files remain eligible by design; sensitive and generated files are safety-filtered only when untracked. Absolute, escaping, dangling, and cyclic symlinks are rejected. --exclude, --filter, --profile, and --report are applied as documented above.
Archives are deterministic: file ordering, ZIP timestamps, and compression choices do not depend on the current clock.
Development
bun install
bun run test
bun run typecheck
bun run check
bun run buildThe CLI entrypoint is index.ts. Workflow orchestration lives in src/cli.ts; argument parsing is in src/cli-options.ts; default discovery and policy are in src/repository-pack.ts, src/gitignore.ts, and src/file-policy.ts; Git handoff selection and staging are in src/git-handoff-selection.ts and src/git-handoff.ts; deterministic ZIP writing is in src/zip.ts.
To inspect the npm package before publishing:
npm pack --dry-runThe package exposes the acker-dacker bin and intentionally ships only index.ts and src/ as application files, plus npm's standard metadata files.
