MooForge is tightly integrated with GitHub. All the plugins data is stored there, even the downloads. In order to add your plugin to the repository, please follow these steps.
Make sure your plugin is a top-level repository. We don't accept plugins that are directories within other repositories.
Make sure you respect the file structure (only the Source/ subdirectory is enforced, but it's a good idea to have them all).
/ Source/ #This can have subdirectories if you like YourPlugin.js # main file YourPlugin.SomethingElse.js # extra component example Docs/ YourPlugin.md # plugin docs
Docs are encouraged. There's a bundle for TextMate users to make this easier.
Each script in your /Source directory must have a specific header that includes metadata used by the forge. This header information is a YAML fragment with key/value sets of information that the will use for various features.
First, an example (the order of the key/values does not matter):
/* --- description: Element class, Elements class, and basic dom methods. license: MIT-style authors: - Jimmy Dean - Buck Kingsley requires: - localComponent1 - [localComponent2, localComponent3] - externalPackage1/tag: component4 - externalPackage2/tag: [component1, component2] provides: [Element, Elements, $, $$] ... */
At least one Git tag in your repository is necessary. To tag a 0.1 release, for example, run these commands:
git tag -a 0.1 git push --tags
When everything looks good, click Add a new plugin (you must be logged in)
We also suggest taking a look at the Plugin Writing Guidelines.
Plugin Name =========== What goes here is the description. Please don't make it too long. It can contain basic *styling*, **styling**, etc. If an image is found within the description, that becomes the screenshot of the plugin. Screenshots are optional but encouraged, given the plugin has some visual interaction. The screenshot can be of any size, but try to keep it of about 200x100. ![Screenshot](http://url_to_project_screenshot) How to use ---------- We expect this section for every plugin. It just explains how to use your plugin. Never should a plugin rely on a 3rd party link to explain its behavior or functionality. We need this to ensure that if a website is removed or becomes inaccessible, people can still enjoy your plugins' functionality. It often includes code snippets, which are just indented pieces of text: var script = new MyScript() script.doSomething(); Syntax highlighting will be done automatically for you. Screenshots ----------- This section is optional, but encouraged if the plugin affords it. Just a list of images, one per line. We do the resizing, so use actual size screenshots. ![Screenshot 1](http://url_to_project_screenshot) ![Screenshot 2](http://url_to_project_screenshot) ![Screenshot 3](http://url_to_project_screenshot) ![Screenshot 4](http://url_to_project_screenshot) Arbitrary section ----------------- This is an arbitrary section. You can have as many of these as you want. Some arbitrary section examples: * FAQ * Notes * Misc * Known issues The name is up to you, but remember to keep it meaningful and simple. Arbitrary sections are always optional.
name: Plugin Name author: your forge username here category: Interface tags: [animation, canvas] #docs: http://url.to.docs #demo: http://url.to.demo #current: 0.5
YAML validness is required. Some general tips and rules:
authors: [Jimmy Dean, Buck Kingsley] # OR authors: - Jimmey Dean - Buck Kingsley
requires: core/1.2.4: '*'
It is not really recommended that you do this, as it will require users to perhaps load content they don't need in order to run your plugin. It is far better to include only the components that you need.