Agent Skill: Guide for structuring Netresearch skill repositories. Use when creating skills, standardizing repos, or setting up composer/release workflows. By Netresearch.
{repo-name}/
โโโ plugin.json # portable manifest
โโโ .claude-plugin/plugin.json # generated
โโโ skills/{name}/SKILL.md # the control plane
โโโ README.md # human docs
โโโ LICENSE-MIT # code
โโโ LICENSE-CC-BY-SA-4.0 # content
โโโ composer.json # PHP distribution
โโโ references/ # detail, loaded on demand
โโโ scripts/ # executables, never loaded
โโโ .github/workflows/
โโโ release.yml # tag-triggered
โโโ validate.yml # validation caller
โโโ auto-merge-deps.yml # dep auto-merge caller
| Path pattern | License |
|---|---|
skills/**/*.md, references/**, README.md, docs/** |
CC-BY-SA-4.0 |
scripts/**, .github/workflows/**, *.sh, *.py, *.php |
MIT |
composer.json, plugin.json, config files |
MIT |
SPDX: (MIT AND CC-BY-SA-4.0). Copyright: Netresearch DTT GmbH. No bare LICENSE โ split files only.
---
name: skill-name
description: "Use when <trigger conditions>"
---
Budgets (spec): name โค64, no doubled/edge hyphen, matches its directory. description โค1024, warn past 500 โ a router, not documentation. Body โค500 lines, warn at 300. compatibility โค500, usually omit.
Flat discovery: references one level deep; SKILL.md names every references/*.md and every scripts/ executable; ## Contents past 100 lines. Rationale and trigger evals: skill-architecture. Audit: audit-skills.sh in the repository's top-level scripts/ (not shipped with the skill).
Root plugin.json (Agent Plugins 1.0.0, closed field set) is the source of truth; sync-plugin-manifest.sh generates .claude-plugin/plugin.json plus Claude-only keys โ agent-plugins-compat.
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "skill-name",
"version": "1.0.0",
"license": "(MIT AND CC-BY-SA-4.0)",
"author": {"name": "Netresearch DTT GmbH", "url": "https://www.netresearch.de"}
}
Name must match GitHub repo. Type ai-agent-skill. No version field (from git tags). No composer.lock.
{
"name": "netresearch/{repo-name}",
"type": "ai-agent-skill",
"license": "(MIT AND CC-BY-SA-4.0)",
"require": {"netresearch/composer-agent-skill-plugin": "*"},
"extra": {"ai-agent-skill": "skills/{name}/SKILL.md"}
}
Skill repos MUST delegate CI to skill-repo-skill reusable workflows:
# .github/workflows/validate.yml
uses: netresearch/skill-repo-skill/.github/workflows/validate.yml@main
Callers: validate.yml, release.yml (here); auto-merge-deps.yml (netresearch/.github). Auto-merge/pr-quality use pull_request_target. No inline Actions. Domain reusables: docs/ARCHITECTURE.md.
Bump root plugin.json โ sync โ PR โ merge โ pull main โ verify parity โ signed tag โ push โ monitor Release. Tag only after bump PR merges. Multi-repo (>3) needs dry-run + approval; 0.x โ 1.0.0 goes through STABILIZE rows, not retyped plans. Never edit installed paths โ release-discipline.
Marketplace, release download, Composer, npm โ commands and the npm files default in installation-methods.
scripts/validate-skill.sh (layout, manifests, budgets, flat discovery). Shell portability: authoring-ci-gotchas.
Named here so they are findable: bump-version.sh, check-version-parity.sh, sync-plugin-manifest.sh, roll-changelog.py, fleet-release-github.sh, migrate-licensing.sh, validate-evals.sh โ each with --help.
references/)agent-plugins-compat ยท installation-methods ยท plugin-hooks ยท composer-setup ยท release-discipline ยท review-replies ยท skill-quality ยท repository-quality-rules ยท readme-template ยท skill-discovery-metadata ยท validation-checklist ยท marketplace-integration ยท materialization-contract ยท authoring-ci-gotchas ยท skill-retirement
Contributing: https://github.com/netresearch/skill-repo-skill