Harness Eval
tech-leads-club/agent-skills
Evaluates a repository's agent harness (AGENTS.md, rules, skills) for broken paths, redundant instructions and usefulness, and stops at reports.
Creates or changes a druxt.js contributor skill in .agents/skills, with its evals and the tests that gate it.
$ npx skills add druxt/druxt.js --skill write-skill -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install druxt/druxt.js write-skill --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/druxt/druxt.js.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/write-skill .claude/skills/write-skill && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "write-skill" agent skill from https://github.com/druxt/druxt.js/tree/develop/.agents/skills/write-skill into .claude/skills/write-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-skill", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/druxt/druxt.js/tree/develop/.agents/skills/write-skillType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add druxt/druxt.js --skill write-skill -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install druxt/druxt.js write-skill --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/druxt/druxt.js.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/write-skill .agents/skills/write-skill && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "write-skill" agent skill from https://github.com/druxt/druxt.js/tree/develop/.agents/skills/write-skill into .agents/skills/write-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-skill", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add druxt/druxt.js --skill write-skill -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install druxt/druxt.js write-skill --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/druxt/druxt.js.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/write-skill .cursor/skills/write-skill && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "write-skill" agent skill from https://github.com/druxt/druxt.js/tree/develop/.agents/skills/write-skill into .cursor/skills/write-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-skill", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/druxt/druxt.js.git --path .agents/skills/write-skill--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add druxt/druxt.js --skill write-skill -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install druxt/druxt.js write-skill --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/druxt/druxt.js.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/write-skill .gemini/skills/write-skill && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "write-skill" agent skill from https://github.com/druxt/druxt.js/tree/develop/.agents/skills/write-skill into .gemini/skills/write-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-skill", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install druxt/druxt.js write-skillInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add druxt/druxt.js --skill write-skill -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/druxt/druxt.js.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/write-skill .github/skills/write-skill && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "write-skill" agent skill from https://github.com/druxt/druxt.js/tree/develop/.agents/skills/write-skill into .github/skills/write-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-skill", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add druxt/druxt.js --skill write-skill -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install druxt/druxt.js write-skill --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/druxt/druxt.js.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/write-skill .opencode/skills/write-skill && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "write-skill" agent skill from https://github.com/druxt/druxt.js/tree/develop/.agents/skills/write-skill into .opencode/skills/write-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-skill", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
write-skillCreates or changes a druxt.js contributor skill in .agents/skills, with its evals and the tests that gate it.
Write Skill is an agent skill from druxt/druxt.js. Creates or changes a druxt.js contributor skill in .agents/skills, with its evals and the tests that gate it. Use when adding a skill, editing a SKILL.md or its evals, making a skill trigger more reliably, deciding whether guidance belongs in AGENTS.md or a skill, or when yarn lint:skills or a skill eval fails.
Its SKILL.md is about 930 tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `evals/tests.yaml`).
It sits in Agent Workflows, covering LLM evaluation, Agent evaluation and testing and Agent instruction files. The repository describes itself as: The Fully Decoupled Drupal Framework. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit b07a3e3. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
yarnmiseFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
agentskills.iogithub.compromptfoo.devFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Write Skill loads about 926 tokens when it runs. Until then it costs about 81 tokens; SKILL.md has 373 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from druxt/druxt.js at commit b07a3e3, republished under its MIT licence (© druxt). 373 words, ~926 tokens.
.claude/skills/write-skill/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Skills hold the procedures contributors repeat. AGENTS.md holds the facts every session needs. If the guidance is one line that applies everywhere, put it in AGENTS.md. If it is a sequence of steps for one kind of task, write a skill.
.agents/skills/<name>/
├── SKILL.md # frontmatter and instructions
├── evals/tests.yaml # promptfoo tests for this skill
└── references/ # optional detail, loaded only when SKILL.md links it.claude/skills is a symlink to .agents/skills, so Claude Code reads the same files as Codex, Cursor, Gemini CLI, Copilot and OpenCode.
name and description are required, and name matches the directory.open-pr, add-changeset), and check it does not shadow a built-in command such as /verify or /review.AGENTS.md, CONTRIBUTING.md and the scripts instead of copying them, so a change to the process has one place to change.Follow the order in superpowers' writing-skills (install superpowers at user scope to use it directly):
evals/tests.yaml first, then run the prompts without the skill and note what the agent gets wrong.evals/tests.yaml holds promptfoo tests, run by .agents/evals/promptfooconfig.yaml:
- description: 'open-pr triggers: Open a PR for my druxt.js branch.'
vars:
request: Open a PR for my druxt.js branch.
forbidden: ['gh pr merge', '--no-verify']
assert:
- type: skill-used
value: open-pr
- type: llm-rubric
value: Targets the develop branch, not mainskill-used) and three that should not (not-skill-used), including prompts that belong to a nearby skill.forbidden lists regular expressions for shell commands the agent must not run or try.llm-rubric judges the answer. The eval sessions cannot write files, so word a rubric as "writes or proposes", not "creates".yarn lint:skills # agnix and the "Use when" check, in CI and before each commit
mise exec node@22 -- yarn skills:eval # promptfoo, locally only (spends model tokens)
yarn lint:md && yarn lint:prose && yarn lint:cspellTo run one skill's tests, add --filter-pattern <name> to the promptfoo eval command in package.json.
Add the skill to the Skills table in AGENTS.md, with its name linked to its SKILL.md (.agents/skills/<name>/SKILL.md). Agents without skill discovery of their own find skills through that link, and agnix checks the link resolves.
© druxt, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in .agents/skills/write-skill of druxt/druxt.js.
Open the folder on GitHubat commit b07a3e3
Write Skill next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Write Skill this skilldruxt/druxt.js | 114 | — | ~926 | Automated safety check: Pass | MIT | |
| Harness Evaltech-leads-club/agent-skills | 7k | — | ~3.9k | Automated safety check: Pass | CC-BY-4.0 | |
| Octocode Graph Eval Loopbgauryy/octocode | 946 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Eval-Driven Development Harnessaffaan-m/ECC | 274k | — | ~1.5k | Automated safety check: Pass | MIT | |
| Benchmark Agentsvercel/vercel-plugin | 301 | — | ~3.6k | Automated safety check: Pass | Custom licence | |
| Autocontextgreyhaven-ai/autocontext | 1.3k | — | ~892 | Automated safety check: Pass | Apache-2.0 |
tech-leads-club/agent-skills
Evaluates a repository's agent harness (AGENTS.md, rules, skills) for broken paths, redundant instructions and usefulness, and stops at reports.
bgauryy/octocode
Runs a measurable keep-or-discard improvement loop against a runnable sensor, from framing a goal and KPI through baseline, judging and held-out verification.
affaan-m/ECC
Sets up eval-driven development for Claude Code workflows: capability and regression evals, three grader types and pass@k reliability metrics.
vercel/vercel-plugin
Advanced AI agent benchmark scenarios that push Vercel's cutting-edge platform features — Workflow SDK, AI Gateway, MCP, Chat SDK, Queues, Flags, Sandbox, and multi-agent orchestration.
greyhaven-ai/autocontext
Runs LLM-based rubric judging on agent output and loops revise-and-rejudge rounds until a quality threshold is met.
microsoft/waza
Evaluates agent skills with a Go CLI that runs YAML-defined benchmarks, compares runs and scores the quality of SKILL.md frontmatter.
druxt/druxt.js
Writes the changeset that versions a druxt.js package change and becomes its changelog entry.
druxt/druxt.js
Works through review comments and failing CI on a druxt.js pull request, fixing or answering each one until the pull request is green and every thread has a reply.
druxt/druxt.js
Prepares and opens a druxt.js pull request from a contributor's fork against develop, with a Conventional Commits title and the repository's template filled in.
druxt/druxt.js
Sets up a druxt.js change before the first edit, from the issue to a feature branch off develop, a short spec and a failing test.
druxt/druxt.js
Sorts a druxt.js issue by type and package, and reproduces it against the example Drupal backend or with a failing unit test before writing up the findings.
druxt/druxt.js
Runs the druxt.js verification gate (lint, build, unit tests and the checks for whatever else changed) and reports the real results.
Categories
Creates or changes a druxt.js contributor skill in .agents/skills, with its evals and the tests that gate it. js.agents/skills, with its evals and the tests that gate it.
Write Skill fits situations like: editing a SKILL.md; making a skill trigger more reliably; deciding whether guidance belongs in AGENTS.md; yarn lint:skills.
Run `npx skills add druxt/druxt.js --skill write-skill -a claude-code`. Or copy the skill folder (.agents/skills/write-skill in druxt/druxt.js) into .claude/skills/write-skill in your project. Claude Code loads it when a task matches its description.
Run `npx skills add druxt/druxt.js --skill write-skill -a codex`. Or copy the skill folder (.agents/skills/write-skill in druxt/druxt.js) into .agents/skills/write-skill in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add druxt/druxt.js --skill write-skill -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/write-skill, .gemini/skills/write-skill, .github/skills/write-skill and .opencode/skills/write-skill in your project.
Going by SKILL.md and its folder, Write Skill needs the command-line tools its instructions call (yarn and mise).
SKILL.md names 3 domains. As links in the text: agentskills.io, github.com and promptfoo.dev. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Write Skill is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 926 tokens (SKILL.md is roughly 3.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Write Skill: Harness Eval (tech-leads-club/agent-skills, 7k stars), Octocode Graph Eval Loop (bgauryy/octocode, 946 stars), Eval-Driven Development Harness (affaan-m/ECC, 274k stars) and Benchmark Agents (vercel/vercel-plugin, 301 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
druxt (a GitHub organization) maintains it in druxt/druxt.js, which has 114 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 7, 2026.
Source: druxt/druxt.js on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.