|
| 1 | +# CLAUDE.md |
| 2 | + |
| 3 | +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. |
| 4 | + |
| 5 | +## Project Overview |
| 6 | + |
| 7 | +This is the documentation website for Positron IDE, built with Quarto and hosted on Netlify at https://positron.posit.co/. Documentation pages are `.qmd` files in the repository root, including reusable content in `.qmd` files that are prefixed with `_`. We use a mostly flat directory structure, especially for any files that get rendered into pages. The directories `/assets` and `/css` contain files we use for styling, and the directories `/images` and `/videos` contain visual content assets. |
| 8 | + |
| 9 | +## Build Commands |
| 10 | + |
| 11 | +```bash |
| 12 | +quarto preview # Local development with hot reload |
| 13 | +quarto render # Render all .qmd files to HTML |
| 14 | +``` |
| 15 | + |
| 16 | + |
| 17 | +## Multi-Profile Build System |
| 18 | + |
| 19 | +The site has two Quarto profiles defined in `_quarto.yml`: |
| 20 | +- **positron** (`_quarto-positron.yml`): Full public documentation site, outputs to `_site/` |
| 21 | +- **workbench** (`_quarto-workbench.yml`): Subset for Workbench bundled docs, excludes download/install pages, outputs to `_site-workbench/` |
| 22 | + |
| 23 | +New pages will likely need to be added to both profile config files. |
| 24 | + |
| 25 | +## Code Execution and Freeze |
| 26 | + |
| 27 | +Some pages contain executable code (e.g., download.qmd, install.qmd). The project uses Quarto's "freeze" feature (`execute: freeze: auto`). When updating pages with computations: |
| 28 | +1. Render the page locally |
| 29 | +2. Commit the generated files in `_freeze/` directory |
| 30 | + |
| 31 | +## Version Management |
| 32 | + |
| 33 | +Release versions are stored in `_environment`: |
| 34 | +- `RELEASE_VERSION`: Current release (used in page footer via `{{< env RELEASE_VERSION >}}`) |
| 35 | +- `NEXT_RELEASE`: Upcoming release version |
| 36 | + |
| 37 | +Release notes live in `release-notes/` with a template at `release-notes/release-notes-template.md`. |
| 38 | + |
| 39 | +## Writing Style Guide |
| 40 | + |
| 41 | +**Before creating a PR, run `/doc-reviewer` to check documentation for style compliance.** |
| 42 | + |
| 43 | +Key formatting rules: |
| 44 | +- **Bold UI elements**: `**Publish**`, `**File** menu` |
| 45 | +- **Italics for commands**: `_Extensions: Install from VSIX_` |
| 46 | +- **Keyboard shortcuts**: In `.qmd` files, use the Quarto `kbd` shortcode: |
| 47 | + - Example: `{{< kbd mac=Command-Shift-P win=Ctrl-Shift-P linux=Ctrl-Shift-P >}}` |
| 48 | + - Do **not** use syntax like `<kbd>Cmd</kbd> + <kbd>C</kbd>` in `.qmd` |
| 49 | + - It is OK to use `<kbd>` syntax in markdown files |
| 50 | +- **Settings links**: Point readers directly to the setting in their UI: |
| 51 | + ```markdown |
| 52 | + [`category.nameOfSetting`](positron://settings/category.nameOfSetting) |
| 53 | + ``` |
| 54 | +- **Font Awesome icons**: Use the Quarto `fa` shortcode: |
| 55 | + - Example: `{{< fa font-awesome-id >}}` |
| 56 | + - Refer to [fontawesome.com/icons](https://fontawesome.com/icons) for available icon IDs |
| 57 | +- Add `description` YAML front matter for social sharing metadata |
| 58 | + |
| 59 | +## CI/CD |
| 60 | + |
| 61 | +- **Netlify**: Auto-deploys from main branch using `@quarto/netlify-plugin-quarto` |
| 62 | +- **GitHub Actions**: |
| 63 | + - `lint.yml`: URL checking on PRs |
| 64 | + - `upload-index.yml`: Daily Algolia search index updates |
| 65 | + - `publish-release-notes.yml`: Manual workflow for S3/CloudFront deployment |
| 66 | + |
| 67 | +## Issue Tracking |
| 68 | + |
| 69 | +Report issues at https://github.com/posit-dev/positron/issues (main Positron repo, not this website repo). |
0 commit comments