This guide covers how to contribute to the Upbound documentation, from quick fixes to major feature guides.
- Clone this repository
- Set up your development environment with
make dev - Optional: Configure VSCode for the best editing experience (see VSCode Setup)
What: Typos, broken links, minor clarifications, small corrections
Process:
- Create a GitHub issue or Linear ticket to track the change
- OR submit a direct PR for obvious fixes (broken links, spelling errors)
- Use
make lintto check your changes before submitting
What: New feature guides, comprehensive tutorials, significant content updates
Process:
- Create a Linear issue first to discuss scope and approach
- Create PR once the content is ready
- Request approval from maintainers to merge
# First time setup
make dev
# Start development server
make start
# Check your writing (Vale linting)
make lint
# Lint a specific file
make vale-file FILE=docs/concepts/providers.md
# Build to verify everything works
make buildVale Integration: We use Vale for automated writing quality checks.
- Errors: Will block PR approval (spelling, grammar, critical style issues)
- Warnings & Suggestions: Shown in PR but won't block (helpful for learning)
- Real-time feedback: Available in VSCode with recommended extensions
All PRs require maintainer approval to merge, regardless of Vale status.
For the best documentation editing experience, install these extensions:
Create .vscode/extensions.json:
{
"recommendations": [
"ChrisChinchilla.vale-vscode",
"DavidAnson.vscode-markdownlint",
"unifiedjs.vscode-mdx",
"TomasDahlqvist.markdown-admonitions"
]
}Add to .vscode/settings.json:
{
// Vale - uses existing utils/vale/.vale.ini configuration
"vale.valeCLI.config": "${workspaceFolder}/utils/vale/.vale.ini",
// 80-character line wrapping for markdown files
"[markdown]": {
"editor.wordWrapColumn": 80,
"editor.rulers": [80]
},
"[mdx]": {
"editor.wordWrapColumn": 80,
"editor.rulers": [80]
}
}Benefits:
- Real-time Vale feedback as you type
- Proper syntax highlighting for MDX files
- Preview support for Docusaurus admonitions (
:::tip,:::warning) - Automatic line wrapping at 80 characters
Follow the complete style guide with these key points:
Writing:
- Use active voice, present tense
- Sentence-case headings
- 80-character line wrapping
- No Oxford commas
- Contractions encouraged ("don't" vs "do not")
Code & Technical:
- Kubernetes Kinds:
UpperCamelCase - Object names:
kebab-case - Use fenced code blocks with language hints
- Place images in
static/img/folder
Forbidden Terms:
- Avoid "easy", "simple", "obvious"
- No passive voice
- No Latin terms (i.e., e.g., etc.)
- No clichés
-
Automated checks: Vale linting runs on all PRs
- Shows suggestions/warnings for learning
- Only blocks on errors (spelling, critical issues)
-
Required approval: All PRs need maintainer approval regardless of automated checks
-
Review focus:
- Content accuracy and completeness
- Alignment with Upbound's voice and style
- Technical correctness
- User experience and clarity
- Documentation questions: Create a GitHub issue
- Feature requests: Create a Linear ticket
- Technical issues: Ask in the PR or create an issue
- Style guide questions: Refer to the complete style guide
Vale helps maintain consistent, high-quality writing across all documentation. It uses multiple style guides (Microsoft, Google, GitLab) plus Upbound-specific rules.
Command line usage:
make lint # Check all files
make vale-file FILE=docs/filename.md... # Check specific fileVSCode integration: Install the recommended extensions for real-time feedback while writing.
Vale feedback levels:
- Suggestions: Writing tips (informational)
- Warnings: Style recommendations (informational)
- Errors: Critical issues (blocks PR)
Remember: Vale helps catch issues, but maintainer approval is always required for merge.
Vale overrides: Stop Vale from parsing a specific section with a specific rule.
<!--vale Microsoft.Adverbs = NO -->
Create a support ticket and our team will reach out to you promptly.
<!-- vale Microsoft.Adverbs = YES -->
This overrides the warning for the adverb "promptly" in a single sentence.