Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

51 Commits

Folders and files

Repository files navigation

Dev Container Features

Custom dev container Features for enhancing development containers, hosted on GitHub Container Registry. This repository follows the dev container Feature distribution specification.

Available Features

Feature Description
Oh My Posh Prompt theme engine for bash, zsh, and fish
Microsoft Security DevOps CLI guardian CLI for running security analysis tools without .NET
Copilot CLI Persistence Persist GitHub Copilot CLI settings & chat history across rebuilds
Atlassian CLI for Jira & Confluence acli for working with Jira and Confluence Cloud
Atlassian Teamwork Graph CLI twg for Jira, Confluence, Bitbucket, JSM and the Teamwork Graph, built for AI agents
Package Source Overrides Point npm, pnpm, Yarn, Corepack, pip, uv, and NuGet at internal override feeds
GitLab CI Local Run GitLab CI/CD pipelines locally with gitlab-ci-local
Prompty Dumpty dumpty CLI for managing prompty files

Each feature's full option reference lives in its src/<feature>/README.md.

Oh My Posh

Installs Oh My Posh, a prompt theme engine for customizing your shell prompt across bash, zsh, and fish.

Usage:

{
  "features": {
    "ghcr.io/rosstaco/devcontainer-features/ohmyposh:1": {
      "version": "latest",
      "theme": "jandedobbeleer",
      "installPath": "/usr/local/bin",
      "shells": "bash,zsh"
    }
  }
}

Options:

  • version - Oh My Posh version to install (default: "latest")
  • theme - Built-in theme name to use (default: "jandedobbeleer")
  • installPath - Installation directory (default: "/usr/local/bin")
  • shells - Comma-separated list of shells to configure: bash, zsh, fish (default: "bash,zsh")

Custom Themes:

To use a custom theme file from your host machine, add a mount in your devcontainer.json:

{
  "features": {
    "ghcr.io/rosstaco/devcontainer-features/ohmyposh:1": {}
  },
  "mounts": [
    "source=${localEnv:HOME}/path/to/theme.json,target=/home/vscode/.ohmyposh.json,type=bind"
  ]
}

The feature creates a placeholder file at ~/.ohmyposh.json during installation. If you mount a custom theme to this location, it will be used automatically. Otherwise, the built-in theme specified in the options will be used.

Microsoft Security DevOps CLI

Installs Microsoft Security DevOps CLI (guardian command) for running security analysis tools without requiring .NET installation.

Usage:

{
  "features": {
    "ghcr.io/rosstaco/devcontainer-features/microsoft-security-devops-cli:1": {
      "version": "latest"
    }
  }
}

Options:

  • version - Version to install (default: "latest"). Use "latest" or a specific version like "0.215.0"
  • installPath - Installation directory (default: "/usr/local/bin/guardian")

Supported Architectures:

  • linux-x64 (x86_64)
  • linux-arm64 (aarch64)

Running Guardian:

After installation, the guardian command is available in your PATH. To initialize guardian in your repository:

guardian init --force

Note: guardian init requires a git repository, so it must be run manually after the container starts (not during feature installation).

Copilot CLI Persistence

Persists GitHub Copilot CLI settings and chat history across container rebuilds using a named Docker volume.

Usage:

{
  "features": {
    "ghcr.io/devcontainers/features/copilot-cli:1": {},
    "ghcr.io/rosstaco/devcontainer-features/copilot-persistence:1": {}
  }
}

How It Works:

  • Mounts a named volume (scoped per dev container) to /copilot-data
  • Creates a symlink from ~/.copilot → /copilot-data
  • Sets the COPILOT_DATA_DIR environment variable to /copilot-data

What Persists:

  • Chat history and sessions
  • CLI configuration (model preferences, settings)
  • Command history
  • Trusted folders

Atlassian CLI for Jira & Confluence

Installs the Atlassian CLI (acli) for working with Jira and Confluence Cloud from the command line.

Usage:

{
  "features": {
    "ghcr.io/rosstaco/devcontainer-features/atlassian-jira-confluence-cli:1": {
      "version": "latest"
    }
  }
}

Options:

  • version - Version of acli to install (default: "latest"). Use "latest" or a specific version like "1.3.21"
  • installPath - Directory where the acli binary will be installed (default: "/usr/local/bin")
  • configureBrowser - Install an xdg-open shim that prefers $BROWSER so acli auth login opens on your host (default: true)

Supported Architectures:

  • amd64 (x86_64)
  • arm64 (aarch64)

Getting Started:

After the container starts, authenticate once and then use the Jira and Confluence commands:

acli auth login
acli jira project list

Browser Login:

acli auth login opens an OAuth page via xdg-open, which doesn't honor $BROWSER inside a dev container. With configureBrowser enabled (the default), the feature installs a small xdg-open shim at /usr/local/bin/xdg-open that prefers $BROWSER (such as the VS Code browser helper) so the login page opens on your host machine. Set configureBrowser to false to skip it.

Atlassian Teamwork Graph CLI

Installs the Atlassian Teamwork Graph CLI (twg) for working with Jira, Confluence, JSM, Bitbucket, Loom, Trello and the Teamwork Graph, from the terminal or from AI coding agents. It complements acli, and the two Features can be used together.

Usage:

{
  "features": {
    "ghcr.io/rosstaco/devcontainer-features/atlassian-teamwork-graph-cli:1": {}
  },
  "remoteEnv": {
    "TWG_TOKEN": "${localEnv:TWG_TOKEN}",
    "TWG_USER": "${localEnv:TWG_USER}",
    "TWG_SITE": "${localEnv:TWG_SITE}"
  }
}

The remoteEnv block is optional. Use it to pass credentials from your host instead of running twg login.

Options:

  • version - Version of twg to install (default: "latest"). Use "latest" or a specific version like "1.3.5"
  • installSkills - Install the TWG agent skills into ~/.agents/skills and ~/.claude/skills (default: false)
  • enableTelemetry - Allow twg telemetry. When false, DO_NOT_TRACK=1 and TWG_DISABLE_3P_DATA_TELEMETRY=1 are exported (default: false)
  • persistAuth - Keep ~/.config/twg on a named volume so twg login survives rebuilds (default: true)
  • configureBrowser - Install an xdg-open shim that prefers $BROWSER so twg login opens on your host (default: true)

How It Works:

  • Downloads the official binary from Atlassian and checks its SHA-256 checksum. It skips the interactive installer, which asks for consent and login during the build.
  • Installs to ~/.local/bin/twg for the remote user, with a /usr/local/bin/twg symlink
  • Run twg login and then twg doctor once the container starts

Package Source Overrides

Points npm, pnpm, Yarn, Corepack, pip, uv, and NuGet at internal override package sources (a pull-through proxy such as Artifactory, Nexus, or Azure Artifacts) instead of public feeds. It writes system- and user-scoped configuration so that Features installed after it, and your projects, resolve packages through the proxy.

Usage:

{
  "features": {
    "ghcr.io/rosstaco/devcontainer-features/package-source-overrides:1": {
      "npmRegistry": "https://artifactory.example.com/artifactory/api/npm/npm-remote/",
      "pipIndexUrl": "https://artifactory.example.com/artifactory/api/pypi/pypi-remote/simple",
      "nugetSource": "https://artifactory.example.com/artifactory/api/nuget/v3/index.json"
    },
    "ghcr.io/devcontainers/features/node:1": {},
    "ghcr.io/devcontainers/features/python:1": {}
  },
  "overrideFeatureInstallOrder": [
    "ghcr.io/rosstaco/devcontainer-features/package-source-overrides"
  ]
}

Options:

  • npmRegistry - registry URL for npm, pnpm, Yarn (Classic and Berry), and Corepack (default: "")
  • pipIndexUrl - PyPI index URL for pip and uv that replaces the default index (default: "")
  • uvPythonInstallMirror - mirror of the python-build-standalone releases for uv-managed Python downloads (default: "")
  • nugetSource - NuGet v3 source URL that replaces nuget.org (default: "")
  • nugetSourceName - key/name for the configured NuGet source (default: "override")
  • scope - where config is written: system, user, or both (default: "both")
  • strictSsl - set to false for self-signed / HTTP internal proxies (default: true)
  • bashEnvHook - opt-in BASH_ENV hook so later Features' install scripts see env-var-only overrides such as COREPACK_NPM_REGISTRY (default: false)

Install Order:

Features install in rounds, and within a round the spec sorts them alphabetically by registry path, so ghcr.io/devcontainers/* Features install before this one unless you change the order. Per repository, list it first in overrideFeatureInstallOrder (as above). Machine-wide via VS Code's dev.containers.defaultFeatures there is no global override order; add ghcr.io/devcontainers/features/common-utils:2 to the defaults too, because the official Features declare installsAfter: common-utils and therefore move after this Feature. See the Feature docs for details and caveats. Providing no URLs makes it a safe no-op.

GitLab CI Local

Installs gitlab-ci-local so you can run GitLab CI/CD pipelines locally (as a shell or docker executor) without pushing to test them.

Usage:

{
  "features": {
    "ghcr.io/rosstaco/devcontainer-features/gitlab-ci-local:1": {
      "version": "latest"
    }
  }
}

Options:

  • version - Version to install (default: "latest"). Use "latest" or a specific version like "4.67.0"

Supported Architectures:

  • amd64 (x86_64)
  • arm64 (aarch64)

Getting Started:

From a project containing a .gitlab-ci.yml:

gitlab-ci-local                    # run the default pipeline
gitlab-ci-local --job <job-name>   # run a specific job

Prompty Dumpty

Installs prompty-dumpty, a CLI (dumpty) for managing prompty files.

Usage:

{
  "features": {
    "ghcr.io/rosstaco/devcontainer-features/prompty-dumpty:1": {
      "version": "latest"
    }
  }
}

Options:

  • version - Version to install (default: "latest"). Use "latest" or a specific version like "0.6.2"

Getting Started:

dumpty --help
dumpty --version

Prompty Dumpty is installed system-wide with pip3 --break-system-packages (appropriate for containers) and assumes Python 3 is present in the base image.

Publishing

This repository uses a GitHub Action workflow that publishes each Feature to GHCR (GitHub Container Registry).

Features in this repository are referenced with:

ghcr.io/rosstaco/devcontainer-features/<feature>:1

Marking Feature Public

By default, GHCR packages are marked as private. To make them publicly accessible, navigate to the Feature's package settings page in GHCR and set the visibility to public:

https://github.com/users/rosstaco/packages/container/devcontainer-features%2F<featureName>/settings

Adding Features to the Index

To add Features to the public index:

This allows tools like VS Code Dev Containers and GitHub Codespaces to surface your Features in their creation UI.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages