New Skill
A harness for adding one skill to this repository. It sequences three existing
instruments — Archcore, skill-creator, /review-and-release — and fills the gap
between them: skill-creator writes portable skills, this repo ships plugin skills,
and the two disagree on frontmatter, packaging, and file layout.
Run the steps in order. Step 1 is the only one that questions the user.
Step 0: Ground in the repo's rules
Before asking anything, read what already binds:
mcp__archcore__search_documents with content: "skill command naming" — then
get_document on .archcore/conventions/project-stack.rule.md. It fixes the file
layout, the frontmatter fields, and the kebab-case naming rule.
ls skills/ — check no skill already covers the requested job. A near-duplicate is
a reason to extend an existing skill instead, and a reason to say so before Step 1.
- Read two or three existing
SKILL.md files closest in shape to the request. They
are the style baseline — skills/recap/SKILL.md for a short one, skills/compatibility-audit/SKILL.md
for one with references/ and scripts/.
Step 1: Collect the brief
Ask the user. Batch these into one question widget where the host offers one; otherwise
one message per question, most important first. Recommend an answer for every question.
| # |
Question |
Recommended default |
| 1 |
What does the skill do, and what are 2–3 concrete invocations of it? |
— the user must supply this |
| 2 |
What phrasings should trigger it? |
derived from answer 1; confirm the list |
| 3 |
model: haiku, sonnet, or opus? |
sonnet; haiku for a mechanical skill under ~60 lines |
| 4 |
A slash command in commands/? |
yes when the skill is an action the user fires at a moment; no when it is domain expertise the model picks up from the description |
| 5 |
Bundled scripts/, references/, or assets/? |
none — 5 of 20 skills carry nothing but SKILL.md |
| 6 |
Original text, or a port of something external? |
original; a port switches on the license track in Step 3 |
| 7 |
Output language |
English, unless the skill's subject is Russian text |
Do not ask about a standalone README.md — the repo default is no. Add one only when the
user asks for the skill to be installable on its own via npx degit.
Step 2: Draft with skill-creator
Invoke the skill-creator skill and follow its craft guidance: progressive disclosure,
degrees of freedom, writing a description that carries all the triggering information,
keeping SKILL.md lean.
Two deviations from its process:
init_skill.py — run scripts/init_skill.py <name> --path skills/ only when
answer 5 named bundled resources. It scaffolds example scripts/, references/, and
assets/ directories that then have to be deleted. For a SKILL.md-only skill, write
the file directly.
- Step 5, packaging — skip it.
package_skill.py builds a .skill archive for
standalone distribution; ai-kit ships through the plugin marketplace, and nothing in
this repo consumes a .skill file.
Step 3: Apply ai-kit conventions
This is the delta skill-creator does not know about.
Location. The skill lives at skills/<name>/SKILL.md in the repo root. Never
author under plugins/ai-kit/skills/ — that tree is generated by rsync at release
and any edit there is overwritten.
Name. kebab-case, one string reused in four places: the directory, the frontmatter
name, the command filename, and the /ai-kit:<name> invocation.
Frontmatter. Add model: <answer 3> alongside name and description.
skill-creator says to include no field beyond name and description; this repo
overrides that — /review-and-release fails a skill that carries neither model nor
disable-model-invocation: true.
Do not run quick_validate.py or package_skill.py. Both reject every skill in
this repository: their allowed-frontmatter list is name, description, license,
allowed-tools, metadata, so model: reads as an unexpected key. /review-and-release
is this repo's validator.
Command file, when answer 4 was yes — commands/<name>.md, exactly this shape:
---
description: <one line, imperative, same subject as the skill description>
---
# /ai-kit:<name>
## Arguments
The user invoked this command with: $ARGUMENTS
<one line on what an empty value means, and what a non-empty value selects>
## Instructions
Use the skill at `skills/<name>/SKILL.md`.
Add argument-hint: "[--flag]" to the frontmatter only when the skill takes flags —
commands/reset-permissions.md is the one example.
A port, when answer 6 said so — read
.archcore/importing-external-components.rule.md and follow it: check the upstream
license, add the THIRD-PARTY-LICENSES.md map row and full license text, write
skills/<name>/ATTRIBUTION.md, and add the README Credits bullet. A skill written from
scratch that reuses only ideas gets the map row and the Credits bullet, and no
ATTRIBUTION.md.
Step 4: Record the decision, when there was one
If the skill's design settled a question that will bind future work — a new convention, a
rejected alternative, a model chosen against the default — record it with
/archcore:document as an adr under .archcore/skills/. .archcore/skills/compatibility-audit-model.adr.md
is the worked example. A routine skill that follows every existing rule needs no document.
Step 5: Release
Run /review-and-release. It validates conventions, rebuilds the README ## Skills and
## Commands lists, mirrors skills/ and agents/ into plugins/ai-kit/, bumps the
patch version in both plugin manifests, and commits.
Do not hand-edit the README lists or the version — that skill owns them.
Result
Report: the skill path, whether a command was created, the new version, the commit hash,
and any Archcore document written.
1---2name: new-skill3description: Create a new ai-kit skill end to end — ground in the repo's Archcore rules, collect the brief from the user, draft with skill-creator, apply ai-kit conventions, then hand off to review-and-release. Use when the user says "/new-skill", "давай новый скилл", "add a skill to ai-kit", or describes a capability they want packaged as a skill in this repository.4---56# New Skill78A harness for adding one skill to this repository. It sequences three existing9instruments — Archcore, `skill-creator`, `/review-and-release` — and fills the gap10between them: `skill-creator` writes portable skills, this repo ships plugin skills,11and the two disagree on frontmatter, packaging, and file layout.1213Run the steps in order. Step 1 is the only one that questions the user.1415## Step 0: Ground in the repo's rules1617Before asking anything, read what already binds:18191. `mcp__archcore__search_documents` with `content: "skill command naming"` — then20 `get_document` on `.archcore/conventions/project-stack.rule.md`. It fixes the file21 layout, the frontmatter fields, and the kebab-case naming rule.222. `ls skills/` — check no skill already covers the requested job. A near-duplicate is23 a reason to extend an existing skill instead, and a reason to say so before Step 1.243. Read two or three existing `SKILL.md` files closest in shape to the request. They25 are the style baseline — `skills/recap/SKILL.md` for a short one, `skills/compatibility-audit/SKILL.md`26 for one with `references/` and `scripts/`.2728## Step 1: Collect the brief2930Ask the user. Batch these into one question widget where the host offers one; otherwise31one message per question, most important first. Recommend an answer for every question.3233| # | Question | Recommended default |34|---|---|---|35| 1 | What does the skill do, and what are 2–3 concrete invocations of it? | — the user must supply this |36| 2 | What phrasings should trigger it? | derived from answer 1; confirm the list |37| 3 | `model`: `haiku`, `sonnet`, or `opus`? | `sonnet`; `haiku` for a mechanical skill under ~60 lines |38| 4 | A slash command in `commands/`? | yes when the skill is an action the user fires at a moment; no when it is domain expertise the model picks up from the description |39| 5 | Bundled `scripts/`, `references/`, or `assets/`? | none — 5 of 20 skills carry nothing but `SKILL.md` |40| 6 | Original text, or a port of something external? | original; a port switches on the license track in Step 3 |41| 7 | Output language | English, unless the skill's subject is Russian text |4243Do not ask about a standalone `README.md` — the repo default is no. Add one only when the44user asks for the skill to be installable on its own via `npx degit`.4546## Step 2: Draft with skill-creator4748Invoke the `skill-creator` skill and follow its craft guidance: progressive disclosure,49degrees of freedom, writing a description that carries all the triggering information,50keeping `SKILL.md` lean.5152Two deviations from its process:5354- **`init_skill.py`** — run `scripts/init_skill.py <name> --path skills/` only when55 answer 5 named bundled resources. It scaffolds example `scripts/`, `references/`, and56 `assets/` directories that then have to be deleted. For a `SKILL.md`-only skill, write57 the file directly.58- **Step 5, packaging** — skip it. `package_skill.py` builds a `.skill` archive for59 standalone distribution; ai-kit ships through the plugin marketplace, and nothing in60 this repo consumes a `.skill` file.6162## Step 3: Apply ai-kit conventions6364This is the delta `skill-creator` does not know about.65661. **Location.** The skill lives at `skills/<name>/SKILL.md` in the repo root. Never67 author under `plugins/ai-kit/skills/` — that tree is generated by `rsync` at release68 and any edit there is overwritten.692. **Name.** kebab-case, one string reused in four places: the directory, the frontmatter70 `name`, the command filename, and the `/ai-kit:<name>` invocation.713. **Frontmatter.** Add `model: <answer 3>` alongside `name` and `description`.72 `skill-creator` says to include no field beyond `name` and `description`; this repo73 overrides that — `/review-and-release` fails a skill that carries neither `model` nor74 `disable-model-invocation: true`.754. **Do not run `quick_validate.py` or `package_skill.py`.** Both reject every skill in76 this repository: their allowed-frontmatter list is `name`, `description`, `license`,77 `allowed-tools`, `metadata`, so `model:` reads as an unexpected key. `/review-and-release`78 is this repo's validator.795. **Command file**, when answer 4 was yes — `commands/<name>.md`, exactly this shape:8081 ```markdown82 ---83 description: <one line, imperative, same subject as the skill description>84 ---8586 # /ai-kit:<name>8788 ## Arguments8990 The user invoked this command with: $ARGUMENTS9192 <one line on what an empty value means, and what a non-empty value selects>9394 ## Instructions9596 Use the skill at `skills/<name>/SKILL.md`.97 ```9899 Add `argument-hint: "[--flag]"` to the frontmatter only when the skill takes flags —100 `commands/reset-permissions.md` is the one example.1016. **A port**, when answer 6 said so — read102 `.archcore/importing-external-components.rule.md` and follow it: check the upstream103 license, add the `THIRD-PARTY-LICENSES.md` map row and full license text, write104 `skills/<name>/ATTRIBUTION.md`, and add the README Credits bullet. A skill written from105 scratch that reuses only ideas gets the map row and the Credits bullet, and no106 `ATTRIBUTION.md`.107108## Step 4: Record the decision, when there was one109110If the skill's design settled a question that will bind future work — a new convention, a111rejected alternative, a model chosen against the default — record it with112`/archcore:document` as an `adr` under `.archcore/skills/`. `.archcore/skills/compatibility-audit-model.adr.md`113is the worked example. A routine skill that follows every existing rule needs no document.114115## Step 5: Release116117Run `/review-and-release`. It validates conventions, rebuilds the README `## Skills` and118`## Commands` lists, mirrors `skills/` and `agents/` into `plugins/ai-kit/`, bumps the119patch version in both plugin manifests, and commits.120121Do not hand-edit the README lists or the version — that skill owns them.122123## Result124125Report: the skill path, whether a command was created, the new version, the commit hash,126and any Archcore document written.