Wiki Audit
Wiki Audit
Section titled “Wiki Audit”Analyze your Confluence wiki for content health issues like stale pages, broken links, orphaned content, and contributor risks.
Overview
Section titled “Overview”The audit wiki command helps you maintain documentation quality by detecting:
- Stale content - Pages not updated in months
- Orphaned pages - Pages with no incoming links
- Broken links - Internal links pointing to non-existent pages
- Contributor risks - Bus factor and inactive maintainer issues
- External link health - Broken external URLs
- Compliance issues - Missing labels, restricted pages, drafts
- Editor format - Pages using legacy vs new Confluence editor
Quick Start
Section titled “Quick Start”# Run all checks with 12-month stale thresholdatlcli audit wiki --all --stale-high 12
# Output as markdown reportatlcli audit wiki --all --stale-high 12 --markdown > AUDIT-REPORT.md
# Output as JSON for processingatlcli audit wiki --all --jsonPrerequisites
Section titled “Prerequisites”Before running audits, you need:
- Enable the feature flag:
atlcli flag set audit true --global - Initialized
.atlclidirectory:atlcli wiki docs init ./docs --space TEAM - Synced content:
atlcli wiki docs pull ./docs - Active profile:
atlcli auth login
Check Types
Section titled “Check Types”Content Freshness
Section titled “Content Freshness”| Flag | Description |
|---|---|
--stale-high <months> | Flag pages not edited in N+ months as high risk |
--stale-medium <months> | Flag pages not edited in N+ months as medium risk |
--stale-low <months> | Flag pages not edited in N+ months as low risk |
# Multi-tier stale detectionatlcli audit wiki --stale-high 12 --stale-medium 6 --stale-low 3Link Analysis
Section titled “Link Analysis”| Flag | Description |
|---|---|
--orphans | Find pages with no incoming links |
--broken-links | Find broken internal links |
--external-links | List all external URLs (inventory) |
--check-external | Verify external URLs via HTTP |
# Full link auditatlcli audit wiki --orphans --broken-links --check-externalFolder Structure
Section titled “Folder Structure”| Flag | Description |
|---|---|
--folders | Check folder structure issues |
# Folder auditatlcli audit wiki --foldersFolder checks detect:
- FOLDER_EMPTY - Folders with no child pages or subfolders
- FOLDER_MISSING_INDEX - Directories with pages but no folder index.md
See Folders for details.
Editor Format
Section titled “Editor Format”The docs status command reports on Confluence editor formats:
# View editor format breakdownatlcli wiki docs status ./docsOutput includes:
Editor format: new editor (v2): 25 pages legacy editor (v1): 3 pages unknown: 2 pages
Legacy/unknown editor pages: old-page.md imported-doc.md| Format | Description |
|---|---|
| v2 (new editor) | Pages using Confluence’s new editor with colored callouts |
| v1 (legacy) | Pages explicitly set to legacy editor (grey callouts) |
| unknown | Pages without editor property (typically older pages) |
Converting Editor Formats
Section titled “Converting Editor Formats”Convert pages between editor formats:
# Convert a single page to new editoratlcli wiki docs convert ./docs/old-page.md --to-new-editor
# Convert all pages in directory to new editor (preview first)atlcli wiki docs convert ./docs --to-new-editor --dry-run
# Apply conversion to all pagesatlcli wiki docs convert ./docs --to-new-editor --confirm
# Convert back to legacy editor if neededatlcli wiki docs convert ./docs/page.md --to-legacy-editor| Flag | Description |
|---|---|
--to-new-editor | Convert to v2 (new editor) |
--to-legacy-editor | Convert to v1 (legacy editor) |
--dry-run | Preview changes without applying |
--confirm | Required for directory-wide conversion |
Contributor Analysis
Section titled “Contributor Analysis”| Flag | Description |
|---|---|
--single-contributor | Find pages with only one contributor (bus factor) |
--inactive-contributors | Find pages where all contributors are inactive |
--refresh-users | Refresh user status from Confluence API first |
# Contributor risk analysisatlcli audit wiki --single-contributor --inactive-contributors --refresh-usersContent Status
Section titled “Content Status”| Flag | Description |
|---|---|
--missing-label <label> | Find pages missing a required label |
--restricted | Find pages with view/edit restrictions |
--drafts | Find unpublished draft pages |
--archived | Find archived pages |
--high-churn <N> | Find pages with N+ versions |
# Content compliance checkatlcli audit wiki --missing-label "reviewed" --drafts --archivedRemote Pages
Section titled “Remote Pages”| Flag | Description |
|---|---|
--include-remote | Include unsynced pages from Confluence API |
# Audit including pages not synced locallyatlcli audit wiki --all --include-remoteScope Filtering
Section titled “Scope Filtering”Limit the audit to specific pages:
| Flag | Description |
|---|---|
--label <label> | Only audit pages with this label |
--under-page <pageId> | Only audit pages under this ancestor |
--exclude-label <label> | Exclude pages with this label |
--dir <path> | Directory to audit (default: current) |
# Audit only documentation pages, excluding archivedatlcli audit wiki --all --label documentation --exclude-label archived
# Audit pages under a specific parentatlcli audit wiki --all --under-page 123456789Output Formats
Section titled “Output Formats”Table (Default)
Section titled “Table (Default)”Human-readable summary with top issues:
Audit Report - TEAM Space==================================================
STALE PAGES (25 pages) High risk: 5 pages Medium risk: 10 pages Low risk: 10 pages
High Risk (oldest first): - API Documentation (18 months, by John Smith) - Getting Started (14 months, by Jane Doe (inactive)) ...
ORPHANED PAGES (3 pages) - No incoming links - Old Migration Guide (old-migration.md) ...
BROKEN LINKS (8 links) - API Reference:42 -> ./deprecated-api.md ...
Use --json for full details, --markdown for report format.Full structured output for processing:
atlcli audit wiki --all --json > audit.json{ "space": "TEAM", "generatedAt": "2026-01-18T10:30:00Z", "summary": { "stale": { "high": 5, "medium": 10, "low": 10 }, "orphans": 3, "brokenLinks": 8, "contributorRisks": 2, "externalLinks": 42, "folderIssues": 2 }, "editorFormat": { "v2": 25, "v1": 3, "unknown": 2 }, "legacyPages": [ { "path": "old-page.md", "id": "123456", "title": "Old Page" } ], "stalePages": [...], "orphanedPages": [...], "brokenLinks": [...], "folderIssues": [ { "file": "empty-folder/index.md", "code": "FOLDER_EMPTY", "message": "..." }, { "file": "orphan-dir", "code": "FOLDER_MISSING_INDEX", "message": "..." } ]}Markdown
Section titled “Markdown”Professional report format:
atlcli audit wiki --all --markdown > AUDIT-REPORT.md# Audit Report: TEAM Space
Generated: Mon Jan 18 2026 10:30:00 AM
## Summary
| Check | Count ||-------|-------|| Stale pages | 25 (High: 5, Med: 10, Low: 10) || Orphaned pages | 3 || Broken links | 8 |
## Stale Pages
| Page | Months Stale | Severity | Author ||------|--------------|----------|--------|| API Documentation | 18 | high | John Smith |...Fix Mode
Section titled “Fix Mode”Automatically fix issues with --fix:
# Preview fixes without applyingatlcli audit wiki --all --stale-high 12 --fix --dry-run
# Apply fixesatlcli audit wiki --all --stale-high 12 --fixSafe Actions (Auto-applied)
Section titled “Safe Actions (Auto-applied)”- Add “needs-review” label to high-risk stale pages
- Generate markdown report at
.atlcli/audit-report.md
Unsafe Actions (Prompted)
Section titled “Unsafe Actions (Prompted)”- Archive pages 24+ months old
- Delete orphaned pages 12+ months old
Fix Options
Section titled “Fix Options”| Flag | Description | Default |
|---|---|---|
--fix | Enable fix mode | false |
--dry-run | Preview fixes only | false |
--fix-label <label> | Label for stale pages | needs-review |
--report <path> | Report output path | .atlcli/audit-report.md |
Configuration
Section titled “Configuration”Set defaults in ~/.atlcli/config.json:
{ "audit": { "staleThresholds": { "high": 12, "medium": 6, "low": 3 }, "defaultChecks": [ "stale", "orphans", "broken-links", "single-contributor" ] }}| Option | Description |
|---|---|
staleThresholds.high | Months for high-risk stale |
staleThresholds.medium | Months for medium-risk stale |
staleThresholds.low | Months for low-risk stale |
defaultChecks | Checks to run when no flags specified |
Valid defaultChecks values:
stale- Use configured thresholdsorphansbroken-linkssingle-contributorinactive-contributorsexternal-linksfolders- Check folder structure issues
Common Patterns
Section titled “Common Patterns”Quarterly Documentation Review
Section titled “Quarterly Documentation Review”# Generate comprehensive reportatlcli audit wiki --all \ --stale-high 12 --stale-medium 6 --stale-low 3 \ --markdown > quarterly-review.mdPre-Release Link Check
Section titled “Pre-Release Link Check”# Verify all links before releaseatlcli audit wiki --broken-links --check-externalBus Factor Analysis
Section titled “Bus Factor Analysis”# Find knowledge silosatlcli audit wiki --single-contributor --inactive-contributors --refresh-usersCompliance Audit
Section titled “Compliance Audit”# Check required labels and restrictionsatlcli audit wiki --missing-label "approved" --restricted --draftsEditor Migration
Section titled “Editor Migration”# Check current editor format statusatlcli wiki docs status ./docs
# Preview conversion to new editoratlcli wiki docs convert ./docs --to-new-editor --dry-run
# Convert all pages to new editoratlcli wiki docs convert ./docs --to-new-editor --confirm
# Verify migrationatlcli wiki docs pull ./docsatlcli wiki docs status ./docsCI/CD Integration
Section titled “CI/CD Integration”# Fail pipeline if critical issues foundresult=$(atlcli audit wiki --broken-links --json)broken=$(echo "$result" | jq '.summary.brokenLinks')if [ "$broken" -gt 0 ]; then echo "Found $broken broken links" exit 1fiExport Link Graph
Section titled “Export Link Graph”# Export for visualization toolsatlcli audit wiki --export-graph > knowledge-graph.jsonAdvanced Options
Section titled “Advanced Options”| Flag | Description |
|---|---|
--rebuild-graph | Re-extract links from markdown files |
--export-graph | Export full link graph as JSON |
--local-only | Only audit synced pages (default) |
Troubleshooting
Section titled “Troubleshooting””No sync.db found”
Section titled “”No sync.db found””Run atlcli wiki docs pull first to create the sync database.
External Link Timeouts
Section titled “External Link Timeouts”External link checking uses 10-second timeouts with 5 concurrent requests. For large wikis, this may take several minutes.
”User status unknown”
Section titled “”User status unknown””Run with --refresh-users to fetch current user status from Confluence API.
Stale Detection Not Working
Section titled “Stale Detection Not Working”Sync pages first with atlcli wiki docs pull. atlcli reads the lastModified date from Confluence metadata.
Related Topics
Section titled “Related Topics”- Storage - How sync data is stored
- Sync - Syncing pages with Confluence
- Configuration - Global config options