--- name: azure-devops-wiki description: Azure DevOps Wiki management skill. Use when working with Azure DevOps wikis for: (1) Creating and organizing wiki pages - provisioned or code-as-wiki, (2) Markdown formatting - TOC, Mermaid diagrams, YAML metadata, code blocks, (3) Wiki structure - .order files, subpages, attachments, (4) Best practices - naming conventions, navigation, searchability, (5) CLI operations - az devops wiki commands, (6) Git-based wiki workflows - clone, edit offline, push changes. Supports both provisioned wikis and published code wikis. --- # Azure DevOps Wiki Skill Complete guide for managing Azure DevOps wikis with best practices and CLI operations. ## Wiki Types Azure DevOps supports two wiki types: | Type | Description | Use Case | |------|-------------|----------| | **Provisioned Wiki** | Built-in wiki created per project | Quick team documentation, single wiki per project | | **Published Code Wiki** | Git repo published as wiki | SDK docs, versioned content, multiple wikis per project | ## Quick Start ### Create Provisioned Wiki ```bash # Via Azure DevOps CLI az devops wiki create --name "Project Wiki" --type projectwiki \ --org https://dev.azure.com/ORG --project PROJECT ``` ### Publish Code as Wiki ```bash # Publish existing Git repo as wiki az devops wiki create --name "API Docs" --type codewiki \ --repository REPO_NAME --mapped-path / --version main \ --org https://dev.azure.com/ORG --project PROJECT ``` ## Repository Structure Wiki files are stored in Git with this structure: ``` ProjectName.wiki/ ├── .attachments/ # All attachments ├── .order # Root page sequence ├── Home.md # Home page ├── Getting-Started.md # Top-level page ├── Getting-Started/ # Folder for subpages │ ├── .order # Subpage sequence │ ├── Installation.md # Subpage │ └── Configuration.md # Subpage └── API-Reference.md # Another top-level page ``` **Key conventions:** - Wiki repo name: `.wiki` - Root branch: `wikiMain` - Spaces in titles → hyphens in filenames: `Getting Started` → `Getting-Started.md` - Subpages require matching folder: `Page.md` + `Page/` folder ## The .order File Controls page sequence in table of contents: ``` Home Getting-Started API-Reference Troubleshooting ``` **Rules:** - One page name per line (without `.md` extension) - Pages not listed appear alphabetically at the end - Delete `.order` to restore alphabetical sorting ## Essential Markdown Features ### Table of Contents Add auto-generated TOC to any page: ```markdown [[_TOC_]] ## Section 1 Content here... ## Section 2 More content... ``` ### Mermaid Diagrams ```markdown ::: mermaid graph LR A[Start] --> B{Decision} B -->|Yes| C[Action 1] B -->|No| D[Action 2] ::: ``` Supported diagram types: - Sequence diagrams - Flowcharts (`graph` not `flowchart`) - Gantt charts - Class diagrams - State diagrams - User journeys - Pie charts - Entity Relationship diagrams - Timeline diagrams ### YAML Metadata Add searchable metadata at page start: ```markdown --- title: API Reference author: Team Name tags: - api - reference - v2 --- # Page Content ``` ### Code Blocks with Syntax Highlighting ```markdown ```javascript const config = { baseUrl: 'https://api.example.com', timeout: 5000 }; ``` ``` Supported languages: `javascript`, `typescript`, `python`, `csharp`, `bash`, `yaml`, `json`, `sql`, and [more](https://github.com/highlightjs/highlight.js/tree/stable-11/src/languages). ### Collapsible Sections ```html
Click to expand Hidden content here...
``` ### Work Item Links ```markdown Link to work item: #123 Link with text: [User Story #123](#123) ``` ### User Mentions ```markdown @ - mentions user @ - mentions group ``` ### Images with Sizing ```markdown ![Alt text](/.attachments/image.png =500x300) ![Width only](/.attachments/image.png =500x) ``` ## CLI Operations ### List Wikis ```bash az devops wiki list --org https://dev.azure.com/ORG --project PROJECT -o table ``` ### Create Page ```bash az devops wiki page create --wiki "Project Wiki" --path "NewPage" \ --content "# Page Title\n\nPage content here" \ --org https://dev.azure.com/ORG --project PROJECT ``` ### Update Page ```bash az devops wiki page update --wiki "Project Wiki" --path "ExistingPage" \ --content "Updated content" --version ETAG \ --org https://dev.azure.com/ORG --project PROJECT ``` ### Delete Page ```bash az devops wiki page delete --wiki "Project Wiki" --path "PageToDelete" \ --org https://dev.azure.com/ORG --project PROJECT -y ``` ### Show Page ```bash az devops wiki page show --wiki "Project Wiki" --path "PageName" \ --org https://dev.azure.com/ORG --project PROJECT ``` ## Git-Based Workflow ### Clone Wiki Locally ```bash # Get wiki clone URL az devops wiki show --wiki "Project Wiki" \ --org https://dev.azure.com/ORG --project PROJECT \ --query remoteUrl -o tsv # Clone git clone https://dev.azure.com/ORG/PROJECT/_git/PROJECT.wiki cd PROJECT.wiki ``` ### Edit and Push ```bash # Create/edit pages echo "# New Page\n\nContent" > New-Page.md # Update .order echo -e "Home\nNew-Page\nExisting-Page" > .order # Commit and push git add . git commit -m "Add new documentation page" git push origin wikiMain ``` ## Best Practices ### Structure & Organization | Practice | Description | |----------|-------------| | **Flat hierarchy** | Keep max 3 levels deep for easy navigation | | **Consistent naming** | Use kebab-case: `api-reference`, `getting-started` | | **Logical grouping** | Group related pages in subfolders | | **Index pages** | Create overview pages for each section | | **Home page** | Always have a clear entry point | ### Content Guidelines | Practice | Description | |----------|-------------| | **Use TOC** | Add `[[_TOC_]]` to pages with multiple sections | | **Descriptive titles** | Use clear, searchable page titles | | **Cross-linking** | Link related pages for discoverability | | **Keep updated** | Archive outdated content, don't delete | | **Diagrams** | Use Mermaid for architecture/flow visualization | ### File Naming | Do | Don't | |----|-------| | `getting-started.md` | `Getting Started.md` (spaces) | | `api-v2-reference.md` | `api_v2_reference.md` (underscores) | | `faq.md` | `FAQ.md` (uppercase) | ### Searchability - Add YAML metadata with tags - Use descriptive headings - Include keywords in content - Link work items for context ## Provisioned vs Code Wiki Comparison | Feature | Provisioned | Code Wiki | |---------|-------------|-----------| | Multiple wikis per project | No (1 only) | Yes | | Versioning | Git history | Git branches | | Edit from Repos | No | Yes | | Branch policies | Limited | Full support | | Revert from wiki UI | Yes | No (use Git) | | Best for | Team docs | SDK/Product docs | ## Troubleshooting | Issue | Solution | |-------|----------| | Page not appearing | Check `.order` file includes page name | | Broken links | Use relative paths: `./subpage` or `/absolute/path` | | Images not showing | Upload to `.attachments/` folder | | TOC not rendering | Ensure `[[_TOC_]]` is on its own line | | Mermaid not working | Use `graph` instead of `flowchart` | | YAML metadata broken | Check for proper `---` delimiters | ## File Restrictions | Restriction | Limit | |-------------|-------| | Page file size | 18 MB max | | Attachment size | 19 MB max | | Path length | 235 characters max | | Special chars in names | No `/`, `\`, `#` | | Period in names | Not at start/end | ## Scripts - `scripts/wiki-clone.sh ` - Clone wiki repository - `scripts/wiki-publish.sh ` - Publish repo as wiki ## References For detailed documentation: - **[references/best-practices.md](references/best-practices.md)** - Comprehensive best practices guide - **[references/markdown-syntax.md](references/markdown-syntax.md)** - Complete Markdown reference - [Official Azure DevOps Wiki Docs](https://learn.microsoft.com/en-us/azure/devops/project/wiki/)