Hugo-native templates for API
reference documentation. Operations render as server-side HTML instead
of client-side Redoc, providing faster page loads, full SEO
indexability, and consistent styling.
Architecture:
- Tag-based navigation: operations grouped by OpenAPI tag, accessed
via tag pages only (no individual operation URLs)
- Generation script auto-discovers products from .config.yml files,
deriving Hugo paths and menu keys from directory structure
- Per-tag JSON/YAML chunks for fast Hugo template rendering
- Inline curl examples generated from OpenAPI specs at build time
Templates (layouts/api/, layouts/partials/api/):
- tag-renderer.html: renders all operations for a tag
- operation.html: individual operation with parameters, request body,
responses, and schema rendering
- code-sample.html: curl examples with Ask AI integration
- section-children.html: tag listing on section index pages
- all-endpoints-list.html: all operations sorted by path
Generation (api-docs/scripts/generate-openapi-articles.ts):
- Auto-discovery from .config.yml replaces hardcoded productConfigs
- Each API section generates independently (no cross-spec merging)
- Frontmatter-driven template data (specDownloadPath, articleDataKey)
- Link transformation: /influxdb/version/ placeholders resolved to
product-specific paths
Removed:
- Redoc renderer, JavaScript components, and CSS
- Shadow DOM test infrastructure (~160 lines)
- Operation page generation (dead generatePathPages function)
- mergeArticleData() and slugifyDisplayName()
Styles (assets/styles/layouts/_api-*.scss):
- 3-column layout: sidebar, content, sticky TOC
- Theme-aware code blocks for curl examples
- Method badges (GET/POST/PUT/DELETE) with color coding
- Collapsible schema sections with depth tracking
Tests (cypress/e2e/content/api-reference.cy.js):
- Tag page rendering with operation structure
- Download button verification per section
- All-endpoints page with operation cards
- Related links from x-related OpenAPI extension
- Code sample and Ask AI link validation
* feat: add doc review pipeline implementation plan
Detailed plan for two interconnected systems:
1. Label system overhaul (22 automation-driven labels replacing 30+ inconsistent ones)
2. Doc review workflow (Claude visual review + Copilot structural review with screenshots)
This is a plan document only — no implementation changes.
https://claude.ai/code/session_01D5rLaHdQv9iBL55UEsdQFt
* fix: split product:v3 into v3-monolith and v3-distributed labels
- product:v3-monolith: Core, Enterprise (single-node / clusterable)
- product:v3-distributed: Cloud Serverless, Cloud Dedicated, Clustered
- Updated auto-label path mappings to match content directory structure
- Updated migration mapping and label count (22 → 23)
https://claude.ai/code/session_01D5rLaHdQv9iBL55UEsdQFt
* feat: define agent instruction file architecture in Phase 3
- One CLAUDE.md (pointer) → role-specific files in .claude/agents/
- doc-triage-agent.md: label taxonomy, path mapping, priority rules
- doc-review-agent.md: review scope, severity classification, output format
- Prompt file (.github/prompts/) references agent file, stays workflow-specific
- Updated file summary and implementation order
https://claude.ai/code/session_01D5rLaHdQv9iBL55UEsdQFt
* feat: move visual/screenshot review from Claude to Copilot
Claude now handles diff-only Markdown review (frontmatter, shortcodes,
style, terminology). Copilot handles visual review by analyzing
screenshots posted as images in PR comments.
Key changes:
- Job 3 (Claude) runs in parallel with Jobs 1→2→4 (diff-only, no screenshots)
- Job 4 (Copilot) analyzes screenshots via @copilot PR comment mentions
- Two prompt files: doc-review.md (Claude), copilot-visual-review.md (Copilot)
- doc-review-agent.md scoped to diff-only (no screenshot analysis)
- Q1 resolved: screenshots delivered to Copilot via PR comment images
- Reduced Claude API cost (no image processing)
- Added Copilot failure handling (fallback to human review of artifacts)
https://claude.ai/code/session_01D5rLaHdQv9iBL55UEsdQFt
* chore: resolve all open questions in doc review pipeline plan
Convert Q2–Q5 from open recommendations to resolved decisions:
- Q2: Advisory only (no required status checks) until false-positive rate confirmed
- Q3: Playwright for CI screenshots, Puppeteer for local debugging
- Q4: Poll preview URL with 15s interval and 10-min timeout
- Q5: Cost acceptable with existing mitigations (path filters, skip-review, concurrency)
Rename section from "Open Questions" to "Decisions (Resolved)".
https://claude.ai/code/session_01D5rLaHdQv9iBL55UEsdQFt
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Fix label naming inconsistency and document workflow migration requirements (#6893)
* Initial plan
* fix: resolve label naming inconsistency and document workflow updates
- Rename review:approved to approval:codeowner to avoid confusion with review/* labels
- Add note explaining the distinct prefix to prevent implementor confusion
- Document required workflow updates for sync-plugin-docs label migration
- Specify exact files and line numbers that need updating
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
* feat(ci): add doc review pipeline and deduplicate instruction files
Add Phase 2-3 pipeline components: doc-review workflow (3-job
architecture), Claude/Copilot review prompts, URL resolver script,
triage and review agents, and label guide.
Deduplicate AGENTS.md (254→96 lines) by removing content available
in referenced docs. Remove duplicate sections from
copilot-instructions.md (264→221 lines). AGENTS.md now contains
only high-signal guidelines loaded every session: commands,
constraints, style rules, product paths, and reference pointers.
* task: updated PR pipeline plan
* task: remove old cli plan
* task: products file now contains content path mappings and (GitHub) label groups for each product. Product group labels will be used to assign reviewers and help with content checks.
* feat(ci): add auto-label workflow for PR product detection
Add auto-label workflow that applies product and source labels to
PRs based on changed file paths, using data/products.yml as the
source of truth. Add workflow-utils.js shared helper for product
path matching.
* refactor(ci): extract shared label and review format definitions
Consolidate duplicated label definitions and review comment format
into shared source-of-truth files to prevent context drift.
New files:
- data/labels.yml: source, waiting, workflow, review, and
product:shared label definitions (names, colors, descriptions)
- .github/templates/review-comment.md: severity levels, comment
structure, result rules, and result-to-label mapping
Updated consumers to reference shared files instead of inline copies:
- .claude/agents/doc-review-agent.md
- .claude/agents/doc-triage-agent.md
- .github/prompts/copilot-visual-review.md
- .github/LABEL_GUIDE.md
Workflow fixes:
- Pin all GitHub Actions to SHA hashes
- Fix fromJson() for url-count comparison in doc-review.yml
- Fix fallback handler to remove all review:* labels before re-adding
* refactor(ci): replace Claude review with Copilot native code review
- Remove claude-code-action job, use `copilot-reviews` reviewer instead
- Extract review criteria to .github/instructions/content-review.instructions.md
- Simplify copilot-instructions.md by removing duplicated content
- Harden auto-label workflow (scoped permissions, pagination, concurrency)
- Upsert visual review comments instead of creating duplicates
- Delete unused .github/prompts/doc-review.md
* Update .github/workflows/doc-review.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update .github/DOC-REVIEW-PIPELINE-PLAN.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* task: update review pipeline plan
* task: add label-migration scripts. These are one-use scripts that we'll remove after the label migration
* Update .github/workflows/doc-review.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update .github/workflows/doc-review.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update .github/workflows/auto-label.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* style: remove unnecessary escape in regex character class
* feat(ci): add workflow_dispatch to auto-label and doc-review workflows
- Add workflow_dispatch with pr_number input to both workflows for
manual testing and on-demand re-runs
- Migrate sync-plugin-docs label references to source:sync
- Add area:agents, area:ci, area:links, release:*, good-first-issue,
source:feedback, waiting:pr to labels.yml
- Update products.yml: influxdb_cloud label_group v2 -> v2-cloud
- Track label renames and deletions in LABEL_GUIDE.md
* fix(ci): replace npm ci with targeted js-yaml install in auto-label
npm ci fails in sparse checkout because package-lock.json is not
included. The workflow only needs js-yaml for YAML parsing.
* fix(ci): add --legacy-peer-deps to auto-label npm install
* task: updated labels for migration
* docs: update pipeline plan with test results and completion status
* test: reapply reverted serve.md changes for e2e pipeline test
Reverse the revert from 2f8efd6 to provide content changes that
exercise the auto-label and doc-review workflows end-to-end.
* fix(ci): fix preview URL polling in doc-review visual review
curl --head outputs response headers before the status code from -w,
so STATUS contained "HTTP/2 200 ...200" instead of just "200".
Drop --head and add -o /dev/null to capture only the status code.
* fix: correct broken fragment links in InfluxDB 3 serve.md files (#6910)
* Initial plan
* fix: correct broken links in serve.md files for enterprise config-options
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
* Update content/influxdb3/enterprise/reference/cli/influxdb3/serve.md
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jstirnaman <212227+jstirnaman@users.noreply.github.com>
Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
* fix(influxdb3): source comments
* docs(influxdb3): fix plugin path handling and improve Get Started clarity
Fixes issues with plugin filename resolution and improves progressive
disclosure in the processing engine Get Started guide.
- Update `--plugin` flag to `--path` (current CLI syntax)
- Clarify plugin filename must be provided without relative/absolute paths
- Add note explaining path resolution relative to `--plugin-dir`
- Document single-file vs multi-file plugin path requirements
- Link to detailed multi-file plugin structure documentation
- Add "Before you begin" section listing required setup steps
- Add prerequisites to table of contents
- Improve progressive disclosure by front-loading essentials
- Update trigger type from "Data write" to "WAL rows" (consistent with `influxdb3 create trigger --help`) with WAL link
- Replace `--plugin` with `--path` in trigger creation example
- Fix syntax error in enable trigger example (missing backslash)
- Clarify plugin example as "data write (WAL) plugin"
- Update code comments for clarity and remove outdated notes
- Specify "wal_rows trigger specification" terminology
- Specify testing "process_writes (WAL) plugin" for clarity
- Reference multiple test commands, not just wal_plugin
- Add link to schedule_plugin test command
- Clarify that PLUGIN_FILENAME should be filename only
- Prevents path resolution errors users encountered
- Aligns documentation with current CLI behavior
- Improves Get Started guide readability and flow
- Reduces confusion about plugin file handling
Closes#588
* docs(influxdb3): Docker Compose optional plugin directory
- Added inline comments to Docker Compose examples: `# Optional: only
needed for processing engine plugins`
- Appears for both `--plugin-dir` flag and volume mount
- Helps users understand they can skip this if not using plugins
- Better progressive disclosure - users see it's optional without
needing separate explanation
* docs(influxdb3): Replace --plugin-filename with --path
- Uses `--path` for plugins, replacing deprecated `--plugin-filename`
- Replaces "Data write" with "WAL rows" to be consistent with CLI help
docs
* Update content/shared/influxdb3-get-started/processing-engine.md
* fix(deps): add missing yarn.lock updates for puppeteer
The puppeteer dependency was added to package.json in commit 784956a31
but yarn.lock was not updated, causing CI failures with --frozen-lockfile.
* chore(deps): upgrade puppeteer to 24.35.0
- Upgrade puppeteer from 23.11.1 to 24.35.0
- Fix deprecated page.waitForTimeout() - replaced with Promise/setTimeout
- Fix deprecated headless: 'new' - now just uses headless boolean
The 'new' headless mode is now the default in Puppeteer 24.
* docs(influxdb3): document duplicate point write ordering and workarounds
Expand duplicate points documentation for Cloud Dedicated and Clustered
to address non-deterministic write ordering when duplicate points are
flushed together.
Changes:
- Add warning callout explaining duplicate point overwrites are non-deterministic
- Add recommended patterns section with append-only approaches
- Add SQL and InfluxQL query examples for getting latest state
- Add anti-patterns section with common mistakes to avoid
- Add retention guidance for last-value tables (Cloud Dedicated only)
- Add performance considerations for append-only patterns
- Add cross-links from schema-design and optimize-writes pages
closesinfluxdata/DAR#560
* Apply suggestions from code review
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
* Apply suggestion from @jstirnaman
* fix(influxdb3): broken links and aliases:
The link in the cloud-serverless schema-design page was pointing to /influxdb3/cloud-serverless/reference/line-protocol/#duplicate-points, but the actual file is located at /influxdb3/cloud-serverless/reference/syntax/line-protocol/
Core/Ent3 aliases were missing trailing slash, preventing navigating directly from other product line protocol docs
* chore: cleanup
---------
Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
* chore: Standard exclude comment format to denote flags, options, etc. that shouldn't be promoted in docs
* chore: exclude internal flags
* chore: Add docs:exclude comments for internal CLI flags, fix linting
- Note internal options that should be ignored by `docs audit` and authors.
- Remove character escaping from GitHub callouts and placeholders
Lint config changes:
- Add explicit exclude for content/**/*.md in lint-markdown-instructions
- Exclude all markdown files from Prettier formatting
Fixes issue where remark-lint was auto-formatting content files and
escaping special characters like [!Note] callouts and underscores.
* fix: cleanup escaping
* chore: 3.7 update
* fix(influxdb3): influxdb3 3.7 release:
- Avoid use of "retention policy" except for the storage engine
- User guide: specific heading, active voice
- Use SOURCE
---------
Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>
* docs(cli): fix global vs serve-specific flag documentation
- Remove --verbose from global flags (it's serve-specific)
- Document --num-io-threads as global-only flag
- Add clear examples showing correct flag positioning
- Update serve.md files with global flag usage notes
- Fix config-options.md to separate Core/Enterprise examples
Resolves incorrect CLI usage patterns that would cause errors.
Global flags must go before 'serve', serve-specific flags go after.
* docs(cli): remove Tokio runtime options from CLI index pages
- Remove detailed Tokio runtime options tables from CLI index pages
- Replace with simplified global options and link to config-options
- Add examples showing correct global flag positioning
- Fix --verbose usage to be serve-specific (after serve command)
- Add --num-io-threads example as global flag (before serve command)
These detailed options are now documented in config-options.md with
proper global vs serve-specific categorization.
- Adds /reference/internals/data-retention/ for data retention behavior and retention period details
- admin/databases and admin/tables:
- Adds examples for API and retention period
- Adds cautions and behavior notes for Core retention
- reference/cli/influxdb3: Adds usage examples and details
- Closes /influxdata/DAR/issues/548
- Updated /content/influxdb3/core/reference/cli/influxdb3/serve.md with 84 Core-compatible options
- Excluded 21 Enterprise-only options (like cluster-id, license-email, license-file, mode, compaction options, clustering options, etc.)
- All options now link to the Core configuration documentation
- Fixed the environment variables link to point to Core instead of Enterprise
2. Updated Enterprise serve.md Options Section
- Updated /content/influxdb3/enterprise/reference/cli/influxdb3/serve.md with all 105 configuration options
- Includes both Core and Enterprise-only options
- Maintains proper required option markers for node-id and cluster-id
- All options link to the Enterprise configuration documentation
3. Verified Content Consistency
- Core serve.md: Contains examples without cluster-id parameter (appropriate for Core)
- Enterprise serve.md: Contains examples with both node-id and cluster-id parameters, plus Enterprise-specific mode examples
- Both maintain consistent structure and troubleshooting sections appropriate to their respective products
- Environment variables sections correctly reference their respective configuration documentation
4. Allow Vale to accept "parquet" in lowercase when it appears in:
- Command-line options (e.g., --parquet-mem-cache-size)
- Hyphenated configuration names (e.g., parquet-mem-cache-prune-interval)
- Code blocks or inline code (e.g., `parquet`)
Key Changes Made:
- Core: Now includes 84 options (was 69), excluding Enterprise-only features
- Enterprise: Now includes all 105 options (was 78), comprehensive coverage
- Alphabetical ordering: Both option tables are now properly alphabetized
- New options added: Many previously missing options like buffer-mem-limit-mb, tcp-listener-file-path, telemetry-*, wal-replay-*, etc.
- Proper segregation: Core users no longer see Enterprise-only configuration options
- Vale allows Parquet or parquet in the appropriate context
- Fixesinfluxdata/DAR#515: discourages the use of a leading underscore in database and table names in all InfluxDB 3 versions, but doesn't disallow it
- Add detailed naming restrictions reference for all InfluxDB 3 versions
- Add basic guidelines in table and database creation guides.
- Core and Ent table guides are forthcoming in a separate PR
- Verified precision behavior in source code. Added auto-detection note for all APIs: Added a note
explaining that InfluxDB 3 uses timestamp magnitude to
auto-detect precision by default, and users can specify
precision to avoid ambiguity.
- Fix allowed precision values\
- Add examples
Fix `create token --admin` name in frontmatter
Improve schedule trigger docs with more detail:
1. Core API documentation
(/api-docs/influxdb3/core/v3/ref.yml):
- Added missing duration units (weeks, months, years)
- Added "Maximum interval: 1 year"
2. Enterprise API documentation
(/api-docs/influxdb3/enterprise/v3/ref.yml):
- Added missing duration units (weeks, months, years)
- Added "Maximum interval: 1 year"
3. CLI reference documentation
(/content/shared/influxdb3-cli/create/trigger.md):
- Added complete list of supported duration units
- Added "Maximum interval is 1 year" note
All documentation now consistently reflects:
- The complete set of supported duration units for
every triggers
- The 1-year maximum limit for interval-based
scheduling
- Clear examples showing the syntax
- Add CLI ref for influxdb3 update table and ret. period option in Ent- Change volume source to /test for core and ent3 in compose.yaml
- Add alt_links instructions in CONTRIBUTING.md
chore(monolith): Recommend API over CLI for writing data (Closes#5957). Fix client library references
fix(monolith): Add tool comparison table (linked from client libs), fix and cleanup write data sections, link to client libraries.
fix(monolith): Remove redundant content.
Closes#5957