Skip to main content

Team Setup

Set up groundctl for your engineering team in 10 minutes. By the end, every developer can sync to the team standard with a single command.

1. Create the Team Standard

Start by initializing in your shared repo:

ground init

Edit .ground.yaml to define your team's requirements:

name: acme-engineering
description: Acme Corp standard dev environment
tools:
- name: node
version: ">=20.0.0"
severity: required
- name: python
version: ">=3.11"
severity: required
- name: docker
version: ">=24.0.0"
severity: required
- name: terraform
version: "^1.6"
severity: recommended
- name: gh
version: ">=2.0.0"
severity: recommended

Severity Levels

  • required - Missing or wrong version is an error (exit code 2)
  • recommended - Missing or wrong version is a warning (exit code 1)

Version Constraints

SyntaxMeaningExample
>=1.2.0At least this version>=20.0.0
^1.2.0Compatible (same major)^3.11 matches 3.11-3.x
~1.2.0Patch-level changes only~1.6.0 matches 1.6.x
*Any versionAccept anything installed

2. Share with the Team

Commit .ground.yaml to your repo:

git add .ground.yaml
git commit -m "Add team environment standard"
git push

Team members pull the standard:

# From a git repo
ground pull github.com/acme/groundfile

# From a URL
ground pull https://raw.githubusercontent.com/acme/repo/main/.ground.yaml

3. Use Profiles

Developers can maintain multiple profiles for different projects:

# Save the current config as a profile
ground profile save work

# Switch between profiles
ground profile switch personal
ground profile switch work

# List all profiles
ground profile list

Profile Inheritance

Create a personal config that extends the team standard:

name: my-env
extends: work
tools:
- name: neovim
version: ">=0.9.0"
severity: recommended

Child tools override parent tools with the same name; parent tools are inherited for tools not listed in the child.

4. Enforce in CI

Add groundctl to your CI pipeline to catch drift before it reaches production.

GitHub Actions

# .github/workflows/env-check.yml
name: Environment Check
on: [pull_request]

jobs:
ground-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Ravenium22/groundctl/.github/actions/setup-ground@main
with:
fail-on-drift: 'true'
report-format: 'markdown'

Manual CI Setup

# Install
curl -fsSL https://raw.githubusercontent.com/Ravenium22/groundctl/main/install.sh | sh

# Check with CI annotations
ground check --ci

# Generate a report
ground report --format markdown --output drift-report.md

5. Shell Integration

Auto-check when entering project directories:

# Bash - add to ~/.bashrc
eval "$(ground hook bash)"

# Zsh - add to ~/.zshrc
eval "$(ground hook zsh)"

# Fish - add to ~/.config/fish/config.fish
ground hook fish | source

Add a drift indicator to your prompt:

# Starship
ground hook --prompt starship >> ~/.config/starship.toml

# Powerlevel10k
ground hook --prompt p10k

What's Next?