* REAL-WORLD TESTING ────────────────── BEFORE FIX: ─────────── ❌ Agent runs: docs edit <url> ❌ Editor spawns and blocks ❌ Agent hangs for 30+ seconds ❌ Workflow times out or fails ❌ Manual intervention required AFTER FIX: ────────── ✅ Agent runs: docs edit <url> ✅ Editor spawns detached ✅ CLI exits in <1 second ✅ Agent continues processing ✅ Workflow completes successfully ✅ No manual intervention needed ISSUE #21: ✅ RESOLVED ─────────────────────── The docs edit command now: • Works perfectly in automated workflows • Doesn't hang AI agents or scripts • Exits immediately by default • Supports blocking mode via --wait flag • Handles both URL formats • Provides clear feedback • Has comprehensive documentation DEPLOYMENT STATUS: ✅ READY ──────────────────────────── All tests pass: ✓ Unit tests (7/7) ✓ CLI tests ✓ Real-world agent workflow ✓ Coverage Gap issue processing ✓ URL format support ✓ Non-blocking verification ✓ Blocking mode verification Scenario: AI agent processes GitHub Coverage Gap issues Issues: #6702, Results: • Fetched issues from GitHub ✅ • Used docs edit to locate files ✅ • Identified missing docs (Coverage Gaps) ✅ • Found existing docs ✅ • No hangs, no timeouts ✅ • Total time: 2 seconds for 3 issues ✅ * refactor(cli): move docs CLI to dedicated scripts/docs-cli directory - Organize all CLI tools and tests in scripts/docs-cli/ - Update package.json bin and script paths - Update setup-local-bin.js to point to new location - Fix import paths in docs-edit.js and docs-create.js - Update SKILL.md with new features (--wait, --editor, path support) - Update ISSUE-21-FIX-README.md with new structure - Add comprehensive README.md for docs-cli directory - All tests passing, non-blocking behavior verified Closes #21 * feat(cli): add non-blocking editor support to docs create - Add --open flag to open created files in editor - Add --wait flag for blocking mode (use with --open) - Add --editor flag for explicit editor selection - Uses same editor resolution and process management as docs edit - Non-blocking by default to prevent agent hanging - Update all documentation with new examples - Maintains backwards compatibility (--open is optional) This completes the non-blocking implementation across both docs edit and docs create commands. * docs: update Copilot instructions with complete CLI tool reference - Add docs create --open to Quick Reference table - Document both create and edit commands comprehensively - Add editor configuration section (shared between commands) - Update content.instructions.md with CLI workflow examples - Add NON-BLOCKING-IMPLEMENTATION-COMPLETE.md summary document - Clarify non-blocking behavior for AI agents * chore: remove ephemeral documentation files Remove temporary documentation files used during development: - CLAUDE-docs-tooling-issue21.md - IMPLEMENTATION-SUMMARY.md - ISSUE-21-FIX-README.md - NON-BLOCKING-IMPLEMENTATION-COMPLETE.md - TEST-RESULTS.md All relevant documentation has been integrated into: - README.md - scripts/docs-cli/README.md - .github/copilot-instructions.md - .github/instructions/content.instructions.md - .claude/skills/docs-cli-workflow/SKILL.md * Fix url-parser.js broken import by moving to shared library location (#6727) * Initial plan * refactor: move url-parser.js to shared library location and fix imports 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> * Update scripts/docs-cli/__tests__/process-manager.test.js Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update scripts/docs-cli/__tests__/editor-resolver.test.js Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| docs-cli | ||
| lib | ||
| rust-markdown-converter | ||
| schemas | ||
| templates | ||
| README.md | ||
| add-placeholders.js | ||
| build-llm-markdown.js | ||
| deploy-staging.sh | ||
| html-to-markdown.js | ||
| setup-local-bin.js | ||
README.md
Documentation Build Scripts
html-to-markdown.js
Converts Hugo-generated HTML files to fully-rendered Markdown with evaluated shortcodes, dereferenced shared content, and removed comments.
Purpose
This script generates production-ready Markdown output for LLM consumption and user downloads. The generated Markdown:
- Has all Hugo shortcodes evaluated to text (e.g.,
{{% product-name %}}→ "InfluxDB 3 Core") - Includes dereferenced shared content in the body
- Removes HTML/Markdown comments
- Adds product context to frontmatter
- Mirrors the HTML version but in clean Markdown format
Usage
# Generate all markdown files (run after Hugo build)
yarn build:md
# Generate with verbose logging
yarn build:md:verbose
# Generate for specific path
node scripts/html-to-markdown.js --path influxdb3/core
# Generate limited number for testing
node scripts/html-to-markdown.js --limit 10
# Combine options
node scripts/html-to-markdown.js --path telegraf/v1 --verbose
Options
--path <path>: Process specific path withinpublic/(default: process all)--limit <n>: Limit number of files to process (useful for testing)--verbose: Enable detailed logging of conversion progress
Build Process
-
Hugo generates HTML (with all shortcodes evaluated):
npx hugo --quiet -
Script converts HTML to Markdown:
yarn build:md -
Generated files:
- Location:
public/**/index.md(alongsideindex.html) - Git status: Ignored (entire
public/directory is gitignored) - Deployment: Generated at build time, like API docs
- Location:
Features
Product Context Detection
Automatically detects and adds product information to frontmatter:
---
title: Set up InfluxDB 3 Core
description: Install, configure, and set up authorization...
url: /influxdb3/core/get-started/setup/
product: InfluxDB 3 Core
product_version: core
date: 2025-11-13
lastmod: 2025-11-13
---
Supported products:
- InfluxDB 3 Core, Enterprise, Cloud Dedicated, Cloud Serverless, Clustered
- InfluxDB v2, v1, Cloud (TSM), Enterprise v1
- Telegraf, Chronograf, Kapacitor, Flux
Turndown Configuration
Custom Turndown rules for InfluxData documentation:
- Code blocks: Preserves language identifiers
- GitHub callouts: Converts to
> [!Note]format - Tables: GitHub-flavored markdown tables
- Lists: Preserves nested lists and formatting
- Links: Keeps relative links intact
- Images: Preserves alt text and paths
Content Extraction
Extracts only article content (removes navigation, footer, etc.):
- Target selector:
article.article--content - Skips files without article content (with warning)
Integration
Local Development:
# After making content changes
npx hugo --quiet && yarn build:md
CircleCI Build Pipeline:
The script runs automatically in the CircleCI build pipeline after Hugo generates HTML:
# .circleci/config.yml
- run:
name: Hugo Build
command: yarn hugo --environment production --logLevel info --gc --destination workspace/public
- run:
name: Generate LLM-friendly Markdown
command: node scripts/html-to-markdown.js
Build order:
- Hugo builds HTML →
workspace/public/**/*.html html-to-markdown.jsconverts HTML →workspace/public/**/*.md- All files deployed to S3
Production Build (Manual):
npx hugo --quiet
yarn build:md
Watch Mode: For development with auto-regeneration, run Hugo server and regenerate markdown after content changes:
# Terminal 1: Hugo server
npx hugo server
# Terminal 2: After making changes
yarn build:md
Performance
- Processing speed: ~10-20 files/second
- Full site: 5,581 HTML files in ~5 minutes
- Memory usage: Minimal (processes files sequentially)
- Caching: None (regenerates from HTML each time)
Troubleshooting
No article content found:
⚠️ No article content found in /path/to/file.html
- File doesn't have
article.article--contentselector - Usually navigation pages or redirects
- Safe to ignore
Shortcodes still present:
- Run after Hugo has generated HTML, not before
- Hugo must complete its build first
Missing product context:
- Check that URL path matches patterns in
PRODUCT_MAP - Add new products to the map if needed
See Also
- Plan document - Architecture decisions
- API docs generation - Similar pattern for API reference
- Package.json scripts - Build commands