Sign inSign up

docker/sbx-kit-aidlc-claude:latest

Multi-platform
Manifest digest

sha256:24130250f0aaa7b297c3caf2de89daf6aa1a528698b72d6ce28db8edb7749197

Last pushed

9 days by cdupuis

Type

Sandbox Kit

Manifest digest

sha256:24130250f0aaa7b297c3caf2de89daf6aa1a528698b72d6ce28db8edb7749197

yaml
schemaVersion: "3"
displayName: AI-DLC Quick Start
description: Starter Kit for AWS AI-DLC — installs a pinned Bun, clones the latest aidlc-workflows main commit for a fresh project or the commit that project already recorded, and copies its Claude harness into the workspace, merging its settings.json keys and .gitignore rules into the files a project already has.
version: 1.0.0
kind: mixin
requires:
    - claude-bedrock
capabilities:
    - type: com.docker.sandbox/network-policy@1
      config:
        install:
            allow:
                - github.com
        runtime:
            allow:
                - github.com
                - archive.ubuntu.com
                - security.ubuntu.com
                - ports.ubuntu.com
                - download.docker.com
    - type: com.docker.sandbox/lifecycle@1
      config:
        install:
            - command: |
                set -eu
                AIDLC_REPO=/home/agent/aidlc-workflows
                if [ -d "$AIDLC_REPO/.git" ] && git -C "$AIDLC_REPO" rev-parse --git-dir >/dev/null 2>&1; then
                  exit 0
                fi
                rm -rf "$AIDLC_REPO"
                git clone --branch main https://github.com/awslabs/aidlc-workflows.git "$AIDLC_REPO"
              description: Clone the latest aidlc-workflows main branch into ~/aidlc-workflows before Claude launches
              env:
                - HTTP_PROXY
                - HTTPS_PROXY
              user: "1000"
        startup:
            - command:
                - sh
                - -c
                - |
                  set -eu
                  AIDLC_REPO=/home/agent/aidlc-workflows
                  PIN_FILE="$WORKSPACE_DIR/aidlc/.aidlc-workflows-version"
                  PINNED_SHA=

                  if [ -f "$PIN_FILE" ]; then
                    PINNED_SHA=$(cat "$PIN_FILE")
                    case "$PINNED_SHA" in
                      *[!0-9a-fA-F]*)
                        echo "Invalid AI-DLC pin in $PIN_FILE: expected a full 40-character commit SHA" >&2
                        exit 1
                        ;;
                    esac
                    if [ "${#PINNED_SHA}" -ne 40 ]; then
                      echo "Invalid AI-DLC pin in $PIN_FILE: expected a full 40-character commit SHA" >&2
                      exit 1
                    fi
                  fi

                  if [ ! -d "$AIDLC_REPO/.git" ] || ! git -C "$AIDLC_REPO" rev-parse --git-dir >/dev/null 2>&1; then
                    echo "AI-DLC clone is missing or invalid at $AIDLC_REPO; the pre-launch install step did not complete" >&2
                    exit 1
                  fi

                  if [ -n "$PINNED_SHA" ]; then
                    if ! git -C "$AIDLC_REPO" cat-file -e "$PINNED_SHA^{commit}" 2>/dev/null; then
                      git -C "$AIDLC_REPO" fetch origin "$PINNED_SHA"
                    fi
                    git -C "$AIDLC_REPO" checkout --detach "$PINNED_SHA"
                  else
                    PINNED_SHA=$(git -C "$AIDLC_REPO" rev-parse HEAD)
                    mkdir -p "$WORKSPACE_DIR/aidlc"
                    PIN_TMP=$(mktemp "$WORKSPACE_DIR/aidlc/.aidlc-workflows-version.tmp.XXXXXX")
                    printf '%s\n' "$PINNED_SHA" > "$PIN_TMP"
                    mv "$PIN_TMP" "$PIN_FILE"
                  fi

                  SRC=$AIDLC_REPO/dist/claude
                  bun /home/agent/.local/lib/aidlc-merge-settings.ts \
                    "$SRC/.claude/settings.json" "$WORKSPACE_DIR/.claude/settings.json"
                  bun /home/agent/.local/lib/aidlc-merge-gitignore.ts \
                    "$SRC/.gitignore" "$WORKSPACE_DIR/.gitignore"
                  cp -R --update=none "$SRC/.claude/." "$WORKSPACE_DIR/.claude/"
                  cp -R --update=none "$SRC/aidlc/."   "$WORKSPACE_DIR/aidlc/"
              description: Check out aidlc/.aidlc-workflows-version if the project has recorded a pin, otherwise record the pre-launch main clone's SHA, then reconcile .claude/settings.json (merging the AI-DLC hooks, env, and models into any file the project already has) and .gitignore (merging the AI-DLC commit/ignore rules into any file the project already has), then copy the rest of the Claude harness into $WORKSPACE_DIR
              env:
                - WORKSPACE_DIR
                - HTTP_PROXY
                - HTTPS_PROXY
              user: "1000"
    - type: com.docker.sandbox/agent-context@1
      config:
        contentFile: /usr/share/sandbox/kit/aidlc-claude/aidlc-claude-context.md