Thanks for your interest in contributing! This guide covers how to set up your environment, build locally, and submit changes.
This repository uses the docs-resources submodule.
git clone --recurse-submodules https://github.com/riscv/riscv-isa-manual.gitIf you already cloned the repo, initialize the submodules:
git submodule update --init --recursiveBuilding with the container is the most consistent approach.
- Install Docker (or Podman).
- Pull the base image:
docker pull riscvintl/riscv-docs-base-container-image:latestLocal builds are available, but require the full documentation toolchain (Ruby, Asciidoctor, and related extensions). Follow the dependency list in the RISC-V Documentation Developer Guide:
https://github.com/riscv/docs-dev-guide
From the repo root:
make buildCommon targets:
make build-pdf
make build-html
make build-epubOutputs land in the build/ directory.
- Create a branch for your change.
- Keep commits focused and include clear messages.
- Run the relevant build target(s) before opening a PR.
- Open a pull request with a short summary of what changed and why.
- Run the relevant build target(s), such as
make build,make build-pdf, ormake build-html. - Add or update references/citations in
src/resources/riscv-spec.bibwhen needed. - Under development by the Documentation SIG: Normative Rules and Antora integration.
src/is the canonical AsciiDoc content used bymakebuilds.src/riscv-unprivileged.adocandsrc/riscv-privileged.adocare the entrypoints that include chapter files.modules/contains the Antora site sources.modules/unpriv/pagesandmodules/priv/pagesmirror chapter files for the site, andmodules/*/nav.adoccontrols navigation.docs-resources/is a submodule with shared themes, converters, schemas, and tooling.normative_rule_defs/contains one YAML definition file per chapter for normative rules.build/is generated output.
NOTE: New RISC-V specifications may only be developed by RISC-V International members through the formal ratification process and in accordance with the applicable Technical Steering Committee policies. Specifications cannot be introduced arbitrarily or by submitting an unsolicited pull request.
- Create
src/<extension>.adocwith the new chapter content. - Add an
include::line in the appropriate entrypoint (src/riscv-unprivileged.adocorsrc/riscv-privileged.adoc) in the correct order.
All contributions must be signed. Use either SSH (recommended) or GPG.
ssh-keygen -t ed25519 -C "your_email@example.com"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519cat ~/.ssh/id_ed25519.pubGitHub → Settings → SSH and GPG keys → New SSH key
Key type: Signing key
git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global commit.gpgsign truegit commit -m "message"git log --show-signature -1- macOS:
brew install gnupg- Ubuntu/Debian:
sudo apt-get install gnupg- Windows: Install Gpg4win
gpg --full-generate-keygpg --list-secret-keys --keyid-format=longgit config --global user.signingkey YOUR_KEY_ID
git config --global commit.gpgsign truegpg --armor --export YOUR_KEY_IDGitHub → Settings → SSH and GPG keys → New GPG key
git commit -m "message"git log --show-signature -1