Skip to main content

Extensible CLI to automate documentation in wiki platforms (Azure DevOps, Confluence, etc.) using Markdown. Built on a plugin and provider architecture, it enables generating, updating, and structuring documentation as code.

Project description

wikiops

wikiops is the host application and CLI runtime for the WikiOps ecosystem.

It orchestrates documentation automation workflows around wikiops-sdk by loading configuration, discovering plugins and providers, building execution context, rendering previews, and applying planned changes.

What This Repository Contains

  • A command-line interface for WikiOps execution workflows.
  • The host orchestrator that coordinates planning and apply flows.
  • Runtime loading for plugins and providers through Python entry points.
  • YAML configuration loading for providers, profiles, refs, and plugin config.
  • Document loading, diff rendering, and apply delegation.
  • A built-in Azure DevOps Wiki provider.
  • A strict pytest suite with coverage enforcement.

What This Repository Does Not Contain

  • The public extension contracts and shared domain models.
  • A stable SDK-level API surface for plugins and providers.
  • Built-in documentation plugins.
  • Project-specific documentation business logic.

Those concerns belong to wikiops-sdk and external plugin repositories.

Relationship To wikiops-sdk

The WikiOps ecosystem is intentionally split across repositories:

plugin -> sdk <- host
provider -> sdk <- host
  • wikiops-sdk
    • defines the shared contracts, domain models, and compatibility helpers
  • wikiops
    • orchestrates execution around those SDK contracts
  • plugins
    • implement documentation planning logic
  • providers
    • implement persistence and read-side infrastructure

Canonical SDK documentation lives in the separate SDK repository:

Quick Start

Install the host and its runtime dependencies:

poetry install --with test

Inspect the currently available extensions:

poetry run wikiops plugins
poetry run wikiops providers

The host currently ships with a built-in provider implementation:

  • azure_devops_wiki

Plugins are expected to be installed separately through Python packages that expose the wikiops.plugins entry point group.

Example Configuration

The host reads YAML configuration with provider definitions, profiles, refs, and plugin-specific settings.

providers:
  azdo:
    type: azure_devops_wiki
    organization: acme
    project: engineering
    wiki: platform

profiles:
  default:
    provider: azdo
    refs:
      docs_root:
        provider: azdo
        kind: path
        locator:
          path: /Engineering/Teams
    plugins:
      acme.team-docs:
        parent_alias: docs_root

Example Input

team_name: Platform

Plan A Run

Replace acme.team-docs with an installed plugin ID shown by wikiops plugins.

poetry run wikiops run \
  --config wikiops.yaml \
  --profile default \
  --plugin acme.team-docs \
  --input input.yaml

This prints:

  • the planned ChangeSet as JSON
  • a preview diff

Apply A Run

poetry run wikiops run \
  --config wikiops.yaml \
  --profile default \
  --plugin acme.team-docs \
  --input input.yaml \
  --apply

On apply, the CLI also prints the provider ApplyResult and exits with code 1 if any operation failed.

Plugin Resources

wikiops injects a PluginResourceProvider when loading plugin entry points.

  • Resource paths are relative to the plugin package root.
  • The host does not assume a fixed resources/ directory.
  • If a plugin stores assets under resources/, it should request them as resources/....
  • If a plugin already provides its own resources object, the host leaves it untouched.

Documentation Map

Start here depending on your role:

The full host documentation index lives at docs/index.md.

Tests

This repository ships with a strict pytest suite and coverage threshold.

poetry run pytest

The tests are also useful as executable examples of the current host behavior.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wikiops-1.0.0.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wikiops-1.0.0-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

Details for the file wikiops-1.0.0.tar.gz.

File metadata

  • Download URL: wikiops-1.0.0.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wikiops-1.0.0.tar.gz
Algorithm Hash digest
SHA256 4d5b323d60adcddf4db9dee51c29743785a9dc2c811ed81f97333391537abe66
MD5 24824880130755d1a88cbbd3d57a15fa
BLAKE2b-256 6ecdb191e1f503c7997b41af0995a8cde52d14ff7ea14025d03a3ef65c76b2ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for wikiops-1.0.0.tar.gz:

Publisher: release.yml on sgg10/wikiops

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wikiops-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: wikiops-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 18.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wikiops-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ffe83be156e741442706500f02f40840e5395502244813dd43f8222c8556c160
MD5 e73f7bb0dfc06caa30b1f97edc1bed23
BLAKE2b-256 87e95c2b9d3d8860a6c5be1c8d5c11241e3841a2500717262a744fed6db67cef

See more details on using hashes here.

Provenance

The following attestation bundles were made for wikiops-1.0.0-py3-none-any.whl:

Publisher: release.yml on sgg10/wikiops

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page