Merge branch 'master' into copilot/fix-pr-preview-api-pages
commit
a8b879fa72
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.1–1.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.1–2.3** — Workflow skeleton + URL resolution + Copilot code review~~ ✅
|
||||
7. ~~**Phase 2.5** — Copilot visual review job~~ ✅
|
||||
8. ~~**Phase 3.3–3.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.
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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/`
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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`);
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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.
|
||||
|
|
@ -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(', ')}`);
|
||||
|
|
@ -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,
|
||||
});
|
||||
}
|
||||
|
|
@ -143,6 +143,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
|
||||
|
|
@ -150,8 +152,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: |
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
25
.mcp.json
25
.mcp.json
|
|
@ -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
219
AGENTS.md
|
|
@ -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 |
|
||||
|
|
|
|||
13
CLAUDE.md
13
CLAUDE.md
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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\)\]>"]+, \
|
||||
`[^`]+`
|
||||
|
|
@ -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\)\]>"]+, \
|
||||
`[^`]+`
|
||||
|
|
@ -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\)\]>"]+, \
|
||||
`[^`]+`
|
||||
|
|
@ -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\)\]>"]+, \
|
||||
`[^`]+`
|
||||
|
|
@ -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\)\]>"]+, \
|
||||
`[^`]+`
|
||||
|
|
@ -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)_ |
|
||||
|
|
|
|||
|
|
@ -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)_ |
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
Loading…
Reference in New Issue