Start here
Configuration
Every field of .agentyx.json — packs, optional capabilities, exclusions, targets, local Skills, project metadata and context.
.agentyx.json is the desired state for this project. Provider files never rewrite it: configure
edits it, and sync converges installed state onto it. Unknown keys are rejected rather than
ignored, and invalid configuration always throws a descriptive error — Agentyx never silently
repairs it.
{
"packs": ["technical", "typescript", "efficiency"],
"enable": ["rtk", "codebase-memory"],
"targets": ["codex", "claude", "kimi", "qwen"]
}
Core fields
| Field | Type | Meaning |
|---|---|---|
$schema |
string, optional | Path or URL to the Agentyx JSON Schema, for editor completion. |
packs |
string[] | Capability packs this project selects. Defaults to []. |
enable |
string[] | Optional capabilities to activate by id, lowercase kebab-case. Defaults to []. |
exclude |
object, optional | Typed capabilities to remove from the selected packs. |
targets |
string[] | Coding-agent providers this project targets. Defaults to []. |
skillDirectories |
string[], optional | Project-relative roots whose direct children are Agent Skills. |
localPacks |
object[], optional | Project-owned packs referencing built-in or local Skills. |
trustedSources |
object[], optional | Pinned local checkouts of known external skill or plugin sources. |
project |
object, optional | Identity and ownership for this project. |
relations |
object[], optional | Direct architectural relationships to other projects. |
context |
object, optional | Explicit repository-local facts for the generated project context Skill. |
targets stays an open list of strings on purpose, so a third-party adapter can register a provider
without a schema change. The built-in ids are codex, claude, kimi and qwen.
Excluding a capability
Exclusions are typed, so removing a Skill cannot accidentally remove an MCP server of the same name:
{
"packs": ["efficiency", "testing"],
"exclude": {
"skills": ["flaky-tests"],
"mcpServers": ["playwright"],
"tools": ["rtk"],
"hooks": ["observe-tool-use"],
"agents": ["agentyx-reviewer"]
}
}
Each list defaults to [].
Skill directories and local packs
skillDirectories points at vendored Skills. Paths must be portable and project-relative: absolute
paths, Windows drive letters, backslashes and parent traversal are all rejected.
{
"skillDirectories": ["local-skills"],
"localPacks": [
{
"name": "local-smoke",
"skills": ["local-smoke-skill"],
"mcpServers": [{ "name": "playwright", "activation": "optional" }]
}
]
}
Agentyx validates and installs the canonical Markdown from those directories. It performs no network
access and does not yet copy resource-bearing Skill trees (scripts/, references/, assets/).
Project metadata, relations and context
These generate one canonical agentyx-project-context Skill, installed identically into every
target.
{
"project": {
"id": "smoke-web",
"name": "Smoke Web",
"owns": ["frontend"]
},
"relations": [
{
"id": "smoke-api",
"name": "Smoke API",
"type": "consumes",
"role": "backend-api",
"owns": ["backend-api"]
}
],
"context": {
"commands": { "test": { "command": "pnpm test", "cwd": "." } },
"areas": [{ "path": "packages/core", "purpose": "Domain model." }],
"constraints": ["Commands and graph metadata are descriptive."]
}
}
relations[].type is one of uses, integrates, consumes or extends.
Three invariants are enforced:
relationsrequiresprojectmetadata.- A project cannot relate to itself, and relation ids must be unique.
context.areas[].pathentries must be unique.
Repository and documentation links are descriptive references. Agentyx does not fetch them, call declared MCP servers, or infer relationships from package dependencies. Commands are never executed.
Reading it back
pnpm dlx @agentyx/cli resolve # what the current configuration resolves to
pnpm dlx @agentyx/cli resolve --explain # why each capability is present
pnpm dlx @agentyx/cli recommend # what this project's own files suggest, read-only
pnpm dlx @agentyx/cli graph # declared project relationships
recommend is deterministic detection, not an AI feature: no network request, no telemetry, and no
model call decides a recommendation.