Thanks for helping improve Ananke. This document describes the current contribution workflow for this repository.
i18n/*.tomlThe project follows a structured release workflow based on conventional commits, staging branches, and automated versioning.
For details, see RELEASES.md.
config/_default/module.toml for the current state).bash npm install
npm run instead of just calling hugo server:bash npm run server
This runs the documentation site from site/ using contents from docs/ with local configuration.
Follow the coding style and format commit messages as described in the conventional commits specification (for example: docs: add troubleshooting section or fix: correct hero image path).
Make sure to install git hooks for linting and testing before you push changes:
bash npm run prepare
This command is run automatically after npm install but you can run it manually to set up hooks in an existing clone or update changed hooks. It uses simple-git-hooks to install a commit hook that runs lint-staged for markdown files, which in turn runs linting tasks on staged files.
hugo version, OS, browser if relevant).flowchart LR
feature["feature/*, fix/*, docs/*, refactor/*"] --> development
development --> staging
maintenance --> staging
staging --> main
main --> staging
staging --> development
This repository uses a linear, rebase-based branch model. Long-lived branches MUST stay connected to main, and merge commits MUST NOT be introduced.
| Branch | Purpose | Release role | Write policy | Merge |
|---|---|---|---|---|
main |
Stable source of truth | releases | Protected. Only receives reviewed PRs from staging or maintenance. |
Rebase |
staging |
Pre-release integration | pre-releases | Protected. Only receives reviewed PRs from development. |
Rebase |
development |
Active development | none | Feature, fix, chore, and documentation PRs target this branch. | Squash |
maintenance |
Dependency maintenance | none | Maintainer-only branch for dependency version updates. | Rebase |
Use short-lived branches for regular work:
feat/<topic>fix/<topic>docs/<topic>chore/<topic>refactor/<topic>Dependency update branches MUST target maintenance unless the change is part of an intentional feature branch and does not touch lock files.
After a successful rebase between those branches, push with lease:
git push --force-with-lease
bash npm run lint:markdown
hugo or hugo server in the relevant project).Fixes #123).To prevent git commit and git push from running hooks you can use the --no-verify flag:
git commit --no-verify -m "docs: update README"
git push --no-verify origin my-feature-branch
This should be used sparingly and only when you have a good reason to bypass checks. If you find yourself needing to use --no-verify frequently, please consider improving the hooks or contributing fixes to reduce false positives.
The theme documentation lives in a separate repository at gohugo-ananke/documentation.
Please keep links relative where possible and remove stale references when updating pages.
This section is based on a proposed guideline introduced in a pull request to Node.js (PR #62105). This is a project-specific adaptation and applies to this repository.
Contributions are made by people, not tools.
AI is acceptable as a tool for any part of the workflow. However, responsibility cannot be delegated. Every contribution must be authored, understood, and defended by the person submitting it.
The answer to "Why is this an improvement?" must never be "I'm not sure, the AI did it."
Pull requests that contain changes the author does not fully understand or demonstrate a lack of understanding will be closed without review.
AI may assist, but it must not replace judgement, understanding, or ownership.
When using AI as part of development:
Communication must remain human, precise, and intentional.
AI is a tool. It can speed things up, help explore options, and reduce friction. It does not replace responsibility. If you submit a contribution, your name is on it. Act accordingly.
If you want to receive attribution for your contribution please follow the contribution guidelines to add yourself to the list of contributors in the Ananke theme documentation. A permanently open issue to add your contribution can be found at the documentation repository. Read the initial message to understand how to add yourself to the list of contributors.
By contributing, you agree that your contributions are provided under the repository license in LICENSE.md.