Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .devcontainer/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
- **`/ship`** — Combined commit/push/PR command with full code review, commit message approval, and AskUserQuestion confirmation before PR creation; optionally links to tickets if context exists
- **`/pr:review`** — Review any PR by number/URL or auto-detect from current branch; posts findings as PR comment with severity ratings; never approves or merges

#### Features
- **devcontainer-bridge (dbr)** — Ports opened inside the container are now automatically discovered and forwarded to the host, even outside VS Code. Requires `dbr host-daemon` running on the host. See [devcontainer-bridge](https://github.com/bradleybeddoes/devcontainer-bridge)

### Changed

#### Skill Engine: Auto-Suggestion
Expand Down
12 changes: 12 additions & 0 deletions .devcontainer/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ git worktree add /workspaces/projects/.worktrees/<branch-name> -b <branch>
| `agent-browser` | Headless Chromium (Playwright-based) |
| `check-setup` | Verify CodeForge setup health |
| `claude-dashboard` | Session analytics dashboard (port 7847) |
| `dbr` | Dynamic port forwarding (devcontainer-bridge) |
| `cc-tools` | List all installed tools with versions |

## Plugins
Expand Down Expand Up @@ -175,3 +176,14 @@ Labels are `custom-text` widgets with `merge: "no-padding"` so they fuse visuall
## Features

Custom features in `./features/` follow the [devcontainer feature spec](https://containers.dev/implementors/features/). Every local feature supports `"version": "none"` to skip installation. Claude Code is installed as a native binary via `./features/claude-code-native` (uses Anthropic's official installer at `https://claude.ai/install.sh`).

## Port Forwarding

Two mechanisms handle port access:

| Mechanism | When Active | Dynamic Discovery |
|-----------|-------------|-------------------|
| `forwardPorts` (devcontainer.json) | VS Code / Codespaces only | No (static list; VS Code auto-detects separately) |
| devcontainer-bridge (`dbr`) | Any terminal client | Yes (polls `/proc/net/tcp`) |

`forwardPorts` is a no-op outside VS Code — the `devcontainer` CLI ignores it. `dbr` provides VS Code-independent dynamic port discovery via a reverse connection model (container→host). The container daemon auto-starts and is inert without the host daemon (`dbr host-daemon`). Both mechanisms coexist. See [devcontainer-bridge](https://github.com/bradleybeddoes/devcontainer-bridge).
9 changes: 6 additions & 3 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@
// npm-dependent features (agent-browser, ccusage, ccburn, claude-session-dashboard,
// biome, lsp-servers) must come after Node. uv-dependent features (ruff, claude-monitor) must
// come after uv. cargo-dependent features (ccms) must come after Rust.
// notify-hook is last (lightweight, no dependencies).
// notify-hook is second-to-last (lightweight, no dependencies).
// dbr (devcontainer-bridge) is last — standalone binary, no dependencies.
"overrideFeatureInstallOrder": [
"ghcr.io/devcontainers/features/node",
"ghcr.io/devcontainers/features/github-cli",
Expand Down Expand Up @@ -77,7 +78,8 @@
"./features/shellcheck",
"./features/hadolint",
"./features/biome",
"./features/notify-hook"
"./features/notify-hook",
"ghcr.io/bradleybeddoes/devcontainer-bridge/dbr"
],

"features": {
Expand Down Expand Up @@ -147,7 +149,8 @@
"./features/notify-hook": {
"enableBell": true,
"enableOsc": true
}
},
"ghcr.io/bradleybeddoes/devcontainer-bridge/dbr:0.2.0": {}
},

"forwardPorts": [7847],
Expand Down