Configuring Horizon
coollabsio/coolify
A skill your agent uses whenever the user mentions Horizon by name in a Laravel context.
A skill your agent uses when integrating ERC-8004 onchain agent identity.
$ npx skills add ccashwell/evm-cortex --skill erc8004-patterns -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ccashwell/evm-cortex erc8004-patterns --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/ccashwell/evm-cortex.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/erc8004-patterns .claude/skills/erc8004-patterns && 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 "erc8004-patterns" agent skill from https://github.com/ccashwell/evm-cortex/tree/main/skills/erc8004-patterns into .claude/skills/erc8004-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "erc8004-patterns", 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/ccashwell/evm-cortex/tree/main/skills/erc8004-patternsType 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 ccashwell/evm-cortex --skill erc8004-patterns -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ccashwell/evm-cortex erc8004-patterns --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ccashwell/evm-cortex.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/erc8004-patterns .agents/skills/erc8004-patterns && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "erc8004-patterns" agent skill from https://github.com/ccashwell/evm-cortex/tree/main/skills/erc8004-patterns into .agents/skills/erc8004-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "erc8004-patterns", 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 ccashwell/evm-cortex --skill erc8004-patterns -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ccashwell/evm-cortex erc8004-patterns --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ccashwell/evm-cortex.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/erc8004-patterns .cursor/skills/erc8004-patterns && 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 "erc8004-patterns" agent skill from https://github.com/ccashwell/evm-cortex/tree/main/skills/erc8004-patterns into .cursor/skills/erc8004-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "erc8004-patterns", 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/ccashwell/evm-cortex.git --path skills/erc8004-patterns--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 ccashwell/evm-cortex --skill erc8004-patterns -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ccashwell/evm-cortex erc8004-patterns --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ccashwell/evm-cortex.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/erc8004-patterns .gemini/skills/erc8004-patterns && 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 "erc8004-patterns" agent skill from https://github.com/ccashwell/evm-cortex/tree/main/skills/erc8004-patterns into .gemini/skills/erc8004-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "erc8004-patterns", 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 ccashwell/evm-cortex erc8004-patternsInstalls 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 ccashwell/evm-cortex --skill erc8004-patterns -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ccashwell/evm-cortex.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/erc8004-patterns .github/skills/erc8004-patterns && 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 "erc8004-patterns" agent skill from https://github.com/ccashwell/evm-cortex/tree/main/skills/erc8004-patterns into .github/skills/erc8004-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "erc8004-patterns", 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 ccashwell/evm-cortex --skill erc8004-patterns -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ccashwell/evm-cortex erc8004-patterns --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ccashwell/evm-cortex.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/erc8004-patterns .opencode/skills/erc8004-patterns && 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 "erc8004-patterns" agent skill from https://github.com/ccashwell/evm-cortex/tree/main/skills/erc8004-patterns into .opencode/skills/erc8004-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "erc8004-patterns", 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.
erc8004-patternsA skill your agent uses when integrating ERC-8004 onchain agent identity.
Erc8004 Patterns is an agent skill from ccashwell/evm-cortex. Use when integrating ERC-8004 onchain agent identity. Covers agent identity registry, authentication, capability declaration, trust framework for AI agents interacting onchain. Deployed January 2026 on 20+ chains.
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Backend & APIs. The repository describes itself as: Ethereum protocol engineering squad for AI coding assistants. The licence is MIT.
Read from SKILL.md and the folder at commit f8f3301. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are solidity, json and typescript).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
acmelabs.xyzethskills.com8004.orgFrom 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.
Erc8004 Patterns loads about 2k tokens when it runs. Until then it costs about 58 tokens; SKILL.md has 149 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 ccashwell/evm-cortex at commit f8f3301, republished under its MIT licence (© ccashwell). 149 words, ~1,987 tokens.
.claude/skills/erc8004-patterns/SKILL.md (or your agent's skills folder).ERC-8004 establishes a standard for AI agent identity onchain. Deployed on January 29, 2026 across 20+ chains, it provides a registry for agents to declare their identity, capabilities, and trust relationships. This enables verifiable agent-to-agent and agent-to-protocol interactions.
interface IERC8004 {
struct AgentIdentity {
address agent; // agent's onchain address (EOA or contract)
bytes32 identityHash; // hash of offchain identity metadata
uint64 registeredAt;
uint64 expiresAt;
address operator; // human or org that controls the agent
uint8 trustLevel; // 0-255 trust score
}
struct Capability {
bytes32 capabilityId; // keccak256 of capability name
bytes params; // ABI-encoded capability parameters
}
event AgentRegistered(address indexed agent, bytes32 identityHash, address indexed operator);
event AgentRevoked(address indexed agent, address indexed revokedBy);
event CapabilityDeclared(address indexed agent, bytes32 indexed capabilityId);
function registerAgent(AgentIdentity calldata identity, Capability[] calldata capabilities) external;
function revokeAgent(address agent) external;
function getIdentity(address agent) external view returns (AgentIdentity memory);
function getCapabilities(address agent) external view returns (Capability[] memory);
function isRegistered(address agent) external view returns (bool);
function hasCapability(address agent, bytes32 capabilityId) external view returns (bool);
function verifyAgent(address agent, bytes32 requiredCapability) external view returns (bool);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import {IERC8004} from "./interfaces/IERC8004.sol";
contract AgentGatedProtocol {
IERC8004 public immutable agentRegistry;
bytes32 public constant TRADE_CAPABILITY = keccak256("trade");
bytes32 public constant REBALANCE_CAPABILITY = keccak256("rebalance");
modifier onlyRegisteredAgent() {
require(agentRegistry.isRegistered(msg.sender), "Not a registered agent");
_;
}
modifier requiresCapability(bytes32 capId) {
require(agentRegistry.verifyAgent(msg.sender, capId), "Missing capability");
_;
}
constructor(address registry_) {
agentRegistry = IERC8004(registry_);
}
function executeTrade(bytes calldata tradeData)
external
onlyRegisteredAgent
requiresCapability(TRADE_CAPABILITY)
{
// Agent-executed trade logic
}
function rebalanceVault()
external
onlyRegisteredAgent
requiresCapability(REBALANCE_CAPABILITY)
{
// Only agents with rebalance capability
}
}contract AgentDeployer {
IERC8004 public registry;
function deployAndRegister(
address agentAddress,
bytes32 identityHash,
uint64 ttl
) external {
IERC8004.AgentIdentity memory identity = IERC8004.AgentIdentity({
agent: agentAddress,
identityHash: identityHash,
registeredAt: uint64(block.timestamp),
expiresAt: uint64(block.timestamp) + ttl,
operator: msg.sender,
trustLevel: 100
});
IERC8004.Capability[] memory caps = new IERC8004.Capability[](2);
caps[0] = IERC8004.Capability({
capabilityId: keccak256("trade"),
params: abi.encode(1 ether) // max trade size
});
caps[1] = IERC8004.Capability({
capabilityId: keccak256("rebalance"),
params: ""
});
registry.registerAgent(identity, caps);
}
}The identityHash references offchain metadata stored on IPFS or a similar system:
{
"name": "TradingBot-v2",
"version": "2.1.0",
"description": "Automated DeFi trading agent",
"operator": {
"name": "Acme Labs",
"url": "https://acmelabs.xyz",
"contact": "ops@acmelabs.xyz"
},
"model": "gpt-4-turbo",
"capabilities": ["trade", "rebalance", "report"],
"auditUrl": "https://audits.example.com/tradingbot-v2",
"sourceCodeHash": "0xabc123..."
}Compute the hash: keccak256(abi.encodePacked(ipfsUri))
contract TrustOracle {
IERC8004 public registry;
mapping(address agent => mapping(address endorser => uint8 score)) public endorsements;
function endorseAgent(address agent, uint8 score) external {
require(registry.isRegistered(agent), "Agent not registered");
require(registry.isRegistered(msg.sender), "Endorser not registered");
endorsements[agent][msg.sender] = score;
}
function aggregateTrust(address agent, address[] calldata endorsers)
external view returns (uint256)
{
uint256 total;
for (uint256 i = 0; i < endorsers.length; i++) {
total += endorsements[agent][endorsers[i]];
}
return endorsers.length > 0 ? total / endorsers.length : 0;
}
}contract AgentCollaboration {
IERC8004 public registry;
event TaskDelegated(address indexed from, address indexed to, bytes32 taskId);
function delegateTask(address toAgent, bytes32 taskId, bytes calldata taskData) external {
require(registry.verifyAgent(msg.sender, keccak256("delegate")), "Cannot delegate");
require(registry.verifyAgent(toAgent, keccak256("execute")), "Cannot execute");
IERC8004.AgentIdentity memory sender = registry.getIdentity(msg.sender);
IERC8004.AgentIdentity memory receiver = registry.getIdentity(toAgent);
require(sender.trustLevel >= 50, "Sender trust too low");
require(receiver.trustLevel >= 50, "Receiver trust too low");
emit TaskDelegated(msg.sender, toAgent, taskId);
}
}ERC-8004 is deployed at the same address on 20+ chains. Query the registry on any supported chain:
import { createPublicClient, http } from 'viem';
import { base, optimism, arbitrum } from 'viem/chains';
// ERC-8004 registries (same addresses on 20+ chains). Verified with `cast code` on
// Ethereum mainnet and Base, 2026-09-25 — re-verify on any other chain before use.
// Source: https://ethskills.com/why/SKILL.md, https://www.8004.org
const ERC8004_IDENTITY_REGISTRY = '0x8004A169FB4a3325136EB29fA0ceB6D2e539a432';
const ERC8004_REPUTATION_REGISTRY = '0x8004BAa17C55a88189AE136b182e5fdA19dE9b63';
const ERC8004_REGISTRY = ERC8004_IDENTITY_REGISTRY;
async function checkAgentOnChain(agentAddress: `0x${string}`, chain: any) {
const client = createPublicClient({ chain, transport: http() });
const isRegistered = await client.readContract({
address: ERC8004_REGISTRY,
abi: erc8004Abi,
functionName: 'isRegistered',
args: [agentAddress],
});
return isRegistered;
}expiresAt > block.timestamp)AgentRevoked)identityHash for offchain metadata verification© ccashwell, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/erc8004-patterns of ccashwell/evm-cortex.
Open the folder on GitHubat commit f8f3301
Erc8004 Patterns 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 |
|---|---|---|---|---|---|---|
| Erc8004 Patterns this skillccashwell/evm-cortex | 131 | — | ~2k | Automated safety check: Pass | MIT | |
| Configuring Horizoncoollabsio/coolify | 63k | 4 repos | ~898 | Automated safety check: Pass | MIT | |
| Nestjs Best Practicesrolling-scopes/rsschool-app | 10k | 6 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Sub2API AdminWei-Shaw/sub2api | 44k | 1 repos | ~717 | Automated safety check: Pass | LGPL-3.0 | |
| Firecrawl Build Onboardingfirecrawl/firecrawl | 190k | 1 repos | ~1.4k | Automated safety check: Notes | ISC | |
| Obsidian BasesAtmosphere/atmosphere | 3.8k | 22 repos | ~3.2k | Automated safety check: Pass | Apache-2.0 |
coollabsio/coolify
A skill your agent uses whenever the user mentions Horizon by name in a Laravel context.
rolling-scopes/rsschool-app
NestJS best practices and architecture patterns for building production-ready applications.
Wei-Shaw/sub2api
Manages a Sub2API deployment from the command line: accounts, redeem and invitation codes, groups, proxies, imports, exports and raw admin API calls.
firecrawl/firecrawl
Gets Firecrawl working in a project: signs you in through the browser, saves FIRECRAWL_API_KEY to .env and picks the first SDK or REST path.
Atmosphere/atmosphere
Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries.
coollabsio/coolify
ACTIVATE when the user works on authentication in Laravel. An agent skill from coollabsio/coolify.
ccashwell/evm-cortex
A skill your agent uses when preparing for a security audit, performing reconnaissance on a new codebase, or creating a protocol overview.
ccashwell/evm-cortex
A skill your agent uses when integrating with Aave V3 for lending, borrowing, flash loans, or building on top of Aave markets.
ccashwell/evm-cortex
Access control design patterns for Solidity protocols. An agent skill from ccashwell/evm-cortex.
ccashwell/evm-cortex
A skill your agent uses when running a local Ethereum node with Anvil.
ccashwell/evm-cortex
A skill your agent uses when performing systematic breadth-first review of all contracts during a security audit.
ccashwell/evm-cortex
A skill your agent uses when performing deep analysis of specific findings or high-risk areas during a security audit.
Categories
A skill your agent uses when integrating ERC-8004 onchain agent identity. Erc8004 Patterns is an agent skill from ccashwell/evm-cortex. Use when integrating ERC-8004 onchain agent identity.
Erc8004 Patterns fits situations like: integrating ERC-8004 onchain agent identity.
Run `npx skills add ccashwell/evm-cortex --skill erc8004-patterns -a claude-code`. Or copy the skill folder (skills/erc8004-patterns in ccashwell/evm-cortex) into .claude/skills/erc8004-patterns in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ccashwell/evm-cortex --skill erc8004-patterns -a codex`. Or copy the skill folder (skills/erc8004-patterns in ccashwell/evm-cortex) into .agents/skills/erc8004-patterns 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 ccashwell/evm-cortex --skill erc8004-patterns -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/erc8004-patterns, .gemini/skills/erc8004-patterns, .github/skills/erc8004-patterns and .opencode/skills/erc8004-patterns in your project.
SKILL.md names no scripts, command-line tools or credentials: Erc8004 Patterns is instructions for the agent only.
SKILL.md names 3 domains. In commands or code: acmelabs.xyz, ethskills.com and 8004.org; the agent is likely to contact these when it follows the instructions. 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.
Erc8004 Patterns is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 7.9k 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 Erc8004 Patterns: Configuring Horizon (coollabsio/coolify, 63k stars), Nestjs Best Practices (rolling-scopes/rsschool-app, 10k stars), Sub2API Admin (Wei-Shaw/sub2api, 44k stars) and Firecrawl Build Onboarding (firecrawl/firecrawl, 190k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ccashwell (a GitHub user) maintains it in ccashwell/evm-cortex, which has 131 GitHub stars. The repository holds 89 skills in this directory. The repository was last updated on September 30, 2026.
Source: ccashwell/evm-cortex on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.