{"id":35790267,"url":"https://github.com/fidpa/bash-markdown-link-validator","last_synced_at":"2026-01-21T01:08:52.907Z","repository":{"id":331171808,"uuid":"1125561466","full_name":"fidpa/bash-markdown-link-validator","owner":"fidpa","description":"Fast Markdown link validator for AI-assisted development. Smart anchor resolution, parallel processing, CI/CD ready. Pure Bash, zero dependencies.","archived":false,"fork":false,"pushed_at":"2026-01-17T19:59:05.000Z","size":35,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-18T05:59:39.799Z","etag":null,"topics":["automation","developer-tools","diataxis","documentation","documentation-tool","link-checker","llm","markdown"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fidpa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-31T00:29:39.000Z","updated_at":"2026-01-17T19:59:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/fidpa/bash-markdown-link-validator","commit_stats":null,"previous_names":["fidpa/bash-markdown-link-validator"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fidpa/bash-markdown-link-validator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fidpa%2Fbash-markdown-link-validator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fidpa%2Fbash-markdown-link-validator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fidpa%2Fbash-markdown-link-validator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fidpa%2Fbash-markdown-link-validator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fidpa","download_url":"https://codeload.github.com/fidpa/bash-markdown-link-validator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fidpa%2Fbash-markdown-link-validator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28620575,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T23:49:58.628Z","status":"ssl_error","status_checked_at":"2026-01-20T23:47:29.996Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","developer-tools","diataxis","documentation","documentation-tool","link-checker","llm","markdown"],"created_at":"2026-01-07T08:07:09.546Z","updated_at":"2026-01-21T01:08:52.895Z","avatar_url":"https://github.com/fidpa.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bash-markdown-link-validator\n\n**Fast, zero-dependency Markdown link validator with smart anchor resolution. Pure Bash.**\n\n[![GitHub Release](https://img.shields.io/github/v/release/fidpa/bash-markdown-link-validator?include_prereleases\u0026sort=semver)](https://github.com/fidpa/bash-markdown-link-validator/releases)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Bash 4.0+](https://img.shields.io/badge/bash-4.0%2B-green.svg)](https://www.gnu.org/software/bash/)\n[![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20WSL2-blue)](https://github.com/fidpa/bash-markdown-link-validator#-platform-support)\n[![CI](https://github.com/fidpa/bash-markdown-link-validator/actions/workflows/lint.yml/badge.svg)](https://github.com/fidpa/bash-markdown-link-validator/actions/workflows/lint.yml)\n[![ShellCheck](https://img.shields.io/badge/shellcheck-passing-brightgreen)](https://www.shellcheck.net/)\n[![Dependencies](https://img.shields.io/badge/dependencies-zero-success)](https://github.com/fidpa/bash-markdown-link-validator#-requirements)\n[![Maintenance](https://img.shields.io/badge/maintenance-active-brightgreen)](https://github.com/fidpa/bash-markdown-link-validator/commits/main)\n\n---\n\n## ⚡ TL;DR\n\nValidates 2,271 Markdown files with zero Node/Python/Rust dependencies. Pure Bash, 11 active deployments, production-tested for 5+ months.\n\n---\n\n## ✨ Features\n\n- **Zero External Dependencies** - Pure Bash, no npm/pip/cargo installs required\n- **Smart Anchor Resolution** - Suffix-match, umlaut normalization, numbered sections\n- **Parallel Processing** - Configurable job count for large documentation sets\n- **JSON Output** - CI/CD ready with machine-readable output\n- **Wrapper System** - Multi-area validation with DRY principle\n- **AI-Agent Ready** - Designed for Claude Code, Cursor, GitHub Copilot workflows\n- **Production Tested** - 2,271 files, 11,000+ links validated daily\n\n---\n\n## 🚀 Quick Start\n\n### Installation\n\n```bash\ngit clone https://github.com/fidpa/bash-markdown-link-validator.git\ncd bash-markdown-link-validator\n```\n\n### Basic Usage\n\nCreate a wrapper script in your docs directory:\n\n```bash\n#!/bin/bash\nset -uo pipefail\n\nAREA_NAME=\"docs\"\nAREA_DIR=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\" \u0026\u0026 pwd)\"\nPROJECT_ROOT=\"$(cd \"$AREA_DIR/..\" \u0026\u0026 pwd)\"\nDOCS_DIR=\"$PROJECT_ROOT/docs\"\nEXCLUDE_DIRS=\"archive|deprecated\"\n\nsource \"/path/to/validate-links-core.sh\" || exit 2\n\nparse_args \"$@\"\nsetup_colors\nmapfile -t md_files \u003c \u003c(find_markdown_files \"$AREA_DIR\" \"$EXCLUDE_DIRS\")\n[[ $PARALLEL_JOBS -eq 1 ]] \u0026\u0026 validate_sequential \"${md_files[@]}\" || validate_parallel \"${md_files[@]}\"\nprint_summary_report\nexit_with_status\n```\n\n### Run It\n\n```bash\n./validate-links.sh              # Basic validation\n./validate-links.sh -v           # Verbose output\n./validate-links.sh -j 4         # 4 parallel jobs\n./validate-links.sh --output-format=json  # CI/CD integration\n```\n\n---\n\n## 📊 Sample Output\n\n```\n========================================\nLink Validation Report - docs\n========================================\n\nScanning: getting-started/INSTALLATION.md\n  ✓ 12 links, all valid (100%)\n\nScanning: reference/API.md\n  ❌ Line 45: File not found: ../how-to/DEPRECATED.md\n  ✗ 8 links, 1 broken (87% valid)\n\n========================================\nSummary\n========================================\nTotal files scanned: 127\nTotal links found: 892\nValid links: 891\nBroken links: 1\nSuccess rate: 99%\n========================================\n```\n\n---\n\n## 🎯 Smart Anchor Resolution\n\nUnlike other tools that only do exact matching, this validator handles:\n\n| Pattern | Example | Resolution |\n|---------|---------|------------|\n| **Suffix Match** | `#prepared-statements` | Matches `#2-3-prepared-statements` |\n| **Umlaut Normalization** | `#größe` | Matches `#grosse` |\n| **Numbered Sections** | `#25-troubleshooting` | Matches `#2-5-troubleshooting` |\n| **Case Insensitive** | `#API-Reference` | Matches `#api-reference` |\n\n---\n\n## 📈 Comparison\n\n| Tool | Language | Dependencies | Parallel | Anchor Modes |\n|------|----------|--------------|----------|--------------|\n| **bash-markdown-link-validator** | **Bash** | **None** | ✅ | **4 (smart)** |\n| markdown-link-check | JavaScript | Node.js + npm | ❌ | 1 (exact) |\n| lychee | Rust | Binary | ✅ | ❌ |\n| linkchecker | Python | Python + deps | ✅ | 1 (exact) |\n| remark-validate-links | JavaScript | Node.js + npm | ❌ | 1 (exact) |\n\n---\n\n## 🔧 CLI Options\n\n| Option | Description |\n|--------|-------------|\n| `-v, --verbose` | Show detailed output for all links |\n| `--no-color` | Disable colored output |\n| `-j N, --parallel-jobs=N` | Run N parallel jobs (default: 2) |\n| `--output-format=json` | JSON output for CI/CD |\n| `--fix-pattern=OLD:NEW` | Batch-fix links matching pattern |\n| `--auto-todo` | Mark missing files as TODO |\n| `--warm-cache` | Pre-build anchor cache |\n\n---\n\n## 📚 Documentation\n\n- [Quick Start Guide](docs/QUICK_START.md) - Installation and basic usage\n- [API Reference](docs/API_REFERENCE.md) - Full function documentation\n- [Wrapper System](docs/WRAPPER_SYSTEM.md) - Multi-area validation pattern\n- [Troubleshooting](docs/TROUBLESHOOTING.md) - Common issues and solutions\n\n---\n\n## 📁 Examples\n\n| Example | Use Case |\n|---------|----------|\n| [basic-wrapper.sh](examples/basic-wrapper.sh) | Single directory (e.g., `docs/`) |\n| [multi-area-wrapper.sh](examples/multi-area-wrapper.sh) | Multiple areas (e.g., DIATAXIS: tutorial, how-to, reference, explanation) |\n\n---\n\n## 🔗 Requirements\n\n- **Bash 4.0+** (for associative arrays)\n- **Standard Unix Tools**: `grep`, `sed`, `find`\n- **Optional**: `realpath`, `git`\n\n## 🖥️ Platform Support\n\n- ✅ **Linux**: Full support (GNU tools)\n- ✅ **macOS**: Full support (since v1.1.0 - POSIX-compatible)\n- ✅ **WSL2**: Full support\n- ⚠️ **Generic POSIX**: Partial (requires Bash 4.0+)\n\n**Note**: Version 1.0.x required GNU-specific tools (`grep -oP`, `sed -i`, `readlink -f`). Version 1.1.0+ is fully POSIX-compatible and works on macOS without additional dependencies.\n\n---\n\n## 📜 License\n\nMIT License - See [LICENSE](LICENSE) for details.\n\n---\n\n## 🙏 Acknowledgments\n\nBuilt with lessons learned from validating 2,271 Markdown files across 11 documentation areas. Production-tested since July 2025.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffidpa%2Fbash-markdown-link-validator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffidpa%2Fbash-markdown-link-validator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffidpa%2Fbash-markdown-link-validator/lists"}