{
  "checked": "2026-10-29",
  "url": "https://setupbay.com/agent-files/",
  "kinds": [
    {
      "id": "instructions",
      "label": "Instructions",
      "blurb": "Plain Markdown read at the start of a session (AGENTS.md and friends)."
    },
    {
      "id": "rules",
      "label": "Rules",
      "blurb": "Extra instruction files, often scoped to paths or loaded on demand."
    },
    {
      "id": "skills",
      "label": "Skills",
      "blurb": "Folders with a SKILL.md, loaded when the agent decides a task needs one."
    },
    {
      "id": "hooks",
      "label": "Hooks",
      "blurb": "Commands the agent runs at fixed points, such as before a tool call."
    },
    {
      "id": "mcp",
      "label": "MCP config",
      "blurb": "Where project and user MCP servers are declared."
    }
  ],
  "agents": [
    {
      "id": "claude-code",
      "name": "Claude Code",
      "version": {
        "number": "2.1.312",
        "date": "2026-10-27",
        "source": "https://code.claude.com/docs/en/changelog"
      },
      "cells": {
        "instructions": {
          "project": [
            "CLAUDE.md",
            ".claude/CLAUDE.md",
            "CLAUDE.local.md",
            "AGENTS.md",
            ".claude/AGENTS.md"
          ],
          "user": [
            "~/.claude/CLAUDE.md"
          ],
          "precedence": "By default AGENTS.md is read only when there is no CLAUDE.md, .claude/CLAUDE.md or CLAUDE.local.md in the working directory or above. If there is one, Claude reads that instead, unless the CLAUDE.md imports @AGENTS.md or Project instructions in /config is set to claude-md-and-agents-md. Files load from the filesystem root down, so the closest one is read last.",
          "note": "Not read: AGENTS.local.md, AGENTS.override.md or anything under .agents/. Subdirectory files load when Claude opens a file there.",
          "since": {
            "version": "2.1.277",
            "date": "2026-09-18",
            "what": "reads AGENTS.md natively when there is no CLAUDE.md",
            "source": "https://code.claude.com/docs/en/changelog"
          },
          "source": "https://code.claude.com/docs/en/memory"
        },
        "rules": {
          "project": [
            ".claude/rules/**/*.md"
          ],
          "user": [
            "~/.claude/rules/**/*.md"
          ],
          "precedence": "Rules without paths frontmatter load at launch with the same priority as .claude/CLAUDE.md. Rules with paths load when Claude reads or edits a matching file. User rules load before project rules; neither overrides the other.",
          "source": "https://code.claude.com/docs/en/memory#organize-rules-with-claude%2Frules%2F"
        },
        "skills": {
          "project": [
            ".claude/skills/<name>/SKILL.md"
          ],
          "user": [
            "~/.claude/skills/<name>/SKILL.md"
          ],
          "precedence": "Enterprise, personal and project skills; nested .claude/skills folders in subdirectories load once Claude works on files there. Files in .claude/commands/ still work and behave like skills.",
          "source": "https://code.claude.com/docs/en/skills"
        },
        "hooks": {
          "project": [
            ".claude/settings.json",
            ".claude/settings.local.json"
          ],
          "user": [
            "~/.claude/settings.json"
          ],
          "precedence": "Hooks are a \"hooks\" block in settings files; plugins can bundle hooks/hooks.json. When an event fires, every matching hook runs, in parallel.",
          "source": "https://code.claude.com/docs/en/hooks"
        },
        "mcp": {
          "project": [
            ".mcp.json"
          ],
          "user": [
            "~/.claude.json"
          ],
          "precedence": "Project servers in .mcp.json need approving the first time. Local and user servers live in ~/.claude.json.",
          "source": "https://code.claude.com/docs/en/mcp"
        }
      }
    },
    {
      "id": "codex",
      "name": "Codex CLI",
      "version": {
        "number": "0.165.0",
        "date": "2026-10-27",
        "source": "https://www.npmjs.com/package/@openai/codex"
      },
      "cells": {
        "instructions": {
          "project": [
            "AGENTS.override.md",
            "AGENTS.md"
          ],
          "user": [
            "~/.codex/AGENTS.override.md",
            "~/.codex/AGENTS.md"
          ],
          "precedence": "Global file first, then one file per directory from the project root down to the working directory: AGENTS.override.md beats AGENTS.md, then any project_doc_fallback_filenames. Files are joined root first, so the closest wins. Stops at project_doc_max_bytes (32 KiB by default).",
          "note": "CLAUDE.md and GEMINI.md are not read unless you add them to project_doc_fallback_filenames.",
          "source": "https://developers.openai.com/codex/guides/agents-md"
        },
        "rules": {
          "project": [],
          "precedence": "No separate rules folder: split instructions with nested AGENTS.md or AGENTS.override.md files.",
          "source": "https://developers.openai.com/codex/guides/agents-md"
        },
        "skills": {
          "project": [
            ".agents/skills/<name>/SKILL.md (every directory from the working directory up to the repo root)"
          ],
          "user": [
            "~/.agents/skills/<name>/SKILL.md"
          ],
          "precedence": "Repository, user, admin and system locations are all scanned. Skills with the same name are not merged; both can appear.",
          "source": "https://developers.openai.com/codex/skills"
        },
        "hooks": {
          "project": [
            ".codex/hooks.json",
            "[hooks] in .codex/config.toml"
          ],
          "user": [
            "~/.codex/hooks.json",
            "[hooks] in ~/.codex/config.toml"
          ],
          "precedence": "All matching hooks from every layer run; higher layers do not replace lower ones. Project hooks load only in trusted projects, and non-managed hooks must be reviewed and trusted before they run.",
          "source": "https://developers.openai.com/codex/hooks"
        },
        "mcp": {
          "project": [
            ".codex/config.toml [mcp_servers.<name>] (trusted projects only)"
          ],
          "user": [
            "~/.codex/config.toml [mcp_servers.<name>]"
          ],
          "precedence": "TOML, not JSON. A project .codex/config.toml is read only when the project is trusted.",
          "source": "https://developers.openai.com/codex/mcp"
        }
      }
    },
    {
      "id": "cursor",
      "name": "Cursor",
      "cells": {
        "instructions": {
          "project": [
            "AGENTS.md (root and subdirectories)"
          ],
          "precedence": "Nested AGENTS.md files combine with their parents; the more specific file takes precedence.",
          "note": ".cursorrules at the root is legacy and will be deprecated; Cursor's migration advice is an Always Apply rule in .cursor/rules.",
          "source": "https://cursor.com/docs/rules#agentsmd",
          "also": "https://cursor.com/help/customization/rules"
        },
        "rules": {
          "project": [
            ".cursor/rules/**/*.mdc"
          ],
          "user": [
            "User Rules in Customize → Rules (synced)",
            "~/.cursor/rules (this machine only)"
          ],
          "precedence": "Team Rules → Project Rules → User Rules; all applicable rules merge and earlier sources win a conflict. Only .mdc files count: a .md file in .cursor/rules is ignored. alwaysApply, globs and description decide when a rule loads.",
          "source": "https://cursor.com/docs/rules",
          "also": "https://cursor.com/help/customization/rules"
        },
        "skills": {
          "project": [
            ".agents/skills/<name>/SKILL.md",
            ".cursor/skills/<name>/SKILL.md",
            ".claude/skills/",
            ".codex/skills/"
          ],
          "user": [
            "~/.agents/skills/",
            "~/.cursor/skills/",
            "~/.claude/skills/",
            "~/.codex/skills/"
          ],
          "precedence": "Claude and Codex skill folders load for compatibility. Skills in nested project folders only surface for files under that folder.",
          "source": "https://cursor.com/docs/skills"
        },
        "hooks": {
          "project": [
            ".cursor/hooks.json",
            ".claude/settings.json",
            ".claude/settings.local.json"
          ],
          "user": [
            "~/.cursor/hooks.json",
            "~/.claude/settings.json"
          ],
          "precedence": "Enterprise → Team → .cursor/hooks.json → ~/.cursor/hooks.json → Claude project local → Claude project → Claude user. All matching hooks run; on conflicting responses the higher source wins. Claude Code hooks load while Third-Party Imports is on (the default).",
          "source": "https://cursor.com/docs/reference/third-party-hooks"
        },
        "mcp": {
          "project": [
            ".cursor/mcp.json"
          ],
          "user": [
            "~/.cursor/mcp.json"
          ],
          "precedence": "Both files use mcpServers. Remote servers take tokens through config interpolation, not envFile.",
          "source": "https://cursor.com/docs/mcp"
        }
      }
    },
    {
      "id": "gemini-cli",
      "name": "Gemini CLI",
      "version": {
        "number": "0.66.0",
        "date": "2026-10-27",
        "source": "https://www.npmjs.com/package/@google/gemini-cli"
      },
      "cells": {
        "instructions": {
          "project": [
            "GEMINI.md (workspace directories and their parents, plus just-in-time in folders a tool touches)"
          ],
          "user": [
            "~/.gemini/GEMINI.md"
          ],
          "precedence": "Global first, then workspace files, then just-in-time files; all are concatenated. AGENTS.md is read only if you list it in context.fileName in settings.json. Imports use @./file.md.",
          "source": "https://geminicli.com/docs/cli/gemini-md/"
        },
        "rules": {
          "project": [],
          "precedence": "No separate rules folder: split GEMINI.md with @imports or nested GEMINI.md files.",
          "source": "https://geminicli.com/docs/cli/gemini-md/"
        },
        "skills": {
          "project": [
            ".agents/skills/<name>/SKILL.md",
            ".gemini/skills/<name>/SKILL.md"
          ],
          "user": [
            "~/.agents/skills/",
            "~/.gemini/skills/"
          ],
          "precedence": "Built-in < extension < user < workspace. Within a tier, .agents/skills beats .gemini/skills.",
          "source": "https://geminicli.com/docs/cli/skills/"
        },
        "hooks": {
          "project": [
            ".gemini/settings.json"
          ],
          "user": [
            "~/.gemini/settings.json",
            "/etc/gemini-cli/settings.json (system)"
          ],
          "precedence": "Project settings → user settings → system settings (highest to lowest).",
          "source": "https://geminicli.com/docs/hooks/"
        },
        "mcp": {
          "project": [
            ".gemini/settings.json mcpServers"
          ],
          "user": [
            "~/.gemini/settings.json mcpServers"
          ],
          "precedence": "HTTP servers use httpUrl; url means SSE.",
          "source": "https://geminicli.com/docs/tools/mcp-server/"
        }
      }
    },
    {
      "id": "antigravity-cli",
      "name": "Antigravity CLI",
      "cells": {
        "instructions": {
          "project": [
            "AGENTS.md",
            "GEMINI.md",
            ".agents/AGENTS.md",
            ".agents/GEMINI.md"
          ],
          "user": [
            "~/.gemini/AGENTS.md",
            "~/.gemini/GEMINI.md",
            "~/.gemini/config/AGENTS.md",
            "~/.gemini/config/GEMINI.md"
          ],
          "precedence": "Cumulative: global, workspace and directory rules are all combined. When Antigravity reads or edits a file it walks up to the workspace root loading each level; on a conflict the more specific directory wins.",
          "source": "https://antigravity.google/docs/rules/"
        },
        "rules": {
          "project": [
            ".agents/rules/*.md",
            ".agent/rules/*.md (legacy)"
          ],
          "user": [
            "~/.gemini/config/rules/*.md (YAML frontmatter required)"
          ],
          "precedence": "Same cumulative order as the instruction files. Only direct .md children of .agents/rules/ are scanned; subfolders are ignored unless registered.",
          "source": "https://antigravity.google/docs/rules/"
        },
        "skills": {
          "project": [
            ".agents/skills/<name>/SKILL.md",
            ".agent/skills/ (legacy)"
          ],
          "user": [
            "~/.gemini/antigravity-cli/skills/"
          ],
          "precedence": "Workspace and global skills; plugins add their own. Gemini CLI's .gemini/skills/ is not read: move it to .agents/skills/.",
          "source": "https://antigravity.google/docs/skills/"
        },
        "hooks": {
          "project": [
            ".agents/hooks.json"
          ],
          "user": [
            "~/.gemini/config/hooks.json"
          ],
          "precedence": "Workspace, global and plugin hooks.json. Hooks in ~/.gemini/antigravity-cli/settings.json are not loaded.",
          "source": "https://antigravity.google/docs/hooks/"
        },
        "mcp": {
          "project": [
            ".agents/mcp_config.json"
          ],
          "user": [
            "~/.gemini/config/mcp_config.json"
          ],
          "precedence": "Remote servers must use Streamable HTTP: serverUrl (url also works). httpUrl and the old HTTP+SSE transport are not supported.",
          "source": "https://antigravity.google/docs/mcp"
        }
      }
    },
    {
      "id": "copilot",
      "name": "GitHub Copilot",
      "version": {
        "number": "1.0.105 (Copilot CLI)",
        "date": "2026-10-28",
        "source": "https://www.npmjs.com/package/@github/copilot"
      },
      "cells": {
        "instructions": {
          "project": [
            ".github/copilot-instructions.md",
            "AGENTS.md",
            "CLAUDE.md",
            ".claude/CLAUDE.md (CLI)",
            "GEMINI.md"
          ],
          "user": [
            "~/.copilot/copilot-instructions.md (CLI)"
          ],
          "precedence": "Copilot CLI combines every file that applies and drops identical copies, but sets no general precedence between them, so avoid conflicts. On GitHub, the nearest AGENTS.md in the tree takes precedence, and a single root CLAUDE.md or GEMINI.md can be used instead. @path includes work in copilot-instructions.md, AGENTS.md and CLAUDE.md, not in GEMINI.md.",
          "source": "https://docs.github.com/en/copilot/how-tos/copilot-cli/customize-copilot/add-custom-instructions"
        },
        "rules": {
          "project": [
            ".github/instructions/**/NAME.instructions.md"
          ],
          "precedence": "Path-specific files with applyTo globs. When one matches and a repository-wide file exists, both are used.",
          "source": "https://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/add-custom-instructions/add-repository-instructions"
        },
        "skills": {
          "project": [
            ".github/skills/",
            ".claude/skills/",
            ".agents/skills/"
          ],
          "user": [
            "~/.copilot/skills/",
            "~/.agents/skills/"
          ],
          "precedence": "Project and personal skills.",
          "source": "https://docs.github.com/en/copilot/concepts/customizations/agent-skills"
        },
        "hooks": {
          "project": [
            ".github/hooks/*.json"
          ],
          "user": [
            "~/.copilot/hooks/*.json (CLI)"
          ],
          "precedence": "Repository hooks for Copilot CLI and the cloud agent; personal hooks for the CLI only.",
          "source": "https://docs.github.com/en/copilot/concepts/customizations/hooks"
        },
        "mcp": {
          "project": [
            ".mcp.json",
            ".github/mcp.json",
            ".vscode/mcp.json (VS Code, \"servers\" key)"
          ],
          "user": [
            "~/.copilot/mcp-config.json (CLI)"
          ],
          "precedence": "Copilot CLI walks from the working directory to the repo root; .mcp.json beats .github/mcp.json in the same folder, closer files beat further ones, and project files beat ~/.copilot/mcp-config.json.",
          "source": "https://docs.github.com/en/copilot/how-tos/copilot-cli/customize-copilot/add-mcp-servers"
        }
      }
    },
    {
      "id": "hermes",
      "name": "Hermes Agent",
      "installTarget": false,
      "version": {
        "number": "0.22.5",
        "date": "2026-10-23",
        "source": "https://github.com/NousResearch/hermes-agent/releases"
      },
      "cells": {
        "instructions": {
          "project": [
            ".hermes.md / HERMES.md",
            "AGENTS.override.md",
            "AGENTS.md",
            "CLAUDE.md",
            ".cursorrules (working directory only)"
          ],
          "user": [
            "SOUL.md in HERMES_HOME (identity, always loaded)"
          ],
          "precedence": "One project context type per session, first match wins: .hermes.md → AGENTS.override.md → AGENTS.md → CLAUDE.md → .cursorrules. In a git repo, AGENTS.md files chain from the git root down to the working directory, deepest last. Outside a repo only the working directory is checked.",
          "source": "https://hermes-agent.nousresearch.com/docs/user-guide/features/context-files"
        },
        "rules": {
          "project": [],
          "precedence": "No separate rules folder. A .cursorrules file is read only if no higher-priority context file exists.",
          "source": "https://hermes-agent.nousresearch.com/docs/user-guide/features/context-files"
        },
        "skills": {
          "project": [],
          "user": [
            "~/.hermes/skills/",
            "skills.external_dirs in ~/.hermes/config.yaml (for example ~/.agents/skills/)"
          ],
          "precedence": "~/.hermes/skills/ is the single source of truth; external directories are scanned alongside it.",
          "source": "https://hermes-agent.nousresearch.com/docs/user-guide/features/skills"
        },
        "hooks": {
          "project": [],
          "user": [
            "hooks: block in the profile config.yaml (shell hooks)",
            "~/.hermes/hooks/ (gateway hooks)",
            "plugins"
          ],
          "precedence": "For pre_tool_call, any valid block beats any approve; Python plugins register before shell hooks.",
          "source": "https://hermes-agent.nousresearch.com/docs/user-guide/features/hooks"
        },
        "mcp": {
          "project": [],
          "user": [
            "mcp_servers in ~/.hermes/config.yaml"
          ],
          "precedence": "hermes import-agent claude-code can bring servers across from ~/.claude.json.",
          "source": "https://hermes-agent.nousresearch.com/docs/user-guide/features/mcp"
        }
      }
    }
  ],
  "glance": {
    "files": [
      "AGENTS.md",
      "CLAUDE.md",
      "GEMINI.md",
      ".cursor/rules/*.mdc",
      ".github/copilot-instructions.md",
      ".agents/skills/"
    ],
    "agents": {
      "claude-code": {
        "AGENTS.md": {
          "v": "partial",
          "note": "Only when there is no CLAUDE.md (v2.1.277+), or via @AGENTS.md"
        },
        "CLAUDE.md": {
          "v": "yes",
          "note": "Main instruction file"
        },
        "GEMINI.md": {
          "v": "no",
          "note": "Not read"
        },
        ".cursor/rules/*.mdc": {
          "v": "no",
          "note": "Only /init reads them to draft a CLAUDE.md"
        },
        ".github/copilot-instructions.md": {
          "v": "no",
          "note": "Only /init reads it to draft a CLAUDE.md"
        },
        ".agents/skills/": {
          "v": "no",
          "note": "Uses .claude/skills/"
        }
      },
      "codex": {
        "AGENTS.md": {
          "v": "yes",
          "note": "Main instruction file"
        },
        "CLAUDE.md": {
          "v": "opt-in",
          "note": "Only via project_doc_fallback_filenames"
        },
        "GEMINI.md": {
          "v": "opt-in",
          "note": "Only via project_doc_fallback_filenames"
        },
        ".cursor/rules/*.mdc": {
          "v": "no",
          "note": "Not read"
        },
        ".github/copilot-instructions.md": {
          "v": "no",
          "note": "Not read"
        },
        ".agents/skills/": {
          "v": "yes",
          "note": "Project and ~/.agents/skills"
        }
      },
      "cursor": {
        "AGENTS.md": {
          "v": "yes",
          "note": "Root and nested"
        },
        "CLAUDE.md": {
          "v": "no",
          "note": "Not in Cursor's rules docs"
        },
        "GEMINI.md": {
          "v": "no",
          "note": "Not read"
        },
        ".cursor/rules/*.mdc": {
          "v": "yes",
          "note": "Project rules"
        },
        ".github/copilot-instructions.md": {
          "v": "no",
          "note": "Not read"
        },
        ".agents/skills/": {
          "v": "yes",
          "note": "Also .cursor, .claude and .codex skills"
        }
      },
      "gemini-cli": {
        "AGENTS.md": {
          "v": "opt-in",
          "note": "Only if listed in context.fileName"
        },
        "CLAUDE.md": {
          "v": "opt-in",
          "note": "Only if listed in context.fileName"
        },
        "GEMINI.md": {
          "v": "yes",
          "note": "Default context file"
        },
        ".cursor/rules/*.mdc": {
          "v": "no",
          "note": "Not read"
        },
        ".github/copilot-instructions.md": {
          "v": "no",
          "note": "Not read"
        },
        ".agents/skills/": {
          "v": "yes",
          "note": "Beats .gemini/skills in the same tier"
        }
      },
      "antigravity-cli": {
        "AGENTS.md": {
          "v": "yes",
          "note": "Root, .agents/ and subdirectories"
        },
        "CLAUDE.md": {
          "v": "no",
          "note": "Not in Antigravity's rules docs"
        },
        "GEMINI.md": {
          "v": "yes",
          "note": "Read alongside AGENTS.md"
        },
        ".cursor/rules/*.mdc": {
          "v": "no",
          "note": "Uses .agents/rules/*.md"
        },
        ".github/copilot-instructions.md": {
          "v": "no",
          "note": "Not read"
        },
        ".agents/skills/": {
          "v": "yes",
          "note": "Default skills folder"
        }
      },
      "copilot": {
        "AGENTS.md": {
          "v": "yes",
          "note": "Nearest one wins on GitHub"
        },
        "CLAUDE.md": {
          "v": "yes",
          "note": "CLI; on GitHub a single root file"
        },
        "GEMINI.md": {
          "v": "yes",
          "note": "CLI; on GitHub a single root file"
        },
        ".cursor/rules/*.mdc": {
          "v": "no",
          "note": "Uses .github/instructions/"
        },
        ".github/copilot-instructions.md": {
          "v": "yes",
          "note": "Repository-wide"
        },
        ".agents/skills/": {
          "v": "yes",
          "note": "Also .github/skills and .claude/skills"
        }
      },
      "hermes": {
        "AGENTS.md": {
          "v": "yes",
          "note": "Unless .hermes.md or AGENTS.override.md is present"
        },
        "CLAUDE.md": {
          "v": "partial",
          "note": "Only when there is no .hermes.md or AGENTS.md"
        },
        "GEMINI.md": {
          "v": "no",
          "note": "Not in Hermes' context file list"
        },
        ".cursor/rules/*.mdc": {
          "v": "no",
          "note": "Reads only a root .cursorrules, last in line"
        },
        ".github/copilot-instructions.md": {
          "v": "no",
          "note": "Not read"
        },
        ".agents/skills/": {
          "v": "opt-in",
          "note": "Add it to skills.external_dirs"
        }
      }
    }
  },
  "changes": [
    {
      "date": "2026-09-29",
      "agent": "claude-code",
      "version": "2.1.285",
      "text": "Claude Code 2.1.285 renamed the built-in plugin that reads AGENTS.md to cc-plugin-agents-md@builtin (was agents-md@builtin); both IDs are accepted in settings.",
      "url": "https://code.claude.com/docs/en/memory#choose-which-instruction-files-load",
      "source": "claudeMemory"
    },
    {
      "date": "2026-09-23",
      "agent": "claude-code",
      "version": "2.1.281",
      "text": "Claude Code 2.1.281: AGENTS.md also loads in sessions that could not read it before, such as Amazon Bedrock or with telemetry turned off.",
      "url": "https://code.claude.com/docs/en/memory#when-agents-md-support-is-unavailable",
      "source": "claudeMemory"
    },
    {
      "date": "2026-09-22",
      "agent": "claude-code",
      "version": "2.1.280",
      "text": "Claude Code 2.1.280: /memory and /context list an AGENTS.md that Claude read directly.",
      "url": "https://code.claude.com/docs/en/memory#my-agents-md-isnt-loading",
      "source": "claudeMemory"
    },
    {
      "date": "2026-09-18",
      "agent": "claude-code",
      "version": "2.1.277",
      "text": "Claude Code 2.1.277 reads AGENTS.md natively when there is no CLAUDE.md or CLAUDE.local.md in the working directory or above. Change it with Project instructions in /config.",
      "url": "https://code.claude.com/docs/en/changelog",
      "source": "claudeMemory"
    }
  ],
  "published": {
    "date": "2026-10-29",
    "text": "Page published. Every cell read against current vendor docs and changelogs on this date."
  }
}