# description
An agent skill providing instructions for AI agents.

# $comment
An implementation of the [Agent Skills Specification](https://agentskills.io/specification).
A skill is a directory containing a `SKILL.md` file with YAML frontmatter and a Markdown body
that provides instructions for AI agents. Skills support progressive disclosure: metadata
(~100 tokens) is loaded at startup, full instructions on activation, and referenced files
on demand.

# properties.type.$comment
This is a special property analogous to JSON-LD's `@type` keyword.

# properties.id.$comment
This is a special property analogous to JSON-LD's `@id` keyword.

# properties.identifiers.description
Any kind of identifier for any kind of Thing.

# properties.identifiers.$comment
Some identifiers have specific properties e.g the `issn` property for
the `Periodical` type. These should be used in preference to this
property which is intended for identifiers that do not yet have a
specific property. Identifiers can be represented as strings, but
using a `PropertyValue` will usually be better because it allows
for `propertyID` (i.e. the type of identifier).

# properties.name.$comment
Must be lowercase kebab-case: 1-64 characters, only lowercase alphanumeric
and hyphens, no leading/trailing/consecutive hyphens. By convention, names
follow a `thing-activity` pattern describing the skill's domain and action,
e.g. `code-review`, `data-analysis`, `site-design`.

# properties.workType.description
The type of `CreativeWork` (e.g. article, book, software application).

# properties.doi.description
The work's Digital Object Identifier (https://doi.org/).

# properties.about.$comment
Consistent with https://schema.org/about, this property allows for
linking to one of more `Thing` nodes. This could for example include
a `Person` (e.g for a bibliography) or a `DefinedTerm` (e.g. for
subject areas the creative work relates to).

# properties.abstract.description
A short description that summarizes a `CreativeWork`.

# properties.provenance.description
A summary of the provenance of the content within the work.

# properties.contributors.description
A secondary contributor to the `CreativeWork`.

# properties.editors.$comment
Note that, consistent with schema.org, this property can only include
a `Person`, unlike `authors` and `maintainers` which can also include
`Organization`.

# properties.maintainers.$comment
A maintainer of a `Dataset`, `SoftwareApplication`, or other `CreativeWork`.
A maintainer is a `Person` or `Organization` that manages contributions to,
and/or publication of, some (typically complex) artifact. It is common for
distributions of software and data to be based on "upstream" sources.
When maintainer is applied to a specific version of something e.g. a particular
version or packaging of a Dataset, it is always possible that the upstream
source has a different maintainer. The `isBasedOn` property can be used to
indicate such relationships between datasets to make the different maintenance
roles clear. Similarly in the case of software, a package may have dedicated
maintainers working on integration into software distributions such as Ubuntu,
as well as upstream maintainers of the underlying work.

# properties.dateAccepted.$comment
This is not yet a schema.org property but the term is used
[in Dublin Core](http://purl.org/dc/terms/dateAccepted).

# properties.funders.description
People or organizations that funded the `CreativeWork`.

# properties.fundedBy.description
Grants that funded the `CreativeWork`; reverse of `fundedItems`.

# properties.fundedBy.$comment
This follows the proposal [here](https://github.com/schemaorg/schemaorg/issues/2258)
for a property that is the reverse of `fundedItems`.
It is an any because a `CreativeWork` may have been funded through more than
one `Grant`.

# properties.genre.description
Genre of the creative work, broadcast channel or group.

# properties.keywords.description
Keywords or tags used to describe this content. Multiple entries in a keywords list are typically delimited by commas.

# properties.isPartOf.description
An item or other CreativeWork that this CreativeWork is a part of.

# properties.licenses.description
License documents that applies to this content, typically indicated by URL, but may be a `CreativeWork` itself.

# properties.parts.description
Elements of the collection which can be a variety of different elements, such as Articles, Datatables, Tables and more.

# properties.bibliography.description
A bibliography of references which may be cited in the work.

# properties.bibliography.$comment
Unlike `references` which contains only the references that are actually
cited in the work, `bibliography` is a database of all available references
loaded from an external source file at compile time. It is ephemeral and
not persisted when the document is saved.

# properties.references.description
References to other creative works, such as another publication, web page, scholarly article, etc.

# properties.text.description
The textual content of this creative work.

# properties.repository.description
URL of the repository where the un-compiled, human readable source of the work is located.

# properties.path.description
The file system path of the source of the work.

# properties.path.$comment
Usually only used when the work is within a Git (or other version control) repository,
and then is usually relative to the repository root.

# properties.commit.description
The commit hash (or similar) of the source of the work.

# properties.commit.$comment
Only used when the work's source file is within a Git (or other version control) repository.

# properties.version.$comment
In this case `string` is listed as an alternative before `number` to
avoid semantic version numbers e.g. `1.0` being parsed, and subsequently
encoded, as `1` thereby resulting in loss of information.

# properties.content.description
The content of the skill (the Markdown body).

# properties.content.$comment
The Markdown body after the frontmatter contains the skill instructions. There are no
format restrictions per the spec. Recommended sections include step-by-step instructions,
examples of inputs and outputs, and common edge cases.

# properties.compatibility.$comment
Max 500 characters per the SKILL.md spec. Indicates intended product, required system packages,
network access needs, etc. Most skills do not need this field.

# properties.allowedTools.$comment
In the SKILL.md spec this is a space-delimited string. For consistency with the rest of this schema
we also allow for comma-delimited tool names, and deserialize either into an array of strings.