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.2.0.tar.gz (20.2 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.2.0-py3-none-any.whl (26.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for wikiops-1.2.0.tar.gz
Algorithm Hash digest
SHA256 9e039e96d7c2a8018579d33af16749d5cbf4ce0f84ba14307d7bbb8f8a8b6554
MD5 2152439c6497f0b16c88f73f178c6eeb
BLAKE2b-256 f0a20a56d450e7cd3b80f4fc6aa6a25e32f0e42f293e1cde055530efec083ab5

See more details on using hashes here.

Provenance

The following attestation bundles were made for wikiops-1.2.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.2.0-py3-none-any.whl.

File metadata

  • Download URL: wikiops-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 26.0 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 512646d0adadb9f4590b9902d7a12bc9cda04349f46fcef9e47063200df28216
MD5 0495dc7860c20518fe43060285faec7c
BLAKE2b-256 83828ed0a076937468110a3c89a489f5e625e0399529fea697faf6aa5c5fa8ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for wikiops-1.2.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