Coding skills is about as simple or complex as the skill you are coding.
If the skill is not to do anything, like melee or attack, it just needs
to look like this:

inherit "/std/skills/skill";

void create() {
    ::create();
    set_dev_cost(int whatever);
    set_fast_dev_cost(int whatever);
    set_stat(string stat);
}
dev_cost is the development cost of the skill, and may range from 2 or 3
for newbie skills to twenty or more for extra cool skills.  Note that this
cost reflects the cost for PRIMARY GUILD SKILLS.  If a character belongs
to a guild in which the skill is secondary, the development cost will
be multiplied by 2 or 3.  IMPORTANT: See /doc/build/dev_balance for 
notes on how developing and fast developing work.  
fast_dev_cost is the cost for fast development.  The character can only
develop any skill once per level, then he or she must fast develop.
Fast delelopment cost can be 2-3 times development cost, depending on
the hardness of the skill.

Stat it the stat which is used to modify the skill.  It may be
strength, wisdom, dexterity, constitution, intelligence, or charisma.

Now if you actually want the skill to DO something, it gets a little
more complex.
Define another function in the skill file called:
void skill_func(object from, object at, string args);

NOTE: when a player uses a skill there is NO automatic roll against skill
level. if you want to know the player's %skill level with that skill, it is
stored in:
    props["skill level"]

from is who is using the skill
at is what the skill is being used on
args are optional extra arguements that the skill may need.
Note: the player uses a skill like this:
use <skill> at <target> with <optional args>
so keep that in mind.

Also, if you want to limit skill use by only allowing a certain number of
uses / day etc., put the following line in skill_func:
	from->set_last_use(string skill)
where string skill is the skill name in quotes.  This will set the last
use time to the current mud time.  To know the amount of seconds since 
the last use...

First put:
#include <clock.h>
at the top of your file
Then, 
	time() - (int)from->query_last_use(string skill);
will give the number of seconds since the skill was last used.  Similarly,
You may use:
	(time() - (int)from->query_last_use(string skill))/MINUTE
	(time() - (int)from->query_last_use(string skill))/HOUR
	(time() - (int)from->query_last_use(string skill))/DAY
	(time() - (int)from->query_last_use(string skill))/WEEK
	(time() - (int)from->query_last_use(string skill))/MONTH
	(time() - (int)from->query_last_use(string skill))/YEAR

to get the time from the last use in the respective units.
(in MUD TIME not real time)
See help calendar for more on the mud clock.

NOTE NOTE NOTE:  After the skill is finished executing ALWAYS call
    remove();
or else it will eat up memory.  I will get VERY mad if you code a skill
that doesn't do this.

ALSO, define a function:
void info();
that writes out help on the skill.

The skill.c automatically checks for the target, and in the above
create function, you may want to include the following:
set_property("no target",1)
	-This will cause the skill to error if the player supplied
	  a target.
set_property("target type","player");
	-The target must be a player.
set_property("target type","living");
	-The target must be a monster or player.
set_property("target type","any");
	-The target may be anything (default)
set_property("must be present",1);
	-The target must be in the same room or in the inventory
	  of the player.

If any part of these docs are unclear, mail me (Diewarzau), and
I'll straighten them out.  Thanx.
