A Markdown-first, Git-backed operational wiki foundation for IT documentation.
This repository provides a structured, ready-to-fork foundation for documenting IT service ownership, system inventories, integration maps, escalation paths, SLAs, and incident runbooks.
It is designed for humans first -- clear templates, consistent frontmatter, and readable Markdown -- with a structure that also supports AI coding agents and future RAG workflows.
This repo is meant to be forked and customized for your organization. Here's how:
# Option A: Fork on GitHub, then clone your fork
git clone https://github.com/YOUR-ORG/ops-wiki-foundation.git
cd ops-wiki-foundation
# Option B: Clone directly and set your own remote
git clone https://github.com/decyphered/ops-wiki-foundation.git
cd ops-wiki-foundation
git remote set-url origin https://github.com/YOUR-ORG/ops-wiki-foundation.gitpython3 -m pip install -r requirements.txtRequires Python 3.9+. The only dependency is PyYAML.
The docs/ directories ship with fictional example pages so you can see the format. Once you're comfortable, delete them and start fresh:
# Remove all example docs (keeps the README.md in each directory)
find docs -name '*.md' ! -name 'README.md' -deleteOr keep them as reference and add your own alongside them.
Pick a system or service you know well and start there:
# Copy a template
cp templates/system-application-page.md docs/systems/my-system.md
# Edit the file -- replace all UPPERCASE_PLACEHOLDERS and "unknown" values
# The template has an instruction comment at the top to guide youFrontmatter tips:
- Set
statustodraftwhile you're writing, then change toactivewhen it's ready. - Set
last_reviewedto today's date (YYYY-MM-DDformat). - Set
ownerto a team or role name, not a person's name. - See
schemas/required-fields.ymlfor all valid field values.
python3 scripts/validate_docs.pyThe validator checks required fields, allowed values (e.g., status must be active, deprecated, draft, or needs-review), date formats, and that files are in the correct directory for their type.
A GitHub Actions workflow (.github/workflows/validate.yml) is also included so validation runs automatically on every push and pull request that touches docs/, schemas/, or scripts/.
Things you'll likely want to change:
schemas/required-fields.yml-- Add or modifyfield_constraintsto match your org's vocabulary (e.g., addtier-4to service tiers, add new protocol types).templates/-- Adjust section headings and prompts to match what your team actually documents.docs/*/README.md-- Update the descriptions and examples list as you add real pages.AGENTS.md-- Update the data boundary rules and project description to match your org.LICENSE-- Replace with your organization's license if needed.
You don't need to document everything at once. A practical order:
- Systems -- Start with the 5-10 systems your team touches most. These are the foundation that services, integrations, and runbooks reference.
- Services -- Document the IT services your team provides (help desk, network support, etc.). Link to the systems they depend on.
- Integrations -- Document how your systems connect. SSO, data syncs, API integrations. Link to the systems on both ends.
- Runbooks -- Write runbooks for your most common or most critical incidents. Link to the affected services and systems.
| Type | Directory | Template | Use for |
|---|---|---|---|
service |
docs/services/ |
templates/service-page.md |
IT services your team provides to users |
system |
docs/systems/ |
templates/system-application-page.md |
Applications, platforms, and infrastructure |
integration |
docs/integrations/ |
templates/integration-page.md |
Data flows and connections between systems |
runbook |
docs/runbooks/ |
templates/incident-runbook.md |
Step-by-step incident response procedures |
This repository must never contain:
- Real student data or personally identifiable information (PII)
- Real staff data (names, emails, phone numbers)
- Credentials, API keys, tokens, or secrets
- Private ticket contents or internal security details
- Vendor contracts or confidential agreements
- Unsanitized organizational information
All example pages use fictional names, organizations, and details. When documenting real systems, use role titles instead of personal names where possible, and never commit sensitive data.
ops-wiki-foundation/
├── README.md # This file
├── AGENTS.md # AI agent instructions (single source of truth)
├── CONTRIBUTING.md # Contribution guidelines
├── LICENSE # MIT license
├── .gitignore
├── requirements.txt # Python dependencies (Python 3.9+, minimal)
├── .cursorrules # Cursor AI agent rules
├── .clinerules # Cline AI agent rules
├── .windsurfrules # Windsurf AI agent rules
├── .cursor/
│ └── rules/
│ └── agents.mdc # Cursor MDC rules
├── .github/
│ ├── copilot-instructions.md # GitHub Copilot instructions
│ └── workflows/
│ └── validate.yml # CI — validates docs on push/PR
├── schemas/
│ └── required-fields.yml # Required frontmatter fields & constraints
├── scripts/
│ ├── validate_docs.py # Validate frontmatter against schemas
│ ├── export_for_rag.py # Export docs to JSON for RAG pipelines
│ └── lib/ # Shared Python utilities
│ ├── __init__.py
│ └── frontmatter.py # Frontmatter parsing & repo-root helpers
├── templates/ # Markdown templates (one per doc type)
│ ├── service-page.md
│ ├── system-application-page.md
│ ├── integration-page.md
│ └── incident-runbook.md
└── docs/ # Documentation pages
├── services/ # IT service ownership pages
├── systems/ # System and application pages
├── integrations/ # Integration documentation
└── runbooks/ # Incident response runbooks
- Copy the appropriate template from
templates/. - Fill in the YAML frontmatter fields (replace placeholders and
"unknown"values). - Replace placeholder content with real documentation.
- Save the file in the correct
docs/subdirectory. - Run the validation script to check your work.
python3 scripts/validate_docs.pyThe validator checks that every Markdown file in docs/ has the required frontmatter fields defined in schemas/required-fields.yml. It also validates enum values (e.g., status, severity), date formats (YYYY-MM-DD), list fields, and correct directory placement.
python3 scripts/export_for_rag.pyThis exports all documentation pages to a JSON file in exports/ for use in future RAG (retrieval-augmented generation) pipelines. The export format is designed to be simple and tool-agnostic.
This repository includes instruction files for multiple AI coding tools so agents can help you write and maintain documentation:
| File | Tool |
|---|---|
AGENTS.md |
OpenCode, general reference (single source of truth) |
.github/copilot-instructions.md |
GitHub Copilot |
.cursorrules |
Cursor |
.cursor/rules/agents.mdc |
Cursor (MDC rules) |
.clinerules |
Cline |
.windsurfrules |
Windsurf |
All tool-specific files reference AGENTS.md as the single source of truth. You can use any of these AI tools to help create new pages, fill in templates, and maintain documentation.
This repository is structured to support future AI workflows:
- Consistent YAML frontmatter makes documents machine-parseable.
- The export script produces JSON suitable for embedding and retrieval.
- The schema file defines what metadata each document type must have, including allowed values.
Future work may include:
- Local embedding generation and vector search
- AI-assisted document drafting from templates
- Automated freshness checks and review reminders
- MCP tool integration for agent-based workflows
These features are not built yet and are out of scope for the initial version.
See CONTRIBUTING.md for full guidelines.
Quick start:
- Use the templates. Do not invent new frontmatter fields without updating the schema.
- Run
python3 scripts/validate_docs.pybefore committing. - Keep all examples fictional and sanitized.
- Review the data boundary rules above before adding any new content.
This project is licensed under the MIT License. See LICENSE for details.