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
4 changes: 2 additions & 2 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ pnpm typecheck
## Project Structure

Each repository follows a consistent structure:
- `src/` or `helpers/` - Source code
- `tests/` - Test files
- `features/` - Features source code
- `test/` - Test files
- `build/` - Build output (generated)
- `.github/` - GitHub configuration
- `docs/` - Documentation
Expand Down
4 changes: 2 additions & 2 deletions .github/DEVELOPMENT.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# DevContainer Features Development

## Structure
- `src/` - Contains the features
- `features/` - Contains the features
- `test/` - Contains test scripts for each feature
- `.github/workflows/` - CI/CD pipelines

## Development workflow
1. Create feature in `src/<feature-name>/`
1. Create feature in `features/<feature-name>/`
2. Add test script in `test/<feature-name>/`
3. Test locally with devcontainer CLI
4. Submit PR for review
Expand Down
93 changes: 77 additions & 16 deletions .github/agents.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,31 @@ This repository (`helpers4/devcontainer`) contains a collection of **DevContaine

```
devcontainer/
├── src/ # Features source code
│ ├── angular-dev/ # Angular development environment
├── features/ # Features source code
│ ├── essential-dev/ # Essential dev environment
│ │ ├── devcontainer-feature.json # Metadata and options
│ │ ├── install.sh # Installation script
│ │ └── README.md # Documentation
│ ├── typescript-dev/ # TypeScript/JavaScript development
│ │ ├── devcontainer-feature.json
│ │ ├── install.sh
│ │ └── README.md
│ ├── angular-dev/ # Angular development environment
│ │ ├── devcontainer-feature.json
│ │ ├── install.sh
│ │ └── README.md
│ ├── vite-plus/ # Vite development setup
│ │ ├── devcontainer-feature.json
│ │ ├── install.sh
│ │ └── README.md
│ ├── package-auto-install/ # Automatic package installation
│ │ ├── devcontainer-feature.json
│ │ ├── install.sh
│ │ └── README.md
│ ├── auto-header/ # Automatic file headers
│ │ ├── devcontainer-feature.json
│ │ ├── install.sh
│ │ └── README.md
│ ├── git-absorb/ # git-absorb feature
│ │ ├── devcontainer-feature.json
│ │ ├── install.sh
Expand All @@ -28,21 +48,54 @@ devcontainer/
│ ├── install.sh
│ └── README.md
├── test/ # Tests for each feature
│ ├── essential-dev/test.sh
│ ├── typescript-dev/test.sh
│ ├── angular-dev/test.sh
│ ├── vite-plus/test.sh
│ ├── package-auto-install/test.sh
│ ├── auto-header/test.sh
│ ├── git-absorb/test.sh
│ ├── local-mounts/test.sh
│ └── shell-history-per-project/test.sh
├── .github/
│ ├── agents.md # This file
│ └── copilot-instructions.md # Copilot instructions (empty)
│ ├── DEVELOPMENT.md # Development instructions
│ ├── CONTRIBUTING.md # Contributing guidelines
│ └── workflows/ # CI/CD workflows
├── LICENSE # AGPL-3.0 License
├── LOCAL_USAGE.md # Local usage documentation (empty)
└── README.md # Main documentation
├── README.md # Main documentation
└── AGENTS.md # Agent instructions (from helpers4 root)
```

## 🧩 Available Features

### 1. shell-history-per-project (v0.0.5)
### 1. essential-dev (v1.0.0)
**Description:** Core development environment with Git integration, GitHub Copilot, Markdown support, and essential editor enhancements.

**Features:**
- Git integration (history, graph visualization, PR support, conventional commits)
- GitHub Copilot AI assistance
- Complete Markdown support with preview and linting
- Editor enhancements (multi-cursor, code comparison, local history)
- File format support (YAML, JSON, CSV, XML, Makefile)
- Zero configuration needed

---

### 2. typescript-dev (v1.0.5)
**Description:** TypeScript/JavaScript development setup with indexing, import management, HTML/CSS intelligence, and web tools. Requires `essential-dev`.

**Features:**
- TypeScript with fast indexing and import management
- JavaScript editing with quick fixes and auto-imports
- HTML and CSS intelligence with auto-rename
- Automatic import/export management
- Code generation utilities (quicktype)
- **Dependency:** Requires `essential-dev` feature

---

### 3. shell-history-per-project (v1.0.2)
**Description:** Persists shell history per project with automatic detection of available shells.

| Option | Type | Default | Description |
Expand All @@ -59,7 +112,7 @@ devcontainer/

---

### 2. git-absorb (v0.0.2)
### 4. git-absorb (v1.0.2)
**Description:** Installs git-absorb, a tool to automatically absorb staged changes into their logical commits.

| Option | Type | Default | Description |
Expand All @@ -74,7 +127,7 @@ devcontainer/

---

### 3. local-mounts (v1.0.0)
### 5. local-mounts (v1.0.4)
**Description:** Mounts local Git, SSH, GPG, and npm configuration files into the devcontainer for seamless development authentication.

| Option | Type | Default | Description |
Expand All @@ -90,7 +143,7 @@ devcontainer/

---

### 4. angular-dev (v1.0.0)
### 6. angular-dev (v1.0.2)
**Description:** Angular-specific development environment with port forwarding, VS Code extensions, and CLI autocompletion.

| Option | Type | Default | Description |
Expand Down Expand Up @@ -127,10 +180,13 @@ Tests use:
```json
{
"features": {
"ghcr.io/helpers4/devcontainer/shell-history-per-project:0": {},
"ghcr.io/helpers4/devcontainer/git-absorb:0": {},
"ghcr.io/helpers4/devcontainer/essential-dev:1": {},
"ghcr.io/helpers4/devcontainer/typescript-dev:1": {},
"ghcr.io/helpers4/devcontainer/vite-plus:1": {},
"ghcr.io/helpers4/devcontainer/package-auto-install:1": {},
"ghcr.io/helpers4/devcontainer/git-absorb:1": {},
"ghcr.io/helpers4/devcontainer/local-mounts:1": {},
"ghcr.io/helpers4/devcontainer/angular-dev:1": {}
"ghcr.io/helpers4/devcontainer/shell-history-per-project:1": {}
}
}
```
Expand All @@ -139,10 +195,15 @@ Tests use:

```bash
# Test a specific feature
devcontainer features test --features shell-history-per-project
devcontainer features test --features essential-dev
devcontainer features test --features typescript-dev
devcontainer features test --features vite-plus
devcontainer features test --features package-auto-install
devcontainer features test --features git-absorb
devcontainer features test --features local-mounts
devcontainer features test --features shell-history-per-project
devcontainer features test --features angular-dev
devcontainer features test --features auto-header
```

## 📝 Notes for AI Agents
Expand Down Expand Up @@ -193,9 +254,9 @@ This project follows [Conventional Commits](https://www.conventionalcommits.org/
- **Never push for intermediate human review:** Do not push the branch for intermediate human review. Only push when the work is complete and ready for final review.

### Adding a New Feature
1. Create `src/<feature-name>/devcontainer-feature.json`
2. Create `src/<feature-name>/install.sh`
3. Create `src/<feature-name>/README.md`
1. Create `features/<feature-name>/devcontainer-feature.json`
2. Create `features/<feature-name>/install.sh`
3. Create `features/<feature-name>/README.md`
4. Create `test/<feature-name>/test.sh`
5. Update main `README.md`
6. Update this `agents.md` file
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,20 @@ on:
workflow_dispatch:
push:
tags:
- 'v*'
- "v*"

jobs:
deploy:
if: ${{ github.ref_type == 'tag'}}
runs-on: ubuntu-latest
permissions:
contents: write # Need write permission to create feature tags
contents: write # Need write permission to create feature tags
packages: write

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch full history for proper git operations
fetch-depth: 0 # Fetch full history for proper git operations

- name: Configure Git
run: |
Expand All @@ -35,7 +35,7 @@ jobs:
uses: devcontainers/action@v1
with:
publish-features: "true"
base-path-to-features: "./src"
base-path-to-features: "./features"
generate-docs: "true"

env:
Expand Down
9 changes: 9 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,14 @@ jobs:
strategy:
matrix:
include:
# essential-dev - works on any base image
- features: essential-dev
baseImage: debian:latest
- features: essential-dev
baseImage: ubuntu:latest
- features: essential-dev
baseImage: mcr.microsoft.com/devcontainers/base:ubuntu

# shell-history-per-project - works on any base image
- features: shell-history-per-project
baseImage: debian:latest
Expand Down Expand Up @@ -43,6 +51,7 @@ jobs:
baseImage: mcr.microsoft.com/devcontainers/typescript-node:20

# typescript-dev - requires VS Code (extensions only, no install.sh logic)
# Will automatically install essential-dev via installsAfter dependency
- features: typescript-dev
baseImage: mcr.microsoft.com/devcontainers/typescript-node:20

Expand Down
54 changes: 34 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Complete Vite+ toolchain setup with VS Code extensions (Oxc, Vitest), optimized
- Project setup helper command
- Supports all Vite-compatible frameworks

[📖 Documentation](./src/vite-plus/README.md)
[📖 Documentation](./features/vite-plus/README.md)

### package-auto-install

Expand All @@ -31,7 +31,7 @@ Automatically detects and runs npm/yarn/pnpm install in non-interactive mode aft
- Smart command selection (npm ci, pnpm --frozen-lockfile, yarn --immutable)
- Eliminates need for manual postCreateCommand

[📖 Documentation](./src/package-auto-install/README.md)
[📖 Documentation](./features/package-auto-install/README.md)

### angular-dev

Expand All @@ -43,7 +43,7 @@ Angular-specific development environment with VS Code extensions and CLI autocom
- Optional Angular CLI installation
- Ready-to-use Angular development setup

[📖 Documentation](./src/angular-dev/README.md)
[📖 Documentation](./features/angular-dev/README.md)

### shell-history-per-project

Expand All @@ -56,7 +56,7 @@ Persist shell history per project by automatically detecting and configuring all
- Team collaboration friendly
- Clean separation between personal and project commands

[📖 Documentation](./src/shell-history-per-project/README.md)
[📖 Documentation](./features/shell-history-per-project/README.md)

### git-absorb

Expand All @@ -69,7 +69,7 @@ Installs git-absorb, a tool that automatically absorbs staged changes into their
- Lightweight single binary installation
- Perfect for cleaning up commit history

[📖 Documentation](./src/git-absorb/README.md)
[📖 Documentation](./features/git-absorb/README.md)

### local-mounts

Expand All @@ -82,22 +82,34 @@ Mounts local Git, SSH, GPG, and npm configuration files into the devcontainer fo
- npm authentication for private registries
- Fixed SSH_AUTH_SOCK handling for devcontainer compatibility

[📖 Documentation](./src/local-mounts/README.md)
[📖 Documentation](./features/local-mounts/README.md)

### typescript-dev
### essential-dev

Complete TypeScript/JavaScript development setup with Git integration, AI assistance, Markdown support, and essential editor enhancements. Perfect base for all TypeScript/JavaScript projects.
Core development environment with Git integration, GitHub Copilot, Markdown support, and essential editor enhancements. Perfect base for all development projects.

**Key benefits:**
- Latest TypeScript with indexing and import management
- Git integration with history, graph visualization, and PR support
- GitHub Copilot for AI-powered code assistance
- Complete Markdown support with preview and linting
- Multi-cursor, code comparison, and local file history
- YAML, JSON, CSV file format support out-of-the-box
- File format support (YAML, JSON, CSV, XML, Makefile)
- Works out-of-the-box with zero configuration

[📖 Documentation](./src/typescript-dev/README.md)
[📖 Documentation](./features/essential-dev/README.md)

### typescript-dev

TypeScript/JavaScript development setup with indexing, import management, HTML/CSS intelligence, and web tools. Built on top of `essential-dev` for Git, Copilot, and editor enhancements.

**Key benefits:**
- Latest TypeScript with indexing and import management
- HTML and CSS intelligence with auto-rename
- Automatic import/export management and path aliases
- Web development ready with code generation utilities
- Requires `essential-dev` for core tools

[📖 Documentation](./features/typescript-dev/README.md)

### auto-header

Expand All @@ -111,7 +123,7 @@ Automatically configures file headers with customizable templates based on proje
- Works in VS Code with zero configuration needed after setup
- Perfect for maintaining consistent file headers across team projects

[📖 Documentation](./src/auto-header/README.md)
[📖 Documentation](./features/auto-header/README.md)

## Usage

Expand All @@ -120,6 +132,7 @@ Features from this repository are available via GitHub Container Registry. Refer
```json
{
"features": {
"ghcr.io/helpers4/devcontainer/essential-dev:1": {},
"ghcr.io/helpers4/devcontainer/vite-plus:1": {},
"ghcr.io/helpers4/devcontainer/package-auto-install:1": {},
"ghcr.io/helpers4/devcontainer/typescript-dev:1": {},
Expand All @@ -138,14 +151,15 @@ Features from this repository are available via GitHub Container Registry. Refer

| Feature | Description | Documentation |
|---------|-------------|---------------|
| [vuto-header](./src/auto-header) | Automatic file headers with customizable templates (simple or custom) | [README](./src/auto-header/README.md) |
| [aite-plus](./src/vite-plus) | Complete Vite+ toolchain with Oxc, Vitest, and VS Code integration | [README](./src/vite-plus/README.md) |
| [package-auto-install](./src/package-auto-install) | Automatic package installation with corepack support for Node 24+ | [README](./src/package-auto-install/README.md) |
| [typescript-dev](./src/typescript-dev) | Complete TypeScript/JavaScript dev environment with Git, AI, and Markdown support | [README](./src/typescript-dev/README.md) |
| [angular-dev](./src/angular-dev) | Angular development environment with extensions and CLI autocompletion | [README](./src/angular-dev/README.md) |
| [shell-history-per-project](./src/shell-history-per-project) | Per-project shell history persistence with multi-shell auto-detection | [README](./src/shell-history-per-project/README.md) |
| [git-absorb](./src/git-absorb) | Automatic absorption of staged changes into logical commits | [README](./src/git-absorb/README.md) |
| [local-mounts](./src/local-mounts) | Mount local Git, SSH, GPG, and npm config into devcontainer | [README](./src/local-mounts/README.md) |
| [essential-dev](./features/essential-dev) | Core dev environment with Git, Copilot, Markdown, and editor tools | [README](./features/essential-dev/README.md) |
| [vuto-header](./features/auto-header) | Automatic file headers with customizable templates (simple or custom) | [README](./features/auto-header/README.md) |
| [aite-plus](./features/vite-plus) | Complete Vite+ toolchain with Oxc, Vitest, and VS Code integration | [README](./features/vite-plus/README.md) |
| [package-auto-install](./features/package-auto-install) | Automatic package installation with corepack support for Node 24+ | [README](./features/package-auto-install/README.md) |
| [typescript-dev](./features/typescript-dev) | TypeScript/JavaScript dev with indexing and web tools (requires essential-dev) | [README](./features/typescript-dev/README.md) |
| [angular-dev](./features/angular-dev) | Angular development environment with extensions and CLI autocompletion | [README](./features/angular-dev/README.md) |
| [shell-history-per-project](./features/shell-history-per-project) | Per-project shell history persistence with multi-shell auto-detection | [README](./features/shell-history-per-project/README.md) |
| [git-absorb](./features/git-absorb) | Automatic absorption of staged changes into logical commits | [README](./features/git-absorb/README.md) |
| [local-mounts](./features/local-mounts) | Mount local Git, SSH, GPG, and npm config into devcontainer | [README](./features/local-mounts/README.md) |

## Development

Expand Down
2 changes: 1 addition & 1 deletion src/angular-dev/devcontainer-feature.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "1.0.2",
"name": "Angular Development Environment",
"description": "Angular-specific development environment with port forwarding, VS Code extensions, and CLI autocompletion.",
"documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/angular-dev",
"documentationURL": "https://github.com/helpers4/devcontainer/tree/main/features/angular-dev",
"options": {
"installCli": {
"type": "boolean",
Expand Down
2 changes: 1 addition & 1 deletion src/auto-header/devcontainer-feature.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "1.0.1",
"name": "Automatic File Headers",
"description": "Automatically configures VS Code file headers with customizable templates based on project, license, company, and contributors information.",
"documentationURL": "https://github.com/helpers4/devcontainer/tree/main/src/auto-header",
"documentationURL": "https://github.com/helpers4/devcontainer/tree/main/features/auto-header",
"options": {
"headerType": {
"type": "string",
Expand Down
Loading
Loading