Skip to content

Commit 419f76d

Browse files
authored
Merge branch 'main' into serverless-terraform
2 parents edc5a3f + ed40028 commit 419f76d

408 files changed

Lines changed: 29630 additions & 1242 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/mermaid-ci.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Mermaid CI
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- "docs/**"
7+
- "scripts/lint-mermaid.mjs"
8+
- "package.json"
9+
- "yarn.lock"
10+
- ".github/workflows/mermaid-ci.yml"
11+
12+
permissions:
13+
contents: read
14+
15+
jobs:
16+
mermaid:
17+
name: Validate Mermaid syntax
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Checkout Repository
21+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
22+
23+
- name: Setup Node.js Environment
24+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
25+
with:
26+
node-version: "24"
27+
cache: "yarn"
28+
29+
- name: Install Dependencies
30+
run: yarn install --frozen-lockfile
31+
32+
- name: Lint Mermaid Diagrams
33+
run: yarn lint:mermaid

.github/workflows/vale-ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,7 @@ jobs:
2222
level: info
2323
filter_mode: diff_context
2424
fail_on_error: false
25+
# Scope linting to docs only; do not put the path in vale_flags —
26+
# the action runs `vale ${vale_flags} sync`, so a path there breaks sync.
27+
files: docs
2528
vale_flags: "--config=.vale-ci.ini"

.gitignore

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ temp/
2222
.env.test.local
2323
.env.production.local
2424
.vs
25-
AGENTS.md
26-
CLAUDE.md
2725
.claude/*
2826
.omc
2927

AGENTS.md

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
# AGENTS.md
2+
3+
Guidance for AI coding agents working in the [Temporal documentation](https://github.com/temporalio/documentation) repository.
4+
5+
## Read these first
6+
7+
| Topic | File |
8+
|-------|------|
9+
| Where content belongs | [INFORMATION-ARCHITECTURE.md](./INFORMATION-ARCHITECTURE.md) |
10+
| React components in MDX | [COMPONENTS.md](./COMPONENTS.md) |
11+
| LLM Markdown pipeline | [MARKDOWN_PIPELINE.md](./MARKDOWN_PIPELINE.md) |
12+
| Component → Markdown mapping | [COMPONENT_REGISTRY.md](./COMPONENT_REGISTRY.md) |
13+
14+
## Repository overview
15+
16+
- **Site:** Docusaurus static site for [docs.temporal.io](https://docs.temporal.io).
17+
- **Content:** MDX files under `docs/`. URLs are served at the site root (`/workflows`), not under `/docs/`.
18+
- **UI code:** React components in `src/components/`. Sidebar navigation is in `sidebars.js`.
19+
- **Redirects:** Legacy URL changes go in `vercel.json` before or alongside file moves.
20+
21+
## Where to put content
22+
23+
Use [INFORMATION-ARCHITECTURE.md](./INFORMATION-ARCHITECTURE.md) to choose the section.
24+
25+
## Style Guide
26+
27+
Follow [STYLE.md](./STYLE.md) and Vale rules in `vale/styles/`. The most common mistakes:
28+
29+
### Temporal terms are proper nouns
30+
31+
Capitalize Temporal core terms. Do not capitalize generic uses.
32+
33+
- Correct: "Register the Activity in the Workflow."
34+
- Incorrect: "Register the activity in the workflow."
35+
36+
Vale enforces many substitutions automatically. See `vale/styles/Temporal/terms.yml`.
37+
38+
### Temporal Service, not Cluster
39+
40+
In body prose, use **Temporal Service**, not **Cluster** or **Temporal Cluster**.
41+
42+
- Correct: "The Worker polls the Temporal Service for tasks."
43+
- Incorrect: "The Worker polls the Cluster for tasks."
44+
45+
Exceptions: **Multi-Cluster Replication**, code/config identifiers, and CLI command names.
46+
47+
### Identifier abbreviation
48+
49+
Outside Temporal core terms, spell out "identifier." For core terms, use `Id` (not `ID` or `id`).
50+
51+
- Correct: "Provide an order identifier as a Workflow Id."
52+
- Incorrect: "Provide an order ID as a Workflow ID."
53+
54+
In code blocks, follow each language's conventions.
55+
56+
### Headings
57+
58+
- Use **sentence case**: "How to get started with Temporal"
59+
- Prefer **infinitive verb forms** or questions: "How to install Temporal", not "Installing Temporal"
60+
- Develop pages: task-oriented headings ("Start a Workflow Execution")
61+
62+
### Writing style
63+
64+
Follow [STYLE.md](./STYLE.md) and the [Google developer documentation style guide](https://developers.google.com/style) for tone (conversational, second person, active voice) and structure (short paragraphs, one idea per sentence). A few additions specific to model output:
65+
66+
- Cut filler that adds no information: "it's worth noting that," "in order to," "simply," "easily," "just."
67+
- Avoid vague intensifiers doing the work a specific fact should do: "powerful," "robust," "seamless," "cutting-edge," "leverage" (use "use"), "unlock," "elevate," "streamline." Replace with what the thing actually does.
68+
- Don't pad a page to look thorough. Prefer brevity over overly-verbose paragraphs.
69+
- Do not add emojis to documentation prose and use em-dashes sparingly.
70+
71+
### Word choice
72+
73+
Prefer common, concrete verbs and nouns.
74+
75+
| Prefer | Instead of |
76+
|--------|------------|
77+
| use | utilize, leverage |
78+
| help | facilitate |
79+
| to | in order to |
80+
| many | numerous, various (when you can be specific, be specific) |
81+
82+
### Tense and time
83+
84+
Document current behavior. Don't make future promises. Tie claims to a version, release note, or release stage when that matters.
85+
86+
| Prefer | Instead of |
87+
|--------|------------|
88+
| Temporal Server v1.31.0 and later supports Cassandra 5.0.4 and later. | A future release will support Cassandra 5. |
89+
90+
## Frontmatter
91+
92+
Typical fields:
93+
94+
```yaml
95+
---
96+
id: page-id
97+
title: Page title
98+
sidebar_label: Short label
99+
description: One sentence for SEO and previews.
100+
keywords:
101+
- keyword
102+
tags:
103+
- Concepts
104+
---
105+
```
106+
107+
- Write `description` as a single clear sentence.
108+
- Do not change `id` or `slug` without a redirect plan.
109+
- Match `tags` and `keywords` to sibling pages in the same section.
110+
- Use existing concepts and keywords. Don't add new ones unless it's a new feature.
111+
112+
## MDX and components
113+
114+
- Pages are `.mdx` with YAML frontmatter (see [Frontmatter](#frontmatter) above).
115+
- Import shared components from `@site/src/components` unless a page uses a one-off import path already established nearby.
116+
- Before adding a component, check [COMPONENTS.md](./COMPONENTS.md) and [COMPONENT_REGISTRY.md](./COMPONENT_REGISTRY.md).
117+
- Reuse existing components (`Tabs`, `SdkTabs`, `CaptionedImage`, `ViewSourceCodeNotice`, etc.) instead of inventing inline HTML patterns.
118+
- Interactive demos live in `src/components/elements/`. Export new public components from `src/components/index.js` when needed.
119+
120+
121+
## URLs and navigation
122+
123+
Adding or moving pages usually requires:
124+
125+
- Updating `sidebars.js` for navigation placement
126+
- Adding redirects in `vercel.json` when the public URL changes
127+
- Fixing internal links across the repo
128+
129+
## Code samples and Snipsync
130+
131+
- Prefer code extracted from CI-enabled sample repos via [Snipsync](https://github.com/temporalio/snipsync).
132+
- Snippets are wrapped in `<!--SNIPSTART id-->` / `<!--SNIPEND-->`. Edit the **source repo** named inside the wrapper, then run `yarn snipsync`.
133+
134+
## Commands
135+
136+
Requires Node.js 24+ and Yarn.
137+
138+
```bash
139+
yarn # Install dependencies
140+
yarn start # Dev server at http://localhost:3000
141+
yarn build # Production build; catches MDX/build errors
142+
yarn check-links # Broken link check (run after build)
143+
yarn snipsync # Refresh Snipsync code snippets
144+
```
145+
146+
Vale linting (style):
147+
148+
```bash
149+
yarn lint:py # Example: lint Python SDK docs
150+
yarn vale # Full Vale run via assembly script
151+
```

CLAUDE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@AGENTS.md

COMPONENTS.md

Lines changed: 2 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,10 @@ Whether you’re using core components or experimenting with new ones, this guid
2020
- [Using Components in MDX Source Files](#using-components-in-mdx-source-files)
2121
- [Using IntegrationsGrid](#using-integrationsgrid)
2222
- [Using CaptionedImage](#using-captionedimage)
23-
- [Using DiscoverableDisclosure](#using-discoverabledisclosure)
2423
- [Using DocsTable](#using-docstable)
2524
- [Using PhotoCarousel](#using-photocarousel)
2625
- [Using RelatedRead](#using-relatedread)
2726
- [Using ToolTipTerm](#using-tooltipterm)
28-
- [Using ZoomingImage](#using-zoomingimage)
2927
- [Using SdkGuideLinks](#using-sdkguidelinks)
3028
- [Using ReleaseNoteHeader](#using-release-note-header)
3129

@@ -118,9 +116,9 @@ import * as Components from '@site/src/components';
118116
Components imported this way use the "Components." prefix before their name:
119117

120118
```
121-
<Components.DiscoverableDisclosure>
119+
<Components.RelatedRead>
122120
...Content that is folded away...
123-
</Components.DiscoverableDisclosure>
121+
</Components.RelatedRead>
124122
```
125123

126124
## Using IntegrationsGrid
@@ -253,23 +251,6 @@ One click will zoom out, another will zoom back.
253251
Most rendering will allow readers to pull the image around to view all parts of the image.
254252
On non-mobile systems, cursors will change to interactive elements when hovered above zoomable items to indicate interaction.
255253

256-
## Using DiscoverableDisclosure
257-
258-
Role: Provide a more discoverable `<Details>` section.
259-
260-
Unlike Details, it does not require a separate `<Summary>`.
261-
262-
Usage:
263-
264-
```
265-
<DiscoverableDisclosure label = "your_summary_text">
266-
...your content...
267-
</DiscoverableDisclosure>
268-
```
269-
270-
An additional `prompt` prop enables you to specify the leading text.
271-
Normally it defaults to `prompt = "Dive deeper — "`.
272-
273254
## Using DocsTable
274255

275256
In certain rare instances, standard Markdown tables won't work for our needs.
@@ -442,25 +423,6 @@ Use the `tooltip` prop to add non-reusable content specific to one tooltip term.
442423
<Components.ToolTipTerm term="your term" tooltip="any custom content you want to add" />
443424
```
444425

445-
## Using ZoomingImage
446-
447-
Role: Provide image "asides" embedded into instructions where a standard image would normally interfere.
448-
449-
A ZoomingImage is presented at a very small size, with the understanding that it is too small to view.
450-
An optional component, the image uses a magnifying glass and text prompt for discovery.
451-
See the instructions for [Prometheus Grafana](http://docs.temporal.io/cloud/metrics/prometheus-grafana#grafana-data-sources-configuration) for an example.
452-
453-
Reserve ZoomingImages for situations where the image itself is an obstacle to communicating steps or other content.
454-
It provides opt-in supplementary information.
455-
456-
Usage:
457-
458-
```
459-
<ZoomingImage src="/path/to/image" alt="Alt text" />
460-
```
461-
462-
Images are normally stored in the '/static' folder in `img` or `diagrams`.
463-
464426
## Using SdkGuideLinks
465427

466428
Role: Render a vertical list of SDK guide links, each with a colored block icon and label, linking readers to the relevant SDK-specific page.

COMPONENT_REGISTRY.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ Generated by `scripts/audit-components.mjs`. Run to update.
2424
| `AWSRegions` | 2 | `transclude` ||
2525
| `GCPRegions` | 2 | `transclude` ||
2626
| `PatternCards` | 2 | `cards` ||
27-
| `DiscoverableDisclosure` | 1 | `transparent` ||
2827
| `CustomRolePermissionsTable` | 1 | `transclude` ||
2928
| `InvitationContent` | 1 | `strip-block` ||
3029
| `RetrySimulator` | 1 | `strip-block` ||

MARKDOWN_PIPELINE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ Each component maps to a strategy in `COMPONENT_REGISTRY` (in `scripts/mdx-to-md
108108
| `Tabs` / `TabItem` | `tabs` / `tabitem` | All tabs flattened, each under a **bold label** header |
109109
| `SdkTabs` / `SdkTabs.<Lang>` | `sdk-tabs` | Same, with language labels (`DotNet`**.NET**) |
110110
| `CodeSnippet` | `code-snippet` | Fenced code block using the `language` prop |
111-
| `CaptionedImage`, `EnlargeImage`, `ZoomingImage`, `Components.CaptionedImage` | `captioned-image` | `![alt or caption or title](src)` |
111+
| `CaptionedImage`, `EnlargeImage`, `Components.CaptionedImage` | `captioned-image` | `![alt or caption or title](src)` |
112112
| `PhotoCarousel` | `photo-carousel` | One `![caption](url)` per entry in the `images`/`captions` arrays |
113113
| `CallToAction` | `call-to-action` | `- [h3 title](href): p description` |
114114
| `ReleaseNoteHeader` | `release-note-header` | `> **Public Preview** — Go, Java…` availability note + body blockquote. The self-closing form (`<ReleaseNoteHeader … />`) emits just the note and leaves the page body intact. |
@@ -120,7 +120,7 @@ Each component maps to a strategy in `COMPONENT_REGISTRY` (in `scripts/mdx-to-md
120120
| `IntegrationsGrid` | `integrations-grid` | Markdown list resolved from `integrations-data.json`, filtered by the `defaultSdks` prop |
121121
| `HomePageHero` | `home-page-hero` | Homepage hero's headline, intro paragraphs, and link cards (content mirrored from the component) |
122122
| `QuickstartCards`, `PatternCards` | `cards` | Markdown link list parsed from the inline `items={[{href,title,description}]}` prop |
123-
| `ZoomPanPinch`, `DiscoverableDisclosure` | `transparent` | Wrapper stripped; inner content passed through |
123+
| `ZoomPanPinch` | `transparent` | Wrapper stripped; inner content passed through |
124124
| `DocCardList`, `CardList`, `LandingCard`, `ThemedImage`, `SdkLogos`, `SdkSvg`, `CloudRegionCount`, `RetrySimulator`, `ServerlessWorkerDemo`, `OperationsTable`, `InvitationContent` | `strip-block` | Removed entirely (visual/dynamic, no extractable text) |
125125
| `DL`, `DT`, `DD`, `DefinitionList` | `strip-tag` | Tags stripped, text content kept |
126126
| `details` / `summary` | `details` / `summary` | `<summary>` becomes a heading; body expanded inline |

STYLE.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,32 @@ Do not capitalize generic versions of Temporal terms. Use generic versions spari
2121

2222
- Incorrect: "Next, register the activity within the workflow."
2323

24+
#### Temporal Service, not Cluster
25+
26+
In body prose, refer to the Temporal backend as **Temporal Service**, not **Cluster** or **Temporal Cluster**.
27+
28+
- Correct: "Connect your Temporal Client to the Temporal Service."
29+
- Incorrect: "Connect your Temporal Client to the Temporal Cluster."
30+
31+
This applies to running instances you operate or connect to ("your Temporal Service", "the Temporal Service", "across the Temporal Service").
32+
33+
Exceptions:
34+
35+
- **Multi-Cluster Replication** and other compound terms that include "Cluster" as part of an official name.
36+
- Code, configuration keys, file paths, CLI commands, and API identifiers (for example, `tctl cluster`, `cluster.pem`).
37+
- Quoting third-party or historical text where the source uses "Cluster".
38+
39+
#### Word choice
40+
41+
Prefer common, concrete verbs and nouns.
42+
43+
| Prefer | Instead of |
44+
|--------|------------|
45+
| use | utilize, leverage |
46+
| help | facilitate |
47+
| to | in order to |
48+
| many | numerous, various (when you can be specific, be specific) |
49+
2450
#### Abbreviation of "identifier"
2551

2652
Do not abbreviate the word "identifier" as "ID", "Id", or "id" unless it's part of a Temporal core term. For core terms, the correct abbreviation is "Id", such as in "Workflow Id" or "Activity Id".

0 commit comments

Comments
 (0)