Thank you for contributing to Netwrix product documentation. This guide covers everything you need to get started.
- Node.js 22+
- npm
- Git
- Vale (style linter — optional for local use; issues are auto-fixed on PRs)
Vale is a command-line linter for prose. It checks your writing against a set of style rules — like a spell checker, but for grammar, word choice, and tone. Vale issues are auto-fixed on PRs, but you can install it locally to preview issues before pushing.
macOS:
brew install valeLinux:
sudo snap install valeWindows:
choco install valeManual install for any platform:
Download the latest release from github.com/errata-ai/vale/releases, extract the binary, and add it to your PATH.
Verify the installation:
vale --version# Clone the repository
git clone https://github.com/netwrix/docs.git
cd docs
# Install dependencies
npm install
# Start development server
npm run startThe dev server runs on port 4500 with hot reload — changes you make to documentation files appear immediately in the browser.
- Create a branch from
dev(never commit directly todevormain). - Make your changes to documentation files in
docs/. - Optionally run Vale on your changed files to preview issues (they'll be auto-fixed on the PR).
- Test the build with
npm run build. - Push your branch.
- Create a pull request (PR) targeting
dev.
After you open a PR, Vale and Dale issues are auto-fixed and a summary is posted. An editorial review also runs and posts results as a PR comment. To get help with editorial suggestions, comment @claude on the PR followed by your request.
See netwrix_style_guide.md in the project root for the full style guide covering voice, tone, formatting, and terminology.
- Location:
static/img/product_docs/<product>/ - Format:
.webp - Paths: Always absolute from project root
Every documentation page needs frontmatter:
---
title: 'Page Title'
sidebar_label: 'Sidebar Label'
description: 'SEO description'
---Vale enforces 30 Netwrix-specific rules covering word choice, punctuation, formatting, and common writing issues. Vale issues are auto-fixed on PRs, but you can run it locally to preview:
vale docs/path/to/file.mdRun Vale on all changed files compared to dev:
git diff --name-only dev | grep '^docs/.*\.md$' | xargs valedocs/<product>/<version>/— Versioned product documentation (e.g.,docs/accessanalyzer/12.0/)docs/<product>/— Single-version (SaaS) productsdocs/kb/— Knowledge base articles (canonical source; never manually copy into versioned folders)static/img/product_docs/<product>/— Product imagessidebars/<product>/<version>.js— Sidebar configs (auto-generated; rarely need manual editing)
Edits to one version don't propagate to others. Update each version that needs the change explicitly.
npm run start # Dev server on port 4500
npm run start-chok # Dev server with polling (for network drives)
npm run build # Full production build
npm run clear # Clear Docusaurus cache (fixes stale build issues)
npm run serve # Serve production buildYou can build or run documentation for a single product using the DOCS_PRODUCT environment variable, which speeds up development:
Windows (PowerShell):
$ENV:DOCS_PRODUCT="pingcastle"
npm run startUnix/Linux/macOS:
export DOCS_PRODUCT="pingcastle"
npm run startAvailable product IDs are in src/config/products.js.
If you have Claude Code installed, this repository includes skills and agents that can help with documentation work. These are entirely optional — you don't need Claude Code to contribute.
Dale is an AI linter that catches context-dependent issues that regex-based Vale can't — passive voice, misplaced modifiers, idioms, wordiness, and other patterns. Dale issues are auto-fixed on PRs alongside Vale.
Run Dale locally on any markdown file to preview context-dependent issues:
/dale docs/path/to/file.md
Ask Claude Code for help with your writing — brainstorming document structure, drafting a section, editing existing content, or understanding a style rule. Claude automatically uses the doc-help skill when you ask for writing assistance. You can also invoke it directly with /doc-help, followed by your request.
For well-defined tasks where the work is clear and doesn't need back-and-forth, Claude automatically uses the tech-writer agent to handle the work end-to-end.
Examples:
- "Fix all the Vale errors in
docs/accessanalyzer/12.0/install.md". - "Edit this procedure for clarity and Netwrix style".
- "Draft the installation steps based on this outline: [outline]"
For tasks that need design decisions first — like writing a new guide from scratch — Claude uses doc-help to brainstorm the structure with you, then hands the drafting off to the tech-writer agent.
| Task | Tool |
|---|---|
| Quick lint check on a file | /dale docs/path/to/file.md |
| Plan structure for a new document | doc-help then tech-writer agent |
| Review or improve existing content | doc-help |
| Fix Vale errors across a file | tech-writer agent |
| Edit a file for style and clarity | tech-writer agent |
| Understand a style rule or convention | doc-help |
- Don't manually copy KB content into versioned product folders — it's managed by the KB script.
- Vale issues are auto-fixed on PRs, but running Vale locally helps catch issues early.
- Don't commit directly to
devormain— create a branch fromdevfirst. - Don't target
mainin PRs — always usedev. - Don't use first person anywhere in documentation content.
- Don't omit examples — every concept introduced needs one.