A collection of standards for development at Companies House. See Confluence for which version of software to use (internal CH link).
You can use the checklists to support ensuring a repository is up to scratch and meeting the latest repository standards.
- Service Naming
- .gitignore
- accessibility
- Health checks
- Feature flags
- READMEs
- Environment variables
- Logging
- Bash
- CHIPS
- Go
- Java
- Java Review
- JavaScript (Node)
- JavaScript (Chips)
- Java Server Pages (JSP)
- Perl
- Terraform
- Common standards
The following guide explains the purpose of each folder to help keep content well organised:
- Helper scripts or linters used in CI pipelines
- Makefile-related standards or examples, organised by language
- Reusable checklists for manual or automated workflows
- PNG image assets used in Concourse dashboards, docs or internal tooling
- Shared guidance not tied to any one language, tool, or framework - general best practices
- Guidance for using Git consistently across teams
- Prebuilt
.gitignorefragments or examples for common technologies
- Language-specific development standards, code style guides and review checklists
- Markdown templates to be reused across repositories or teams
- Docs for using key tools in the ecosystem (e.g., pipelines, versioning, build systems)
This repository is linted using Markdownlint. If you have docker installed and logged into the shared services ECR repository you can run these checks locally:
make markdownlintOR
make markdownlint_file MARKDOWN_FILE=<...>.md(Where <...> is the name of the file to be linted.)
Running the following will attempt to fix any of the markdownlint failures for you. (You may still have some like long lines to fix manually.)
FIX_MARKDOWN=true make markdownlint