Plugins & marketplaces

Overview

Plugins are collections of reusable skills, custom commands, and agents that can be shared and distributed through marketplaces. They allow you to extend Friday's capabilities by installing pre-packaged functionality from the community or your organization. Plugins can contain skills (automatic context), custom commands (invokable actions), and agents (specialized task handlers), making it easy to standardize workflows and share best practices across teams. Friday uses the same .claude-plugin/ manifest format as Claude Code's plugin ecosystem, so a marketplace repo published for Claude Code works in Friday without changes. See the compatibility section below for what is and isn't shared between the two.

Quick Start

Add a marketplace and enable a plugin

  1. Add a marketplace containing plugins you want to use:
friday> /plugin-marketplace
> Add marketplace
# Then enter one of:
#   username/friday-plugins                          (GitHub shorthand)
#   https://github.com/username/friday-plugins.git   (git URL)
#   ~/my-plugins                                     (local directory)
  1. Enable a plugin from the marketplace:
friday> /plugin-marketplace
> Select the marketplace you just added
> Toggle the plugin you want to enable

Changes take effect immediately. Friday hot-reloads skills, agents, and the command palette without a restart.

Usage

Managing marketplaces

Git-based marketplaces are cloned into ~/.agents/plugins/marketplaces/; local-directory marketplaces are kept as live pointers. The registry of installed marketplaces lives in ~/.agents/plugins/known_marketplaces.json. Manage them through the /plugin-marketplace command.

The menu has two levels:

  • Top level: lists installed marketplaces, plus an "Add marketplace" entry.
  • Selecting a marketplace opens a detail view with the marketplace's plugins (toggleable), plus actions to update the marketplace, remove it, and toggle auto-sync.

Add a marketplace

From the top-level menu, choose "Add marketplace". You can add from three sources:

  • GitHub shorthand: username/repo (automatically expands to https://github.com/username/repo.git)
  • Git URL: Any valid git URL (HTTPS or SSH)
  • Local directory: A path to a local directory (e.g., ~/my-plugins, ./plugins, /absolute/path)

Local directories are treated as live pointers: changes to the directory are immediately reflected without needing to update.

For private marketplaces that require authentication, embed a Personal Access Token (PAT) directly in the URL:

https://<TOKEN>@github.com/yourorg/plugin-marketplace.git

Update a marketplace

Git-based marketplaces can be updated to pull the latest changes:

friday> /plugin-marketplace
> Select marketplace
> Update

Local directory marketplaces do not need updates: they are live pointers.

Remove a marketplace

Removing a marketplace also disables all plugins from that marketplace:

friday> /plugin-marketplace
> Select marketplace
> Remove

Auto-sync on boot

Git-based marketplaces can be configured to auto-sync when Friday starts. When enabled, Friday pulls the latest changes from the marketplace at startup and shows a toast notification listing which marketplaces were updated.

To enable auto-sync for a marketplace:

friday> /plugin-marketplace
> Select marketplace
> Toggle auto-sync

Managing plugins

Plugins can be enabled or disabled individually. When a plugin is enabled, its skills, commands, and agents become available in Friday.

Enable/disable a plugin

friday> /plugin-marketplace
> Select the marketplace the plugin belongs to
> Toggle the plugin

Changes take effect immediately. Friday hot-reloads skills, agents, and the command palette without a restart.

Plugins are identified by their ID in the format plugin-name@marketplace-name.

Claude Code compatibility

Friday and Claude Code share a manifest format, not a registry. A marketplace repo published for Claude Code (with .claude-plugin/marketplace.json and per-plugin .claude-plugin/plugin.json files) works in Friday without changes. The plugins, skills, commands, and agents inside are read by Friday's loaders.

What is not shared:

  • Friday tracks installed marketplaces in ~/.agents/plugins/known_marketplaces.json. Claude Code uses its own registry. A marketplace added in one tool does not appear in the other.
  • Adding, updating, or removing a marketplace in Friday only affects Friday. Do the same operation in Claude Code if you want it there too.

Plugin skills

Skills from enabled plugins are automatically loaded into Friday's context. They are not namespaced, so skill names must be unique across all enabled plugins and user/project skills.

Plugin commands

Commands from enabled plugins are namespaced with the plugin name to avoid conflicts:

# Plugin command format
/plugin-name:command-name [arguments]

# Example
/code-review:check-tests

User and project commands take precedence over plugin commands. If you have a user command named /test, it will be used instead of a plugin command with the same name.

Plugin agents

Agents from enabled plugins are automatically loaded into Friday's available agents.

Plugin agents are loaded after user and project agents but before internal agents, giving you the ability to extend Friday's capabilities with custom agent behaviors.

Manifest-based Configuration

Plugins support manifest-based configuration through plugin.json and marketplace.json files. These manifests allow you to customize plugin paths and control how configuration is resolved.

Plugin Manifests

marketplace.json (in .claude-plugin/marketplace.json)

Defines marketplace-level configuration including plugin entries:

{
  "name": "my-marketplace",
  "owner": {
    "name": "Your Name",
    "email": "you@example.com"
  },
  "plugins": [
    {
      "name": "my-plugin",
      "source": "./plugins/my-plugin",
      "skills": "custom-skills",
      "commands": ["cmd1.md", "cmd2.md"],
      "agents": "custom-agents"
    }
  ]
}

plugin.json (in plugins/my-plugin/.claude-plugin/plugin.json)

Defines plugin-specific configuration:

{
  "name": "my-plugin",
  "description": "My custom plugin",
  "version": "1.0.0",
  "author": {
    "name": "Your Name"
  },
  "skills": "skills",
  "commands": "commands",
  "agents": "agents"
}

Strict Mode

The strict field in marketplace.json controls how manifests are resolved (default: true):

strict: true (default)

  • plugin.json is required and takes precedence
  • If plugin.json is missing, the plugin is skipped
  • Falls back to marketplace.json only for fields not present in plugin.json

strict: false

  • plugin.json is optional
  • marketplace.json values take precedence
  • Allows marketplace to override plugin configuration

Example with strict mode disabled:

{
  "name": "my-marketplace",
  "plugins": [
    {
      "name": "my-plugin",
      "source": "./plugins/my-plugin",
      "strict": false,
      "skills": "marketplace-skills"
    }
  ]
}

Custom Paths

The skills, commands, and agents fields support both string and array values for custom paths:

{
  "skills": "custom-skills",
  "commands": ["commands/cmd1.md", "commands/cmd2.md"],
  "agents": ["agents/agent1", "agents/agent2"]
}

Paths are resolved relative to the plugin directory. If these fields are not specified, Friday falls back to the default directories (skills/, commands/, agents/).

Examples

Example 1: Using a team standards plugin

Your team maintains a plugin with coding standards and review guidelines:

# Add your team's marketplace
friday> /plugin-marketplace
> Add marketplace
> mycompany/friday-team-standards

# Enable the standards plugin
friday> /plugin-marketplace
> mycompany/friday-team-standards
> ✓ team-standards

# Changes take effect immediately. Now you have access to:
# - Skills: coding-standards, review-checklist
# - Commands: /team-standards:review, /team-standards:format
# - Agents: team-standards agent

Example 2: Creating a shareable plugin

Create a plugin to share your workflow with others:

# Create marketplace structure
mkdir -p my-marketplace/.claude-plugin
mkdir -p my-marketplace/plugins/my-plugin/.claude-plugin
mkdir -p my-marketplace/plugins/my-plugin/skills/api-design
mkdir -p my-marketplace/plugins/my-plugin/commands
mkdir -p my-marketplace/plugins/my-plugin/agents

# Create marketplace manifest
cat > my-marketplace/.claude-plugin/marketplace.json << 'EOF'
{
  "name": "my-marketplace",
  "owner": {
    "name": "Your Name",
    "email": "you@example.com"
  }
}
EOF

# Create plugin manifest
cat > my-marketplace/plugins/my-plugin/.claude-plugin/plugin.json << 'EOF'
{
  "name": "my-plugin",
  "description": "My custom workflow plugin",
  "version": "1.0.0",
  "author": {
    "name": "Your Name"
  }
}
EOF

# Create a skill
cat > my-marketplace/plugins/my-plugin/skills/api-design/SKILL.md << 'EOF'
---
name: api-design
description: API design guidelines
---

When designing APIs, follow these principles:
- Use RESTful conventions
- Version your APIs
- Provide clear error messages
EOF

# Create a command
cat > my-marketplace/plugins/my-plugin/commands/scaffold-api.md << 'EOF'
---
description: Scaffold a new API endpoint
argument-hint: "[endpoint-name]"
---

Create a new API endpoint with the following structure:
- Route handler in routes/
- Service layer in services/
- Tests in tests/
- Documentation in docs/

Endpoint name: $1
EOF

# Create an agent
cat > my-marketplace/plugins/my-plugin/agents/api-reviewer.md << 'EOF'
---
name: api-reviewer
description: Review API implementations for best practices
---

You are an API review specialist. When reviewing API code, check for:
- RESTful design principles
- Proper HTTP status codes
- Input validation and error handling
- Security considerations (authentication, authorization)
- Documentation completeness
- Performance implications

Provide specific, actionable feedback with code examples where appropriate.
EOF

# Push to GitHub or use locally
git init
git add .
git commit -m "Initial plugin"
git remote add origin https://github.com/username/my-marketplace.git
git push -u origin main

Example 3: Using local development plugins

Test plugins locally before publishing:

# Add local marketplace
friday> /plugin-marketplace
> Add marketplace
> ~/dev/my-marketplace

# Enable plugin
friday> /plugin-marketplace
> my-marketplace
> ✓ my-plugin

# Make changes to your local plugin files
# Changes are immediately available (no update or restart needed)