Skip to content

Plugin Authoring Guide ​

MultiModel Dev OS declarative plugins allow you to share templates, rules, custom workflows, and adapters across different repositories. This guide walks you through authoring and packaging a compliant plugin.


Plugin Manifest Schema ​

A plugin is defined by a single YAML or JSON file. The manifest schema structure is enforced by .ai/schema/plugin.schema.json.

Required Fields ​

  • name (string): The human-readable name of the plugin (e.g. Git Integration Plugin).
  • slug (string): A unique, URL-friendly slug identifier. Must consist strictly of lowercase alphanumeric characters, dashes, or underscores (/^[a-z0-9-_]+$/i, e.g. git-integration). This slug determines the filename under .ai/plugins/<slug>.yaml after installation.
  • version (string): Semantic version string (e.g. 1.0.0).
  • description (string): A brief summary of the capabilities introduced by the plugin.
  • author (string): The creator's name or team.

Optional Config Fields ​

  • allowed_file_patterns (array of strings): A list of relative paths within the whitelist directory boundaries (.ai/ or adapters/) that this plugin plans to install.
  • denied_file_patterns (array of strings): Explicit glob patterns of forbidden locations.
  • templates (object): Custom project templates registered by the plugin.
  • workflows (object): Custom workflows added by the plugin (reused by multimodel-dev-os workflow run).
  • adapters (object): Custom adapter settings mappings.
  • safety_notes (string): Security disclosures printed to the user before they approve installation.

Example Manifest ​

Here is a standard example manifest mapping custom git operations and rules:

yaml
name: "Example Git Integration Plugin"
slug: "git-integration"
version: "1.0.0"
description: "Declarative plugin extending MultiModel Dev OS with custom git workflows and rules"
author: "MultiModel Dev OS Team"
allowed_file_patterns:
  - ".ai/skills/git-operations.md"
  - ".ai/checks/pre-push-audit.md"
denied_file_patterns:
  - "src/**"
  - ".env"
  - "node_modules/**"
templates:
  git-commit-helper:
    name: "Git Commit Message Assistant"
    description: "Generates semantic commit messages based on staged diffs"
workflows:
  git-audit:
    name: "Pre-Push Git Audit"
    description: "Scan branch status and verify all local commits pass verification before pushing code"
    steps:
      - name: "Status Check"
        command: "status"
      - name: "Doctor Pre-flight Audit"
        command: "doctor"
      - name: "Integrity Verify"
        command: "verify"
adapters:
  git-rules:
    name: "Git Rules Configuration"
    targetFile: ".gitattributes"
safety_notes: "This plugin only writes configurations to .ai/skills/ and .ai/checks/ to aid developer git workflows. No binary code is executed."

Local Validation ​

Before distributing your plugin, always validate the manifest structure using the built-in validation CLI:

bash
npx multimodel-dev-os@latest plugin validate path/to/your-plugin.yaml

If the validation fails, it outputs detailed error reports indicating which schema constraint was violated.


Packaging Guidelines ​

A packaged plugin folder should mirror the workspace directory structure. For example, if a plugin copies .ai/skills/git-operations.md, the folder layout must look like:

txt
your-plugin-folder/
├── plugin.yaml
└── .ai/
    └── skills/
        └── git-operations.md

To install this plugin locally, users run:

bash
npx multimodel-dev-os@latest plugin install your-plugin-folder/plugin.yaml --approved

Contributing to the Marketplace Catalog ​

If you are developing first-party plugins for inclusion in the curated catalog, follow the guidelines in the Catalog Authoring Guide.

Released under the MIT License.