Optional DeepWorkPlan addon that gives a repository a reproducible dev container through devcontainer-kit (the `dck` command, DailybotHQ/devcontainer-kit pinned at v0.1.4, interface 1) - a vendor-neutral thin integrator that detects the kit with `dck doctor --json`, offers `dck init` (which reconciles an existing layout and never clobbers it), maps the detected stack to a base-image flavour and the opt-in layers (agents through coding-agents-kit, the editor, Dailybot only when that addon asks), optionally registers the container as a Herdr machine, and validates the result. Opt-in, never required, never a conformance gate.
Recursos
3Instal·la
npx skillscat add dailybothq/deepworkplan-vim/deepworkplan-addon-devcontainer Instal·la des del registre de SkillsCat.
DeepWorkPlan — Devcontainer Addon
Give the repository a reproducible, isolated dev container that any human
or AI agent can open the same way — from a terminal (dck up), from VS Code /
Cursor ("Reopen in Container"), or with the devcontainer CLI. This is an
opt-in addon, never required for a repo to be AI-first and never a
conformance gate.
This addon is a thin integrator of devcontainer-kit
(https://github.com/DailybotHQ/devcontainer-kit, MIT, works without DWP).
The layout, the pinned base images, the entrypoint library, the launcher,
SSH and Herdr registration are the kit's; this addon decides whether to
offer it, which options fit the repository, and how to validate the
result. It carries no company-specific network, volume or file name.
| Pin | Value |
|---|---|
| Product | DailybotHQ/devcontainer-kit |
| Tag | v0.1.4 |
| Interface | 1 (dck doctor --json → "interface": 1) |
| Registry key | devcontainer (.dwp/config.json → addons.devcontainer) |
| Abilities | none (it provides an environment, not a delegation transport) |
Read these first (all relative inside the skill)
- `SPEC.md` — the normative contract.
- `templates/INTEGRATION.md` — reasoning aid:
stack → flavour and layers, the Herdr container profile, validation.
When this runs
onboard Phase 7b offers it when the repository benefits from an isolated,
reproducible environment (services, a pinned toolchain, agents that should
not touch the host); or on direct invocation. No other flow requires it.
Trust boundary (write scope)
allowed-tools includes write-capable Edit, Write, and Bash:
- Before consent: read-only.
command -v dck docker,dck doctor --json,
and reading the repository's existing.devcontainer/anddocker/files. - Writes (only after explicit acceptance): the kit install (pinned tagged
clone +install.sh),dck initin the repository — which shows a plan and
diffs and changes an existing file only with consent, after a timestamped
backup — theaddons.devcontainerregistry entry, and the validation record. - It MUST NOT: pass
dck init --yeswithout the developer's explicit
acceptance of the shown diff; addprivileged,cap_add, host namespaces,
the Docker socket or host bind mounts; publish a port beyond loopback unless
the repository's own config says so; pass--truston the developer's
behalf; copy a private key into an image or container; rundck herdr add
(it edits~/.ssh/config) without its own explicit approval; or write any
secret value (.envfiles are created0600bydck setupand stay
gitignored).
The flow
Step 0 — Detect (read-only)
command -v dck → dck doctor --json: interface must be 1 (otherwise one
warning and "not available"); read runtime (Docker/OrbStack/colima and
Compose), repo (config validity) and drift. Note an existing.devcontainer/ or docker/ layout — it will be reconciled, never
replaced silently.
Step 1 — Offer (never impose)
Explain what it adds (one reproducible environment, loopback-only ports,
agent forwarding instead of key copies, optional coding agents and editor
inside) and what it costs (Docker, an image pull). Declining is complete.
Step 2 — Install the kit (pinned; point-don't-run by default)
git clone --branch v0.1.4 https://github.com/DailybotHQ/devcontainer-kit
./devcontainer-kit/install.shStep 3 — Render the layout (reconcile, never clobber)
Reason the options from the real stack (templates/INTEGRATION.md), thendck init --dry-run … to show the plan and diffs; only after acceptance rundck init … (the kit asks per changed file on a terminal, or --yes once the
person accepted the shown diffs). Then dck setup && dck up.
Step 4 — Record and validate
python3 ../../shared/config.py enable devcontainer --version v0.1.4 --repo <repo>,
then dck doctor --json (runtime, repo config, layers, ssh, drift) anddck exec -- <the repo's real test command> — every result recorded, none
blocking.
Plan gates in the container (F-21). When the repository's real gates
run inside the container, a plan declares dck inscope.allowed_command_classes and writes each gate check asdck exec -- <command> (a compound command: dck exec -- bash -c '…').ledger.py gate executes the wrapper itself, so the evidence staysobserved; validate-contract refuses a check whose wrapper is not
declared. Without the container the methodology is unchanged — the same
plan simply declares the host command instead.
Failure-mode guardrails
- Never required, never blocking. No Docker, no kit, an unknown
interface, a declined diff: record and continue on the host. - Reconcile, don't clobber. Only
dck init's consented, backed-up
changes touch existing files; nothing outside its managed blocks moves. - Vendor-neutral. No company network, volume, CLI or profile file is a
requirement; the Dailybot CLI layer appears only when thedailybotaddon
asks for it.
Validation checklist (component 4 — mirrored from SPEC §8)
SKILL.md,SPEC.md,addon.json,templates/INTEGRATION.mdexist; the
descriptor pinsDailybotHQ/devcontainer-kitv0.1.4, interface 1.dck doctor --jsonreports interface 1 and a valid repo config.- Existing files were changed only through consented
dck initdiffs, each
with a*.dck-bak-*backup. - Ports bind loopback; no privileged options; no key material in the image.
- The repository's real test command runs inside the container (or the
failure is recorded).