moonbitstack curriculum vitae agent skills cv–01 github

moonskill

The reading side of an agent’s shortlist.

package
moonbitstack/moonskill
version
v0.1.1
licence
apache-2.0

01summaryof 06

Skills are cheap because nobody reads all of them. A client puts the name and description of every skill it has in front of a model, opens the body of the one the model picked, and reads the files that body points at only when the work reaches them.

This library is the reading side of that arrangement. It parses the header strictly, reports every rule a document breaks in one pass, walks a tree of skills through a source you implement, and produces the block a model chooses from. It has no opinion about which agent is reading, and it opens no file by itself.

this is the first thing a model sees

02what it doesof 06

parsetext → skill
raise refused

Reads the document

The fence, then a strict YAML header, then the Markdown an agent would read. name: 42 is the name forty-two; a document that is not a skill document at all is refused. A field that is merely wrong is left for the next entry.

validateskill → faults
every rule

Judges it

The three length limits, the character rules, the directory name, the fields that may appear — and the whole list at once, because a person fixing a document wants the list rather than the first line.

discoversource → skills
two methods

Finds them

A tree is walked through Source. A directory reader is included; a tarball, a database or an HTTP cache is a source you write, and everything above the trait stays as it is.

promptskills → block
xml, escaped

Offers them

The first tier as an <available_skills> block: name, description and location per skill, escaped so a description that quotes markup stays text.

skillcheckdirectory → exit code
--json

Checks it from a shell

Any number of directories, one line each, a non-zero exit when anything failed. --json prints the same verdicts for a program to read.

03the three tiersof 06

Each tier is read only when the one above it has been paid for. The indent is the order.

  1. tier one · read every time The name and description of every skill on offer. Skill::summary · prompt
  2. tier two · after the choice The body of the one skill the model picked. Skill::body
  3. tier three · when the work reaches it One file that body points at, read on demand. Skill::resolve → Source::read

Skill::resolve joins the skill root and refuses a path that climbs out of it, so a document can point at its own files and nowhere else.

04screeningof 06

Paste a résumé. The desk below is the library, compiled to JavaScript — it parses and validates as you type, and every tag and sentence in the margin is the one the MoonBit side produces.

application accepted
    more

    The directory name matters: the specification wants it to equal name, so a document that is perfect on its own can still be wrong in the folder it sits in.

    05in numbersof 06

    packages: the document and the directory
    2
    header fields the specification defines
    6
    tags a verdict can be filed under
    18

    06elsewhereof 06

    top