chore(instructions): Agents file initial commit (#6492)
parent
a43a880f2f
commit
e3bfd39489
|
|
@ -0,0 +1,232 @@
|
||||||
|
# InfluxData Documentation (docs-v2)
|
||||||
|
|
||||||
|
> **For AI agents working with the InfluxData documentation repository**
|
||||||
|
|
||||||
|
## Project Overview
|
||||||
|
|
||||||
|
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 |
|
||||||
|
| Lint | `yarn lint` | ~1m |
|
||||||
|
|
||||||
|
## Repository Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
docs-v2/
|
||||||
|
├── content/ # Documentation content
|
||||||
|
│ ├── influxdb3/ # InfluxDB 3 (core, enterprise, cloud-*)
|
||||||
|
│ ├── influxdb/ # InfluxDB v2 and v1
|
||||||
|
│ ├── enterprise_influxdb/ # InfluxDB Enterprise v1
|
||||||
|
│ ├── telegraf/ # Telegraf docs
|
||||||
|
│ ├── shared/ # Shared content across products
|
||||||
|
│ └── example.md # Shortcode testing playground
|
||||||
|
├── layouts/ # Hugo templates and shortcodes
|
||||||
|
├── assets/ # JS, CSS, TypeScript
|
||||||
|
├── api-docs/ # OpenAPI specifications
|
||||||
|
├── data/ # YAML/JSON data files
|
||||||
|
├── public/ # Build output (gitignored, ~529MB)
|
||||||
|
└── .github/
|
||||||
|
└── copilot-instructions.md # Primary AI instructions
|
||||||
|
```
|
||||||
|
|
||||||
|
**Content Paths**: See [copilot-instructions.md](.github/copilot-instructions.md#content-organization)
|
||||||
|
|
||||||
|
## 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
|
||||||
|
|
||||||
|
**Frontmatter** (page metadata):
|
||||||
|
```yaml
|
||||||
|
title: Page Title # Required - becomes h1
|
||||||
|
description: Brief desc # Required - for SEO
|
||||||
|
menu:
|
||||||
|
influxdb_2_0:
|
||||||
|
name: Nav Label # Optional - nav display name
|
||||||
|
parent: Parent Node # Optional - for nesting
|
||||||
|
weight: 1 # Required - sort order
|
||||||
|
```
|
||||||
|
|
||||||
|
**Shared Content** (avoid duplication):
|
||||||
|
```yaml
|
||||||
|
source: /shared/path/to/content.md
|
||||||
|
```
|
||||||
|
|
||||||
|
Shared content files (`/shared/path/to/content.md`):
|
||||||
|
- Don't store frontmatter
|
||||||
|
- Can use `{{% show-in %}}`, `{{% hide-in %}}`, and the `version` keyword (`/influxdb3/version/content.md`)
|
||||||
|
|
||||||
|
**Common Shortcodes**:
|
||||||
|
- Callouts: `> [!Note]`, `> [!Warning]`, `> [!Important]`, `> [!Tip]`
|
||||||
|
- Tabs: `{{< tabs-wrapper >}}` + `{{% tabs %}}` + `{{% tab-content %}}`
|
||||||
|
- Required: `{{< req >}}` or `{{< req type="key" >}}`
|
||||||
|
- Code placeholders: `{ placeholders="<PLACEHOLDER>" }`
|
||||||
|
|
||||||
|
**📖 Complete Reference**: [DOCS-SHORTCODES.md](DOCS-SHORTCODES.md) | [DOCS-FRONTMATTER.md](DOCS-FRONTMATTER.md)
|
||||||
|
|
||||||
|
### Testing Changes
|
||||||
|
|
||||||
|
**Always test before committing**:
|
||||||
|
```bash
|
||||||
|
# Verify server renders (check 200 status)
|
||||||
|
curl -s -o /dev/null -w "%{http_code}" http://localhost:1313/influxdb3/core/
|
||||||
|
|
||||||
|
# Test specific content
|
||||||
|
yarn test:links content/influxdb3/core/**/*.md
|
||||||
|
|
||||||
|
# Run style linting
|
||||||
|
docker compose run -T vale content/**/*.md
|
||||||
|
```
|
||||||
|
|
||||||
|
**📖 Complete Reference**: [DOCS-TESTING.md](DOCS-TESTING.md)
|
||||||
|
|
||||||
|
### Committing Changes
|
||||||
|
|
||||||
|
**Commit Message Format**:
|
||||||
|
```
|
||||||
|
type(scope): description
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
- fix(enterprise): correct Docker environment variable
|
||||||
|
- feat(influxdb3): add new plugin documentation
|
||||||
|
- docs(core): update configuration examples
|
||||||
|
```
|
||||||
|
|
||||||
|
**Types**: `fix`, `feat`, `style`, `refactor`, `test`, `chore`
|
||||||
|
|
||||||
|
**Scopes**: `enterprise`, `influxdb3`, `core`, `cloud`, `telegraf`, etc.
|
||||||
|
|
||||||
|
**Pre-commit hooks** run automatically (Vale, Prettier, tests). Skip with:
|
||||||
|
```bash
|
||||||
|
git commit -m "message" --no-verify
|
||||||
|
```
|
||||||
|
|
||||||
|
**📖 Complete Reference**: [DOCS-CONTRIBUTING.md](DOCS-CONTRIBUTING.md#commit-guidelines)
|
||||||
|
|
||||||
|
## Key Patterns
|
||||||
|
|
||||||
|
### Content Organization
|
||||||
|
|
||||||
|
- **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`
|
||||||
|
|
||||||
|
### Code Examples
|
||||||
|
|
||||||
|
**Testable code blocks** (pytest):
|
||||||
|
```python
|
||||||
|
print("Hello, world!")
|
||||||
|
```
|
||||||
|
|
||||||
|
<!--pytest-codeblocks:expected-output-->
|
||||||
|
|
||||||
|
```
|
||||||
|
Hello, world!
|
||||||
|
```
|
||||||
|
|
||||||
|
**Language identifiers**: Use `python` not `py`, `bash` not `sh` (for pytest collection)
|
||||||
|
|
||||||
|
### API Documentation
|
||||||
|
|
||||||
|
- **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
|
||||||
|
|
||||||
|
| 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-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
|
||||||
|
|
||||||
Loading…
Reference in New Issue