Skip to content

Configuration Explained

The auto-generated Config reference pages show the raw JSON tables for each kit’s registry fragments. This page explains what those fragments mean and how they work together at runtime.

TheOneKit’s runtime reads three types of JSON fragment files from .claude/. Each type has a different job and a different merge strategy. See Architecture for the priority stack that determines which fragment wins when multiple kits define the same key.

t1k-routing-{layer}.json — agent delegation

Section titled “t1k-routing-{layer}.json — agent delegation”

Routing fragments answer the question: “For role X in this project, which agent should handle it?”

Commands like /t1k:cook, /t1k:fix, /t1k:test, and /t1k:review are role-based — they ask for the implementer, tester, or reviewer rather than hard-coding an agent name. The routing fragment resolves the role to a concrete agent name.

Core routing (priority 10) — the fallback layer:

RoleDefault agent
implementert1k-fullstack-developer
testert1k-tester
reviewert1k-code-reviewer
debuggert1k-debugger
brainstormert1k-brainstormer
plannert1k-planner
docs-managert1k-docs-manager
git-managert1k-git-manager
project-managert1k-project-manager
skills-managert1k-skills-manager
kit-developert1k-kit-developer

Engine kits (priority 90) override specific roles without touching the others. A Unity project replaces implementer with dots-implementer but leaves reviewer and planner pointing to the core defaults.

Engine-specific roles (optimizer, shader, game-developer, ui-developer, etc.) are intentionally absent from core — they are only provided by engine kits. This prevents the wrong agent from being silently selected when an engine role keyword fires in a project that does not have an engine kit installed.

The routing fragment also contains an errorRecovery map:

{
"errorRecovery": {
"compilation": "implementer",
"test-failure": "t1k-tester",
"runtime": "t1k-debugger",
"performance": "optimizer"
}
}

t1k-activation-{layer}.json — keyword-to-skill mapping

Section titled “t1k-activation-{layer}.json — keyword-to-skill mapping”

Activation fragments answer the question: “When the user’s prompt contains keyword X, which skills should be pre-loaded?”

Unlike routing, activation is additive — all matching fragments contribute, and higher-priority fragments cannot suppress lower-priority ones. This lets engine kits add domain-specific skills on top of core without losing any core coverage.

Each mapping entry has a keywords list and a skills list:

{
"mappings": [
{
"keywords": ["auth", "login", "token", "oauth"],
"skills": ["t1k-security"]
}
]
}

When the user types a prompt containing "auth", the activation algorithm collects every skill from every fragment whose keyword list includes "auth". If the Unity kit also maps "auth" to "unity-auth-skill", both t1k-security and unity-auth-skill are activated.

sessionBaseline — an optional list of skills that are always activated at session start, regardless of prompt content. Core’s baseline is empty; engine kits may add engine-specific skills.

t1k-config-{layer}.json — session behaviour and feature flags

Section titled “t1k-config-{layer}.json — session behaviour and feature flags”

Config fragments control everything that isn’t routing or activation: feature flags, MCP server requirements, telemetry, repo URLs, CLI configuration, and more.

Key sections in t1k-config-core.json:

features — boolean flags controlling session behaviour:

FlagDefaultEffect
executionTracetrueLog agent delegation chain for debugging
telemetrytrueSend anonymised usage data to the T1K telemetry endpoint
autoUpdatetrueCheck for kit updates at session start
autoUpdateMajortrueInclude major-version updates in auto-update
autoIssueSubmissiontrueAuto-file GitHub issues for detected skill bugs
autoLessonSynctrueAuto-sync learned lessons back to kit repos via PR
hookLoggingtrueWrite hook execution logs for debugging
autoCommitKitSynctrueAuto-commit kit-sync changes
autoPushKitSynctrueAuto-push kit-sync commits

mcp — required and optional MCP server declarations:

{
"mcp": {
"required": [
{
"name": "github",
"purpose": "GitHub issue/PR management for triage, sync-back, issue reporting",
"installCmd": "claude mcp add github"
},
{
"name": "context7",
"purpose": "Library/framework documentation lookup for planning and implementation",
"installCmd": "claude mcp add context7 --transport http -- https://mcp.context7.com/mcp"
},
{
"name": "sequential-thinking",
"purpose": "Structured step-by-step analysis for problem-solving when stuck",
"installCmd": "claude mcp add sequential-thinking -- npx -y @modelcontextprotocol/server-sequential-thinking"
},
{
"name": "memory",
"purpose": "Cross-session knowledge persistence via knowledge graph",
"installCmd": "claude mcp add memory -- npx -y @modelcontextprotocol/server-memory"
}
],
"optional": [
{ "name": "playwright", "purpose": "Browser automation for E2E testing and visual regression" },
{ "name": "chrome-devtools", "purpose": "Browser DevTools for console, network, and performance analysis" }
]
}
}

telemetry — sends anonymised session data to https://t1k-telemetry.the1studio.org/ingest (GitHub token auth, max 2000 chars of prompt, 90-day retention).

issueClaim — prevents duplicate PRs by claiming GitHub issues before work starts. In-scope repos: The1Studio/theonekit-* and The1Studio/t1k-*. enforcementMode: "hard-block" means the CLI blocks work if another engineer already holds the claim.

The model-router kit ships its own config fragment at t1k-config-mr.json. This is separate from the core config and is only present when theonekit-model-router:model-router is installed (included in all three core presets by default).

In transparent mode, the model-router intercepts every Task tool call (sub-agent spawn) and re-routes it to a cheaper provider, while keeping the agent’s identity, prompt, and tools intact. The calling agent sees the same result as if the original Anthropic model had run.

{
"modelRouter": {
"enabled": true,
"mode": "transparent",
"modelMapping": {
"claude-sonnet-4-6": {
"provider": "kimi",
"model": "kimi-k2.6"
},
"claude-haiku-4-5-20251001": {
"provider": "kimi",
"model": "kimi-k2.5"
}
},
"excludeAgents": []
}
}

modelMapping is keyed by the agent’s declared model: frontmatter field. When a sub-agent is spawned whose frontmatter declares model: claude-sonnet-4-6, the router intercepts the Task and runs the agent on kimi/kimi-k2.6 instead. The agent code, prompt, and tools are unchanged.

excludeAgents is an array of agent names that are never intercepted — they always run on Anthropic. Use this to protect agents where reasoning quality is critical (e.g., the planner or architect agents).

{
"failover": {
"enabled": true,
"chain": {
"kimi": "opencode-go",
"opencode-go": "kimi",
"codex": "kimi"
},
"fallbackToAnthropic": true
}
}

When the primary provider returns a failure signal (HTTP 429, 5xx, timeout, rate-limit message), the router advances to the next hop in the chain map. If all hops fail and fallbackToAnthropic is true, the original Anthropic Task runs as the final fallback.

The router is only active when modelRouter.enabled is true and modelRouter.mode is "transparent". Setting either to a different value disables routing without removing the config file.

Presets are defined in t1k-modules.json under the presets key. Each preset lists the modules to install and an optional crossKitModules array for modules from other kits.

{
"presets": {
"full": {
"modules": ["t1k-base", "t1k-extended", "t1k-maintainer"],
"crossKitModules": ["theonekit-model-router:model-router"]
},
"developer": {
"modules": ["t1k-base", "t1k-extended"],
"crossKitModules": ["theonekit-model-router:model-router"]
},
"maintainer": {
"modules": ["t1k-base", "t1k-extended", "t1k-maintainer"],
"crossKitModules": ["theonekit-model-router:model-router"]
}
}
}

crossKitModules entries use the format "{kit-repo}:{module-name}". The CLI resolves the correct release ZIP for the referenced kit and installs the named module alongside the local ones.

All three core presets include theonekit-model-router:model-router — so transparent routing is enabled by default on every fresh t1k init --preset * invocation.

Config fragments are merged at priority order. To override a feature flag for your project, add a higher-priority fragment:

{
"registryVersion": 1,
"priority": 95,
"features": {
"autoUpdate": false
}
}

Name the file following the pattern t1k-config-{your-layer}.json and place it under .claude/. It will be picked up at session start and merged with the standard fragments.

Do not hand-edit the kit-shipped fragments under .claude/ — they are overwritten on t1k modules update.