The canonical organization-wide AI harness for all EEA coding agents.
This repository is the single source of truth for how AI coding agents (OpenCode, Claude Code, Gemini, Copilot, etc.) behave across all European Environment Agency (EEA) projects.
It contains org-wide rules, reusable skills, mandatory protocols, shared knowledge, and tool-specific wiring instructions.
The Initial Owner of the Original Code is European Environment Agency (EEA).
Add the EEA harness to your project in 30 seconds. Pick one of the three methods:
A. Automated Global Install (recommended) — one command for all your agents:
# With agentget
agentget install eea/eea.agent.skills
# Or with curl
curl -fsSL https://raw.githubusercontent.com/eea/eea.agent.skills/main/scripts/install.sh | bashB. Manual Global Install — clone once, symlink per agent:
git clone https://github.com/eea/eea.agent.skills.git ~/.eea/agent-harness
~/.eea/agent-harness/scripts/install.sh --localC. Project-Embedded — no global setup, reference inside one project:
# OpenCode: remote URL in your project's opencode.json
cat > opencode.json << 'EOF'
{
"instructions": [
"https://raw.githubusercontent.com/eea/eea.agent.skills/main/harness/EEA-HARNESS.md"
]
}
EOFFull bootstrap guide: docs/BOOTSTRAP.md
After installing, run the health check to verify everything is wired correctly:
./scripts/verify.shCreate project-local instructions that add to the org harness:
mkdir -p .agents
cp ~/.eea/agent-harness/templates/dot-agents/AGENTS.md .agents/AGENTS.md
# Edit .agents/AGENTS.md with project-specific rules
cp ~/.eea/agent-harness/templates/dot-agents/opencode.json opencode.jsonea.agent.skills/
├── harness/
│ └── EEA-HARNESS.md # ORG-WIDE: canonical harness for all EEA projects
├── AGENTS.md # REPO-LOCAL: how to work on THIS repo
├── skills/ # Distributable merged skills (do not edit directly)
├── src/skills/ # Source: upstream SKILL.md + EEA-OVERRIDES.md
├── rules/ # Org-wide prohibitions & mandatory behaviors
├── shared/ # Cross-project knowledge base
├── instructions/ # Generic org-wide instruction templates
├── workflows/ # Multi-skill orchestration recipes
├── plugins/ # Tool-specific adapters (agentget manifest)
├── scripts/ # Build + install automation
│ ├── build.sh
│ ├── install.sh
│ ├── verify.sh
│ └── validate-skills.sh
├── docs/ # Documentation and per-tool agent profiles
├── templates/ # Templates for project-local .agents/ setup
├── catalog.yaml # Machine-readable skill index
├── CHANGELOG.md
├── CONTRIBUTING.md
└── LICENSE
| Layer | File | Purpose |
|---|---|---|
| Org-wide | harness/EEA-HARNESS.md |
Loaded by ALL EEA projects. Contains routing, prohibitions, mandatory actions, skill references. |
| Repo-local | AGENTS.md (root) |
Only for this repo. Describes how to maintain the harness itself. |
| Project-local | {repo}/AGENTS.md |
Per-project rules that add to org harness. |
This separation ensures:
- Org rules are version-controlled and distributed automatically
- Repo rules don't leak into other projects
- Project rules can add context without duplicating org standards
The canonical org harness (harness/EEA-HARNESS.md) includes:
- Context Routing Rules — when to load which skills
- Global Prohibitions — security, operational safety, code quality rules that apply everywhere
- Mandatory Actions — required behaviors (show git status, propose commit message, ask for confirmation)
- Knowledge Accumulation Protocol — how to capture decisions and gotchas
- Skill Library Reference — catalog of available skills with usage instructions
- Tool-Specific Wiring — how to connect OpenCode, Claude, Gemini, etc.
| Method | Best For | Command | Agents Supported |
|---|---|---|---|
| A. Automated Global Install | Most users — one command, all agents | agentget install eea/eea.agent.skills or curl | bash |
OpenCode, Claude, Hermes, Pi, Gemini |
| B. Manual Global Install | Air-gapped or control-oriented users | git clone ... && ./scripts/install.sh --local |
OpenCode, Claude, Hermes, Pi, Gemini |
| C. Project-Embedded | No global setup, harness lives in one project | Remote URL, git submodule, or inline copy in project | Any agent |
| Skill | Description | Category | Upstream Source |
|---|---|---|---|
docker-expert |
Advanced Docker containerization, multi-stage builds, security hardening | devops | sickn33/antigravity-awesome-skills |
react-best-practices |
React/Next.js performance optimization (70+ rules) | frontend | vercel-labs/agent-skills |
composition-patterns |
React composition patterns, compound components | frontend | vercel-labs/agent-skills |
web-design-guidelines |
UI review, accessibility, UX audit | design | vercel-labs/agent-skills |
react-native-skills |
React Native/Expo best practices | mobile | vercel-labs/agent-skills |
react-view-transitions |
View transitions, animations, shared elements | frontend | vercel-labs/agent-skills |
eea-design-system |
EEA design system for Volto-based web applications | design | Self-contained (EEA-specific) |
Option 1: Copy from cloned repo
git clone https://github.com/eea/eea.agent.skills.git
cp eea.agent.skills/skills/docker-expert/SKILL.md ~/.config/opencode/skills/docker-expert/SKILL.mdOption 2: agentget
agentget install eea/eea.agent.skillsNote on GitHub Releases: GitHub Releases distribution is discontinued as of 2026-05-16. Skills are now always installed from source via the install script or agentget. Previous releases and tags have been removed. See CHANGELOG.md for details.
Invoke naturally in any agent:
Use docker-expert to containerize this Python app
Use react-best-practices to optimize this component
Use web-design-guidelines to audit accessibility
Each skill follows a two-file overlay pattern:
src/skills/<name>/SKILL.md— Upstream base content (auto-updated from upstream source)src/skills/<name>/EEA-OVERRIDES.md— EEA-specific customizations
┌─────────────────────────────────────────┐
│ Agent loads │
│ SKILL.md + EEA-OVERRIDES.md │
└─────────────────────────────────────────┘
↓ ↓
┌─────────────────┐ ┌─────────────────────┐
│ Upstream │ │ EEA Overrides │
│ (src/skills/) │ │ (src/skills/) │
└─────────────────┘ └─────────────────────┘
↓
┌─────────────────────────────────────────┐
│ Merged output → skills/<name>/ │
│ (agentget discovers from here) │
└─────────────────────────────────────────┘
Benefits:
- Upstream changes apply automatically (no merge conflicts in override sections)
- EEA customizations never lost during upstream updates
- Clear separation of "what's upstream" vs "what's EEA"
📄 Full sync strategy: docs/SYNC-STRATEGY.md
- Create skill directory under
src/skills/{skill-name}/ - Add upstream
SKILL.md(if based on upstream source) - Create
EEA-OVERRIDES.mdwith EEA-specific customizations - Add
metadata.jsonwith skill metadata - Update
catalog.yamlwith new skill entry - Build merged skill:
./scripts/build.sh {skill-name} - Verify: check that
skills/{skill-name}/SKILL.mdwas generated correctly andgit statusshows the expected changes - Commit:
skill: add {skill-name}
- Sync upstream changes to
src/skills/{name}/SKILL.md - Update
EEA-OVERRIDES.mdif upstream changes affect EEA customizations - Rebuild:
./scripts/build.sh {name} - Update
catalog.yamlversion if applicable - Commit:
skill: update {name} to v{X.Y.Z}
See CONTRIBUTING.md for:
- Adding new skills
- Updating existing skills
- Updating the org harness (
harness/EEA-HARNESS.md) - Adding new agent profiles
- Sync workflow documentation
When an agent makes a mistake the harness should have prevented, add a rule instead of rewriting the prompt.
See docs/harness-maintenance.md for the full maintenance philosophy and process.
Use Conventional Commits:
| Type | Use For |
|---|---|
skill: |
Adding or updating a skill |
harness: |
Changes to harness/EEA-HARNESS.md or org-wide rules |
docs: |
Documentation updates |
build: |
Build script or CI changes |
chore: |
Maintenance, dependencies, formatting |
.github/workflows/validate-skills.yml runs on every push:
- Lint
SKILL.mdfiles for structural conformance - Check token count (warn if > 500 lines / 5k tokens)
- Validate
catalog.yamlschema - Verify
skills/is up-to-date withsrc/skills/ - Run
agentskills validate(viaskills-ref) against all source and merged skills for Agent Skills spec compliance
.github/workflows/validate-harness.yml runs when harness files change:
- Verify
harness/EEA-HARNESS.mdexists and is valid - Check all referenced files exist
- Scan for accidental secrets
- Validate agent profiles
.github/workflows/check-changelog.yml runs on pull requests to ensure:
- Significant changes are documented in
CHANGELOG.md - Entries follow the established format
MIT — See LICENSE
Last updated: 2026-05-21 after skills-ref validation integration and eea-design-system skill addition