.agents/README.md
This directory is the neutral, repo-owned source of truth for agent behavior in Langfuse.
Use .agents/ for configuration and guidance that should apply across tools.
Do not put durable shared guidance only in .claude/, .codex/, .cursor/,
or .vscode/.
AGENTS.md: canonical shared root instructionsconfig.json: shared bootstrap and MCP configuration used to generate
tool-specific shimsskills/: shared, tool-neutral implementation guidance for recurring
workflowsconfig.json.agents/config.json contains four kinds of data:
shared: defaults used across toolsmcpServers: project MCP servers and how to connect to themclaude: Claude-specific generated settings inputscodex: Codex-specific generated settings inputscursor: Cursor-specific generated settings inputsCurrent shape:
{
"shared": {
"setupScript": "bash scripts/codex/setup.sh",
"devCommand": "pnpm run dev",
"devTerminalDescription": "Main development terminal running the development server"
},
"mcpServers": {
"playwright": {
"transport": "stdio",
"command": "npx",
"args": ["-y", "@playwright/mcp@latest"]
},
"datadog": {
"transport": "http",
"url": "https://mcp.datadoghq.com/api/unstable/mcp-server/mcp"
}
},
"claude": {
"settings": {}
},
"codex": {
"environment": {
"version": 1,
"name": "langfuse"
}
},
"cursor": {
"environment": {
"agentCanUpdateSnapshot": false
}
}
}
scripts/agents/sync-agent-shims.mjs reads .agents/config.json and writes the
tool discovery files that those products require.
Generated local artifacts:
.claude/settings.json.claude/skills/*.cursor/environment.json.cursor/mcp.json.vscode/mcp.json.mcp.json.codex/config.toml.codex/environments/environment.tomlThe repo root discovery files remain committed as symlinks:
AGENTS.md -> .agents/AGENTS.mdCLAUDE.md -> AGENTS.mdThis keeps provider discovery stable while .agents/ remains the source of
truth.
config.jsonEdit .agents/config.json when you need to:
Do not edit generated shim files by hand. Edit the canonical files in
.agents/ instead.
config.jsonAdd a new entry under mcpServers.
For stdio servers:
{
"mcpServers": {
"example": {
"transport": "stdio",
"command": "npx",
"args": ["-y", "some-package"]
}
}
}
For HTTP servers:
{
"mcpServers": {
"example": {
"transport": "http",
"url": "https://example.com/mcp"
}
}
}
Optional fields:
env for stdio serversheaders for HTTP serversUpdate values in shared:
setupScriptdevCommanddevTerminalDescriptionOnly add tool-specific fields when they are required to generate a discovery file for a supported tool. Keep the shared config minimal and neutral.
After editing .agents/config.json:
pnpm run agents:syncpnpm run agents:check.claude/skills/ or the
generated MCP/runtime config pathsAGENTS.md or CONTRIBUTING.md if the shared workflow materially
changedpnpm install also runs the sync/check flow via postinstall.
Shared skills live under .agents/skills/.
Use them for durable, reusable guidance such as:
Do not use skills for one-off task notes or tool runtime configuration.
pnpm run agents:sync projects the shared skills into .claude/skills/ so
Claude can discover the same repo-owned skills.
For the skill authoring workflow, see skills/README.md.