The full onlinedocumentation is located here:
https://wiki.archlinux.org/index.php/Simple_Orca_Plugin_System

1. How to write a plugin:

1.1 File name:
the description have to be seperated to the oter parts wtih __-__
the commands, modifier and the key has to be seperated by __+__
structure
<description>__-__[<command>__+__command...][__+__<modifier>__+__<modiier>__+__<key char>].sh
structure examples:
description__-__<command>__+__control__+__alt__+__key_y.sh
description__-__<command>__+__<command>__+__shift__+__key_y.py
description__-__<key char>.py

The file could be any type of script or application. It just have to send to STD out.

1.2 Modifiers / Keys /Commands
1.2.1 Modifiers
you always have to press the orca key.
control= CTRL key
shift = shift key
alt = Alt key
the order of those three modifier keys doesn't matter and they are optional
but if they are exist only a few combinations (predefined by orca) is valid:
Valid modifier combinations:
alt (description__-__alt__+__w.sh)
control (description__-__control__+__w.sh)
shift (description__-__shift__+__w.sh)
control + alt (description__-__control__+__alt__+__w.sh)
shift + alt (description__-__shift__+__alt__+__w.sh)

1.2.2 Commands and Plugin settings
with <command> you could control the behavior of the plugins. you could add more than one command. the order is optional.
key_<key> = with this you assign the current shortcut key.You have to set a <Key> or use the exec command for running once at start.
key_d.sh uses orca + d as shortcut. The <char> has to be always the last character in The file name before the extension starts.
startnotify = announce "start <description>" before the plugin is executed. this useful as feedback for 
commands with longer progress times.
stopnotify = announce "finish <description>". This is useful as feedback for plugins with no output.
blockcall = don't start plugin in a thread, be careful, this locks orca until the plugin is finish
error = announce thrown errors
parameters_<parameter1> [parameter2] [parameter3]... = passes the parameters to the plugin
exec = run the plugin once while loading it.
loadmodule = does not just create a subprocess but load it via python. 
You have all the power for real orca scripting). 
this just works with python, but you are able to work in orca context similar the orca-customizations.py.
see here for orca scripting:
https://wiki.gnome.org/Projects/Orca/FrequentlyAskedQuestions/CustomizingOrca

1.3 File content:
be sure that the execution permission is set with
chmod +x <youplugin>
1.3.1 simple-plugin (subprocess):
Just normal shell, Perl, python  scripts. orca will read the STD out (examples included)
basic plugin example for hello world while pressing ORCA+y:
<example Hello_world__-__key_y.sh >
#!/bin/sh
echo "Hello World"
</example Hello_world__-__key_y.sh >
1.3.2 advanced-plugin (spec.loader.exec_module):
replace the ! with the word bang while loading first.
<example replace_chnames__-__loadmodule__+__exec.py >
#!/usr/bin/python
orca.chnames.chnames["!"] = "bang"
</example replace_chnames__-__loadmodule__+__exec.py >

2 Administration
2.1 Folders
~/.config/SOPS/plugins-available:
here you could put your own plugins.
/usr/share/SOPS/plugins-available:
this contains the default plugins and the administration tools.
~/.config/SOPS/plugins-enabled:
contains the enabled (active) plugin. this folder will be read by orca.

2.2 Administration tools
The tools are located in the "tools" folder 
./ensop <pluginname> #enables an plugin so its active
./dissop <pluginname> #disable the plugin, its not loaded anymore.
They basicaly just create links in ~./.config/SOPSP/plugins-enabled and make the plugins executable.
To reload the plugins in orca, you have to restart orca

3. Hosting
I you want to Host plugins see:
SOPS/tools/hosting.txt
