Initialization

The cc-deck image init command scaffolds a build directory with everything you need to start building a custom image.

Usage

cc-deck image init <directory-name>

This creates a directory with:

my-image/
├── cc-deck-build.yaml          # The manifest (source of truth)
├── .gitignore                  # Ignores .build-context/ and Containerfile
└── .claude/
    ├── commands/               # AI-driven slash commands
    │   ├── cc-deck.build.md
    │   ├── cc-deck.extract.md
    │   ├── cc-deck.push.md
    │   └── cc-deck.settings.md
    └── scripts/                # Helper scripts
        ├── update-manifest.sh
        └── validate-manifest.sh

The Manifest

The generated cc-deck-build.yaml contains your image name and the default base image, with all other sections commented out as examples:

version: 1

image:
  name: my-image
  base: quay.io/cc-deck/cc-deck-base:latest
  # tag: latest

# tools:
#   - "Go compiler >= 1.22"
#   - "Python 3.12 with uv package manager"

# plugins:
#   - name: sdd
#     source: marketplace

You populate the manifest using the Claude Code commands or by editing it directly.

Flags

--force (-f)

Overwrite an existing build directory. Without this flag, init refuses to overwrite if cc-deck-build.yaml already exists.

Next Steps

After initialization, open the directory in Claude Code:

cd my-image
claude

Then use the slash commands:

  1. /cc-deck.extract to analyze your repositories

  2. /cc-deck.settings to select local configuration

  3. /cc-deck.build to generate the Containerfile and build