--- title: Your first plugin permalink: /docs/plugins/your-first-plugin/ --- Plugins allow you to extend Jekyll's behavior to fit your needs. There are six types of plugins in Jekyll. ## Generators [Generators](/docs/plugins/generators/) create content on your site. For example: * [jekyll-feed](https://github.com/jekyll/jekyll-feed) creates an Atom feed of blog posts. * [jekyll-archives](https://github.com/jekyll/jekyll-archives) creates archive pages for blog categories and tags. * [jekyll-sitemap](https://github.com/jekyll/jekyll-sitemap) creates a sitemap. ## Converters [Converters](/docs/plugins/converters/) change a markup language into another format. For example: * [jekyll-textile-converter](https://github.com/jekyll/jekyll-textile-converter) converts textile to HTML. * [jekyll-coffeescript](https://github.com/jekyll/jekyll-coffeescript) converts Coffeescript to JavaScript. * [jekyll-opal](https://github.com/jekyll/jekyll-opal) converts Ruby to JavaScript. ## Commands [Commands](/docs/plugins/commands/) extend the `jekyll` executable with subcommands. For example: * [jekyll-compose](https://github.com/jekyll/jekyll-compose) adds subcommands for creating a post, page or draft. ## Tags [Tags](/docs/plugins/tags/) create custom Liquid tags. For example: * [jekyll-youtube](https://github.com/dommmel/jekyll-youtube) embeds a YouTube video. * [jekyll-asset-path-plugin](https://github.com/samrayner/jekyll-asset-path-plugin) outputs a relative URL for assets. * [jekyll-swfobject](https://github.com/sectore/jekyll-swfobject) embeds a SWF object. ## Filters [Filters](/docs/plugins/filters/) create custom Liquid filters. For example: * [jekyll-time-ago](https://github.com/markets/jekyll-timeago) - The distance between two dates in words. * [jekyll-toc](https://github.com/toshimaru/jekyll-toc) - Generates a table of content. * [jekyll-email-protect](https://github.com/vwochnik/jekyll-email-protect) - Obfuscates emails to protect them from spam bots. ## Hooks [Hooks](/docs/plugins/hooks/) give fine-grained control to extend the build process. For example: * [jemoji](https://github.com/jekyll/jemoji) Display emojis :+1: * [jekyll-mentions](https://github.com/jekyll/jekyll-mentions) turns mentions @jekyll into links * [jekyll-spaceship](https://github.com/jeffreytse/jekyll-spaceship) - advanced example. Provides powerful supports for table, mathjax, plantuml, video, etc. ## Flags There are two flags to be aware of when writing a plugin:
Flag | Description |
---|---|
|
A boolean flag that informs Jekyll whether this plugin may be safely
executed in an environment where arbitrary code execution is not
allowed. This is used by GitHub Pages to determine which core plugins
may be used, and which are unsafe to run. If your plugin does not
allow for arbitrary code execution, set this to |
|
This flag determines what order the plugin is loaded in. Valid values
are: |