A .kye file contains one or more "levels", the collection being called (on this web site at least) a "level set". Each level is a separate game which when completed leads automatically to the next in the set. A level set typically, but not necessarily, has a common theme (eg magnet puzzles) and style, a certain level of difficulty (eg beginner or expert) or perhaps progressively increasing difficulty. Otherwise there are no links between the levels in a set (as some other games have, such as carrying assets forward).
In creating a Kye level there must obviously be only one Kye and at least one diamond in its map. Some editors will prevent you saving a level that does not conform to this, but otherwise there are no rules about what you put in. Some editors will present you with a complete outside brick border already in place, but this border is only a convention. Sometimes it is tempting to demolish it to make more space.
It is worth looking at the "Tips and Treats" page on this site for some of the more quirky aspects of level design.
At one time there were several Kye level editors available. However the most of the web sites that offered them have gone off-line. There now remain three methods that I know of creating or editing .kye format levels - text editing, the original graphical editor built in to the Kye for Windows, and the Python Kye graphical editor. Additionally there is the Xye editor.
Text EditingBear with me, we will come to graphical editors in a minute, but first it is worth glimpsing under the bonnet ("under the hood" for Americans).
Any ASCII text editor such as Notepad for Windows or Kwrite for Linux can be used to make or modify levels. I wrote many levels that way before the graphical editor came out with Kye v2.0. So out of interest, start a text editor, ensure that it is using a monospace font (such as Courier or Fixedsys in Notepad) and load any existing level's ".kye" file and compare it with the level as it is opened for play (if it is dynamic take a quick screen shot).
On the left is the beginning of the ASCII data file for the "Default" level set (which comes with the download of Kye for Windows), compared with a screenshot from the first level game as it opens on the right. We can see the data for the first level, which is called "FIRST", and the start of data for the second level, called "SECOND". The names here, like "Default" for the whole level set, are deliberately unimaginative and could have been anything. "FIRST" is in fact the first of 15 levels in "Default", "15" being shown in the top line. The next three lines are the level title, the hint and the concluding comment for "FIRST". After that is the layout itself of "FIRST". You can see the simple relationship between the ASCII characters and the playing pieces. A "space" represents a space, "5" represents a square wall brick such as those around the outside edge, "*" is a diamond and "K" is Kye.
Try adding a few more asterisks (diamonds) to the "FIRST" map, after taking a backup. Of course you must delete what was there before the diamond, even a space, to keep the whole grid as a 20x30 rectangle. It is best to edit in overstrike mode - unless you are using Windows Notepad which does not have one (it sucks). Save the file and play Kye with it, and you will see your extra diamonds.
The Kye for Windows Integral Editor
This is an adequate level editor built into Colin Garbutt's Kye for Windows from Version 2.0. It is in the same executable kye.exe as the game itself and is invoked from the menu with a game level open and running, and it works on that level. The playing pieces are selected from a palette and pasted onto the playing area. It will not let you save a design with more than one Kye or with no diamonds.
It has some quirks, and I would guess that it was a work in progress. You cannot edit or create a level set with more than one level in it, and with such a level set loaded the "Edit" option is greyed out. To create a multi-level set you must first create and save the levels one-by-one and then join them into a single file with an ASCII editor.
Also, you cannot create a new level from nothing - you must load an existing level and edit that to change it to a new design. In fact, Classic Kye always loads "DEFAULT.KYE" when it starts, but as found that is neither suitable (because it is already a "busy" design) nor possible (because it is multi-level) as a starting point for editing. It seems that to start creating a new level you are meant after starting Kye to load the "TEMPLATE.KYE" file (hence dismissing DEFAULT), which, having just Kye and one diamond, is a minimal single level file.
Yet another quirk is that there is no "Save" or "Save as" in the menu. Editing is saved by choosing "Run" (which does indeed also run your creation), and it is saved with the same filename as it had when you opened it. The "Name" item in the menu is only to enter the name of the level, not the level set (set of one in this case) and thus does not change the filename.
Thus, be warned, if you open an existing single level .kye file, wipe it's slate clean, build a new level, and then "Run" to save it, the original level will be lost. That includes template.kye. I would recommended that the way to create a new level is first to make a copy of template.kye with a new name of your choice, then open and edit that.
Python Kye Editor
The Python Kye editor was developed for Linux and other Posix platforms by Colin Phipps. It can also (like Python Kye itself) be installed on Windows with a bit of skill as long as the Python interpretor is also present. It can be downloaded from his website HERE which has many other good Kye things too.
It has a number of extra features compared with the original editor for Windows. It does allow a multi-level set to be created as a single file, and it does have a "Save as" to allow a different filename to be used In addition to those points, items can be "wiped" on - for example lengths of wall can be laid down by moving the mouse with the button held down, and there is an option for wall ends to be rounded automatically. In the palette of items, the direction of, for example, sliders, doors and turning blocks is changed by clicking on them repeatedly. Similarly, the type of monster and the period of the timing block are changed by clicking on them in the palette.
The Xye Integral Editor
Showing "Clean" theme
The Xye editor is entered from the Xye start screen and, like the Python Kye editor, allows multi-level sets, allows "Save as", allows auto-rounding of wall corners and allows items to be "wiped" on with the mouse movement. The editor can be themed to use the same grapics as you are familiar with in gameplay. Files are saved in .xml not  .kye format, so it could not be used as an editor for Classic Kye.