Merge remote-tracking branch 'origin/master' into api-docs-uplift

pull/6942/head
Jason Stirnaman 2026-03-11 11:05:59 -05:00
commit 160b308afa
397 changed files with 3874 additions and 1110 deletions

View File

@ -0,0 +1,82 @@
---
name: doc-review-agent
description: |
Diff-only PR review agent for documentation changes. Reviews Markdown
changes against style guide, frontmatter rules, shortcode syntax, and
documentation standards. Available for local Claude Code review sessions.
model: sonnet
---
You are a documentation review agent for the InfluxData docs-v2 repository.
Your job is to review PR diffs for documentation quality issues. You review
Markdown source only — visual/rendered review is handled separately by Copilot.
## Review Scope
Check the PR diff for these categories. Reference the linked docs for
detailed rules — do not invent rules that aren't documented.
### 1. Frontmatter
Rules: [DOCS-FRONTMATTER.md](../../DOCS-FRONTMATTER.md)
- `title` and `description` are required on every page
- `menu` structure matches the product's menu key
- `weight` is present and uses the correct range (1-99, 101-199, etc.)
- `source` paths for shared content point to valid `/shared/` paths
- No duplicate or conflicting frontmatter keys
### 2. Shortcode Syntax
Rules: [DOCS-SHORTCODES.md](../../DOCS-SHORTCODES.md)
- Shortcodes use correct opening/closing syntax (`{{< >}}` vs `{{% %}}`
depending on whether inner content is Markdown)
- Required parameters are present
- Closing tags match opening tags
- Callouts use GitHub-style syntax: `> [!Note]`, `> [!Warning]`, etc.
### 3. Semantic Line Feeds
Rules: [DOCS-CONTRIBUTING.md](../../DOCS-CONTRIBUTING.md)
- One sentence per line
- Long sentences should be on their own line, not concatenated
### 4. Heading Hierarchy
- No h1 headings in content (h1 comes from `title` frontmatter)
- Headings don't skip levels (h2 → h4 without h3)
### 5. Terminology and Product Names
- Use official product names: "InfluxDB 3 Core", "InfluxDB 3 Enterprise",
"InfluxDB Cloud Serverless", "InfluxDB Cloud Dedicated", etc.
- Don't mix v2/v3 terminology in v3 docs (e.g., "bucket" in Core docs)
- Version references match the content path
### 6. Links
- Internal links use relative paths or Hugo `relref` shortcodes
- No hardcoded `docs.influxdata.com` links in content files
- Anchor links match actual heading IDs
### 7. Shared Content
- `source:` frontmatter points to an existing shared file path
- Shared files don't contain frontmatter (only content)
- Changes to shared content are intentional (affects multiple products)
## Output Format
Follow the shared review comment format, severity definitions, and label
mapping in
[.github/templates/review-comment.md](../../.github/templates/review-comment.md).
## What NOT to Review
- Rendered HTML appearance (Copilot handles this)
- Code correctness inside code blocks (pytest handles this)
- Link validity (link-checker workflow handles this)
- Vale style linting (Vale handles this)
- Files outside the diff

View File

@ -0,0 +1,72 @@
---
name: doc-triage-agent
description: |
Triage agent for documentation issues and PRs. Applies product labels,
assesses priority, and determines readiness for automated workflows.
Uses data/products.yml as the single source of truth for path-to-product
mapping.
model: sonnet
---
You are a documentation triage agent for the InfluxData docs-v2 repository.
Your job is to label, prioritize, and route issues and PRs for the
documentation team.
## Label Taxonomy
Apply labels using the definitions in these source files:
- **Product labels** (`product:*`): Read
[data/products.yml](../../data/products.yml) — match changed file paths
against each product's `content_path`, apply `product:{label_group}`.
Apply all matching labels. For shared content, apply `product:shared` plus
labels for all products that reference the shared file.
- **Non-product labels**: Read
[data/labels.yml](../../data/labels.yml) for all source, waiting, workflow,
and review label names and descriptions.
- **Review labels** (`review:*`): Defined in `data/labels.yml` but applied
only by the doc-review workflow, not during triage.
## Priority Assessment
Assess priority based on:
1. **Product tier:** InfluxDB 3 Core/Enterprise > Cloud Dedicated/Serverless > v2 > v1
2. **Issue type:** Incorrect information > missing content > style issues
3. **Scope:** Security/data-loss implications > functional docs > reference docs
4. **Staleness:** Issues with `waiting:*` labels older than 14 days should be
escalated or re-triaged
## Decision Logic
### When to apply `agent-ready`
Apply when ALL of these are true:
- The issue has clear, actionable requirements
- No external dependencies (no `waiting:*` labels)
- The fix is within the documentation scope (not a product bug)
- Product labels are applied (agent needs to know which content to modify)
### When to apply `waiting:*`
Apply when the issue:
- References undocumented API behavior → `waiting:engineering`
- Requires a product decision about feature naming or scope → `waiting:product`
- Needs clarification from the reporter about expected behavior → add a comment asking, don't apply waiting
### When to apply `review:needs-human`
Apply during triage only if:
- The issue involves complex cross-product implications
- The content change could affect shared content used by many products
- The issue requires domain expertise the agent doesn't have
## Triage Workflow
1. Read the issue/PR title and body
2. Identify affected products from content paths or mentions
3. Apply product labels
4. Apply source label if applicable
5. Assess whether the issue is ready for agent work
6. Apply `agent-ready` or `waiting:*` as appropriate
7. Post a brief triage comment summarizing the labeling decision

View File

@ -1,51 +1,51 @@
{
"permissions": {
"allow": [
"Bash(.ci/vale/vale.sh:*)",
"Bash(npm:*)",
"Bash(yarn:*)",
"Bash(pnpm:*)",
"Bash(npx:*)",
"Bash(node:*)",
"Bash(python:*)",
"Bash(python3:*)",
"Bash(pip:*)",
"Bash(poetry:*)",
"Bash(make:*)",
"Bash(cargo:*)",
"Bash(go:*)",
"Bash(curl:*)",
"Bash(gh:*)",
"Bash(hugo:*)",
"Bash(htmlq:*)",
"Bash(jq:*)",
"Bash(yq:*)",
"Bash(mkdir:*)",
"Bash(cat:*)",
"Bash(ls:*)",
"Bash(echo:*)",
"Bash(rg:*)",
"Bash(grep:*)",
"Bash(find:*)",
"Bash(bash:*)",
"Bash(wc:*)",
"Bash(sort:*)",
"Bash(uniq:*)",
"Bash(head:*)",
"Bash(tail:*)",
"Bash(awk:*)",
"Bash(touch:*)",
"Bash(docker:*)",
"Edit",
"Read",
"Write",
"Grep",
"Glob",
"LS",
"Skill(superpowers:brainstorming)",
"Skill(superpowers:brainstorming:*)",
"mcp__acp__Bash"
],
"Bash(.ci/vale/vale.sh:*)",
"Bash(npm:*)",
"Bash(yarn:*)",
"Bash(pnpm:*)",
"Bash(npx:*)",
"Bash(node:*)",
"Bash(python:*)",
"Bash(python3:*)",
"Bash(pip:*)",
"Bash(poetry:*)",
"Bash(make:*)",
"Bash(cargo:*)",
"Bash(go:*)",
"Bash(curl:*)",
"Bash(gh:*)",
"Bash(hugo:*)",
"Bash(htmlq:*)",
"Bash(jq:*)",
"Bash(yq:*)",
"Bash(mkdir:*)",
"Bash(cat:*)",
"Bash(ls:*)",
"Bash(echo:*)",
"Bash(rg:*)",
"Bash(grep:*)",
"Bash(find:*)",
"Bash(bash:*)",
"Bash(wc:*)",
"Bash(sort:*)",
"Bash(uniq:*)",
"Bash(head:*)",
"Bash(tail:*)",
"Bash(awk:*)",
"Bash(touch:*)",
"Bash(docker:*)",
"Edit",
"Read",
"Write",
"Grep",
"Glob",
"LS",
"Skill(superpowers:brainstorming)",
"Skill(superpowers:brainstorming:*)",
"mcp__acp__Bash"
],
"deny": [
"Read(./.env)",
"Read(./.env.*)",
@ -58,5 +58,8 @@
"Bash(rm:*)",
"Read(/tmp)"
]
},
"enabledPlugins": {
"github@claude-plugins-official": true
}
}

View File

@ -359,33 +359,12 @@ Use the Documentation MCP Server when the information here is inconclusive, when
### Setup
The documentation MCP server is hosted—no local installation required. Add the server URL to your AI assistant's MCP configuration.
The documentation MCP server is hosted at `https://influxdb-docs.mcp.kapa.ai`—no local installation required.
**MCP server URL:**
Already configured in [`.mcp.json`](/.mcp.json). Two server entries are available:
```text
https://influxdb-docs.mcp.kapa.ai
```
**Claude Desktop configuration** (Settings > Developer):
```json
{
"mcpServers": {
"influxdb-docs": {
"url": "https://influxdb-docs.mcp.kapa.ai"
}
}
}
```
For other AI assistants see the [InfluxDB documentation MCP server guide](/influxdb3/core/admin/mcp-server/)
and verify the MCP configuration options and syntax for a specific AI assistant.
**Rate limits** (per Google OAuth user):
- 40 requests per hour
- 200 requests per day
- **`influxdb-docs`** (API key) — Set `INFLUXDATA_DOCS_KAPA_API_KEY` env var. 60 req/min.
- **`influxdb-docs-oauth`** (OAuth) — No setup. Authenticates via Google on first use. 40 req/hr, 200 req/day.
### Available Tool
@ -552,17 +531,12 @@ touch content/influxdb3/enterprise/path/to/file.md
### MCP Server Not Responding
The hosted MCP server (`https://influxdb-docs.mcp.kapa.ai`) requires:
1. **Google OAuth authentication** - On first use, sign in with Google
2. **Rate limits** - 40 requests/hour, 200 requests/day per user
**Troubleshooting steps:**
- Verify your AI assistant has the MCP server URL configured correctly
- Check if you've exceeded rate limits (wait an hour or until the next day)
- Try re-authenticating by clearing your OAuth session
- Ensure your network allows connections to `*.kapa.ai`
- **API key auth** (`influxdb-docs`): Verify `INFLUXDATA_DOCS_KAPA_API_KEY` is set. Rate limit: 60 req/min.
- **OAuth auth** (`influxdb-docs-oauth`): Sign in with Google on first use. Rate limits: 40 req/hr, 200 req/day.
- Verify your network allows connections to `*.kapa.ai`
- Check if you've exceeded rate limits (wait and retry)
### Cypress Tests Fail

View File

@ -299,15 +299,42 @@ echo "systemd" >> .ci/vale/styles/config/vocabularies/InfluxDataDocs/accept.txt
### Creating a Product-Specific Override
> [!Important]
> Product-specific `.vale.ini` files must include the same disabled rules as the
> root `.vale.ini`. Rules disabled in the root config are **not** inherited by
> product-specific configs. Omitting them re-enables the rules for those products.
> For example, omitting `Google.Units = NO` causes duration literals like `7d`,
> `24h` to be flagged as errors in product-specific linting runs.
```bash
# 1. Create product-specific .vale.ini
cat > content/influxdb3/cloud-dedicated/.vale.ini << 'EOF'
StylesPath = ../../../.ci/vale/styles
MinAlertLevel = error
MinAlertLevel = warning
Vocab = InfluxDataDocs
Packages = Google, write-good, Hugo
[*.md]
BasedOnStyles = Vale, InfluxDataDocs, Google, write-good
# These rules must be disabled in every product .vale.ini, same as the root .vale.ini.
Google.Acronyms = NO
Google.DateFormat = NO
Google.Ellipses = NO
Google.Headings = NO
Google.WordList = NO
# Disable Google.Units in favor of InfluxDataDocs.Units which only checks byte
# units (GB, TB, etc). Duration literals (30d, 24h, 1h) are valid InfluxDB syntax.
Google.Units = NO
Vale.Spelling = NO
Vale.Terms = NO
write-good.TooWordy = NO
TokenIgnores = /[a-zA-Z0-9/_\-\.]+, \
https?://[^\s\)\]>"]+, \
`[^`]+`
# Product-specific overrides
InfluxDataDocs.Branding = YES
EOF

704
.github/DOC-REVIEW-PIPELINE-PLAN.md vendored Normal file
View File

@ -0,0 +1,704 @@
# Doc Review Pipeline — Implementation Plan
**Status:** Complete — all phases implemented and tested
**Repository:** influxdata/docs-v2
**Author:** Triage agent (Claude Code)
**Date:** 2026-02-28
---
## Table of Contents
1. [Goal](#goal)
2. [What Already Exists](#what-already-exists)
3. [Architecture Overview](#architecture-overview)
4. [Phase 1: Label System Overhaul](#phase-1-label-system-overhaul)
5. [Phase 2: Doc Review Workflow](#phase-2-doc-review-workflow)
6. [Phase 3: Documentation and Agent Instructions](#phase-3-documentation-and-agent-instructions)
7. [Future Phases (Not In Scope)](#future-phases-not-in-scope)
8. [Decisions (Resolved)](#decisions-resolved)
9. [Risk Assessment](#risk-assessment)
---
## Goal
Build two interconnected systems:
1. **Label system** — An automation-driven label taxonomy that supports
cross-repo automation, agentic workflows, and human-in-the-loop review.
2. **Doc review pipeline** — A GitHub Actions workflow that automates
documentation PR review using Copilot for both code review (diff-based,
using auto-loaded instruction files) and visual review (rendered HTML
at preview URLs), with rendered-page verification that catches issues
invisible in the Markdown source.
The pipeline catches issues only visible in rendered output — expanded
shortcodes, broken layouts, incorrect product names — by having Copilot
analyze the rendered HTML of deployed preview pages.
---
## What Already Exists
### Infrastructure
| Component | Location | Notes |
|-----------|----------|-------|
| PR preview deployment | `.github/workflows/pr-preview.yml` | Builds Hugo site, deploys to `gh-pages` branch at `influxdata.github.io/docs-v2/pr-preview/pr-{N}/` |
| Changed file detection | `.github/scripts/detect-preview-pages.js` | Detects changed files, maps content to public URLs, handles shared content |
| Content-to-URL mapping | `scripts/lib/content-utils.js` | `getChangedContentFiles()`, `mapContentToPublic()`, `expandSharedContentChanges()` |
| Screenshot tooling | `scripts/puppeteer/screenshot.js` | Puppeteer-based screenshot utility (already a dependency) |
| Playwright | `package.json` | Already a dependency (`^1.58.1`) |
| Claude agent instructions | `CLAUDE.md`, `AGENTS.md`, `.claude/` | Review criteria, style guide, skills, commands |
| Copilot instructions | `.github/copilot-instructions.md` | Style guide, repo structure, patterns |
| Copilot pattern instructions | `.github/instructions/` | Auto-loaded by Copilot based on changed file patterns |
| Auto-labeling (path-based) | Not yet implemented | Needed for Phase 1 |
| Link checker workflow | `.github/workflows/pr-link-check.yml` | Validates links on PR changes |
| Sync plugins workflow | `.github/workflows/sync-plugins.yml` | Issue-triggered workflow pattern to follow |
| Audit documentation workflow | `.github/workflows/audit-documentation.yml` | Creates issues from audit results |
### Labels (Current State)
The repo has 30+ labels with inconsistent naming patterns and significant
overlap. Product labels use long names (`InfluxDB 3 Core and Enterprise`),
workflow states are minimal (`release:pending` is the only actively used one),
and there is no agent-readiness or blocking-state taxonomy.
---
## Architecture Overview
```
PR opened/updated (content paths)
├──────────────────────────┐
▼ ▼
┌─ Job 1: Resolve URLs ────┐ ┌─ Job 2: Copilot Code Review ───┐
│ resolve-review-urls.js │ │ gh pr edit --add-reviewer │
│ changed files → URLs │ │ copilot-reviews │
│ Output: url list │ │ Uses .github/instructions/ │
└──────────┬───────────────┘ │ for auto-loaded review rules │
│ └──────────────┬─────────────────┘
▼ │
┌─ Job 3: Copilot Visual Review ────────┐ │
│ Wait for preview deployment │ │
│ Post preview URLs + review prompt │ │
@copilot analyzes rendered HTML │ │
│ Checks: layout, shortcodes, 404s │ │
└──────────────┬───────────────────────┘ │
│ │
▼ ▼
Human reviews what remains
```
**Job 2 (Copilot code review) runs in parallel with Jobs 1→3** — it uses
GitHub's native Copilot reviewer, which analyzes the PR diff using
auto-loaded instruction files from `.github/instructions/`.
---
## Phase 1: Label System Overhaul
### Rationale
The label system is a prerequisite for agentic workflows. Agents need clear
signals about issue readiness (`agent-ready`), blocking states
(`waiting:engineering`, `waiting:product`), and product scope
(`product:v3-monolith`, `product:v3-distributed`).
Consistent label patterns also enable GitHub API queries for dashboards and
automation.
### 1.1 — Label taxonomy
> **Note:** The tables below are a planning snapshot. The authoritative
> definitions live in `data/labels.yml` (non-product labels) and
> `data/products.yml` (product labels). See `.github/LABEL_GUIDE.md` for
> the current index.
**24 labels organized into 6 categories:**
#### Product labels (11) — Color: `#FFA500` (yellow)
| Label | Description |
|-------|-------------|
| `product:v3-monolith` | InfluxDB 3 Core and Enterprise (single-node / clusterable) |
| `product:v3-distributed` | InfluxDB 3 Cloud Serverless, Cloud Dedicated, Clustered |
| `product:v2` | InfluxDB v2 (Cloud, OSS) |
| `product:v1` | InfluxDB v1 OSS |
| `product:v1-enterprise` | InfluxDB Enterprise v1 |
| `product:telegraf` | Telegraf documentation |
| `product:chronograf` | Chronograf documentation |
| `product:kapacitor` | Kapacitor documentation |
| `product:flux` | Flux language documentation |
| `product:explorer` | InfluxDB 3 Explorer |
| `product:shared` | Shared content across products |
#### Source tracking labels (4) — Color: `#9370DB` (purple)
| Label | Description |
|-------|-------------|
| `source:auto-detected` | Created by change detection within this repo |
| `source:dar` | Generated by DAR pipeline (issue analysis → draft) |
| `source:sync` | Synced from an external repository |
| `source:manual` | Human-created issue |
#### Waiting states (2) — Color: `#FF8C00` (orange)
| Label | Description |
|-------|-------------|
| `waiting:engineering` | Waiting for engineer confirmation |
| `waiting:product` | Waiting for product/PM decision |
#### Workflow states (2) — Color: `#00FF00` / `#1E90FF`
| Label | Description |
|-------|-------------|
| `agent-ready` | Agent can work on this autonomously |
| `skip-review` | Skip automated doc review pipeline |
> [!Note]
> Human codeowner approval uses GitHub's native PR review mechanism (CODEOWNERS file), not a label. The `review:*` labels below are applied **manually** after reviewing Copilot feedback.
#### Review outcome labels (3) — Color: `#28A745` / `#DC3545` / `#FFC107`
| Label | Description |
|-------|-------------|
| `review:approved` | Review passed — no blocking issues found |
| `review:changes-requested` | Review found blocking issues |
| `review:needs-human` | Review inconclusive, needs human |
> [!Note]
> All labels use colons (`:`) as separators for consistency. The `review:*` labels
> are mutually exclusive. They are applied manually after review — the CI workflow
> does not manage labels. Copilot code review uses GitHub's native "Comment"
> review type.
#### Existing labels to keep (renamed) (2)
| Old Name | New Name | Description |
|----------|----------|-------------|
| `AI assistant tooling` | `ai:tooling` | Related to AI assistant infrastructure |
| `ci:testing-and-validation` | `ci:testing` | CI/testing infrastructure |
### 1.2 — Migration scripts
Create migration scripts in `helper-scripts/label-migration/`:
- **`create-labels.sh`** — Creates all new labels using `gh label create --force` (idempotent)
- **`migrate-labels.sh`** — Migrates existing issues from old labels to new labels using `gh issue edit`
- **`delete-labels.sh`** — Deletes old labels (requires interactive confirmation)
- **`README.md`** — Execution order, prerequisites, rollback instructions
**Migration mapping:**
| Old Label | New Label |
|-----------|-----------|
| `InfluxDB 3 Core and Enterprise` | `product:v3-monolith` |
| `InfluxDB v3` | `product:v3-monolith` (review individually — some may be distributed) |
| `Processing engine` | `product:v3-monolith` |
| `InfluxDB v2` | `product:v2` |
| `InfluxDB v1` | `product:v1` |
| `Enterprise 1.x` | `product:v1-enterprise` |
| `Chronograf 1.x` | `product:chronograf` |
| `Kapacitor` | `product:kapacitor` |
| `Flux` | `product:flux` |
| `InfluxDB 3 Explorer` | `product:explorer` |
| `Pending Release` | `release:pending` |
| `release/influxdb3` | `release:pending` |
| `sync-plugin-docs` | `source:sync` |
> [!Important]
> **Workflow Updates Required:**
> The `sync-plugin-docs` label is used in GitHub Actions workflows. After migrating this label to `source:sync`, the following files must be updated:
> - `.github/workflows/sync-plugins.yml` (lines 28, 173, 421)
> - `.github/ISSUE_TEMPLATE/sync-plugin-docs.yml` (line 4)
>
> Update all references from `sync-plugin-docs` to `source:sync` to ensure the plugin sync automation continues to work after the label migration.
> [!Note]
> `release:pending` is an existing workflow state label that we are keeping as-is.
> The migration scripts **must ensure** this label exists (create it if missing) and **must not** delete it in the cleanup step.
**Labels to delete after migration:**
`bug`, `priority`, `documentation`, `Proposal`, `Research Phase`,
`ready-for-collaboration`, `ui`, `javascript`, `dependencies`,
`integration-demo-blog`, `API`, `Docker`, `Grafana`, `Ask AI`,
plus all old product labels listed above.
**Execution:**
1. Run `create-labels.sh` (safe, idempotent)
2. Run `migrate-labels.sh`
3. Human verifies a sample of issues
4. Run `delete-labels.sh` (destructive, requires confirmation)
### 1.3 — Auto-labeling workflow
**File:** `.github/workflows/auto-label.yml`
**Trigger:** `pull_request: [opened, synchronize]`
**Logic:**
- List changed files via `github.rest.pulls.listFiles()`
- Read `data/products.yml` for path-to-label mappings (single source of truth):
- Each product entry has `content_path` and `label_group` fields
- Match file paths against `content/{content_path}/``product:{label_group}`
- Example: `content/influxdb3/core/` matches `content_path: influxdb3/core`,
`label_group: v3-monolith` → applies `product:v3-monolith`
- Shared content handling:
- `content/shared/` changes apply `product:shared` label
- Additionally expand shared content to affected products using
`expandSharedContentChanges()` from `scripts/lib/content-utils.js`
- Apply all affected product labels (additive)
- Multi-product PRs: apply all matching `product:*` labels (additive)
- Only add labels that are not already present (idempotent)
- Runs as `actions/github-script@v7`
---
## Phase 2: Doc Review Workflow
### 2.1 — Workflow file
**File:** `.github/workflows/doc-review.yml`
**Trigger:**
```yaml
on:
pull_request:
types: [opened, synchronize, ready_for_review]
paths:
- 'content/**'
- 'layouts/**'
- 'assets/**'
- 'data/**'
```
**Permissions:** `contents: read`, `pull-requests: write`
**Concurrency:** `group: doc-review-${{ github.event.number }}`, `cancel-in-progress: true`
**Skip conditions:** Draft PRs, fork PRs, PRs with a `skip-review` label (new label to be added in Phase 1 via the label migration scripts).
### 2.2 — Job 1: Resolve URLs
**Purpose:** Map changed files to preview URLs.
**Implementation:**
- Reuse the existing `detect-preview-pages.js` script and `content-utils.js` library
- Same logic as `pr-preview.yml` Job 1, but output a JSON artifact instead of deploying
- Output format: `[{"file": "content/influxdb3/core/write-data/_index.md", "url": "/influxdb3/core/write-data/"}]`
- Upload as `urls.json` workflow artifact
**Key detail:** This job runs `getChangedContentFiles()` and `mapContentToPublic()`
from `scripts/lib/content-utils.js`, which already handles shared content
expansion (if `content/shared/foo.md` changes, all pages with
`source: /shared/foo.md` are included).
### 2.3 — Job 2: Copilot Code Review
**Purpose:** Review Markdown changes against the style guide and documentation
standards using GitHub's native Copilot code review. Visual review of rendered
pages is handled separately in Job 3.
**Dependencies:** None beyond the PR itself. This job runs in parallel with
Jobs 1→3.
**Implementation:**
- Adds `copilot-reviews` as a PR reviewer via `gh pr edit --add-reviewer`
- Copilot automatically reviews the PR diff using instruction files from
`.github/instructions/` that are auto-loaded based on changed file patterns
- No custom prompt or API key required
**Review criteria file:** `.github/instructions/content-review.instructions.md`
This file is auto-loaded by Copilot for PRs that change `content/**/*.md`
files. It checks for:
1. **Frontmatter correctness** — Required fields, menu structure, weights
2. **Shortcode syntax** — Correct usage, closing tags, parameters
3. **Semantic line feeds** — One sentence per line
4. **Heading hierarchy** — No h1 in content (title comes from frontmatter)
5. **Product-specific terminology** — Correct product names, versions
6. **Link format** — Relative links, proper shortcode links
7. **Shared content**`source:` frontmatter correctness
8. **Code blocks** — Language identifiers, line length, long CLI options
**Severity classification:**
- `BLOCKING` — Wrong product names, invalid frontmatter, broken shortcode syntax
- `WARNING` — Style inconsistencies, missing semantic line feeds
- `INFO` — Suggestions, not problems
**Output:**
- Copilot posts inline review comments using GitHub's native "Comment"
review type
- `review:*` labels are applied manually by humans after reviewing the
Copilot feedback — the workflow does not manage labels
### 2.4 — Job 3: Copilot Visual Review (rendered HTML)
**Purpose:** Have Copilot analyze the rendered preview pages to catch visual
and structural issues invisible in the Markdown source.
**Dependencies:** Depends on Job 1 (needs URL list). Must wait for the
`pr-preview.yml` deployment to be live.
**Why Copilot for visual review:**
- Copilot can analyze rendered HTML content at public preview URLs — no
screenshot capture or image upload required.
- Visual review is a good fit for Copilot because the rendered pages are
self-contained artifacts (no need to cross-reference repo files).
- Copilot code review (Job 2) handles the diff; visual review catches what
the diff review cannot.
**Implementation:**
1. **Wait for preview deployment:**
- Poll `https://influxdata.github.io/docs-v2/pr-preview/pr-{N}/` with
`curl --head` until it returns 200
- Timeout: 10 minutes (preview build takes ~75s + deploy time)
- Poll interval: 15 seconds
- If timeout, skip visual review; Copilot code review (Job 2) still runs
2. **Post preview URLs and trigger Copilot review:**
- Use `actions/github-script@v7` to post a PR comment listing the preview
URLs from Job 1, formatted as clickable links
- Post a follow-up comment tagging `@copilot` with instructions to review
the rendered pages at the preview URLs. The comment should instruct
Copilot to check each page for:
- Raw shortcode syntax visible on the page (`{{<` or `{{%`)
- Placeholder text that should have been replaced
- Broken layouts: overlapping text, missing images, collapsed sections
- Code blocks rendered incorrectly (raw HTML/Markdown fences visible)
- Navigation/sidebar entries correct
- Visible 404 or error state
- Product name inconsistencies in the rendered page header/breadcrumbs
- The review instruction template is stored in
`.github/prompts/copilot-visual-review.md` for maintainability
- Preview URL count capped at 50 pages (matching `MAX_PAGES` in
`detect-preview-pages.js`)
3. **Comment upsert pattern:**
- Visual review comments use a marker-based upsert pattern — the workflow
updates an existing comment if one with the marker exists, otherwise
creates a new one. This prevents duplicate comments on `synchronize`
events.
### 2.6 — Workflow failure handling
- If preview deployment times out: skip Copilot visual review (Job 3),
Copilot code review (Job 2) still runs independently. Post a comment
explaining visual review was skipped.
- If Copilot does not respond to the `@copilot` mention: the preview URLs
remain in the comment for human review.
- Never block PR merge on workflow failures — the workflow adds comments
but does not set required status checks or manage labels.
---
## Phase 3: Documentation and Agent Instructions
### 3.1 — Instruction file architecture
**Principle:** One `CLAUDE.md` that references role-specific files. No per-role
CLAUDE files — Claude Code only reads one `CLAUDE.md` per directory level. The
role context comes from the task prompt (GitHub Actions workflow), not the config
file.
```
CLAUDE.md ← lightweight pointer (already exists)
├── references .github/LABEL_GUIDE.md ← label taxonomy + usage
├── references .claude/agents/ ← role-specific agent instructions
│ ├── doc-triage-agent.md ← triage + auto-label logic
│ └── doc-review-agent.md ← local review sessions (Claude Code)
└── references .github/instructions/ ← Copilot auto-loaded instructions
└── content-review.instructions.md ← review criteria for content/**/*.md
```
**How review roles are assigned at runtime:**
- **Copilot code review (CI):** GitHub's native reviewer. Auto-loads
instruction files from `.github/instructions/` based on changed file
patterns. No custom prompt or API key needed.
- **Copilot visual review (CI):** Triggered by `@copilot` mention in a PR
comment with preview URLs and a review template.
- **Claude local review:** Uses `.claude/agents/doc-review-agent.md` for
local Claude Code sessions. Not used in CI.
- Shared rules (style guide, frontmatter, shortcodes) stay in the existing
referenced files (`DOCS-CONTRIBUTING.md`, `DOCS-SHORTCODES.md`, etc.)
- No duplication — each instruction file says what's unique to that context
### 3.2 — Agent instruction files
#### `.claude/agents/doc-triage-agent.md`
Role-specific instructions for issue/PR triage. Contents:
- **Label taxonomy** — Full label list with categories, colors, descriptions
- **Path-to-product mapping** — Which content paths map to which `product:*` labels
- **Priority rules** — How to assess priority based on product, scope, and issue type
- **Decision logic** — When to apply `agent-ready`, `waiting:*`, `review:needs-human`
- **Migration context** — Old label → new label mapping (useful during transition)
This file does NOT duplicate style guide rules. It references
`DOCS-CONTRIBUTING.md` for those.
#### `.claude/agents/doc-review-agent.md`
Role-specific instructions for **local** Claude Code review sessions. This
file is NOT used in CI — the CI review is handled by Copilot using
`.github/instructions/content-review.instructions.md`.
Contents:
- **Review scope** — Markdown diff review only (frontmatter, shortcodes,
semantic line feeds, heading hierarchy, terminology, links, shared content).
- **Severity classification** — BLOCKING / WARNING / INFO definitions with examples
- **Output format** — Structured review comment template
This file references `DOCS-CONTRIBUTING.md` for style rules and
`DOCS-SHORTCODES.md` for shortcode syntax — it does NOT restate them.
### 3.3 — Label usage guide
**File:** `.github/LABEL_GUIDE.md`
Contents:
- Label categories with descriptions and colors
- Common workflows (issue triage, DAR pipeline, manual work)
- GitHub filter queries for agents and humans
- Auto-labeling behavior reference
### 3.4 — Update existing pointer files
**`CLAUDE.md`** — Add one line to the "Full instruction resources" list:
```markdown
- [.github/LABEL_GUIDE.md](.github/LABEL_GUIDE.md) - Label taxonomy and pipeline usage
```
**`AGENTS.md`** — Add a section referencing the label guide and agent roles:
```markdown
## Doc Review Pipeline
- Label guide: `.github/LABEL_GUIDE.md`
- Triage agent: `.claude/agents/doc-triage-agent.md`
- Review agent: `.claude/agents/doc-review-agent.md`
```
**`.github/copilot-instructions.md`** — Add the label guide to the
"Specialized Resources" table.
These are small additions — no restructuring of existing files.
### 3.5 — Review instruction files
#### `.github/instructions/content-review.instructions.md` (Copilot code review)
Auto-loaded by Copilot for PRs that change `content/**/*.md` files. Contains
the review criteria (frontmatter, shortcodes, heading hierarchy, terminology,
links, code blocks) with severity classification.
This file replaces the original `.github/prompts/doc-review.md` Claude prompt.
The review criteria are the same but delivered through Copilot's native
instruction file mechanism instead of a custom action.
#### `.github/templates/review-comment.md` (shared format)
Shared definitions for severity levels, comment structure, and result → label
mapping. Used by `doc-review-agent.md` (local review sessions) and the
Copilot visual review template.
#### Copilot visual review template
The `@copilot` visual review comment is constructed inline in the
`doc-review.yml` workflow using the review template from
`.github/templates/review-comment.md`. Contains:
- The visual review checklist (raw shortcodes, broken layouts, 404s, etc.)
- Instructions for analyzing the rendered pages at the preview URLs
- Output format guidance (what to flag, severity levels)
---
## Future Phases (Not In Scope)
These are explicitly **not** part of this plan. Documented here for context.
### v2 — Screenshot-based visual review
- Add Playwright screenshot capture script (`.github/scripts/capture-screenshots.js`)
for design/layout PRs where HTML analysis isn't sufficient.
- Capture full-page PNGs of preview pages, upload as workflow artifacts.
- Useful for PRs touching `layouts/`, `assets/css/`, or template changes
where visual regression matters.
- The existing `scripts/puppeteer/screenshot.js` remains for local debugging;
the CI script should use Playwright for reliability.
### v3 — Stale PR management
- Cron job that scans for stale PRs (draft >3 days with no review activity)
and pings the author.
- Metrics tracking: % of PRs that pass Copilot review on first attempt.
### v4 — Agent-driven issue resolution
- Auto-assign doc issues to agents based on `agent-ready` label.
- Claude or Copilot drafts the fix, then the other agent reviews.
- Closes the loop: issue → draft → review → human approval.
---
## Decisions (Resolved)
### Q1: How should Copilot review rendered pages? — RESOLVED
**Decision:** Copilot reviews rendered HTML at public preview URLs — no
screenshots needed. Job 3 posts preview URLs in a PR comment, then tags
`@copilot` with a review prompt. See section 2.5 for implementation details.
This approach works because:
- Preview pages are publicly accessible at `influxdata.github.io/docs-v2/pr-preview/pr-{N}/`
- Copilot can analyze HTML content at public URLs
- No screenshot capture, image upload, or artifact management required
Screenshot capture is deferred to Future Phases (v2) for design/layout PRs
where visual regression testing matters.
### Q2: Should the review workflow be a required status check? — RESOLVED
**Decision:** No. Start as advisory (comments only). The workflow posts review
comments but does not set required status checks or manage labels. `review:*`
labels are applied manually after review. Make it required only after the team
confirms the false-positive rate is acceptable (see Future Phases).
### Q3: Should screenshots use Playwright or Puppeteer? — DEFERRED
**Decision:** Deferred to Future Phases (v2). The current implementation
reviews rendered HTML at preview URLs, not screenshots. When screenshot
capture is added later, use Playwright for CI and keep Puppeteer for local
debugging.
### Q4: How to handle the `pr-preview.yml` dependency? — RESOLVED
**Decision:** Option A — poll the preview URL with timeout. Job 3 polls
`https://influxdata.github.io/docs-v2/pr-preview/pr-{N}/` with `curl --head`
every 15 seconds until it returns 200, with a 10-minute timeout. If timeout is
reached, skip Copilot visual review; Copilot code review (Job 2) still runs
independently.
Rationale: Polling is simple, self-contained, and resilient. The URL pattern is
deterministic. Option B (`workflow_run`) adds complexity and doesn't handle
cases where preview doesn't deploy. Option C (combined workflow) makes the
workflow too large and eliminates the parallelism benefit.
### Q5: Cost and rate limiting — RESOLVED
**Decision:** Acceptable. Both code review and visual review use the repo's
Copilot allocation. No external API keys or per-call costs.
Mitigations already designed into the workflow:
- `paths` filter ensures only doc-content PRs trigger the workflow.
- `skip-review` label allows trivial PRs to opt out.
- Concurrency group cancels in-progress reviews when the PR is updated.
- Preview URL count is capped at 50 pages (matching `MAX_PAGES` in
`resolve-review-urls.js`).
- Draft and fork PRs are skipped entirely.
### Q6: Label separator convention — RESOLVED
**Decision:** Use colons (`:`) everywhere. No slashes. One separator for
consistency — expecting humans or agents to infer different semantics from
separator choice is unrealistic. Mutually exclusive behavior (e.g., `review:*`
labels) is enforced in workflow code, not punctuation.
### Q7: Human approval mechanism — RESOLVED
**Decision:** Use GitHub's native PR review system (CODEOWNERS file) for human
approval. No `approval:codeowner` label. The `review:*` labels are exclusively
for automated pipeline outcomes.
### Q8: Product path mapping — RESOLVED
**Decision:** Extend `data/products.yml` with `content_path` and `label_group`
fields. This file becomes the single source of truth for path-to-product
resolution, used by the auto-label workflow, matrix-generator, and documentation
(AGENTS.md). Eliminates duplicated mappings across multiple files.
### Q9: `sync-plugin-docs` label migration — RESOLVED
**Decision:** Migrate to `source:sync` (not `source:auto-detected`). Plugin
sync is a distinct operation from change detection. `source:sync` is general
enough to cover future external repo syncs without being hyper-specific.
### Q10: Multi-product and shared content labeling — RESOLVED
**Decision:** Auto-labeling is additive — apply all matching `product:*` labels.
Changes to `content/shared/` get the `product:shared` label plus all expanded
product labels (resolved via `expandSharedContentChanges()`).
---
## Risk Assessment
| Risk | Impact | Mitigation |
|------|--------|------------|
| Preview not deployed in time | Low | 10-minute polling timeout, fall back to code-only review |
| False positives in review | Medium | Start as advisory (not required check), iterate instruction files |
| Label migration data loss | Low | Migrate before deleting; human verification gate |
| Copilot visual review misses issues | Medium | Preview URLs remain in comment for human review; start advisory |
| Copilot code review quality | Medium | Review criteria in `.github/instructions/` can be iterated; local Claude review available as backup |
| Product mapping drift | Low | Single source of truth in `data/products.yml`; auto-label and matrix-generator both derive from it |
---
## File Summary
Files to create or modify:
| Action | File | Phase | Status |
|--------|------|-------|--------|
| Modify | `data/products.yml` | 1.0 | Done |
| Modify | `data/labels.yml` | 1.1 | Done |
| Create | `helper-scripts/label-migration/create-labels.sh` | 1.2 | Done |
| Create | `helper-scripts/label-migration/migrate-labels.sh` | 1.2 | Done |
| Create | `helper-scripts/label-migration/delete-labels.sh` | 1.2 | Done |
| Create | `helper-scripts/label-migration/README.md` | 1.2 | Done |
| Create | `.github/workflows/auto-label.yml` | 1.3 | Done |
| Create | `.github/workflows/doc-review.yml` | 2.1 | Done |
| Create | `.claude/agents/doc-triage-agent.md` | 3.2 | Done |
| Create | `.claude/agents/doc-review-agent.md` | 3.2 | Done |
| Create | `.github/LABEL_GUIDE.md` | 3.3 | Done |
| Create | `.github/instructions/content-review.instructions.md` | 3.5 | Done |
| Create | `.github/templates/review-comment.md` | 2.5/3.5 | Done |
| Modify | `CLAUDE.md` | 3.4 | Done |
| Modify | `AGENTS.md` | 3.4 | Done |
| Modify | `.github/copilot-instructions.md` | 3.4 | Done |
---
## Implementation Order
1. ~~**Phase 1.0** — Extend `data/products.yml` with `content_path` and `label_group`~~
2. ~~**Phase 1.11.2** — Create label migration scripts~~
3. ~~**Phase 1.3** — Create auto-label workflow~~
4. ~~**Execute label migration** — Run scripts, then manual cleanup~~
5. ~~**Phase 3.2** — Create agent instruction files~~
6. ~~**Phase 2.12.3** — Workflow skeleton + URL resolution + Copilot code review~~
7. ~~**Phase 2.5** — Copilot visual review job~~
8. ~~**Phase 3.33.5** — Label guide, instruction files, pointer updates~~
9. ~~**Test end-to-end** — Triggered workflows via `workflow_dispatch` against PR #6890~~
### End-to-end test results (2026-03-09)
Triggered via `workflow_dispatch` with `pr_number=6890` on branch
`claude/triage-agent-plan-EOY0u`.
| Workflow | Job | Result | Notes |
|----------|-----|--------|-------|
| Auto-label PRs | auto-label | Pass | Loaded 14 path mappings, 0 product labels (correct — no content changes) |
| Doc Review | resolve-urls | Pass | 0 preview URLs (correct — no content changes) |
| Doc Review | copilot-review | Pass | `copilot-reviews` added as reviewer |
| Doc Review | copilot-visual-review | Skipped | Correct — 0 URLs to review |
**Fixes applied during testing:**
- `npm ci` replaced with targeted `js-yaml` install (sparse checkout lacks lock file)
- Added `workflow_dispatch` with `pr_number` input for on-demand re-runs
**Remaining:** Visual review (Job 3) needs a content-changing PR to fully exercise
the preview URL polling and Copilot `@copilot` mention flow.

View File

@ -1,7 +1,7 @@
name: Sync Plugin Documentation
description: Request synchronization of plugin documentation from influxdb3_plugins repository
title: "Sync plugin docs: [PLUGIN_NAMES]"
labels: ["sync-plugin-docs", "documentation", "automation"]
labels: ["source:sync", "documentation", "automation"]
assignees: []
body:
- type: markdown

100
.github/LABEL_GUIDE.md vendored Normal file
View File

@ -0,0 +1,100 @@
# Label Guide
Label taxonomy for the docs-v2 repository. Used by automation workflows,
triage agents, and human contributors.
## Label Definitions
- **Product labels** (`product:*`): Derived from
[data/products.yml](../data/products.yml) — each product's `label_group`
field determines the label name, `content_path` determines which files
trigger it. Applied by the [auto-label workflow](workflows/auto-label.yml).
Multi-product PRs get all matching labels. Shared content changes get
`product:shared` plus labels for all products that reference the shared file.
- **Source, waiting, workflow, and review labels**: Defined in
[data/labels.yml](../data/labels.yml) — names, colors, and descriptions.
- **Review label behavior** (severity levels, result rules, result → label
mapping): Defined in
[templates/review-comment.md](templates/review-comment.md).
Human approval uses GitHub's native PR review system (CODEOWNERS), not labels.
## Renamed Labels
| Old Name | New Name |
|----------|----------|
| `AI assistant tooling` | `ai:tooling` |
| `ci:testing-and-validation` | `ci:testing` |
| `design` | `area:site-ui` |
| `InfluxDB Cloud` | `product:v2-cloud` |
| `user feedback` | `source:feedback` |
| `ai:tooling` | `area:agents` |
## Deleted Labels
| Label | Replacement | Reason |
|-------|-------------|--------|
| `Pending PR` | `waiting:pr` | Consolidated into `waiting:` namespace |
| `broke-link` | `area:links` | Consolidated into `area:` namespace |
## Common Workflows
### Issue triage
1. Read issue → identify product(s) → apply `product:*` labels
2. Apply `source:*` label if applicable
3. Determine readiness → apply `agent-ready` or `waiting:*`
### PR review pipeline
1. PR opened → auto-label applies `product:*` labels
2. Doc review workflow triggers (unless `skip-review` is present)
3. Copilot code review runs on the diff (uses
[`.github/instructions/`](instructions/) files from the base branch)
4. Copilot visual review checks rendered preview pages
5. Human reviewer uses GitHub's PR review for final approval
Review labels (`review:*`) are applied manually after review, not by CI.
### GitHub Filter Queries
```
# PRs needing human review
label:review:needs-human is:pr is:open
# Agent-ready issues
label:agent-ready is:issue is:open -label:waiting:engineering -label:waiting:product
# All InfluxDB 3 issues
label:product:v3-monolith,product:v3-distributed is:issue is:open
# Blocked issues
label:waiting:engineering,waiting:product is:issue is:open
# PRs that skipped review
label:skip-review is:pr
```
## Auto-labeling Behavior
The [auto-label workflow](workflows/auto-label.yml) runs on
`pull_request: [opened, synchronize]` and:
- Reads path-to-product mappings from `data/products.yml`
- Matches changed files to product labels
- Expands shared content changes to affected product labels
- Adds labels idempotently (skips labels already present)
- Skips draft and fork PRs
## References
- Label definitions: `data/labels.yml`
- Product definitions: `data/products.yml`
- Review comment format: `.github/templates/review-comment.md`
- Auto-label workflow: `.github/workflows/auto-label.yml`
- Doc review workflow: `.github/workflows/doc-review.yml`
- Triage agent: `.claude/agents/doc-triage-agent.md`
- Review agent: `.claude/agents/doc-review-agent.md`
- Migration scripts: `helper-scripts/label-migration/`

View File

@ -2,261 +2,61 @@
> **For GitHub Copilot and other AI coding agents**
>
> This is the primary instruction file for GitHub Copilot working with the InfluxData documentation site.
>
> **Instruction resources**:
>
> - [.github/agents/copilot-instructions-agent.md](agents/copilot-instructions-agent.md) - **Creating/improving Copilot instructions**
> - [.claude/skills/](../.claude/skills/) - **Detailed workflows** (content editing, testing, InfluxDB setup, templates)
> - [.github/instructions/](instructions/) - **Pattern-specific** (auto-loaded by file type)
> - [.github/agents/](agents/) - **Specialist agents** (TypeScript/Hugo, Copilot management)
> - [AGENTS.md](../AGENTS.md), [CLAUDE.md](../CLAUDE.md) - General AI assistant guides
> - [AGENTS.md](../AGENTS.md) - Shared project guidelines (style, constraints, content structure)
> - [.github/LABEL_GUIDE.md](LABEL_GUIDE.md) - Label taxonomy and review pipeline
## Quick Reference
| Task | Command | Time | Details |
| ---------------- | ----------------------------------------------------- | ------- | ------------------------------------- |
| Install | `CYPRESS_INSTALL_BINARY=0 yarn install` | \~4s | Skip Cypress for CI |
| Build | `npx hugo --quiet` | \~75s | NEVER CANCEL |
| Dev Server | `npx hugo server` | \~92s | Port 1313 |
| Create Docs | `docs create <draft> --products <keys>` | varies | AI-assisted scaffolding |
| Create & Open | `docs create <draft> --products <keys> --open` | instant | Non-blocking (background) |
| Create & Wait | `docs create <draft> --products <keys> --open --wait` | varies | Blocking (interactive) |
| Edit Docs | `docs edit <url>` | instant | Non-blocking (background) |
| Edit Docs (wait) | `docs edit <url> --wait` | varies | Blocking (interactive) |
| List Files | `docs edit <url> --list` | instant | Show files without opening |
| Add Placeholders | `docs placeholders <file>` | instant | Add placeholder syntax to code blocks |
| Audit Docs | `docs audit --products <keys>` | varies | Audit documentation coverage |
| Release Notes | `docs release-notes <v1> <v2> --products <keys>` | varies | Generate release notes from commits |
| Test All | `yarn test:codeblocks:all` | 15-45m | NEVER CANCEL |
| Lint | `yarn lint` | \~1m | Pre-commit checks |
| Task | Command | Time |
| ---------------- | ----------------------------------------------------- | ------- |
| Install | `CYPRESS_INSTALL_BINARY=0 yarn install` | \~4s |
| Build | `npx hugo --quiet` | \~75s |
| Dev Server | `npx hugo server` | \~92s |
| Create Docs | `docs create <draft> --products <keys>` | varies |
| Edit Docs | `docs edit <url>` | instant |
| Add Placeholders | `docs placeholders <file>` | instant |
| Audit Docs | `docs audit --products <keys>` | varies |
| Test All | `yarn test:codeblocks:all` | 15-45m |
| Lint | `yarn lint` | \~1m |
**NEVER CANCEL** Hugo builds (\~75s) or test runs (15-45m).
## CLI Tools
**For when to use CLI vs direct editing**, see [docs-cli-workflow skill](../.claude/skills/docs-cli-workflow/SKILL.md).
```bash
# Create new documentation (AI-assisted scaffolding)
docs create <draft> --products <key-or-path>
docs create <draft> --products influxdb3_core --open # Non-blocking
docs create <draft> --products influxdb3_core --open --wait # Blocking
# Find and edit documentation by URL
docs edit <url> # Non-blocking (agent-friendly)
docs edit <url> --list # List files only
docs edit <url> --wait # Wait for editor
# Other tools
docs placeholders <file> # Add placeholder syntax to code blocks
docs audit --products <keys> # Audit documentation coverage
docs release-notes <v1> <v2> --products <keys>
# Get help
docs --help
docs create --help
docs --help # Full reference
```
**Key points**:
- Accepts both product keys (`influxdb3_core`) and paths (`/influxdb3/core`)
- Non-blocking by default (agent-friendly)
- Use `--wait` for interactive editing
- `--products` and `--repos` are mutually exclusive for audit/release-notes
Non-blocking by default. Use `--wait` for interactive editing.
## Workflows
### Content Editing
- **Content editing**: See [content-editing skill](../.claude/skills/content-editing/SKILL.md)
- **Testing**: See [DOCS-TESTING.md](../DOCS-TESTING.md)
- **Hugo templates**: See [hugo-template-dev skill](../.claude/skills/hugo-template-dev/SKILL.md)
See [content-editing skill](../.claude/skills/content-editing/SKILL.md) for complete workflow:
## Product and Content Paths
- Creating/editing content with CLI
- Shared content management
- Testing and validation
### Testing
See [DOCS-TESTING.md](../DOCS-TESTING.md) and [cypress-e2e-testing skill](../.claude/skills/cypress-e2e-testing/SKILL.md).
Quick tests (NEVER CANCEL long-running):
```bash
yarn test:codeblocks:all # 15-45m
yarn test:links # 1-5m
yarn lint # 1m
```
### InfluxDB 3 Setup
See [influxdb3-test-setup skill](../.claude/skills/influxdb3-test-setup/SKILL.md).
Quick setup:
```bash
./test/scripts/init-influxdb3.sh core # Per-worktree, port 8282
./test/scripts/init-influxdb3.sh enterprise # Shared, port 8181
./test/scripts/init-influxdb3.sh all # Both
```
### Hugo Template Development
See [hugo-template-dev skill](../.claude/skills/hugo-template-dev/SKILL.md) for template syntax, data access, and testing strategies.
## Repository Structure
### Content Organization
- **InfluxDB 3**: `/content/influxdb3/` (core, enterprise, cloud-dedicated, cloud-serverless, clustered, explorer)
- **InfluxDB v2**: `/content/influxdb/` (v2, cloud)
- **InfluxDB v1**: `/content/influxdb/v1`
- **InfluxDB Enterprise (v1)**: `/content/enterprise_influxdb/v1/`
- **Telegraf**: `/content/telegraf/v1/`
- **Kapacitor**: `/content/kapacitor/`
- **Chronograf**: `/content/chronograf/`
- **Flux**: `/content/flux/`
- **Examples**: `/content/example.md` (comprehensive shortcode reference)
- **Shared content**: `/content/shared/`
### Key Files
- **Config**: `/config/_default/`, `package.json`, `compose.yaml`, `lefthook.yml`
- **Testing**: `cypress.config.js`, `pytest.ini`, `.vale.ini`
- **Assets**: `/assets/` (JS, CSS), `/layouts/` (templates), `/data/` (YAML/JSON)
- **Build output**: `/public/` (\~529MB, gitignored)
## Technology Stack
- **Hugo** - Static site generator
- **Node.js/Yarn** - Package management
- **Testing**: Pytest, Cypress, link-checker, Vale
- **Tools**: Docker, ESLint, Prettier, Lefthook
## Common Issues
### Network Restrictions
Commands that may fail in restricted environments:
- Docker builds (external repos)
- `docker compose up local-dev` (Alpine packages)
- Cypress installation (use `CYPRESS_INSTALL_BINARY=0`)
### Pre-commit Validation
```bash
# Quick validation before commits
yarn prettier --write "**/*.{css,js,ts,jsx,tsx}"
yarn eslint assets/js/**/*.js
npx hugo --quiet
```
## Documentation Coverage
- **InfluxDB 3**: Core, Enterprise, Cloud (Dedicated/Serverless), Clustered, Explorer, plugins
- **InfluxDB v2/v1**: OSS, Cloud, Enterprise
- **Tools**: Telegraf, Kapacitor, Chronograf, Flux
- **API Reference**: All InfluxDB editions
Defined in [data/products.yml](../data/products.yml).
## Content Guidelines
**Style guide**: Google Developer Documentation Style Guide\
**Voice**: Active, present tense, second person\
**Line breaks**: Semantic line feeds (one sentence per line)\
**Files**: lowercase-with-hyphens.md
- [DOCS-CONTRIBUTING.md](../DOCS-CONTRIBUTING.md) - Style, workflow, commit format
- [DOCS-SHORTCODES.md](../DOCS-SHORTCODES.md) - Shortcode reference
- [DOCS-FRONTMATTER.md](../DOCS-FRONTMATTER.md) - Frontmatter reference
- [content/example.md](../content/example.md) - Working shortcode examples
### Quick Shortcodes
## File Pattern-Specific Instructions
````markdown
# Callouts (GitHub-style alerts)
> [!Note] / [!Warning] / [!Tip] / [!Important] / [!Caution]
# Required elements
{{< req >}}
{{< req type="key" >}}
# Code placeholders
```sh { placeholders="DATABASE_NAME|API_TOKEN" }
curl https://example.com/api?db=DATABASE_NAME
````
````
**Complete reference**: [DOCS-SHORTCODES.md](../DOCS-SHORTCODES.md)
### Required Frontmatter
```yaml
title: # Required
description: # Required
menu:
product_menu_key:
name: # Optional
parent: # Optional
weight: # Required: 1-99, 101-199, 201-299...
````
**Shared content**: Add `source: /shared/path/to/file.md`
**Complete reference**: [DOCS-FRONTMATTER.md](../DOCS-FRONTMATTER.md)
### Resources
- [DOCS-CONTRIBUTING.md](../DOCS-CONTRIBUTING.md) - Workflow & guidelines
- [DOCS-SHORTCODES.md](../DOCS-SHORTCODES.md) - Complete shortcodes
- [DOCS-FRONTMATTER.md](../DOCS-FRONTMATTER.md) - Complete metadata
- [DOCS-TESTING.md](../DOCS-TESTING.md) - Testing procedures
- [content/example.md](../content/example.md) - Working examples
## Troubleshooting
| Issue | Solution |
| ------------------------ | ---------------------------------------------------------------- |
| Pytest collected 0 items | Use `python` not `py` for language identifier |
| Hugo build errors | Check `/config/_default/` |
| Docker build fails | Expected in restricted networks - use local Hugo |
| Cypress install fails | Use `CYPRESS_INSTALL_BINARY=0 yarn install` |
| Link validation slow | Test specific files: `yarn test:links content/file.md` |
| Vale "0 errors in stdin" | File is outside repo - Vale Docker can only access repo files |
| Vale false positives | Add terms to `.ci/vale/styles/InfluxDataDocs/Terms/ignore.txt` |
| Vale duration warnings | Duration literals (`30d`) are valid - check InfluxDataDocs.Units |
## Specialized Instructions
### File Pattern-Specific Instructions
These instructions are automatically loaded by GitHub Copilot based on the files you're working with:
Auto-loaded by GitHub Copilot based on changed files:
| Pattern | File | Description |
| ------------------------ | ----------------------------------------------------------------- | ------------------------------------------------ |
| `content/**/*.md` | [content.instructions.md](instructions/content.instructions.md) | Content file guidelines, frontmatter, shortcodes |
| `content/**/*.md` | [content-review.instructions.md](instructions/content-review.instructions.md) | Review criteria for content changes |
| `layouts/**/*.html` | [layouts.instructions.md](instructions/layouts.instructions.md) | Shortcode implementation patterns and testing |
| `api-docs/**/*.yml` | [api-docs.instructions.md](instructions/api-docs.instructions.md) | OpenAPI spec workflow |
| `assets/js/**/*.{js,ts}` | [assets.instructions.md](instructions/assets.instructions.md) | TypeScript/JavaScript and CSS development |
### Specialized Resources
**Custom Agents** (`.github/agents/`):
- [typescript-hugo-agent.md](agents/typescript-hugo-agent.md) - TypeScript/Hugo development
- [copilot-instructions-agent.md](agents/copilot-instructions-agent.md) - Managing Copilot instructions
**Claude Skills** (`.claude/skills/` - detailed workflows):
- [content-editing](../.claude/skills/content-editing/SKILL.md) - Complete content workflow
- [docs-cli-workflow](../.claude/skills/docs-cli-workflow/SKILL.md) - CLI decision guidance
- [cypress-e2e-testing](../.claude/skills/cypress-e2e-testing/SKILL.md) - E2E testing
- [hugo-template-dev](../.claude/skills/hugo-template-dev/SKILL.md) - Hugo templates
- [influxdb3-test-setup](../.claude/skills/influxdb3-test-setup/SKILL.md) - InfluxDB 3 setup
- [vale-linting](../.claude/skills/vale-linting/SKILL.md) - Vale configuration and debugging
**Documentation**:
- [DOCS-TESTING.md](../DOCS-TESTING.md) - Testing procedures
- [DOCS-CONTRIBUTING.md](../DOCS-CONTRIBUTING.md) - Contribution guidelines
- [DOCS-FRONTMATTER.md](../DOCS-FRONTMATTER.md) - Frontmatter reference
- [DOCS-SHORTCODES.md](../DOCS-SHORTCODES.md) - Shortcodes reference
## Important Notes
- This is a large site (5,359+ pages) with complex build processes
- **NEVER CANCEL** long-running operations (Hugo builds, tests)
- Set appropriate timeouts: Hugo build (180s+), tests (30+ minutes)

View File

@ -0,0 +1,76 @@
---
applyTo: "content/**/*.md"
---
# Content Review Criteria
Review documentation changes against these rules. Only flag issues you are
confident about. Reference the linked docs for detailed rules.
## Frontmatter
Rules: [DOCS-FRONTMATTER.md](../../DOCS-FRONTMATTER.md)
- `title` and `description` are required on every page
- `menu` structure matches the product's menu key
- `weight` is present for pages in navigation
- `source` paths point to valid `/shared/` paths
- No duplicate or conflicting frontmatter keys
## Shortcode Syntax
Rules: [DOCS-SHORTCODES.md](../../DOCS-SHORTCODES.md)
- `{{< >}}` for HTML output, `{{% %}}` for Markdown-processed content
- Closing tags match opening tags
- Required parameters are present
- Callouts use GitHub-style syntax: `> [!Note]`, `> [!Warning]`, etc.
## Heading Hierarchy
- No h1 headings in content (h1 comes from `title` frontmatter)
- Headings don't skip levels (h2 -> h4 without h3)
## Semantic Line Feeds
Rules: [DOCS-CONTRIBUTING.md](../../DOCS-CONTRIBUTING.md)
- One sentence per line (better diffs)
- Long sentences on their own line, not concatenated
## Terminology and Product Names
Products defined in [data/products.yml](../../data/products.yml):
- Use official names: "InfluxDB 3 Core", "InfluxDB 3 Enterprise",
"InfluxDB Cloud Serverless", "InfluxDB Cloud Dedicated"
- Don't mix v2/v3 terminology (e.g., "bucket" in v3 Core docs)
- Version references match the content path
## Links
- Internal links use relative paths or Hugo `relref` shortcodes
- No hardcoded `docs.influxdata.com` links in content files
- Anchor links match actual heading IDs
## Code Blocks
- Use `python` not `py` for language identifiers (pytest requirement)
- Long options in CLI examples (`--output` not `-o`)
- Keep lines within 80 characters
- Include language identifier on fenced code blocks
## Shared Content
- `source:` frontmatter points to an existing shared file
- Shared files don't contain frontmatter (only content)
- Changes to shared content affect multiple products — flag if unintentional
## Severity
- **BLOCKING**: Broken rendering, wrong product names, missing required
frontmatter, malformed shortcodes, h1 in content body
- **WARNING**: Missing semantic line feeds, skipped heading levels, missing
`weight`, long CLI options not used
- **INFO**: Suggestions, code block missing language identifier, opportunities
to use shared content

View File

@ -0,0 +1,34 @@
# Visual Review Prompt
Review the rendered documentation pages at the preview URLs listed below.
Check each page for visual and structural issues that are invisible in the
Markdown source.
## Checklist
For each preview URL, verify:
- [ ] **No raw shortcodes** — No `{{<` or `{{%` syntax visible on the page
- [ ] **No placeholder text** — No `PLACEHOLDER`, `TODO`, `FIXME`, or
template variables visible in rendered content
- [ ] **Layout intact** — No overlapping text, missing images, or collapsed
sections
- [ ] **Code blocks render correctly** — No raw HTML fences or Markdown
syntax visible inside code blocks
- [ ] **Product names correct** — Page header, breadcrumbs, and sidebar show
the correct product name
- [ ] **No 404s or errors** — Page loads without error states
- [ ] **Navigation correct** — Sidebar entries link to the right pages and
the page appears in the expected location
## Output
Follow the shared review comment format, severity definitions, and label
mapping in
[templates/review-comment.md](../templates/review-comment.md).
Adapt the "Files Reviewed" section to list preview URLs instead of file
paths.
## Preview URLs

38
.github/scripts/resolve-review-urls.js vendored Normal file
View File

@ -0,0 +1,38 @@
/**
* Resolve Review URLs
*
* Maps changed content files to URL paths for the doc-review workflow.
* Reuses the same content-utils functions as detect-preview-pages.js.
*
* Outputs (for GitHub Actions):
* - urls: JSON array of URL paths
* - url-count: Number of URLs
*/
import { appendFileSync } from 'fs';
import {
getChangedContentFiles,
mapContentToPublic,
} from '../../scripts/lib/content-utils.js';
const GITHUB_OUTPUT = process.env.GITHUB_OUTPUT || '/dev/stdout';
const BASE_REF = process.env.BASE_REF || 'origin/master';
const MAX_PAGES = 50;
if (!/^origin\/[a-zA-Z0-9._/-]+$/.test(BASE_REF)) {
console.error(`Invalid BASE_REF: ${BASE_REF}`);
process.exit(1);
}
const changed = getChangedContentFiles(BASE_REF);
const htmlPaths = mapContentToPublic(changed, 'public');
const urls = Array.from(htmlPaths)
.sort()
.map((p) => '/' + p.replace(/^public\//, '').replace(/\/index\.html$/, '/'))
.slice(0, MAX_PAGES);
appendFileSync(GITHUB_OUTPUT, `urls=${JSON.stringify(urls)}\n`);
appendFileSync(GITHUB_OUTPUT, `url-count=${urls.length}\n`);
console.log(`Detected ${urls.length} preview URLs`);

104
.github/scripts/workflow-utils.js vendored Normal file
View File

@ -0,0 +1,104 @@
/**
* Workflow Utilities
*
* Canonical import for GitHub Actions workflow scripts. Re-exports shared
* utilities from scripts/lib/ and adds workflow-specific helpers.
*
* Usage from github-script inline steps:
*
* const utils = await import(`${process.cwd()}/.github/scripts/workflow-utils.js`);
* const pathToLabel = await utils.getProductLabelMap();
* const labels = utils.matchFilesToLabels(changedFiles, pathToLabel);
*
* Usage from .github/scripts/ ESM modules:
*
* import { getProductLabelMap, findPagesReferencingSharedContent } from './workflow-utils.js';
*/
import { readFileSync } from 'fs';
import { findPagesReferencingSharedContent } from '../../scripts/lib/content-utils.js';
// --- Re-export content utilities ---
export {
findPagesReferencingSharedContent,
expandSharedContentChanges,
getChangedContentFiles,
mapContentToPublic,
categorizeContentFiles,
getSourceFromFrontmatter,
} from '../../scripts/lib/content-utils.js';
/**
* Build a Map of content path prefixes to product label names
* by reading data/products.yml.
*
* Requires `js-yaml` to be installed (e.g., `npm install js-yaml`).
*
* @param {string} [productsPath='data/products.yml'] - Path to products.yml
* @returns {Promise<Map<string, string>>} Map of "content/{path}/" "product:{label_group}"
*/
export async function getProductLabelMap(productsPath = 'data/products.yml') {
const { load } = await import('js-yaml');
const products = load(readFileSync(productsPath, 'utf8'));
const pathToLabel = new Map();
for (const product of Object.values(products)) {
const cp = product.content_path;
const lg = product.label_group;
if (!cp || !lg) continue;
if (typeof cp === 'string' && typeof lg === 'string') {
pathToLabel.set(`content/${cp}/`, `product:${lg}`);
} else if (typeof cp === 'object' && typeof lg === 'object') {
for (const version of Object.keys(cp)) {
if (lg[version]) {
pathToLabel.set(`content/${cp[version]}/`, `product:${lg[version]}`);
}
}
}
}
return pathToLabel;
}
/**
* Match a list of file paths against the product label map.
* For shared content files, expands to find affected products.
*
* @param {string[]} files - Changed file paths
* @param {Map<string, string>} pathToLabel - From getProductLabelMap()
* @returns {Set<string>} Set of label names to apply
*/
export function matchFilesToLabels(files, pathToLabel) {
const labels = new Set();
for (const file of files) {
if (file.startsWith('content/shared/')) {
labels.add('product:shared');
try {
const referencingPages = findPagesReferencingSharedContent(file);
for (const page of referencingPages) {
for (const [prefix, label] of pathToLabel) {
if (page.startsWith(prefix)) {
labels.add(label);
break;
}
}
}
} catch {
// Shared content expansion failed — product:shared still applied
}
continue;
}
for (const [prefix, label] of pathToLabel) {
if (file.startsWith(prefix)) {
labels.add(label);
break;
}
}
}
return labels;
}

98
.github/templates/review-comment.md vendored Normal file
View File

@ -0,0 +1,98 @@
# Review Comment Format
Shared definitions for severity levels, comment structure, and result → label
mapping. Used by doc-review-agent.md (local review sessions) and
copilot-visual-review.md (rendered page review).
## Severity Levels
### BLOCKING
Issues that will cause incorrect rendering, broken pages, or misleading
content. These must be fixed before merge.
Examples:
- Missing required frontmatter (`title`, `description`)
- Unclosed or malformed shortcode tags
- Wrong product name in content (e.g., "InfluxDB 3" in v2 docs)
- Broken `source:` path for shared content
- h1 heading in content body
- Raw shortcode syntax visible on rendered page (`{{<` or `{{%`)
- 404 errors on preview pages
- Wrong product name in header or breadcrumbs
### WARNING
Style issues or minor visual problems that should be fixed but don't break
functionality or correctness.
Examples:
- Missing semantic line feeds (multiple sentences on one line)
- Heading level skipped (h2 → h4)
- Long option not used in CLI examples (`-o` instead of `--output`)
- Missing `weight` in frontmatter
- Minor layout issues (overlapping text, collapsed sections)
- Missing images
- Placeholder text visible (`TODO`, `FIXME`)
### INFO
Suggestions and observations. Not problems.
Examples:
- Opportunity to use a shared content file
- Unusually long page that could be split
- Code block missing language identifier
- Cosmetic improvements
## Comment Structure
Post a single review comment on the PR with this structure:
```markdown
## Doc Review Summary
**Result:** APPROVED | CHANGES REQUESTED | NEEDS HUMAN REVIEW
### Issues Found
#### BLOCKING
- **file:line** — Description of the issue
- Suggested fix: ...
#### WARNING
- **file:line** — Description of the issue
#### INFO
- **file:line** — Observation
### Files Reviewed
- `path/to/file.md` — Brief summary of changes
```
Adapt the "Files Reviewed" section to the review context:
- **Source review:** list file paths from the diff
- **Visual review (Copilot):** list preview URLs instead of file paths
## Result Rules
- Zero BLOCKING issues → **APPROVED**
- Any BLOCKING issues → **CHANGES REQUESTED**
- Cannot determine severity or diff is ambiguous → **NEEDS HUMAN REVIEW**
- Only report issues you are confident about. Do not guess.
- Group issues by file when multiple issues exist in the same file.
## Result → Label Mapping
| Result | Label |
|--------|-------|
| APPROVED | `review:approved` |
| CHANGES REQUESTED | `review:changes-requested` |
| NEEDS HUMAN REVIEW | `review:needs-human` |
Labels are mutually exclusive. Apply manually after review — Copilot code
review uses GitHub's native "Comment" review type and does not manage labels.

122
.github/workflows/auto-label.yml vendored Normal file
View File

@ -0,0 +1,122 @@
name: Auto-label PRs
on:
pull_request:
types: [opened, synchronize]
workflow_dispatch:
inputs:
pr_number:
description: 'PR number to label'
required: true
type: number
permissions: {}
concurrency:
group: auto-label-${{ github.event.number || inputs.pr_number }}
cancel-in-progress: true
jobs:
auto-label:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
# Skip draft PRs and fork PRs (workflow_dispatch always runs)
if: |
github.event_name == 'workflow_dispatch' ||
(!github.event.pull_request.draft &&
github.event.pull_request.head.repo.full_name == github.repository)
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
persist-credentials: false
sparse-checkout: |
content
data/products.yml
scripts/lib/content-utils.js
.github/scripts/workflow-utils.js
package.json
sparse-checkout-cone-mode: false
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: 22
- name: Install js-yaml
run: npm install --no-save --ignore-scripts --no-package-lock --legacy-peer-deps js-yaml
- name: Apply product labels
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
with:
script: |
const {
getProductLabelMap,
matchFilesToLabels,
} = await import(
`${process.cwd()}/.github/scripts/workflow-utils.js`
);
const prNumber =
context.issue.number ||
Number('${{ inputs.pr_number }}');
if (!prNumber) {
core.setFailed('No PR number available');
return;
}
// --- Build path-to-label mapping from products.yml ---
const pathToLabel = await getProductLabelMap();
core.info(
`Loaded ${pathToLabel.size} path-to-label mappings from products.yml`
);
// --- Get changed files from the PR (paginated) ---
const files = await github.paginate(
github.rest.pulls.listFiles,
{
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: prNumber,
per_page: 100,
}
);
const changedFiles = files.map(f => f.filename);
core.info(`PR has ${changedFiles.length} changed files`);
// --- Match files to product labels ---
const labelsToAdd = matchFilesToLabels(changedFiles, pathToLabel);
if (labelsToAdd.size === 0) {
core.info('No product labels to add');
return;
}
// --- Get existing PR labels to avoid duplicates ---
const { data: prData } = await github.rest.issues.get({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
});
const existingLabels = new Set(prData.labels.map(l => l.name));
const newLabels = [...labelsToAdd].filter(
l => !existingLabels.has(l)
);
if (newLabels.length === 0) {
core.info('All matching labels already present');
return;
}
// --- Apply labels ---
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
labels: newLabels,
});
core.info(`Added labels: ${newLabels.join(', ')}`);

280
.github/workflows/doc-review.yml vendored Normal file
View File

@ -0,0 +1,280 @@
name: Doc Review
on:
pull_request:
types: [opened, synchronize, ready_for_review]
paths:
- 'content/**'
- 'layouts/**'
- 'assets/**'
- 'data/**'
workflow_dispatch:
inputs:
pr_number:
description: 'PR number to review'
required: true
type: number
permissions: {}
concurrency:
group: doc-review-${{ github.event.number || inputs.pr_number }}
cancel-in-progress: true
jobs:
# -----------------------------------------------------------------
# Job 1: Resolve preview URLs from changed content files
# -----------------------------------------------------------------
resolve-urls:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
if: |
github.event_name == 'workflow_dispatch' ||
(!github.event.pull_request.draft &&
github.event.pull_request.head.repo.full_name == github.repository &&
!contains(github.event.pull_request.labels.*.name, 'skip-review'))
outputs:
urls: ${{ steps.detect.outputs.urls }}
url-count: ${{ steps.detect.outputs.url-count }}
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
persist-credentials: false
fetch-depth: 0
sparse-checkout: |
content
data/products.yml
scripts/lib/content-utils.js
.github/scripts/resolve-review-urls.js
package.json
sparse-checkout-cone-mode: false
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: 22
- name: Resolve base ref
id: base
env:
GH_TOKEN: ${{ github.token }}
PR_NUMBER: ${{ github.event.pull_request.number || inputs.pr_number }}
run: |
if [ -n "${{ github.base_ref }}" ]; then
echo "ref=origin/${{ github.base_ref }}" >> "$GITHUB_OUTPUT"
else
BASE=$(gh pr view "$PR_NUMBER" --repo "${{ github.repository }}" --json baseRefName -q .baseRefName)
git fetch origin "$BASE"
echo "ref=origin/$BASE" >> "$GITHUB_OUTPUT"
fi
- name: Detect changed pages
id: detect
env:
BASE_REF: ${{ steps.base.outputs.ref }}
run: node .github/scripts/resolve-review-urls.js
# -----------------------------------------------------------------
# Job 2: Copilot code review (runs in parallel with Job 1)
# -----------------------------------------------------------------
copilot-review:
runs-on: ubuntu-latest
permissions:
pull-requests: write
if: |
github.event_name == 'workflow_dispatch' ||
(!github.event.pull_request.draft &&
github.event.pull_request.head.repo.full_name == github.repository &&
!contains(github.event.pull_request.labels.*.name, 'skip-review'))
steps:
- name: Request Copilot review
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
env:
PR_NUMBER: ${{ github.event.pull_request.number || inputs.pr_number }}
with:
script: |
const prNumber = context.issue.number || Number(process.env.PR_NUMBER);
try {
await github.rest.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: prNumber,
reviewers: ['copilot-pull-request-reviewer'],
});
core.info('Copilot code review requested successfully');
} catch (error) {
core.warning(`Could not request Copilot review: ${error.message}`);
core.warning(
'To enable automatic Copilot reviews, configure a repository ruleset: ' +
'Settings → Rules → Rulesets → "Automatically request Copilot code review"'
);
}
# -----------------------------------------------------------------
# Job 3: Copilot visual review (depends on Job 1 for URLs)
# -----------------------------------------------------------------
copilot-visual-review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
needs: resolve-urls
if: needs.resolve-urls.result == 'success' && fromJson(needs.resolve-urls.outputs.url-count) > 0
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
persist-credentials: false
sparse-checkout: .github/prompts/copilot-visual-review.md
sparse-checkout-cone-mode: false
- name: Wait for preview deployment
id: wait
env:
PR_NUMBER: ${{ github.event.pull_request.number || inputs.pr_number }}
run: |
PREVIEW_URL="https://influxdata.github.io/docs-v2/pr-preview/pr-${PR_NUMBER}/"
TIMEOUT=600 # 10 minutes
INTERVAL=15
ELAPSED=0
echo "Waiting for preview at ${PREVIEW_URL}"
while [ "$ELAPSED" -lt "$TIMEOUT" ]; do
STATUS=$(curl -s -o /dev/null -L -w "%{http_code}" "$PREVIEW_URL" || echo "000")
if [ "$STATUS" = "200" ]; then
echo "Preview is live"
echo "available=true" >> "$GITHUB_OUTPUT"
exit 0
fi
echo "Status: ${STATUS} (${ELAPSED}s / ${TIMEOUT}s)"
sleep "$INTERVAL"
ELAPSED=$((ELAPSED + INTERVAL))
done
echo "Preview deployment timed out after ${TIMEOUT}s"
echo "available=false" >> "$GITHUB_OUTPUT"
- name: Post visual review request
if: steps.wait.outputs.available == 'true'
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
env:
PREVIEW_URLS: ${{ needs.resolve-urls.outputs.urls }}
PR_NUMBER: ${{ github.event.pull_request.number || inputs.pr_number }}
with:
script: |
const fs = require('fs');
let urls;
try {
urls = JSON.parse(process.env.PREVIEW_URLS);
} catch (e) {
core.warning(`Failed to parse PREVIEW_URLS: ${e.message}`);
return;
}
const prNumber = context.issue.number || Number(process.env.PR_NUMBER);
const previewBase = `https://influxdata.github.io/docs-v2/pr-preview/pr-${prNumber}`;
// Build preview URL list
const urlList = urls
.map(u => `- [${u}](${previewBase}${u})`)
.join('\n');
// Read the Copilot visual review template
const template = fs.readFileSync(
'.github/prompts/copilot-visual-review.md',
'utf8'
);
const marker = '<!-- doc-review-visual -->';
const body = [
marker,
'## Preview Pages for Review',
'',
`${urls.length} page(s) changed in this PR:`,
'',
'<details>',
'<summary>Preview URLs</summary>',
'',
urlList,
'',
'</details>',
'',
'---',
'',
`@github-copilot please review the preview pages listed above using the template below:`,
'',
template.trim(),
'',
urlList,
].join('\n');
// Update existing comment or create new one
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
});
const existing = comments.find(c => c.body.includes(marker));
if (existing) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: existing.id,
body,
});
} else {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
body,
});
}
core.info(`Posted visual review request with ${urls.length} URLs`);
- name: Post timeout notice
if: steps.wait.outputs.available == 'false'
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
env:
PR_NUMBER: ${{ github.event.pull_request.number || inputs.pr_number }}
with:
script: |
const prNumber = context.issue.number || Number(process.env.PR_NUMBER);
const marker = '<!-- doc-review-visual-timeout -->';
const body = [
marker,
'## Visual Review Skipped',
'',
'The PR preview deployment did not become available within 10 minutes.',
'Visual review was skipped. The Copilot code review (Job 2) still ran.',
'',
'To trigger visual review manually, re-run this workflow after the',
'preview is deployed.',
].join('\n');
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
});
const existing = comments.find(c => c.body.includes(marker));
if (existing) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: existing.id,
body,
});
} else {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
body,
});
}

View File

@ -139,6 +139,8 @@ jobs:
- name: Deploy preview
if: steps.detect.outputs.pages-to-deploy != '[]'
id: deploy-preview
continue-on-error: true
uses: rossjrw/pr-preview-action@v1.4.8
with:
source-dir: ./preview-staging
@ -146,8 +148,27 @@ jobs:
umbrella-dir: pr-preview
action: deploy
- name: Post success comment
- name: Validate preview deployment
if: steps.detect.outputs.pages-to-deploy != '[]'
id: validate-deploy
run: |
DEPLOY_OUTCOME="${{ steps.deploy-preview.outcome }}"
DEPLOY_URL="${{ steps.deploy-preview.outputs.deployment-url }}"
if [ -z "$DEPLOY_URL" ]; then
echo "Deployment step did not produce a preview URL. Failing preview job."
exit 1
fi
if [ "$DEPLOY_OUTCOME" != "success" ]; then
echo "Deployment reported outcome: $DEPLOY_OUTCOME"
echo "Preview URL exists; treating as transient post-deploy comment error."
fi
echo "status=ok" >> "$GITHUB_OUTPUT"
- name: Post success comment
if: steps.detect.outputs.pages-to-deploy != '[]' && steps.validate-deploy.outputs.status == 'ok'
uses: actions/github-script@v7
with:
script: |

View File

@ -25,7 +25,7 @@ jobs:
# Only run on issues with sync-plugin-docs label or manual dispatch
if: |
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'issues' && contains(github.event.issue.labels.*.name, 'sync-plugin-docs'))
(github.event_name == 'issues' && contains(github.event.issue.labels.*.name, 'source:sync'))
steps:
- name: Parse issue inputs
@ -170,7 +170,7 @@ jobs:
repo: context.repo.repo,
issue_number: parseInt(issueNumber),
state: 'closed',
labels: ['sync-plugin-docs', 'validation-failed']
labels: ['source:sync', 'validation-failed']
});
}
@ -418,7 +418,7 @@ jobs:
repo: context.repo.repo,
issue_number: ${{ steps.inputs.outputs.issue_number }},
state: 'closed',
labels: ['sync-plugin-docs', 'completed']
labels: ['source:sync', 'completed']
});
- name: Report failure

View File

@ -1,20 +1,33 @@
{
"$schema": "https://raw.githubusercontent.com/modelcontextprotocol/modelcontextprotocol/refs/heads/main/schema/2025-06-18/schema.json",
"description": "InfluxData documentation assistance via MCP server - Node.js execution",
"description": "InfluxData documentation assistance via MCP servers",
"mcpServers": {
"influxdb-docs": {
"comment": "Hosted InfluxDB documentation search. Uses API key auth (set INFLUXDATA_DOCS_KAPA_API_KEY env var). Get your key from the Kapa dashboard. Rate limits: 60 req/min.",
"type": "sse",
"url": "https://influxdb-docs.mcp.kapa.ai",
"headers": {
"Authorization": "Bearer ${INFLUXDATA_DOCS_KAPA_API_KEY}"
}
},
"influxdb-docs-oauth": {
"comment": "Hosted InfluxDB documentation search (OAuth). No API key needed--authenticates via Google OAuth on first use. Rate limits: 40 req/hr, 200 req/day.",
"type": "sse",
"url": "https://influxdb-docs.mcp.kapa.ai"
},
"influxdata": {
"comment": "Use Node to run Docs MCP. To install and setup, see https://github.com/influxdata/docs-mcp-server",
"comment": "Local Docs MCP server (optional). To install and setup, see https://github.com/influxdata/docs-mcp-server. NOTE: uses deprecated endpoints--pending update.",
"type": "stdio",
"command": "node",
"args": [
"${DOCS_MCP_SERVER_PATH}/dist/index.js"
],
"env": {
"DOCS_API_KEY_FILE": "${DOCS_API_KEY_FILE:-$HOME/.env.docs-kapa-api-key}",
"DOCS_MODE": "external-only",
"MCP_LOG_LEVEL": "${MCP_LOG_LEVEL:-info}",
"INFLUXDATA_DOCS_API_KEY_FILE": "${INFLUXDATA_DOCS_API_KEY_FILE:-$HOME/.env.docs-kapa-api-key}",
"INFLUXDATA_DOCS_MODE": "external-only",
"INFLUXDATA_DOCS_LOG_LEVEL": "${INFLUXDATA_DOCS_LOG_LEVEL:-info}",
"NODE_ENV": "${NODE_ENV:-production}"
}
}
}
}
}

219
AGENTS.md
View File

@ -1,33 +1,21 @@
# InfluxData Documentation (docs-v2)
> **For general AI assistants (Claude, ChatGPT, Gemini, etc.)**
>
> This guide provides comprehensive instructions for AI assistants helping with the InfluxData documentation repository. It focuses on content creation, writing workflows, and style guidelines.
>
> **Shared project guidelines for all AI assistants**
>
> **Other instruction resources**:
> - [.github/copilot-instructions.md](.github/copilot-instructions.md) - For GitHub Copilot (focused on coding and automation)
> - [CLAUDE.md](CLAUDE.md) - For Claude with MCP (minimal pointer)
> - [.github/copilot-instructions.md](.github/copilot-instructions.md) - GitHub Copilot (CLI tools, workflows, repo structure)
> - [CLAUDE.md](CLAUDE.md) - Claude with MCP (pointer file)
> - [.claude/](.claude/) - Claude MCP configuration (commands, agents, skills)
> - [.github/instructions/](.github/instructions/) - File pattern-specific instructions
## Project Overview
## Commands
This repository powers [docs.influxdata.com](https://docs.influxdata.com), a Hugo-based static documentation site covering InfluxDB 3, InfluxDB v2/v1, Telegraf, and related products.
**Key Characteristics:**
- **Scale**: 5,359+ pages
- **Build time**: ~75 seconds (NEVER cancel Hugo builds)
- **Tech stack**: Hugo, Node.js, Docker, Vale, Pytest, Cypress
- **Test time**: 15-45 minutes for full code block tests
## Quick Commands
| Task | Command | Time |
|------|---------|------|
| Install dependencies | `CYPRESS_INSTALL_BINARY=0 yarn install` | ~4s |
| Build site | `npx hugo --quiet` | ~75s |
| Dev server | `npx hugo server` | ~92s |
| Test code blocks | `yarn test:codeblocks:all` | 15-45m |
| Task | Command | Notes |
|------|---------|-------|
| Install | `CYPRESS_INSTALL_BINARY=0 yarn install` | ~4s |
| Build | `npx hugo --quiet` | ~75s — **NEVER CANCEL** |
| Dev server | `npx hugo server` | ~92s, port 1313 |
| Test code blocks | `yarn test:codeblocks:all` | 15-45m — **NEVER CANCEL** |
| Lint | `yarn lint` | ~1m |
## Repository Structure
@ -43,7 +31,7 @@ docs-v2/
│ └── example.md # Shortcode testing playground
├── layouts/ # Hugo templates and shortcodes
├── assets/ # JS, CSS, TypeScript
├── api-docs/ # OpenAPI specifications
├── api-docs/ # InfluxDB OpenAPI specifications, API reference documentation generation scripts
├── data/ # YAML/JSON data files
├── public/ # Build output (gitignored, ~529MB)
└── .github/
@ -52,16 +40,16 @@ docs-v2/
**Content Paths**: See [copilot-instructions.md](.github/copilot-instructions.md#content-organization)
## Documentation MCP Server
A hosted MCP server provides semantic search over all InfluxDB documentation.
Use it to verify technical accuracy, check API syntax, and find related docs.
See the [InfluxDB documentation MCP server guide](https://docs.influxdata.com/influxdb3/core/admin/mcp-server/) for setup instructions.
## Common Workflows
### Editing a page in your browser
1. Navigate to the desired page on [docs.influxdata.com](https://docs.influxdata.com)
2. Click the "Edit this page" link at the bottom
3. Make changes in the GitHub web editor
4. Commit changes via a pull request
### Creating/Editing Content Manually
### Creating/Editing Content
**Frontmatter** (page metadata):
```yaml
@ -107,134 +95,83 @@ yarn test:links content/influxdb3/core/**/*.md
**📖 Complete Reference**: [DOCS-TESTING.md](DOCS-TESTING.md)
### Committing Changes
**Commit Message Format**:
```
type(scope): description
## Constraints
Examples:
- fix(enterprise): correct Docker environment variable
- feat(influxdb3): add new plugin documentation
- docs(core): update configuration examples
```
- **NEVER cancel** Hugo builds (~75s) or test runs (15-45m) — the site has 5,359+ pages
- Set timeouts: Hugo 180s+, tests 30m+
- Use `python` not `py` for code block language identifiers (pytest won't collect `py` blocks)
- Shared content files (`content/shared/`) have no frontmatter — the consuming page provides it
- Product names and versions come from `data/products.yml` (single source of truth)
- Commit format: `type(scope): description` — see [DOCS-CONTRIBUTING.md](DOCS-CONTRIBUTING.md#commit-guidelines)
- Network-restricted environments: Cypress (`CYPRESS_INSTALL_BINARY=0`), Docker builds, and Alpine packages may fail
**Types**: `fix`, `feat`, `style`, `refactor`, `test`, `chore`
## Style Rules
**Scopes**: `enterprise`, `influxdb3`, `core`, `cloud`, `telegraf`, etc.
Follows [Google Developer Documentation Style Guide](https://developers.google.com/style) with these project-specific additions:
**Pre-commit hooks** run automatically (Vale, Prettier, tests). Skip with:
```bash
git commit -m "message" --no-verify
```
- **Semantic line feeds** — one sentence per line (better diffs)
- **No h1 in content**`title` frontmatter auto-generates h1
- Active voice, present tense, second person
- Long options in CLI examples (`--output` not `-o`)
- Code blocks within 80 characters
**📖 Complete Reference**: [DOCS-CONTRIBUTING.md](DOCS-CONTRIBUTING.md#commit-guidelines)
## Content Structure
## Key Patterns
**Required frontmatter**: `title`, `description`, `menu`, `weight`
— see [DOCS-FRONTMATTER.md](DOCS-FRONTMATTER.md)
### Content Organization
**Shared content**: `source: /shared/path/to/content.md`
— shared files use `{{% show-in %}}` / `{{% hide-in %}}` for product-specific content
- **Product versions**: Managed in `/data/products.yml`
- **Semantic line feeds**: One sentence per line for better diffs
- **Heading hierarchy**: Use h2-h6 only (h1 auto-generated from frontmatter)
- **Image naming**: `project/version-context-description.png`
**Shortcodes**: Callouts use `> [!Note]` / `> [!Warning]` syntax
— see [DOCS-SHORTCODES.md](DOCS-SHORTCODES.md) and [content/example.md](content/example.md)
### Code Examples
## Product Content Paths
**Testable code blocks** (pytest):
```python
print("Hello, world!")
```
Canonical paths from `data/products.yml`:
<!--pytest-codeblocks:expected-output-->
| Product | Content Path |
|---------|-------------|
| InfluxDB 3 Core | `content/influxdb3/core/` |
| InfluxDB 3 Enterprise | `content/influxdb3/enterprise/` |
| InfluxDB 3 Explorer | `content/influxdb3/explorer/` |
| InfluxDB Cloud Serverless | `content/influxdb3/cloud-serverless/` |
| InfluxDB Cloud Dedicated | `content/influxdb3/cloud-dedicated/` |
| InfluxDB Clustered | `content/influxdb3/clustered/` |
| InfluxDB OSS v2 | `content/influxdb/v2/` |
| InfluxDB OSS v1 | `content/influxdb/v1/` |
| InfluxDB Cloud (TSM) | `content/influxdb/cloud/` |
| InfluxDB Enterprise v1 | `content/enterprise_influxdb/` |
| Telegraf | `content/telegraf/` |
| Chronograf | `content/chronograf/` |
| Kapacitor | `content/kapacitor/` |
| Flux | `content/flux/` |
| Shared content | `content/shared/` |
```
Hello, world!
```
## Doc Review Pipeline
**Language identifiers**: Use `python` not `py`, `bash` not `sh` (for pytest collection)
Automated PR review for documentation changes.
See [.github/LABEL_GUIDE.md](.github/LABEL_GUIDE.md) for the label taxonomy.
### API Documentation
| Resource | Path |
|----------|------|
| Label guide | [.github/LABEL_GUIDE.md](.github/LABEL_GUIDE.md) |
| Triage agent | [.claude/agents/doc-triage-agent.md](.claude/agents/doc-triage-agent.md) |
| Content review instructions | [.github/instructions/content-review.instructions.md](.github/instructions/content-review.instructions.md) |
| Review agent (local) | [.claude/agents/doc-review-agent.md](.claude/agents/doc-review-agent.md) |
| Auto-label workflow | [.github/workflows/auto-label.yml](.github/workflows/auto-label.yml) |
| Doc review workflow | [.github/workflows/doc-review.yml](.github/workflows/doc-review.yml) |
- **Location**: `/api-docs/` directory
- **Format**: OpenAPI 3.0 YAML
- **Generation**: Uses Redoc + custom processing
- **📖 Workflow**: [api-docs/README.md](api-docs/README.md)
### JavaScript/TypeScript
- **Entry point**: `assets/js/main.js`
- **Pattern**: Component-based with `data-component` attributes
- **Debugging**: Source maps or debug helpers available
- **📖 Details**: [DOCS-CONTRIBUTING.md](DOCS-CONTRIBUTING.md#javascript-in-the-documentation-ui)
## Important Constraints
### Performance
- **NEVER cancel Hugo builds** - they take ~75s normally
- **NEVER cancel test runs** - code block tests take 15-45 minutes
- **Set timeouts**: Hugo (180s+), tests (30+ minutes)
### Style Guidelines
- Use Google Developer Documentation style
- Active voice, present tense, second person for instructions
- No emojis unless explicitly requested
- Use long options in CLI examples (`--option` vs `-o`)
- Format code blocks within 80 characters
### Network Restrictions
Some operations may fail in restricted environments:
- Docker builds requiring external repos
- `docker compose up local-dev` (Alpine packages)
- Cypress installation (use `CYPRESS_INSTALL_BINARY=0`)
## Documentation References
## Reference
| Document | Purpose |
|----------|---------|
| [DOCS-CONTRIBUTING.md](DOCS-CONTRIBUTING.md) | Contribution workflow, style guidelines |
| [DOCS-TESTING.md](DOCS-TESTING.md) | Testing procedures (code blocks, links, linting) |
| [DOCS-CONTRIBUTING.md](DOCS-CONTRIBUTING.md) | Style guidelines, commit format, contribution workflow |
| [DOCS-TESTING.md](DOCS-TESTING.md) | Code block testing, link validation, Vale linting |
| [DOCS-SHORTCODES.md](DOCS-SHORTCODES.md) | Complete shortcode reference |
| [DOCS-FRONTMATTER.md](DOCS-FRONTMATTER.md) | Complete frontmatter field reference |
| [.github/copilot-instructions.md](.github/copilot-instructions.md) | Primary AI assistant instructions |
| [api-docs/README.md](api-docs/README.md) | API documentation workflow |
| [content/example.md](content/example.md) | Live shortcode examples for testing |
## Specialized Topics
### Working with Specific Products
| Product | Content Path | Special Notes |
|---------|-------------|---------------|
| InfluxDB 3 Core | `/content/influxdb3/core/` | Latest architecture |
| InfluxDB 3 Enterprise | `/content/influxdb3/enterprise/` | Core + licensed features, clustered |
| InfluxDB Cloud Dedicated | `/content/influxdb3/cloud-dedicated/`, `/content/influxdb3/cloud-serverless/` | Managed and distributed |
| InfluxDB Clustered | `/content/influxdb3/clustered/` | Self-managed and distributed |
| InfluxDB Cloud | `/content/influxdb/cloud/` | Legacy but active |
| InfluxDB v2 | `/content/influxdb/v2/` | Legacy but active |
| InfluxDB Enterprise v1 | `/content/enterprise_influxdb/v1/` | Legacy but active enterprise, clustered |
### Advanced Tasks
- **Vale configuration**: `.ci/vale/styles/` for custom rules
- **Link checking**: Uses custom `link-checker` binary
- **Docker testing**: `compose.yaml` defines test services
- **Lefthook**: Git hooks configuration in `lefthook.yml`
## Troubleshooting
| Issue | Solution |
|-------|----------|
| Pytest collected 0 items | Use `python` not `py` for code block language |
| Hugo build errors | Check `/config/_default/` configuration |
| Link validation slow | Test specific files: `yarn test:links content/file.md` |
| Vale errors | Check `.ci/vale/styles/config/vocabularies` |
## Critical Reminders
1. **Be a critical thinking partner** - Challenge assumptions, identify issues
2. **Test before committing** - Run relevant tests locally
3. **Reference, don't duplicate** - Link to detailed docs instead of copying
4. **Respect build times** - Don't cancel long-running operations
5. **Follow conventions** - Use established patterns for consistency
| [content/example.md](content/example.md) | Live shortcode examples |
| [.github/copilot-instructions.md](.github/copilot-instructions.md) | CLI tools, repo structure, workflows |
| [.github/LABEL_GUIDE.md](.github/LABEL_GUIDE.md) | Label taxonomy and review pipeline |

View File

@ -6,12 +6,23 @@
>
> **Full instruction resources**:
> - [.github/copilot-instructions.md](.github/copilot-instructions.md) - For GitHub Copilot (technical setup, automation)
> - [AGENTS.md](AGENTS.md) - For general AI assistants (content creation, workflows, style guidelines)
> - [AGENTS.md](AGENTS.md) - Shared project guidelines (style, constraints, content structure)
> - [.github/LABEL_GUIDE.md](.github/LABEL_GUIDE.md) - Label taxonomy and pipeline usage
> - [.claude/](.claude/) - Claude MCP configuration directory with:
> - Custom commands in `.claude/commands/`
> - Specialized agents in `.claude/agents/`
> - Custom skills in `.claude/skills/`
## Documentation MCP server
This repo includes [`.mcp.json`](.mcp.json) with a hosted InfluxDB documentation search server.
Use it to verify technical accuracy, check API syntax, and find related docs.
- **`influxdb-docs`** — API key auth. Set `INFLUXDATA_DOCS_KAPA_API_KEY` env var before launching Claude Code.
- **`influxdb-docs-oauth`** — OAuth fallback. No setup needed.
See [content-editing skill](.claude/skills/content-editing/SKILL.md#part-4-fact-checking-with-the-documentation-mcp-server) for usage details.
## Purpose and scope
Claude should help document InfluxData products by creating clear, accurate technical content with proper code examples, frontmatter, and formatting.

View File

@ -14,4 +14,22 @@ Google.DateFormat = NO
Google.Ellipses = NO
Google.Headings = NO
Google.WordList = NO
Vale.Spelling = NO
# Disable Google.Units in favor of InfluxDataDocs.Units which only checks byte
# units (GB, TB, etc). Duration literals (30d, 24h, 1h) are valid InfluxDB syntax.
Google.Units = NO
Vale.Spelling = NO
# Disable Vale.Terms - the vocabulary-based substitution rule creates too many
# false positives from URLs, file paths, and code. The accepted terms in
# accept.txt still work for spelling checks via InfluxDataDocs.Spelling.
Vale.Terms = NO
# Disable write-good.TooWordy - flags legitimate technical terms like
# "aggregate", "expiration", "multiple", "However" that are standard in
# database documentation.
write-good.TooWordy = NO
# Ignore URL paths like /api/v3/..., /cli/..., /influxdb3/...
# Ignore full URLs like https://example.com/...
# Ignore inline code in frontmatter (description fields, etc.)
TokenIgnores = /[a-zA-Z0-9/_\-\.]+, \
https?://[^\s\)\]>"]+, \
`[^`]+`

View File

@ -14,4 +14,22 @@ Google.DateFormat = NO
Google.Ellipses = NO
Google.Headings = NO
Google.WordList = NO
Vale.Spelling = NO
# Disable Google.Units in favor of InfluxDataDocs.Units which only checks byte
# units (GB, TB, etc). Duration literals (30d, 24h, 1h) are valid InfluxDB syntax.
Google.Units = NO
Vale.Spelling = NO
# Disable Vale.Terms - the vocabulary-based substitution rule creates too many
# false positives from URLs, file paths, and code. The accepted terms in
# accept.txt still work for spelling checks via InfluxDataDocs.Spelling.
Vale.Terms = NO
# Disable write-good.TooWordy - flags legitimate technical terms like
# "aggregate", "expiration", "multiple", "However" that are standard in
# database documentation.
write-good.TooWordy = NO
# Ignore URL paths like /api/v3/..., /cli/..., /influxdb3/...
# Ignore full URLs like https://example.com/...
# Ignore inline code in frontmatter (description fields, etc.)
TokenIgnores = /[a-zA-Z0-9/_\-\.]+, \
https?://[^\s\)\]>"]+, \
`[^`]+`

View File

@ -14,4 +14,22 @@ Google.DateFormat = NO
Google.Ellipses = NO
Google.Headings = NO
Google.WordList = NO
Vale.Spelling = NO
# Disable Google.Units in favor of InfluxDataDocs.Units which only checks byte
# units (GB, TB, etc). Duration literals (30d, 24h, 1h) are valid InfluxDB syntax.
Google.Units = NO
Vale.Spelling = NO
# Disable Vale.Terms - the vocabulary-based substitution rule creates too many
# false positives from URLs, file paths, and code. The accepted terms in
# accept.txt still work for spelling checks via InfluxDataDocs.Spelling.
Vale.Terms = NO
# Disable write-good.TooWordy - flags legitimate technical terms like
# "aggregate", "expiration", "multiple", "However" that are standard in
# database documentation.
write-good.TooWordy = NO
# Ignore URL paths like /api/v3/..., /cli/..., /influxdb3/...
# Ignore full URLs like https://example.com/...
# Ignore inline code in frontmatter (description fields, etc.)
TokenIgnores = /[a-zA-Z0-9/_\-\.]+, \
https?://[^\s\)\]>"]+, \
`[^`]+`

View File

@ -14,4 +14,22 @@ Google.DateFormat = NO
Google.Ellipses = NO
Google.Headings = NO
Google.WordList = NO
Vale.Spelling = NO
# Disable Google.Units in favor of InfluxDataDocs.Units which only checks byte
# units (GB, TB, etc). Duration literals (30d, 24h, 1h) are valid InfluxDB syntax.
Google.Units = NO
Vale.Spelling = NO
# Disable Vale.Terms - the vocabulary-based substitution rule creates too many
# false positives from URLs, file paths, and code. The accepted terms in
# accept.txt still work for spelling checks via InfluxDataDocs.Spelling.
Vale.Terms = NO
# Disable write-good.TooWordy - flags legitimate technical terms like
# "aggregate", "expiration", "multiple", "However" that are standard in
# database documentation.
write-good.TooWordy = NO
# Ignore URL paths like /api/v3/..., /cli/..., /influxdb3/...
# Ignore full URLs like https://example.com/...
# Ignore inline code in frontmatter (description fields, etc.)
TokenIgnores = /[a-zA-Z0-9/_\-\.]+, \
https?://[^\s\)\]>"]+, \
`[^`]+`

View File

@ -19,4 +19,22 @@ Google.DateFormat = NO
Google.Ellipses = NO
Google.Headings = NO
Google.WordList = NO
Vale.Spelling = NO
# Disable Google.Units in favor of InfluxDataDocs.Units which only checks byte
# units (GB, TB, etc). Duration literals (30d, 24h, 1h) are valid InfluxDB syntax.
Google.Units = NO
Vale.Spelling = NO
# Disable Vale.Terms - the vocabulary-based substitution rule creates too many
# false positives from URLs, file paths, and code. The accepted terms in
# accept.txt still work for spelling checks via InfluxDataDocs.Spelling.
Vale.Terms = NO
# Disable write-good.TooWordy - flags legitimate technical terms like
# "aggregate", "expiration", "multiple", "However" that are standard in
# database documentation.
write-good.TooWordy = NO
# Ignore URL paths like /api/v3/..., /cli/..., /influxdb3/...
# Ignore full URLs like https://example.com/...
# Ignore inline code in frontmatter (description fields, etc.)
TokenIgnores = /[a-zA-Z0-9/_\-\.]+, \
https?://[^\s\)\]>"]+, \
`[^`]+`

View File

@ -63,7 +63,7 @@ influxdb3 serve [OPTIONS]
| | `--aws-session-token` | _See [configuration options](/influxdb3/core/reference/config-options/#aws-session-token)_ |
| | `--aws-skip-signature` | _See [configuration options](/influxdb3/core/reference/config-options/#aws-skip-signature)_ |
| | `--azure-allow-http` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#azure-allow-http)_ |
| | `--azure-endpoint` | _See [configuration options](/influxdb3/enterprise/reference/config-options/##azure-endpoint)_ |
| | `--azure-endpoint` | _See [configuration options](/influxdb3/core/reference/config-options/#azure-endpoint)_ |
| | `--azure-storage-access-key` | _See [configuration options](/influxdb3/core/reference/config-options/#azure-storage-access-key)_ |
| | `--azure-storage-account` | _See [configuration options](/influxdb3/core/reference/config-options/#azure-storage-account)_ |
| | `--bucket` | _See [configuration options](/influxdb3/core/reference/config-options/#bucket)_ |
@ -71,14 +71,14 @@ influxdb3 serve [OPTIONS]
| | `--datafusion-config` | _See [configuration options](/influxdb3/core/reference/config-options/#datafusion-config)_ |
| | `--datafusion-max-parquet-fanout` | _See [configuration options](/influxdb3/core/reference/config-options/#datafusion-max-parquet-fanout)_ |
| | `--datafusion-num-threads` | _See [configuration options](/influxdb3/core/reference/config-options/#datafusion-num-threads)_ |
| | `--datafusion-runtime-disable-lifo-slot` | _See [configuration options](/influxdb3/core/reference/config-options/#datafusion-runtime-disable-lifo-slot)_ |
| | `--datafusion-runtime-event-interval` | _See [configuration options](/influxdb3/core/reference/config-options/#datafusion-runtime-event-interval)_ |
| | `--datafusion-runtime-global-queue-interval` | _See [configuration options](/influxdb3/core/reference/config-options/#datafusion-runtime-global-queue-interval)_ |
| | `--datafusion-runtime-max-blocking-threads` | _See [configuration options](/influxdb3/core/reference/config-options/#datafusion-runtime-max-blocking-threads)_ |
| | `--datafusion-runtime-max-io-events-per-tick` | _See [configuration options](/influxdb3/core/reference/config-options/#datafusion-runtime-max-io-events-per-tick)_ |
| | `--datafusion-runtime-thread-keep-alive` | _See [configuration options](/influxdb3/core/reference/config-options/#datafusion-runtime-thread-keep-alive)_ |
| | `--datafusion-runtime-thread-priority` | _See [configuration options](/influxdb3/core/reference/config-options/#datafusion-runtime-thread-priority)_ |
| | `--datafusion-runtime-type` | _See [configuration options](/influxdb3/core/reference/config-options/#datafusion-runtime-type)_ |
| | `--datafusion-runtime-disable-lifo-slot` | Development-only Tokio runtime configuration |
| | `--datafusion-runtime-event-interval` | Development-only Tokio runtime configuration |
| | `--datafusion-runtime-global-queue-interval` | Development-only Tokio runtime configuration |
| | `--datafusion-runtime-max-blocking-threads` | Development-only Tokio runtime configuration |
| | `--datafusion-runtime-max-io-events-per-tick` | Development-only Tokio runtime configuration |
| | `--datafusion-runtime-thread-keep-alive` | Development-only Tokio runtime configuration |
| | `--datafusion-runtime-thread-priority` | Development-only Tokio runtime configuration |
| | `--datafusion-runtime-type` | Development-only Tokio runtime configuration |
| | `--datafusion-use-cached-parquet-loader` | _See [configuration options](/influxdb3/core/reference/config-options/#datafusion-use-cached-parquet-loader)_ |
| | `--delete-grace-period` | _See [configuration options](/influxdb3/core/reference/config-options/#delete-grace-period)_ |
| | `--disable-authz` | _See [configuration options](/influxdb3/core/reference/config-options/#disable-authz)_ |
@ -118,7 +118,7 @@ influxdb3 serve [OPTIONS]
| | `--table-index-cache-concurrency-limit` | _See [configuration options](/influxdb3/core/reference/config-options/#table-index-cache-concurrency-limit)_ |
| | `--table-index-cache-max-entries` | _See [configuration options](/influxdb3/core/reference/config-options/#table-index-cache-max-entries)_ |
| | `--tcp-listener-file-path` | _See [configuration options](/influxdb3/core/reference/config-options/#tcp-listener-file-path)_ |
| | `--telemetry-disable-upload` | _See [configuration options](/influxdb3/core/reference/config-options/#telemetry-disable-upload)_ |
| | `--telemetry-disable-upload` | _See [configuration options](/influxdb3/core/reference/config-options/#disable-telemetry-upload)_ |
| | `--telemetry-endpoint` | _See [configuration options](/influxdb3/core/reference/config-options/#telemetry-endpoint)_ |
| | `--tls-cert` | _See [configuration options](/influxdb3/core/reference/config-options/#tls-cert)_ |
| | `--tls-key` | _See [configuration options](/influxdb3/core/reference/config-options/#tls-key)_ |

View File

@ -62,7 +62,7 @@ influxdb3 serve [OPTIONS]
| | `--aws-session-token` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#aws-session-token)_ |
| | `--aws-skip-signature` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#aws-skip-signature)_ |
| | `--azure-allow-http` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#azure-allow-http)_ |
| | `--azure-endpoint` | _See [configuration options](/influxdb3/enterprise/reference/config-options/##azure-endpoint)_ |
| | `--azure-endpoint` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#azure-endpoint)_ |
| | `--azure-storage-access-key` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#azure-storage-access-key)_ |
| | `--azure-storage-account` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#azure-storage-account)_ |
| | `--bucket` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#bucket)_ |
@ -73,19 +73,18 @@ influxdb3 serve [OPTIONS]
| | `--compaction-gen2-duration` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#compaction-gen2-duration)_ |
| | `--compaction-max-num-files-per-plan` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#compaction-max-num-files-per-plan)_ |
| | `--compaction-multipliers` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#compaction-multipliers)_ |
| | `--compaction-row-limit` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#compaction-row-limit)_ |
| | `--data-dir` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#data-dir)_ |
| | `--datafusion-config` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#datafusion-config)_ |
| | `--datafusion-max-parquet-fanout` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#datafusion-max-parquet-fanout)_ |
| | `--datafusion-num-threads` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#datafusion-num-threads)_ |
| | `--datafusion-runtime-disable-lifo-slot` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#datafusion-runtime-disable-lifo-slot)_ |
| | `--datafusion-runtime-event-interval` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#datafusion-runtime-event-interval)_ |
| | `--datafusion-runtime-global-queue-interval` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#datafusion-runtime-global-queue-interval)_ |
| | `--datafusion-runtime-max-blocking-threads` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#datafusion-runtime-max-blocking-threads)_ |
| | `--datafusion-runtime-max-io-events-per-tick` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#datafusion-runtime-max-io-events-per-tick)_ |
| | `--datafusion-runtime-thread-keep-alive` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#datafusion-runtime-thread-keep-alive)_ |
| | `--datafusion-runtime-thread-priority` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#datafusion-runtime-thread-priority)_ |
| | `--datafusion-runtime-type` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#datafusion-runtime-type)_ |
| | `--datafusion-runtime-disable-lifo-slot` | Development-only Tokio runtime configuration |
| | `--datafusion-runtime-event-interval` | Development-only Tokio runtime configuration |
| | `--datafusion-runtime-global-queue-interval` | Development-only Tokio runtime configuration |
| | `--datafusion-runtime-max-blocking-threads` | Development-only Tokio runtime configuration |
| | `--datafusion-runtime-max-io-events-per-tick` | Development-only Tokio runtime configuration |
| | `--datafusion-runtime-thread-keep-alive` | Development-only Tokio runtime configuration |
| | `--datafusion-runtime-thread-priority` | Development-only Tokio runtime configuration |
| | `--datafusion-runtime-type` | Development-only Tokio runtime configuration |
| | `--datafusion-use-cached-parquet-loader` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#datafusion-use-cached-parquet-loader)_ |
| | `--delete-grace-period` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#delete-grace-period)_ |
| | `--disable-authz` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#disable-authz)_ |
@ -113,7 +112,7 @@ influxdb3 serve [OPTIONS]
| | `--node-id` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#node-id)_ |
| | `--node-id-from-env` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#node-id-from-env)_ |
| | `--num-cores` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#num-cores)_ |
| | `--num-datafusion-threads` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#num-datafusion-threads)_ |
| | `--num-datafusion-threads` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#datafusion-num-threads)_ |
| | `--num-database-limit` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#num-database-limit)_ |
| | `--num-table-limit` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#num-table-limit)_ |
| | `--num-total-columns-per-table-limit` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#num-total-columns-per-table-limit)_ |
@ -140,7 +139,7 @@ influxdb3 serve [OPTIONS]
| | `--table-index-cache-concurrency-limit` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#table-index-cache-concurrency-limit)_ |
| | `--table-index-cache-max-entries` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#table-index-cache-max-entries)_ |
| | `--tcp-listener-file-path` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#tcp-listener-file-path)_ |
| | `--telemetry-disable-upload` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#telemetry-disable-upload)_ |
| | `--telemetry-disable-upload` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#disable-telemetry-upload)_ |
| | `--telemetry-endpoint` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#telemetry-endpoint)_ |
| | `--tls-cert` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#tls-cert)_ |
| | `--tls-key` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#tls-key)_ |

View File

@ -6,6 +6,27 @@
> All updates to Core are automatically included in Enterprise.
> The Enterprise sections below only list updates exclusive to Enterprise.
## v3.8.4 {date="2026-03-10"}
### Core
No adjustments in this release.
Core remains on v3.8.3.
### Enterprise
#### Security
- **Read and write tokens can no longer delete databases**: Authorization now evaluates both the HTTP method and the request path. Previously, tokens with read or write access to a database could also issue delete requests.
#### Bug fixes
- **Stale compactor blocking startup**: Fixed an issue where stopped (stale) compactor entries in the catalog prevented new compactor nodes from starting. Enterprise now only considers currently running compactor nodes for conflict checks.
- **WAL replay**: Fixed an issue where combined-mode deployments silently ignored the `--wal-replay-concurrency-limit` flag and always used serial replay (concurrency of 1). The flag is now respected.
- Other bug fixes and performance improvements.
## v3.8.3 {date="2026-02-24"}
### Core
@ -428,9 +449,9 @@ All Core updates are included in Enterprise. Additional Enterprise-specific feat
## v3.1.0 {date="2025-05-29"}
**Core**: revision 482dd8aac580c04f37e8713a8fffae89ae8bc264
**Core**: revision `482dd8aac580c04f37e8713a8fffae89ae8bc264`
**Enterprise**: revision 2cb23cf32b67f9f0d0803e31b356813a1a151b00
**Enterprise**: revision `2cb23cf32b67f9f0d0803e31b356813a1a151b00`
### Core

View File

@ -10,7 +10,7 @@ introduced: "v1.5.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/aggregators/basicstats/README.md, Basic Statistics Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/aggregators/basicstats/README.md, Basic Statistics Plugin Source
---
# Basic Statistics Aggregator Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.18.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/aggregators/derivative/README.md, Derivative Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/aggregators/derivative/README.md, Derivative Plugin Source
---
# Derivative Aggregator Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.11.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/aggregators/final/README.md, Final Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/aggregators/final/README.md, Final Plugin Source
---
# Final Aggregator Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.4.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/aggregators/histogram/README.md, Histogram Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/aggregators/histogram/README.md, Histogram Plugin Source
---
# Histogram Aggregator Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.13.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/aggregators/merge/README.md, Merge Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/aggregators/merge/README.md, Merge Plugin Source
---
# Merge Aggregator Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.1.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/aggregators/minmax/README.md, Minimum-Maximum Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/aggregators/minmax/README.md, Minimum-Maximum Plugin Source
---
# Minimum-Maximum Aggregator Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.18.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/aggregators/quantile/README.md, Quantile Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/aggregators/quantile/README.md, Quantile Plugin Source
---
# Quantile Aggregator Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.21.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/aggregators/starlark/README.md, Starlark Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/aggregators/starlark/README.md, Starlark Plugin Source
---
# Starlark Aggregator Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.8.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/aggregators/valuecounter/README.md, Value Counter Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/aggregators/valuecounter/README.md, Value Counter Plugin Source
---
# Value Counter Aggregator Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.8.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/activemq/README.md, ActiveMQ Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/activemq/README.md, ActiveMQ Plugin Source
---
# ActiveMQ Input Plugin

View File

@ -12,7 +12,7 @@ removal: v1.40.0
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/aerospike/README.md, Aerospike Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/aerospike/README.md, Aerospike Plugin Source
---
# Aerospike Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.19.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/aliyuncms/README.md, Alibaba Cloud Monitor Service (Aliyun) Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/aliyuncms/README.md, Alibaba Cloud Monitor Service (Aliyun) Plugin Source
---
# Alibaba Cloud Monitor Service (Aliyun) Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.20.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/amd_rocm_smi/README.md, AMD ROCm System Management Interface (SMI) Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/amd_rocm_smi/README.md, AMD ROCm System Management Interface (SMI) Plugin Source
---
# AMD ROCm System Management Interface (SMI) Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.3.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/amqp_consumer/README.md, AMQP Consumer Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/amqp_consumer/README.md, AMQP Consumer Plugin Source
---
# AMQP Consumer Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.8.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/apache/README.md, Apache Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/apache/README.md, Apache Plugin Source
---
# Apache Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.12.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/apcupsd/README.md, APC UPSD Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/apcupsd/README.md, APC UPSD Plugin Source
---
# APC UPSD Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.7.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/aurora/README.md, Apache Aurora Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/aurora/README.md, Apache Aurora Plugin Source
---
# Apache Aurora Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.25.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/azure_monitor/README.md, Azure Monitor Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/azure_monitor/README.md, Azure Monitor Plugin Source
---
# Azure Monitor Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.13.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/azure_storage_queue/README.md, Azure Queue Storage Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/azure_storage_queue/README.md, Azure Queue Storage Plugin Source
---
# Azure Queue Storage Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v0.2.0"
os_support: "linux"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/bcache/README.md, Bcache Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/bcache/README.md, Bcache Plugin Source
---
# Bcache Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.8.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/beanstalkd/README.md, Beanstalkd Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/beanstalkd/README.md, Beanstalkd Plugin Source
---
# Beanstalkd Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.18.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/beat/README.md, Beat Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/beat/README.md, Beat Plugin Source
---
# Beat Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.11.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/bind/README.md, BIND 9 Nameserver Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/bind/README.md, BIND 9 Nameserver Plugin Source
---
# BIND 9 Nameserver Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.5.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/bond/README.md, Bond Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/bond/README.md, Bond Plugin Source
---
# Bond Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.7.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/burrow/README.md, Burrow Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/burrow/README.md, Burrow Plugin Source
---
# Burrow Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v0.13.1"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/ceph/README.md, Ceph Storage Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/ceph/README.md, Ceph Storage Plugin Source
---
# Ceph Storage Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.0.0"
os_support: "linux"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/cgroup/README.md, Control Group Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/cgroup/README.md, Control Group Plugin Source
---
# Control Group Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v0.13.1"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/chrony/README.md, chrony Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/chrony/README.md, chrony Plugin Source
---
# chrony Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.11.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/cisco_telemetry_mdt/README.md, Cisco Model-Driven Telemetry (MDT) Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/cisco_telemetry_mdt/README.md, Cisco Model-Driven Telemetry (MDT) Plugin Source
---
# Cisco Model-Driven Telemetry (MDT) Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.14.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/clickhouse/README.md, ClickHouse Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/clickhouse/README.md, ClickHouse Plugin Source
---
# ClickHouse Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.10.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/cloud_pubsub/README.md, Google Cloud PubSub Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/cloud_pubsub/README.md, Google Cloud PubSub Plugin Source
---
# Google Cloud PubSub Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.10.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/cloud_pubsub_push/README.md, Google Cloud PubSub Push Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/cloud_pubsub_push/README.md, Google Cloud PubSub Push Plugin Source
---
# Google Cloud PubSub Push Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v0.12.1"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/cloudwatch/README.md, Amazon CloudWatch Statistics Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/cloudwatch/README.md, Amazon CloudWatch Statistics Plugin Source
---
# Amazon CloudWatch Statistics Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.24.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/cloudwatch_metric_streams/README.md, Amazon CloudWatch Metric Streams Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/cloudwatch_metric_streams/README.md, Amazon CloudWatch Metric Streams Plugin Source
---
# Amazon CloudWatch Metric Streams Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.0.0"
os_support: "linux"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/conntrack/README.md, Netfilter Conntrack Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/conntrack/README.md, Netfilter Conntrack Plugin Source
---
# Netfilter Conntrack Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.0.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/consul/README.md, Hashicorp Consul Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/consul/README.md, Hashicorp Consul Plugin Source
---
# Hashicorp Consul Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.22.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/consul_agent/README.md, Hashicorp Consul Agent Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/consul_agent/README.md, Hashicorp Consul Agent Plugin Source
---
# Hashicorp Consul Agent Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v0.12.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/couchbase/README.md, Couchbase Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/couchbase/README.md, Couchbase Plugin Source
---
# Couchbase Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v0.10.3"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/couchdb/README.md, Apache CouchDB Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/couchdb/README.md, Apache CouchDB Plugin Source
---
# Apache CouchDB Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v0.1.5"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/cpu/README.md, CPU Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/cpu/README.md, CPU Plugin Source
---
# CPU Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.18.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/csgo/README.md, Counter-Strike Global Offensive (CSGO) Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/csgo/README.md, Counter-Strike Global Offensive (CSGO) Plugin Source
---
# Counter-Strike: Global Offensive (CSGO) Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.27.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/ctrlx_datalayer/README.md, Bosch Rexroth ctrlX Data Layer Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/ctrlx_datalayer/README.md, Bosch Rexroth ctrlX Data Layer Plugin Source
---
# Bosch Rexroth ctrlX Data Layer Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.5.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/dcos/README.md, Mesosphere Distributed Cloud OS Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/dcos/README.md, Mesosphere Distributed Cloud OS Plugin Source
---
# Mesosphere Distributed Cloud OS Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.18.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/directory_monitor/README.md, Directory Monitor Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/directory_monitor/README.md, Directory Monitor Plugin Source
---
# Directory Monitor Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v0.1.1"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/disk/README.md, Disk Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/disk/README.md, Disk Plugin Source
---
# Disk Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v0.10.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/diskio/README.md, DiskIO Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/diskio/README.md, DiskIO Plugin Source
---
# DiskIO Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v0.10.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/disque/README.md, Disque Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/disque/README.md, Disque Plugin Source
---
# Disque Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.3.0"
os_support: "linux"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/dmcache/README.md, Device Mapper Cache Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/dmcache/README.md, Device Mapper Cache Plugin Source
---
# Device Mapper Cache Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.4.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/dns_query/README.md, DNS Query Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/dns_query/README.md, DNS Query Plugin Source
---
# DNS Query Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v0.1.9"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/docker/README.md, Docker Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/docker/README.md, Docker Plugin Source
---
# Docker Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.12.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/docker_log/README.md, Docker Log Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/docker_log/README.md, Docker Log Plugin Source
---
# Docker Log Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v0.10.3"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/dovecot/README.md, Dovecot Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/dovecot/README.md, Dovecot Plugin Source
---
# Dovecot Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.19.0"
os_support: "linux"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/dpdk/README.md, Data Plane Development Kit (DPDK) Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/dpdk/README.md, Data Plane Development Kit (DPDK) Plugin Source
---
# Data Plane Development Kit (DPDK) Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.11.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/ecs/README.md, Amazon Elastic Container Service Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/ecs/README.md, Amazon Elastic Container Service Plugin Source
---
# Amazon Elastic Container Service Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v0.1.5"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/elasticsearch/README.md, Elasticsearch Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/elasticsearch/README.md, Elasticsearch Plugin Source
---
# Elasticsearch Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.20.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/elasticsearch_query/README.md, Elasticsearch Query Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/elasticsearch_query/README.md, Elasticsearch Query Plugin Source
---
# Elasticsearch Query Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.13.0"
os_support: "linux"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/ethtool/README.md, Ethtool Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/ethtool/README.md, Ethtool Plugin Source
---
# Ethtool Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.14.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/eventhub_consumer/README.md, Azure Event Hub Consumer Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/eventhub_consumer/README.md, Azure Event Hub Consumer Plugin Source
---
# Azure Event Hub Consumer Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v0.1.5"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/exec/README.md, Exec Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/exec/README.md, Exec Plugin Source
---
# Exec Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.14.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/execd/README.md, Execd Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/execd/README.md, Execd Plugin Source
---
# Execd Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.4.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/fail2ban/README.md, Fail2ban Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/fail2ban/README.md, Fail2ban Plugin Source
---
# Fail2ban Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.7.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/fibaro/README.md, Fibaro Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/fibaro/README.md, Fibaro Plugin Source
---
# Fibaro Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.8.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/file/README.md, File Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/file/README.md, File Plugin Source
---
# File Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.8.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/filecount/README.md, Filecount Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/filecount/README.md, Filecount Plugin Source
---
# Filecount Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v0.13.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/filestat/README.md, File statistics Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/filestat/README.md, File statistics Plugin Source
---
# File statistics Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.12.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/fireboard/README.md, Fireboard Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/fireboard/README.md, Fireboard Plugin Source
---
# Fireboard Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.34.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/firehose/README.md, AWS Data Firehose Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/firehose/README.md, AWS Data Firehose Plugin Source
---
# AWS Data Firehose Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.4.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/fluentd/README.md, Fluentd Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/fluentd/README.md, Fluentd Plugin Source
---
# Fluentd Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.35.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/fritzbox/README.md, Fritzbox Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/fritzbox/README.md, Fritzbox Plugin Source
---
# Fritzbox Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.11.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/github/README.md, GitHub Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/github/README.md, GitHub Plugin Source
---
# GitHub Input Plugin

View File

@ -10,7 +10,7 @@ introduced: "v1.15.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.37.3/plugins/inputs/gnmi/README.md, gNMI (gRPC Network Management Interface) Plugin Source
- https://github.com/influxdata/telegraf/tree/v1.38.0/plugins/inputs/gnmi/README.md, gNMI (gRPC Network Management Interface) Plugin Source
---
# gNMI (gRPC Network Management Interface) Input Plugin
@ -102,6 +102,9 @@ details on how to use them.
## Only receive updates for the state, also suppresses receiving the initial state
# updates_only = false
## Emit a metric for "delete" messages
# emit_delete_metrics = false
## Enforces the namespace of the first element as origin for aliases and
## response paths, required for backward compatibility.
## NOTE: Set to 'false' if possible but be aware that this might change the path tag!

Some files were not shown because too many files have changed in this diff Show More