Authoring skills
Use when the user asks to create, write, compose, or design a new agent skill — turning an idea, notes, requirement, or repeated workflow into a SKILL.md with eval cases and a trigger set through an interview → draft → critique → refine loop.From its SKILL.md
npx -y skills add ai-creed/ai-shakespii --skill authoring-skillsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.5 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
authoring-skills
Intent
Turn a human's idea into a finished Agent Skill through a structured loop: interview the human for the raw material, draft against the anatomy contract, critique with a rubric of qualities no linter can check, and refine until the harness — not taste — says the skill works. The using-shakespii skill teaches how to drive the CLI; this skill decides what the new skill should say.
Inputs
- The idea: a problem statement, requirement, or repeated workflow the human wants captured as a skill.
- A writable parent directory for the new skill.
- Optional: raw material the human already has — notes, transcripts, a real worked example, memory excerpts.
Preconditions
- The shakespii CLI resolves (
shakespii --versionsucceeds); setup lives in the using-shakespii skill's Preconditions. - The using-shakespii skill is available — every CLI mechanic here (fix loop, eval runs, trigger measurement) delegates to it.
- A human is reachable for the interview, or the task prompt already supplies and approves the interview's answers.
Procedure
Phase 1 — Interview. Ask one question at a time, multiple-choice where the options are enumerable, until every anatomy section has raw material:
- Intent: what problem, for whom, and what does a successful use look like?
- Triggers: at least five real requests that should fire the skill, and at least three lookalikes that must not.
- Inputs and preconditions: what the skill consumes; binaries, paths, and environment it assumes.
- Procedure: walk one real occurrence of the workflow end to end.
- Example: one real input with its real output — not an invented pair.
- Failure modes: what has gone wrong when this was done by hand.
The interview ends when you can state the kebab-case name, the purpose, and the trigger list back and the human confirms them — or when the task prompt already supplied and approved all three. In a non-interactive run where the prompt leaves questions open, ask them all in one batch as your final output instead of guessing.
Phase 2 — Draft. Scaffold, then fill from the interview:
shakespii init <name>
Fill every scaffold section, replacing each placeholder token. Craft rules the linter cannot enforce:
- Freedom calibration: prescribe exactly where deviation breaks things (exact commands, exact formats); leave open where judgment beats prescription. A step that says "run these five commands in order" and a step that says "choose an appropriate threshold" should both survive the question "why this tight, why this loose?".
- Progressive disclosure: SKILL.md carries the loop; depth (rubrics, rule
lists, long references) moves to
references/files linked where used. - The description leads with its trigger situations — the ones the interview named — not with the skill's implementation.
- The Examples section transcribes the interview's real input→output pair.
- Anti-patterns come from the interview's failure modes.
Phase 3 — Critique. Two layers, in order:
- A fresh-eyes pass against references/critique-rubric.md, fixing what it catches.
- The lint fix loop, delegated to using-shakespii:
shakespii lint <dir> --json, apply remediations, re-lint until exit 0, handle warnings explicitly.
Phase 4 — Refine. Author the eval suite, then let the harness judge:
- Write
evals/evals.json(at least three cases, each an in-skill behavior branch — happy path, refusal or error branches, variants; scope negatives belong inevals/triggers.json) following references/headless-eval-rules.md. - Write
evals/triggers.json(at least sixteen labeled queries, with near-miss negatives on the boundary of any neighboring skill). - Gate with the harness — token spend confirmed with the human, or already approved in the task prompt:
shakespii test <dir> --run --triggers
- On trigger misses, reword the description and re-measure with
--fresh; stop once accuracy holds at or above 0.8 without regressing queries that already passed. The using-shakespii skill documents the loop's CLI semantics.
Phase 5 — Present. Hand the human the skill directory, its lint output, and its scenario and trigger results, plus any open questions. Do not install the skill anywhere; installation is a separate, explicitly approved act.
Output
- A new skill directory (
SKILL.md,README.md,evals/evals.json,evals/triggers.json, optionalreferences/) that lints clean, with recorded scenario and trigger results. - A presentation of that evidence to the human. The skill is not installed.
Examples
The human says: "I want a skill that helps agents write good commit messages."
Interview (excerpt). Q: "What does a bad commit message look like in your repos — what specifically goes wrong?" A: "They describe the diff instead of the why; bodies restate the subject." Q: "Name three requests that should trigger this skill." A: "Write the commit message for this change; clean up my commit history wording; draft a PR-merge commit."
Draft (excerpt). The interview's answers become the description —
description: "Use when the user asks to write or improve a commit message or
commit-history wording — leads with the change's why, keeps the subject
imperative and under fifty characters, and never restates the subject in the
body."
— and the bad-message example from the interview becomes the worked example: input, a diff adding a retry wrapper around one HTTP call; output, subject "retry transient checkout-service timeouts" with a body explaining the incident that motivated it.
Anti-patterns
- Inventing interview answers instead of asking the human — or instead of reading them from a task prompt that already supplies them.
- Pasting the raw idea into every section; each anatomy section answers its own question.
- Stopping at lint exit 0: lint checks the contract, while the rubric and the eval runs check whether the content is any good.
- Eval expectations that need a mid-run human reply — the headless rules file shows how to reword them.
- Re-teaching CLI mechanics inline instead of delegating to using-shakespii.
- Installing the finished skill without an explicit approval.
What ships with it: 5 files
9.1 KB alongside SKILL.md
evals/
- evals.json3.0 KB
- triggers.json2.0 KB
references/
- critique-rubric.md2.0 KB
- headless-eval-rules.md1.6 KB
- README.md391 B