Back to catalogue
ContextSessionStartSessionStartOn Claude Code session start· non-blocking
AGENTS.md context loader
Reads AGENTS.md from the project root at session start and injects it as additional context. Works seamlessly alongside CLAUDE.md — useful for projects that use the OpenAI Codex / multi-agent AGENTS.md convention to document agent roles, capabilities and coordination rules.
Use cases
- Multi-agent projects using AGENTS.md for role definitions
- Teams migrating from Codex/OpenAI Codex to Claude Code
- Projects with explicit agent coordination rules
Providers & tags
Claude Code
#session#context#agents#multi-agent
settings.json fragment
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "node $CLAUDE_PROJECT_DIR/.claude/hooks/agents-md-loader.mjs"
}
]
}
]
}
}Script · .claude/hooks/agents-md-loader.mjs
#!/usr/bin/env node
// Charge AGENTS.md comme contexte supplémentaire au démarrage de session (SessionStart)
import { readFileSync, existsSync } from 'fs';
import { join } from 'path';
import { fileURLToPath } from 'url';
export function run(
_input,
{
projectDir = process.env.CLAUDE_PROJECT_DIR,
readFile = readFileSync,
fileExists = existsSync,
} = {},
) {
if (!projectDir) return null;
const agentsPath = join(projectDir, 'AGENTS.md');
if (!fileExists(agentsPath)) return null;
const content = readFile(agentsPath, 'utf8');
if (!content.trim()) return null;
return {
hookSpecificOutput: {
hookEventName: 'SessionStart',
additionalContext: content,
},
};
}
/* v8 ignore next 5 */
if (process.argv[1] === fileURLToPath(import.meta.url)) {
const input = JSON.parse(readFileSync(0, 'utf8'));
const result = run(input);
if (result) process.stdout.write(JSON.stringify(result));
}