Note we have a code of conduct, please follow it in all your interactions with the project.
Note
Theme additions are no longer accepted due to the ever growing set. We do however accept showcasing your custom theme in the themes discussion section here or the themes channel on Discord.
Ensure you've read through the documentation so you understand the core concepts of the project. If you're looking to get familiar with go, following the getting started guide can be a good starting point.
This project uses APM (Agent Package Manager) to manage shared AI agent skills.
Project-specific skills live in .github/skills/, while shared skills are declared
in apm.yml and installed via APM.
curl -sSL https://raw.githubusercontent.com/microsoft/apm/main/install.sh | shAlternatively, install via Homebrew or pip:
brew install microsoft/apm/apm
# or
pip install apm-cliAfter cloning the repository, run:
apm installThis pulls in the shared skills from JanDeDobbeleer/agentic (conventional commits, Go, Markdown, and PowerShell conventions). The project-specific skills (segment-create and segment-docs) are already included in the repository.
- Ensure any dependencies or build artifacts are removed/ignored before creating a commit.
- Commits follow the conventional commits guidelines. (You can look up the supported types along with an explanation in the documentation)
- Update the documentation with details of changes to the functionality, this includes new segments or core functionality.
- Pull Requests are merged once all checks pass and a project maintainer has approved it.
Arguably the easiest way to contribute anything is to use our prepared development environment.
We have a .devcontainer/devcontainer.json file, meaning we are compatible with:
, or
- the Visual Studio Code Remote - Containers extension.
This Linux environment includes all shells supported by oh-my-posh, including Bash, ZSH, Fish and PowerShell, the latter of which is the default.
-
Open the
.devcontainer/devcontainer.jsonfile and in the "build" section modify:TZ: with your own timezone
-
Summon the Command Panel (Ctrl+Shift+P) and select
Codespaces: Rebuild Containerto rebuild your devcontainer. (This should take just a few seconds.)
The devcontainer definition preinstalls the latest stable oh-my-posh release at build time.
To overwrite the installation's version inside the running devcontainer, you may use the
VSCode task devcontainer: build omp to rebuild your oh-my-posh with that of
your running repository's state. (You might see a button for this in your statusbar.)
If the compile succeeds, oh-my-posh --version should reply:
development
Should you somehow mess up your devcontainer's OMP install catastrophically, remember that
if you do Codespaces: Rebuild Container again, you'll be back to the latest stable release.
Make sure your local go version matches with the pinned version in go.mod. You can build
oh-my-posh by navigating the to the /src folder and executing the following command.
go build -v -o /path/to/oh-my-posh(.exe)To execute the tests, run the following command from the /src folder.
go test "./..."