Skip to Content
PrimitivesPlugins

Plugins

Plugins are themed bundles of agents, instructions, skills, and hooks. They are the distribution format for FrootAI primitives β€” installable packages that ship via the FrootAI Marketplace.

Plugin Structure

Every plugin lives under plugins/ with this layout:

plugins/document-intelligence/ β”œβ”€β”€ plugin.json # Required β€” plugin manifest β”œβ”€β”€ README.md # Required β€” user-facing documentation β”œβ”€β”€ CHANGELOG.md # Recommended β€” version history └── assets/ # Optional β€” icons, screenshots └── icon.png

The folder name must be lowercase-hyphen and match the name field in plugin.json.

plugin.json Schema

plugins/document-intelligence/plugin.json
{ "name": "document-intelligence", "description": "End-to-end document processing pipeline with Azure AI Document Intelligence, OCR extraction, and PII detection.", "version": "1.0.0", "author": { "name": "FrootAI Contributors", "email": "[email protected]", "url": "https://frootai.dev" }, "repository": "https://github.com/frootai/frootai", "license": "MIT", "keywords": ["document-intelligence", "ocr", "extraction", "pii-detection"], "agents": [ "../../agents/fai-document-processor.agent.md", "../../agents/fai-extraction-reviewer.agent.md" ], "instructions": [ "../../instructions/python-waf.instructions.md" ], "skills": [ "../../skills/fai-document-indexer/" ], "hooks": [ "../../hooks/fai-pii-redactor/" ], "plays": ["06", "15"] }

Required Fields

FieldTypeRules
namestring^[a-z0-9]([a-z0-9-]*[a-z0-9])?$, 3–64 chars, must match folder
descriptionstring10–500 characters
versionstringSemver: MAJOR.MINOR.PATCH (e.g., 1.0.0)
author.namestringRequired
licensestringSPDX identifier (MIT, Apache-2.0)

Optional Fields

FieldTypeDescription
author.emailstringContact email
author.urlstringAuthor website
repositorystringGitHub URL
homepagestringPlugin docs URL
keywordsstring[]Lowercase-hyphen tags, max 20
agentsstring[]Relative paths to .agent.md files
instructionsstring[]Relative paths to .instructions.md files
skillsstring[]Relative paths to skill folders (trailing /)
hooksstring[]Relative paths to hook folders (trailing /)
playsstring[]Compatible solution play IDs
ℹ️

Plugins as DevKit Distribution

Plugins are how DevKit primitives are distributed. Design your skill and agent bundles so they can be extracted as standalone plugins for the marketplace.

Versioning Strategy

Follow semantic versioning for all releases:

Change TypeVersion BumpExample
Bug fix in agent promptPATCH1.0.0 β†’ 1.0.1
Add new instructionMINOR1.0.1 β†’ 1.1.0
Remove an agent or rename pathsMAJOR1.1.0 β†’ 2.0.0
Pre-release testingPRERELEASE2.0.0-beta.1

Creating a Plugin

  1. Create the folder: mkdir -p plugins/my-plugin
  2. Create plugin.json with required fields
  3. Create README.md documenting what’s included
  4. Reference existing primitives via relative paths
  5. Validate: npm run validate:primitives
  6. Regenerate marketplace: node scripts/generate-marketplace.js

Registering in the Marketplace

After validation, add your plugin to the marketplace:

# Validate schema compliance npm run validate:primitives # Regenerate marketplace index node scripts/generate-marketplace.js # Verify your plugin appears node -e " const m = require('./marketplace.json'); const p = m.plugins.find(p => p.name === 'my-plugin'); console.log(p ? 'βœ… Found: ' + p.name : '❌ Not found'); "

Referencing in a Play

fai-manifest.json
{ "primitives": { "plugins": ["../../plugins/document-intelligence/"] } }

Validation

npm run validate:primitives

Common errors:

ErrorFix
name must match patternUse only lowercase letters, numbers, hyphens
description too shortWrite at least 10 characters
version must match patternUse X.Y.Z format
author.name is requiredAdd "author": { "name": "..." }
agents[0] path not foundEnsure referenced file exists at the relative path

See Also

Last updated on