Community
/docs/contributing
Contributing
Contributing to Yoke (Yoke)
Thank you for contributing to Yoke! This guide outlines how to create custom plugins, skills, MCP tools, and tests.
Creating Custom Plugin Tools
Plugins in Yoke implement
Yoke.Plugin.Behaviour
:
defmodule MyCustomPlugin do
@behaviour Yoke.Plugin.Behaviour
@impl true
def name, do: "MyCustomPlugin"
@impl true
def description, do: "Custom utility tools for project analysis."
@impl true
def tools do
[
%{
name: "my_tool",
description: "Executes custom analysis",
parameters: %{
type: "object",
properties: %{
query: %{type: "string", description: "Search query"}
},
required: ["query"]
},
execute: &execute_my_tool/1
}
]
end
def execute_my_tool(%{"query" => query}) do
{:ok, "Result for #{query}"}
end
end
Load plugins at startup or via
/plugins reload
live without dropping state:
yoke --plugin path/to/my_custom_plugin.exs
Creating Custom Skills
Skills are instruction folders placed in
.yoke/skills/
.
Scaffold one with
/skills new
, or create it by hand:
---
name: security-audit
description: Runs static analysis security check
---
# Security Audit Skill
1. Check for exposed secrets or hardcoded API keys.
2. Verify input sanitization in web endpoints.
Manage and run skills with the unified
/skills
command:
/skills # list discovered skills (project → builtin → global)
/skills show <name> # print the raw SKILL.md body
/skills path <name> # print the resolved SKILL.md path
/skills edit <name> # open SKILL.md in $EDITOR
/skills new <name> # scaffold a new skill
/skills <name> [args] # execute a skill ({{arg}} / $ARGUMENTS are substituted)
Running Code Quality & Test Verification
Run all test suites and static code analysis:
mix test
mix format --check-formatted
mix credo --strict