Skript permet de créer des commandes personnalisées simplement et avec une structure assez souple. Néanmoins, ce procédé n'est pas adapté dans le cas de la création d'alias pour d'autres plugins. En effet, les arguments d'une commande Skript ne sont pas analysés / traités comme le font la plupart des autres plugins.
La syntaxe de base d'une commande personnalisée se présente comme ceci :
command /commandname : # les arguments sont expliqués plus bas dans la page.
	description: La description de la commande
	usage: /commandname   # Si omis, l'aide renvoyée affichera la structure de la commande par défaut.
	permission: required.permission.to.use.this.command  # Si omis, tous le monde pourra utiliser cette commande.
	permission message: Message personnalisé si le joueur n'a pas la permission  # Si omis le message sera : "You don't have the required permission to use this command".
	executable by: players/console/players and console  # Si omis, la commande pourra être exécutée par le joueur et la console.
	aliases: /c, /comname. # Une liste d'alias (noms abrégés de la commande)
	trigger:
		Mettez vos conditions et effets ici

Les arguments d'une commande ressemble à ceci : <type d'argument> ou <type d'argument = valeur par défaut>  (ex : <item> ou <item = water bucket>). La valeur par défaut peut également être une expression mais doit être entourée par des signes pourcentage <item=%tool%>
Les arguments peuvent aussi être mélangés avec du texte. Exemple :
command /give <item> to <player>:
Cette commande pourrait alors être utilisée de cette manière : /give a diamond to Njol.

Vous pouvez rendre un ou plusieurs arguments optionnels en les entourant de crochets " [<type d'argument>] ".
Exemple, si vous voulez créer une commande pour trouver des créatures (mobs) dans un rayon donné, vous pourriez faire comme ceci :
/find <entity type> [in radius <integer=100>]
Cette commande pourrait alors être utilisée de cette manière : /find creepers ou /find zombies in radius 20. Ainsi, si le rayon n'est pas renseigné, la valeur par défaut (entre crochets) sera utilisée.

Une commande personnalisée peut être définie n'importe où et dans n'importe quel fichier. Néanmoins, lorsque des événements et des commandes dépendent les uns des autres, il est préférable de les regrouper dans un même fichier.
Voici un exemple qui illustre l'interdépendance qui peut exister entre une commande et un événement :
command /healer:
	permission: healer.create
	description: spawns a healer villager which can heal players
	trigger:
		spawn a priest
		set {healers::%spawned villager%} to true
		set the name of the spawned villager to "Healer"
 
on rightclick on a priest:
	player has permission "healer.use"
	player is holding a gold ingot
	{healers::%clicked villager%} is true
	player's health is below 10
	heal the player by 5 hearts
	remove 1 gold ingot from the player

Bonnes pratiques :
Si vous travaillez dans un seul fichier, il est recommandé de séparer les événements des commandes. En général les événements sont regroupés en haut du fichier et les commandes en bas. Prenez également l'habitude de commenter votre code avec le symbole " # " (ex : # mon commentaire)  afin de rendre vos scripts compréhensible par tous (ainsi que par vous même :D).