Centralized documentation aggregating content from all public raibid-labs repositories using Quartz v4 and automated Nushell scripts.
๐ Live Site: https://raibid-labs.github.io/docs
- Style Guide - Writing conventions and formatting standards
- Documentation Structure - Versioning policy and organization
- Contributing Guidelines - How to contribute to documentation
- Release Process - Release workflow and versioning
- Quick Start Guide - Get up and running quickly
- Code of Conduct - Community guidelines
This repository serves dual purposes:
- Obsidian Vault - Local knowledge management for editing documentation
- Static Website - Published documentation site using Quartz v4
Documentation is automatically aggregated from all public raibid-labs repositories that contain a /docs directory via git submodules.
- โ Automatic repository discovery via GitHub API
- โ Git submodules for multi-repository aggregation
- โ Automated synchronization with daily GitHub Actions
- โ Full-text search and graph visualization
- โ Obsidian-compatible (wikilinks, backlinks, graph view)
- โ Configurable ignorelist for repository exclusion
- โ All automation written in Nushell
- Node.js >= 22.0.0
- npm >= 10.9.2
- Nushell >= 0.105.0
- GitHub CLI (
gh) - Installation guide
# Clone the repository
git clone --recursive https://github.com/raibid-labs/docs.git
cd docs
# Install dependencies
npm install
# Authenticate GitHub CLI (if not already done)
gh auth login# Build and serve the site locally
npm run dev
# Or use Quartz directly
npx quartz build --serveVisit http://localhost:8080 to view the site.
# Discover repositories from raibid-labs organization
npm run discover
# Sync git submodules
npm run sync
# Update documentation and generate indices
nu scripts/update-docs.nu --generate-index --verbose
# Full build pipeline
nu scripts/build-site.nu --verbosedocs/
โโโ config/
โ โโโ ignorelist.json # Repository exclusion configuration
โ โโโ ignorelist-internal.json # Template for internal docs repo
โโโ docs/
โ โโโ content/
โ โ โโโ projects/ # Project submodules (auto-generated)
โ โ โโโ guides/ # Documentation guides
โ โโโ index.md # Homepage
โโโ scripts/
โ โโโ discover-repos.nu # GitHub API repository discovery
โ โโโ sync-submodules.nu # Git submodule management
โ โโโ update-docs.nu # Documentation updates and indexing
โ โโโ build-site.nu # Complete build pipeline
โโโ .github/
โ โโโ workflows/
โ โโโ sync-and-deploy.yml # CI/CD automation
โโโ quartz.config.ts # Quartz configuration
โโโ package.json # Node.js dependencies
โโโ CLAUDE.md # Claude Code configuration
-
Repository Discovery (
discover-repos.nu)- Queries GitHub API for raibid-labs organization repos
- Filters based on ignorelist configuration
- Checks for
/docsdirectory presence - Outputs
discovered-repos.json
-
Submodule Synchronization (
sync-submodules.nu)- Adds new repository docs as submodules
- Updates existing submodules
- Removes stale submodules
- Maintains
.gitmodulesfile
-
Documentation Updates (
update-docs.nu)- Pulls latest changes from all submodules
- Generates index files for navigation
- Validates markdown files
- Creates project overview pages
-
Site Build (
build-site.nu)- Orchestrates full pipeline
- Runs all scripts in sequence
- Builds static site with Quartz
- Optional local server for preview
Automated workflow runs:
- Daily at 2 AM UTC - Scheduled sync
- On push to main - When workflow or scripts change
- Manual trigger - Via workflow_dispatch
Edit config/ignorelist.json to control which repositories are included:
{
"repositories": ["docs"], // Explicitly excluded repos
"patterns": ["fork-*", "archive-*"], // Regex patterns to exclude
"exclude_forks": true, // Exclude forked repositories
"exclude_archived": true, // Exclude archived repositories
"exclude_private": true, // Exclude private repositories (public repo only)
"require_docs_directory": true // Only include repos with /docs folder
}Edit quartz.config.ts to customize:
- Site title and branding
- Theme and colors
- Enabled plugins
- Ignore patterns
- Base URL
For aggregating private repository documentation, see the two-repo approach:
Public Docs (this repo):
- Repository:
raibid-labs/docs(public) - Aggregates: Public repos only
- Deployment: GitHub Pages
- URL: https://raibid-labs.github.io/docs
Internal Docs (companion repo):
- Repository:
raibid-labs/docs-internal(private) - Aggregates: All repos (public + private)
- Deployment: Local builds, Cloudflare Pages, or artifacts
- Access: Organization members only
Both repos share the same automation scripts and tooling for consistency.
This repository can be opened as an Obsidian vault:
- Install Obsidian
- Open this repository as a vault
- Enable recommended plugins:
- Wikilinks
- Graph View
- Backlinks
- Search
The site will automatically render Obsidian features:
[[wikilinks]]- Tags with
#tag - Backlinks and graph relationships
- Callouts and admonitions
See Obsidian Usage Guide for details.
Site is automatically deployed to GitHub Pages via the gh-pages branch:
- URL: https://raibid-labs.github.io/docs
- Branch: gh-pages
- Trigger: Automatic on successful workflow runs
# Build the site
npx quartz build
# Deploy to gh-pages branch
cd public
git init
git add -A
git commit -m "Deploy documentation"
git push -f https://github.com/raibid-labs/docs.git HEAD:gh-pages# Initialize all submodules
git submodule update --init --recursive
# Update all submodules to latest
git submodule update --remote --merge
# Remove a problematic submodule
git submodule deinit -f docs/content/projects/repo-name
git rm -f docs/content/projects/repo-name
rm -rf .git/modules/docs/content/projects/repo-name# Clean build cache
rm -rf public .quartz-cache
# Reinstall dependencies
rm -rf node_modules package-lock.json
npm install
# Verify Nushell syntax
nu --version # Should be >= 0.105.0
nu scripts/discover-repos.nu --help# Check rate limit status
gh api rate_limit
# Authenticate with personal access token
gh auth login --with-token < token.txtAll user-facing documentation is versioned under docs/versions/:
- Latest (vNEXT): docs/versions/vNEXT - Unreleased changes
- Version Manifest: docs/versions.json - Available versions
For details on documentation structure and versioning policy, see:
For getting started with the documentation hub:
To have your repository's documentation included in this hub:
- Create a
/docsdirectory in your repository - Add markdown files to
/docs - Ensure your repository is:
- Public (for this docs repo)
- Not in the ignorelist
- Part of the raibid-labs organization
- Wait for the next scheduled sync (daily at 2 AM UTC) or trigger manually
For detailed contribution guidelines, see docs/CONTRIBUTING.md.
Organization members can manually trigger synchronization:
gh workflow run sync-and-deploy.yml --repo raibid-labs/docsOr via the GitHub UI:
- Go to Actions tab
- Select "Sync Documentation and Deploy"
- Click "Run workflow"
- Quartz v4 - Static site generator
- Nushell - Automation scripting
- GitHub Actions - CI/CD
- GitHub Pages - Hosting
- Obsidian - Local vault editing (optional)
- Node.js - Build toolchain
- Git Submodules - Multi-repository aggregation
โ Active Development
This documentation hub is actively maintained and automatically updated daily.
- Last deployed: Check Actions tab
- Live site: https://raibid-labs.github.io/docs
- Issues: GitHub Issues
Documentation content: Various (see individual repositories)
Quartz v4: MIT License (see Quartz documentation)
Automation scripts: MIT License
Maintained by: raibid-labs Questions? Open an issue or check the guides.