Skip to content

Wiki Audit

Analyze your Confluence wiki for content health issues like stale pages, broken links, orphaned content, and contributor risks.

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
Terminal window
# Run all checks with 12-month stale threshold
atlcli audit wiki --all --stale-high 12
# Output as markdown report
atlcli audit wiki --all --stale-high 12 --markdown > AUDIT-REPORT.md
# Output as JSON for processing
atlcli audit wiki --all --json

Before running audits, you need:

  1. Enable the feature flag: atlcli flag set audit true --global
  2. Initialized .atlcli directory: atlcli wiki docs init ./docs --space TEAM
  3. Synced content: atlcli wiki docs pull ./docs
  4. Active profile: atlcli auth login
FlagDescription
--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
Terminal window
# Multi-tier stale detection
atlcli audit wiki --stale-high 12 --stale-medium 6 --stale-low 3
FlagDescription
--orphansFind pages with no incoming links
--broken-linksFind broken internal links
--external-linksList all external URLs (inventory)
--check-externalVerify external URLs via HTTP
Terminal window
# Full link audit
atlcli audit wiki --orphans --broken-links --check-external
FlagDescription
--foldersCheck folder structure issues
Terminal window
# Folder audit
atlcli audit wiki --folders

Folder 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.

The docs status command reports on Confluence editor formats:

Terminal window
# View editor format breakdown
atlcli wiki docs status ./docs

Output 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
FormatDescription
v2 (new editor)Pages using Confluence’s new editor with colored callouts
v1 (legacy)Pages explicitly set to legacy editor (grey callouts)
unknownPages without editor property (typically older pages)

Convert pages between editor formats:

Terminal window
# Convert a single page to new editor
atlcli 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 pages
atlcli wiki docs convert ./docs --to-new-editor --confirm
# Convert back to legacy editor if needed
atlcli wiki docs convert ./docs/page.md --to-legacy-editor
FlagDescription
--to-new-editorConvert to v2 (new editor)
--to-legacy-editorConvert to v1 (legacy editor)
--dry-runPreview changes without applying
--confirmRequired for directory-wide conversion
FlagDescription
--single-contributorFind pages with only one contributor (bus factor)
--inactive-contributorsFind pages where all contributors are inactive
--refresh-usersRefresh user status from Confluence API first
Terminal window
# Contributor risk analysis
atlcli audit wiki --single-contributor --inactive-contributors --refresh-users
FlagDescription
--missing-label <label>Find pages missing a required label
--restrictedFind pages with view/edit restrictions
--draftsFind unpublished draft pages
--archivedFind archived pages
--high-churn <N>Find pages with N+ versions
Terminal window
# Content compliance check
atlcli audit wiki --missing-label "reviewed" --drafts --archived
FlagDescription
--include-remoteInclude unsynced pages from Confluence API
Terminal window
# Audit including pages not synced locally
atlcli audit wiki --all --include-remote

Limit the audit to specific pages:

FlagDescription
--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)
Terminal window
# Audit only documentation pages, excluding archived
atlcli audit wiki --all --label documentation --exclude-label archived
# Audit pages under a specific parent
atlcli audit wiki --all --under-page 123456789

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:

Terminal window
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": "..." }
]
}

Professional report format:

Terminal window
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 |
...

Automatically fix issues with --fix:

Terminal window
# Preview fixes without applying
atlcli audit wiki --all --stale-high 12 --fix --dry-run
# Apply fixes
atlcli audit wiki --all --stale-high 12 --fix
  • Add “needs-review” label to high-risk stale pages
  • Generate markdown report at .atlcli/audit-report.md
  • Archive pages 24+ months old
  • Delete orphaned pages 12+ months old
FlagDescriptionDefault
--fixEnable fix modefalse
--dry-runPreview fixes onlyfalse
--fix-label <label>Label for stale pagesneeds-review
--report <path>Report output path.atlcli/audit-report.md

Set defaults in ~/.atlcli/config.json:

{
"audit": {
"staleThresholds": {
"high": 12,
"medium": 6,
"low": 3
},
"defaultChecks": [
"stale",
"orphans",
"broken-links",
"single-contributor"
]
}
}
OptionDescription
staleThresholds.highMonths for high-risk stale
staleThresholds.mediumMonths for medium-risk stale
staleThresholds.lowMonths for low-risk stale
defaultChecksChecks to run when no flags specified

Valid defaultChecks values:

  • stale - Use configured thresholds
  • orphans
  • broken-links
  • single-contributor
  • inactive-contributors
  • external-links
  • folders - Check folder structure issues
Terminal window
# Generate comprehensive report
atlcli audit wiki --all \
--stale-high 12 --stale-medium 6 --stale-low 3 \
--markdown > quarterly-review.md
Terminal window
# Verify all links before release
atlcli audit wiki --broken-links --check-external
Terminal window
# Find knowledge silos
atlcli audit wiki --single-contributor --inactive-contributors --refresh-users
Terminal window
# Check required labels and restrictions
atlcli audit wiki --missing-label "approved" --restricted --drafts
Terminal window
# Check current editor format status
atlcli wiki docs status ./docs
# Preview conversion to new editor
atlcli wiki docs convert ./docs --to-new-editor --dry-run
# Convert all pages to new editor
atlcli wiki docs convert ./docs --to-new-editor --confirm
# Verify migration
atlcli wiki docs pull ./docs
atlcli wiki docs status ./docs
Terminal window
# Fail pipeline if critical issues found
result=$(atlcli audit wiki --broken-links --json)
broken=$(echo "$result" | jq '.summary.brokenLinks')
if [ "$broken" -gt 0 ]; then
echo "Found $broken broken links"
exit 1
fi
Terminal window
# Export for visualization tools
atlcli audit wiki --export-graph > knowledge-graph.json
FlagDescription
--rebuild-graphRe-extract links from markdown files
--export-graphExport full link graph as JSON
--local-onlyOnly audit synced pages (default)

Run atlcli wiki docs pull first to create the sync database.

External link checking uses 10-second timeouts with 5 concurrent requests. For large wikis, this may take several minutes.

Run with --refresh-users to fetch current user status from Confluence API.

Sync pages first with atlcli wiki docs pull. atlcli reads the lastModified date from Confluence metadata.

Jira and Confluence are trademarks of Atlassian Corporation Plc. atlcli is not affiliated with, endorsed by, or sponsored by Atlassian.