Skip to main content

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": "hello@frootai.dev",
"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

:::info 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โ€‹