# Automation & Tools / Công Cụ Tự Động

This reference provides tools and scripts for automating documentation validation and generation.

## Link Checking

Validate all markdown links to prevent broken references:

```bash
# Install markdown-link-check
npm install -g markdown-link-check

# Check single file
markdown-link-check docs/en/README.md

# Check all markdown files in docs/
find docs -name "*.md" | xargs markdown-link-check

# With config file
markdown-link-check -c .markdown-link-check.json docs/en/README.md
```

**Config example** (`.markdown-link-check.json`):
```json
{
  "ignorePatterns": [
    { "pattern": "^http://localhost" },
    { "pattern": "^https://api.goodgo.vn" }
  ],
  "timeout": "20s",
  "retryOn429": true,
  "aliveStatusCodes": [200, 206]
}
```

## Markdown Linting

Enforce consistent markdown style:

```bash
# Install markdownlint-cli
npm install -g markdownlint-cli

# Lint all docs
markdownlint docs/**/*.md

# Fix auto-fixable issues
markdownlint --fix docs/**/*.md

# With config
markdownlint -c .markdownlint.json docs/**/*.md
```

**Config example** (`.markdownlint.json`):
```json
{
  "default": true,
  "MD013": { "line_length": 120 },
  "MD033": false,
  "MD041": false
}
```

## Documentation Generation

**OpenAPI to Markdown:**
```bash
# Using redoc-cli
npx @redocly/cli build-docs docs/en/api/openapi/service.yaml \
  -o docs/en/api/reference.html

# Using swagger-markdown
npx swagger-markdown -i docs/en/api/openapi/service.yaml \
  -o docs/en/api/REFERENCE.md
```

**C# XML Comments to Markdown:**
```bash
# Using xmldoc2md (for .NET projects)
dotnet tool install -g xmldoc2md
xmldoc2md src/MyService.API/bin/Debug/net8.0/MyService.API.xml \
  docs/en/api/
```

## CI/CD Integration

```yaml
# .github/workflows/docs-validation.yml
name: Validate Documentation

on: [pull_request]

jobs:
  validate-docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Check links
        run: |
          npm install -g markdown-link-check
          find docs -name "*.md" | xargs markdown-link-check
      - name: Lint markdown
        run: |
          npm install -g markdownlint-cli
          markdownlint docs/**/*.md
```

## Documentation Testing

```bash
# Check for broken links
find docs -name "*.md" -exec markdown-link-check {} \;

# Lint markdown files
markdownlint docs/**/*.md
```

## Resources

- [markdown-link-check](https://github.com/tcort/markdown-link-check) - Validate markdown links
- [markdownlint](https://github.com/DavidAnson/markdownlint) - Markdown linter
- [Redocly CLI](https://redocly.com/docs/cli/) - OpenAPI tools
- [Back to Documentation Skill](../SKILL.md)
