mirror of https://github.com/grafana/grafana.git
298 lines
7.3 KiB
Markdown
298 lines
7.3 KiB
Markdown
|
# AGENTS.md
|
||
|
|
||
|
<!-- docs-ai-begin -->
|
||
|
|
||
|
<!-- version: 1.1.0 -->
|
||
|
|
||
|
## Documentation
|
||
|
|
||
|
Instructions for documentation authoring in Markdown files.
|
||
|
|
||
|
DOCS.md contains all the Docs AI toolkit docs in one file.
|
||
|
|
||
|
## Role
|
||
|
|
||
|
Act as an experienced software engineer and technical writer for Grafana Labs.
|
||
|
|
||
|
Write for software developers and engineers who understand general programming concepts.
|
||
|
|
||
|
Focus on practical implementation and clear problem-solving guidance.
|
||
|
|
||
|
### Grafana
|
||
|
|
||
|
Use full product names on first mention, then short names:
|
||
|
|
||
|
- Grafana Alloy (full), Alloy (short)
|
||
|
- Grafana Beyla (full), Beyla (short)
|
||
|
|
||
|
Use "OpenTelemetry Collector" on first mention, then "Collector" for subsequent references.
|
||
|
Keep full name for distributions, headings, and links.
|
||
|
|
||
|
Always use "Grafana Cloud" in full.
|
||
|
|
||
|
Use complete terms:
|
||
|
|
||
|
- "OpenTelemetry" (not "OTel")
|
||
|
- "Kubernetes" (not "K8s")
|
||
|
|
||
|
Present observability signals in order: metrics, logs, traces, and profiles.
|
||
|
|
||
|
Focus content on Grafana solutions when discussing integrations or migrations.
|
||
|
|
||
|
## Style
|
||
|
|
||
|
### Structure
|
||
|
|
||
|
Structure articles into sections with headings.
|
||
|
|
||
|
Leave Markdown front matter content between two triple dashes `---`.
|
||
|
|
||
|
The front matter YAML `title` and the content h1 (#) heading should be the same.
|
||
|
Make sure there's an h1 heading in the content; this redundancy is required.
|
||
|
|
||
|
Always include copy after a heading or between headings, for example:
|
||
|
|
||
|
```markdown
|
||
|
## Heading
|
||
|
|
||
|
Immediately followed by copy and not another heading.
|
||
|
|
||
|
## Sub heading
|
||
|
```
|
||
|
|
||
|
The immediate copy after a heading should introduce and provide an overview of what's covered in the section.
|
||
|
|
||
|
Start articles with an introduction that covers the goal of the article. Example goals:
|
||
|
|
||
|
- Learn concepts
|
||
|
- Set up or install something
|
||
|
- Configure something
|
||
|
- Use a product to solve a business problem
|
||
|
- Troubleshoot a problem
|
||
|
- Integrate with other software or systems
|
||
|
- Migrate from one thing to another
|
||
|
- Refer to APIs or reference documentation
|
||
|
|
||
|
Follow the goal with a list of prerequisites, for example:
|
||
|
|
||
|
```markdown
|
||
|
Before you begin, ensure you have the following:
|
||
|
|
||
|
- <Prerequisite 1>
|
||
|
- <Prerequisite 2>
|
||
|
- ...
|
||
|
```
|
||
|
|
||
|
Suggest and link to next steps and related resources at the end of the article, for example:
|
||
|
|
||
|
- Learn more about A, B, C
|
||
|
- Configure X
|
||
|
- Use X to achieve Y
|
||
|
- Use X to achieve Z
|
||
|
- Project homepage or documentation
|
||
|
- Project repository (for example, GitHub, GitLab)
|
||
|
- Project package (for example, pip or NPM)
|
||
|
|
||
|
You don't need to use the "Refer to..." syntax for next steps; use the link text directly.
|
||
|
|
||
|
### Copy
|
||
|
|
||
|
Write simple, direct copy with short sentences and paragraphs.
|
||
|
|
||
|
Use contractions:
|
||
|
|
||
|
- it's, isn't, that's, you're, don't
|
||
|
|
||
|
Choose simple words:
|
||
|
|
||
|
- use (not utilize)
|
||
|
- help (not assist)
|
||
|
- show (not demonstrate)
|
||
|
|
||
|
Write with verbs and nouns. Use minimal adjectives except when describing Grafana Labs products.
|
||
|
|
||
|
## Tense
|
||
|
|
||
|
Write in present simple tense.
|
||
|
|
||
|
Avoid present continuous tense.
|
||
|
|
||
|
Only write in future tense to show future actions.
|
||
|
|
||
|
### Voice
|
||
|
|
||
|
Always write in an active voice.
|
||
|
|
||
|
Change passive voice to active voice.
|
||
|
|
||
|
### Perspective
|
||
|
|
||
|
Address users as "you".
|
||
|
|
||
|
Use second person perspective consistently.
|
||
|
|
||
|
### Wordlist
|
||
|
|
||
|
Use allowlist/blocklist instead of whitelist/blacklist.
|
||
|
|
||
|
Use primary/secondary instead of master/slave.
|
||
|
|
||
|
Use "refer to" instead of "see", "consult", "check out", and other phrases.
|
||
|
|
||
|
### Formatting
|
||
|
|
||
|
Use sentence case for titles and headings.
|
||
|
|
||
|
Use inline Markdown links: [Link text](https://example.com).
|
||
|
|
||
|
Link to other sections using descriptive phrases that include the section name:
|
||
|
"For setup details, refer to the [Lists](#lists) section."
|
||
|
|
||
|
Bold text with two asterisks: **bold**
|
||
|
|
||
|
Emphasize text with one underscore: _italics_
|
||
|
|
||
|
Format UI elements using sentence case as they appear:
|
||
|
|
||
|
- Click **Submit**.
|
||
|
- Navigate to **User settings**.
|
||
|
- Configure **Alerting rules**.
|
||
|
|
||
|
### Lists
|
||
|
|
||
|
Write complete sentences for lists:
|
||
|
|
||
|
- Works with all languages and frameworks (correct)
|
||
|
- All languages and frameworks (incorrect)
|
||
|
|
||
|
Use dashes for unordered lists.
|
||
|
|
||
|
Bold keywords at list start and follow with a colon.
|
||
|
|
||
|
### Images
|
||
|
|
||
|
Include descriptive alt text that conveys the essential information or purpose.
|
||
|
|
||
|
Write alt text without "Image of..." or "Picture of..." prefixes.
|
||
|
|
||
|
### Code
|
||
|
|
||
|
Use single code backticks for:
|
||
|
|
||
|
- user input
|
||
|
- placeholders in markdown, for example _`<PLACEHOLDER_NAME>`_
|
||
|
- files and directories, for example `/opt/file.md`
|
||
|
- source code keywords and identifiers,
|
||
|
for example variables, function and class names
|
||
|
- configuration options and values, for example `PORT` and `80`
|
||
|
- status codes, for example `404`
|
||
|
|
||
|
Use triple code backticks followed by the syntax for code blocks, for example:
|
||
|
|
||
|
```javascript
|
||
|
console.log('Hello World!');
|
||
|
```
|
||
|
|
||
|
Introduce each code block with a short description.
|
||
|
End the introduction with a colon if the code sample follows it, for example:
|
||
|
|
||
|
```markdown
|
||
|
The code sample outputs "Hello World!" to the browser console:
|
||
|
|
||
|
<CODE_BLOCK>
|
||
|
```
|
||
|
|
||
|
Use descriptive placeholder names in code samples.
|
||
|
Use uppercase letters with underscores to separate words in placeholders,
|
||
|
for example:
|
||
|
|
||
|
```sh
|
||
|
OTEL_RESOURCE_ATTRIBUTES="service.name=<SERVICE_NAME>
|
||
|
OTEL_EXPORTER_OTLP_ENDPOINT=<OTLP_ENDPOINT>
|
||
|
```
|
||
|
|
||
|
The placeholder includes the name and the less than and greater than symbols,
|
||
|
for example <PLACEHOLDER_NAME>.
|
||
|
|
||
|
If the placeholder is markdown emphasize it with underscores,
|
||
|
for example _`<PLACEHOLDER_NAME>`_.
|
||
|
|
||
|
In code blocks use the placeholder without additional backticks or emphasis,
|
||
|
for example <PLACEHOLDER_NAME>.
|
||
|
|
||
|
Provide an explanation for each placeholder,
|
||
|
typically in the text following the code block or in a configuration section.
|
||
|
|
||
|
Follow code samples with an explanation
|
||
|
and configuration options for placeholders, for example:
|
||
|
|
||
|
```markdown
|
||
|
<CODE_BLOCK>
|
||
|
|
||
|
This code sets required environment variables
|
||
|
to send OTLP data to an OTLP endpoint.
|
||
|
To configure the code refer to the configuration section.
|
||
|
|
||
|
<CONFIGURATION>
|
||
|
```
|
||
|
|
||
|
Put configuration for a code block after the code block.
|
||
|
|
||
|
## APIs
|
||
|
|
||
|
When documenting API endpoints specify the HTTP method,
|
||
|
for example `GET`, `POST`, `PUT`, `DELETE`.
|
||
|
|
||
|
Provide the full request path, using backticks.
|
||
|
|
||
|
Use backticks for parameter names and example values.
|
||
|
|
||
|
Use placeholders like `{userId}` for path parameters, for example:
|
||
|
|
||
|
- To retrieve user details, make a `GET` request to `/api/v1/users/{userId}`.
|
||
|
|
||
|
### CLI commands
|
||
|
|
||
|
When presenting CLI commands and their output,
|
||
|
introduce the command with a brief explanation of its purpose.
|
||
|
Clearly distinguish the command from its output.
|
||
|
|
||
|
For commands, use `sh` to specify the code block language.
|
||
|
|
||
|
For output, use a generic specifier like `text`, `console`,
|
||
|
or `json`/`yaml` if the output is structured.
|
||
|
|
||
|
For example:
|
||
|
|
||
|
```markdown
|
||
|
To list all running pods in the `default` namespace, use the following command:
|
||
|
|
||
|
<CODE_BLOCK>
|
||
|
```
|
||
|
|
||
|
The output will resemble the following:
|
||
|
|
||
|
```text
|
||
|
NAME READY STATUS RESTARTS AGE
|
||
|
my-app-deployment-7fdb6c5f65-abcde 1/1 Running 0 2d1h
|
||
|
another-service-pod-xyz123 2/2 Running 0 5h30m
|
||
|
```
|
||
|
|
||
|
### Shortcodes
|
||
|
|
||
|
Leave Hugo shortcodes in the content when editing.
|
||
|
|
||
|
Use our custom admonition Hugo shortcode for notes, cautions, or warnings,
|
||
|
with `<TYPE>` as "note", "caution", or "warning":
|
||
|
|
||
|
```markdown
|
||
|
{{< admonition type="<TYPE>" >}}
|
||
|
...
|
||
|
{{< /admonition >}}
|
||
|
```
|
||
|
|
||
|
Use admonitions sparingly.
|
||
|
Only include exceptional information in admonitions.
|
||
|
|
||
|
<!-- docs-ai-end -->
|