mirror of
https://github.com/itme-brain/agent-team.git
synced 2026-05-08 10:40:12 -04:00
feat(protocol): add authored runtime and team configs
This commit is contained in:
parent
7f0892d67b
commit
84882d3b9c
6 changed files with 1274 additions and 0 deletions
51
SETTINGS.yaml
Normal file
51
SETTINGS.yaml
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
# yaml-language-server: $schema=./schemas/agent-runtime.schema.json
|
||||
|
||||
version: 1
|
||||
|
||||
model:
|
||||
class: balanced
|
||||
reasoning: medium
|
||||
|
||||
runtime:
|
||||
filesystem: workspace-write
|
||||
approval: guarded-auto
|
||||
network_access: false
|
||||
tools:
|
||||
- shell
|
||||
- read
|
||||
- edit
|
||||
- write
|
||||
- glob
|
||||
- grep
|
||||
- web_fetch
|
||||
- web_search
|
||||
|
||||
safety:
|
||||
protected_paths:
|
||||
- ~/.ssh/**
|
||||
- ~/.aws/**
|
||||
- ~/.gnupg/**
|
||||
- "**/.env*"
|
||||
dangerous_shell_commands:
|
||||
ask:
|
||||
- rm *
|
||||
- rmdir *
|
||||
- git push --force*
|
||||
- git push -f*
|
||||
- git reset --hard*
|
||||
- git clean *
|
||||
- chmod *
|
||||
- dd *
|
||||
- mkfs*
|
||||
- shred *
|
||||
- kill *
|
||||
- killall *
|
||||
- sudo *
|
||||
|
||||
targets:
|
||||
claude:
|
||||
claude_md_excludes:
|
||||
- .claude/agent-memory/**
|
||||
codex:
|
||||
approval_policy: untrusted
|
||||
network_access: false
|
||||
276
TEAM.yaml
Normal file
276
TEAM.yaml
Normal file
|
|
@ -0,0 +1,276 @@
|
|||
version: 1
|
||||
|
||||
agents:
|
||||
order:
|
||||
- architect
|
||||
- auditor
|
||||
- debugger
|
||||
- documenter
|
||||
- researcher
|
||||
- reviewer
|
||||
- worker
|
||||
items:
|
||||
architect:
|
||||
id: architect
|
||||
name: architect
|
||||
description: Research-first planning agent. Handles triage, research coordination, architecture design, and wave decomposition. Use before any non-trivial implementation task. Produces the implementation blueprint the entire team follows.
|
||||
model: opus
|
||||
effort: max
|
||||
permission_mode: plan
|
||||
tools:
|
||||
- Read
|
||||
- Glob
|
||||
- Grep
|
||||
- WebFetch
|
||||
- WebSearch
|
||||
- Bash
|
||||
- Write
|
||||
disallowed_tools: []
|
||||
max_turns: 35
|
||||
skills:
|
||||
- conventions
|
||||
- message-schema
|
||||
instruction_file: agents/architect.md
|
||||
auditor:
|
||||
id: auditor
|
||||
name: auditor
|
||||
description: Use after implementation — audits for security vulnerabilities and validates runtime behavior. Builds, tests, and probes acceptance criteria. Never modifies code.
|
||||
model: sonnet
|
||||
effort: ""
|
||||
permission_mode: ""
|
||||
tools:
|
||||
- Read
|
||||
- Glob
|
||||
- Grep
|
||||
- Bash
|
||||
- WebFetch
|
||||
- WebSearch
|
||||
disallowed_tools:
|
||||
- Write
|
||||
- Edit
|
||||
max_turns: 25
|
||||
skills:
|
||||
- conventions
|
||||
- message-schema
|
||||
- qa-checklist
|
||||
background: true
|
||||
instruction_file: agents/auditor.md
|
||||
debugger:
|
||||
id: debugger
|
||||
name: debugger
|
||||
description: Use immediately when encountering a bug, error, or unexpected behavior. Diagnoses root cause and applies a minimal targeted fix. Does not refactor or improve surrounding code.
|
||||
model: sonnet
|
||||
effort: ""
|
||||
permission_mode: acceptEdits
|
||||
tools:
|
||||
- Read
|
||||
- Write
|
||||
- Edit
|
||||
- Glob
|
||||
- Grep
|
||||
- Bash
|
||||
disallowed_tools: []
|
||||
max_turns: 20
|
||||
skills:
|
||||
- conventions
|
||||
- worker-protocol
|
||||
- message-schema
|
||||
- qa-checklist
|
||||
instruction_file: agents/debugger.md
|
||||
documenter:
|
||||
id: documenter
|
||||
name: documenter
|
||||
description: Use when asked to write or update documentation — READMEs, API references, architecture overviews, inline doc comments, or changelogs. Reads code first, writes accurate docs. Never modifies source code.
|
||||
model: sonnet
|
||||
effort: high
|
||||
permission_mode: ""
|
||||
tools:
|
||||
- Read
|
||||
- Write
|
||||
- Edit
|
||||
- Glob
|
||||
- Grep
|
||||
- Bash
|
||||
disallowed_tools: []
|
||||
max_turns: 20
|
||||
skills:
|
||||
- conventions
|
||||
- worker-protocol
|
||||
- message-schema
|
||||
- qa-checklist
|
||||
memory: project
|
||||
instruction_file: agents/documenter.md
|
||||
researcher:
|
||||
id: researcher
|
||||
name: researcher
|
||||
description: Use to answer a specific research question with verified facts. Spawned in parallel — one instance per topic. Stateless. Returns verified facts, source URLs, and gotchas.
|
||||
model: sonnet
|
||||
effort: ""
|
||||
permission_mode: plan
|
||||
tools:
|
||||
- Read
|
||||
- Glob
|
||||
- Grep
|
||||
- Bash
|
||||
- WebFetch
|
||||
- WebSearch
|
||||
disallowed_tools:
|
||||
- Write
|
||||
- Edit
|
||||
max_turns: 10
|
||||
skills:
|
||||
- message-schema
|
||||
instruction_file: agents/researcher.md
|
||||
reviewer:
|
||||
id: reviewer
|
||||
name: reviewer
|
||||
description: Use after implementation — reviews code quality and verifies claims against source, docs, and acceptance criteria. Never modifies code.
|
||||
model: sonnet
|
||||
effort: ""
|
||||
permission_mode: plan
|
||||
tools:
|
||||
- Read
|
||||
- Glob
|
||||
- Grep
|
||||
- Bash
|
||||
- WebFetch
|
||||
- WebSearch
|
||||
disallowed_tools:
|
||||
- Write
|
||||
- Edit
|
||||
max_turns: 20
|
||||
skills:
|
||||
- conventions
|
||||
- message-schema
|
||||
- qa-checklist
|
||||
instruction_file: agents/reviewer.md
|
||||
worker:
|
||||
id: worker
|
||||
name: worker
|
||||
description: Universal implementer. Handles all task tiers — trivial to architectural. Model is scaled by the orchestrator based on task complexity (haiku for trivial, sonnet for standard, opus for architectural/ambiguous). Default implementer for all implementation work.
|
||||
model: sonnet
|
||||
effort: ""
|
||||
permission_mode: acceptEdits
|
||||
tools:
|
||||
- Read
|
||||
- Write
|
||||
- Edit
|
||||
- Glob
|
||||
- Grep
|
||||
- Bash
|
||||
disallowed_tools: []
|
||||
max_turns: 25
|
||||
skills:
|
||||
- conventions
|
||||
- worker-protocol
|
||||
- message-schema
|
||||
- qa-checklist
|
||||
isolation: worktree
|
||||
instruction_file: agents/worker.md
|
||||
|
||||
skills:
|
||||
order:
|
||||
- conventions
|
||||
- message-schema
|
||||
- orchestrate
|
||||
- qa-checklist
|
||||
- worker-protocol
|
||||
items:
|
||||
conventions:
|
||||
id: conventions
|
||||
name: conventions
|
||||
description: Core coding conventions and quality priorities for all projects.
|
||||
instruction_file: skills/conventions/SKILL.md
|
||||
applies_to:
|
||||
- claude
|
||||
- codex
|
||||
install_mode: shared
|
||||
message-schema:
|
||||
id: message-schema
|
||||
name: message-schema
|
||||
description: Typed envelope schema for all inter-agent communication. Defines message types, required fields, and signal routing contracts.
|
||||
instruction_file: skills/message-schema/SKILL.md
|
||||
applies_to:
|
||||
- claude
|
||||
- codex
|
||||
install_mode: shared
|
||||
orchestrate:
|
||||
id: orchestrate
|
||||
name: orchestrate
|
||||
description: Orchestration framework for decomposing and delegating complex tasks to the agent team. Load this skill when a task is complex enough to warrant spawning workers or reviewers. Covers task tiers, planning pipeline, wave dispatch, review, and git flow.
|
||||
instruction_file: skills/orchestrate/SKILL.md
|
||||
applies_to:
|
||||
- claude
|
||||
- codex
|
||||
install_mode: shared
|
||||
qa-checklist:
|
||||
id: qa-checklist
|
||||
name: qa-checklist
|
||||
description: Self-validation checklist. All workers run this against their own output before returning results.
|
||||
instruction_file: skills/qa-checklist/SKILL.md
|
||||
applies_to:
|
||||
- claude
|
||||
- codex
|
||||
install_mode: shared
|
||||
worker-protocol:
|
||||
id: worker-protocol
|
||||
name: worker-protocol
|
||||
description: Standard output format, feedback handling, and operational procedures for all worker agents.
|
||||
instruction_file: skills/worker-protocol/SKILL.md
|
||||
applies_to:
|
||||
- claude
|
||||
- codex
|
||||
install_mode: shared
|
||||
|
||||
rules:
|
||||
order:
|
||||
- 01-session
|
||||
- 02-responses
|
||||
- 03-git
|
||||
- 04-tools
|
||||
- 05-verification
|
||||
- 06-nix
|
||||
- 07-research
|
||||
items:
|
||||
01-session:
|
||||
id: 01-session
|
||||
source_file: rules/01-session.md
|
||||
applies_to:
|
||||
- claude
|
||||
- codex
|
||||
02-responses:
|
||||
id: 02-responses
|
||||
source_file: rules/02-responses.md
|
||||
applies_to:
|
||||
- claude
|
||||
- codex
|
||||
03-git:
|
||||
id: 03-git
|
||||
source_file: rules/03-git.md
|
||||
applies_to:
|
||||
- claude
|
||||
- codex
|
||||
04-tools:
|
||||
id: 04-tools
|
||||
source_file: rules/04-tools.md
|
||||
applies_to:
|
||||
- claude
|
||||
- codex
|
||||
05-verification:
|
||||
id: 05-verification
|
||||
source_file: rules/05-verification.md
|
||||
applies_to:
|
||||
- claude
|
||||
- codex
|
||||
06-nix:
|
||||
id: 06-nix
|
||||
source_file: rules/06-nix.md
|
||||
applies_to:
|
||||
- claude
|
||||
- codex
|
||||
07-research:
|
||||
id: 07-research
|
||||
source_file: rules/07-research.md
|
||||
applies_to:
|
||||
- claude
|
||||
- codex
|
||||
162
schemas/agent-runtime.schema.json
Normal file
162
schemas/agent-runtime.schema.json
Normal file
|
|
@ -0,0 +1,162 @@
|
|||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://example.com/schemas/agent-runtime.schema.json",
|
||||
"title": "Agent Runtime Config",
|
||||
"description": "Portable runtime policy for deriving tool-specific AI harness configuration.",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"version",
|
||||
"model",
|
||||
"runtime",
|
||||
"safety"
|
||||
],
|
||||
"properties": {
|
||||
"version": {
|
||||
"type": "integer",
|
||||
"const": 1
|
||||
},
|
||||
"model": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"class",
|
||||
"reasoning"
|
||||
],
|
||||
"properties": {
|
||||
"class": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fast",
|
||||
"balanced",
|
||||
"powerful"
|
||||
],
|
||||
"description": "Portable model tier. Adapters map this to provider-specific model names."
|
||||
},
|
||||
"reasoning": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"max"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"filesystem",
|
||||
"approval",
|
||||
"network_access",
|
||||
"tools"
|
||||
],
|
||||
"properties": {
|
||||
"filesystem": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"read-only",
|
||||
"workspace-write"
|
||||
]
|
||||
},
|
||||
"approval": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"manual",
|
||||
"guarded-auto",
|
||||
"full-auto"
|
||||
],
|
||||
"description": "Portable approval intent. Adapters degrade where exact behavior is unavailable."
|
||||
},
|
||||
"network_access": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"tools": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"shell",
|
||||
"read",
|
||||
"edit",
|
||||
"write",
|
||||
"glob",
|
||||
"grep",
|
||||
"web_fetch",
|
||||
"web_search"
|
||||
]
|
||||
},
|
||||
"uniqueItems": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"safety": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"protected_paths",
|
||||
"dangerous_shell_commands"
|
||||
],
|
||||
"properties": {
|
||||
"protected_paths": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"dangerous_shell_commands": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"ask"
|
||||
],
|
||||
"properties": {
|
||||
"ask": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"targets": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"claude": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"claude_md_excludes": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"codex": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"approval_policy": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"on-request",
|
||||
"untrusted",
|
||||
"never"
|
||||
]
|
||||
},
|
||||
"network_access": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
544
schemas/team.schema.json
Normal file
544
schemas/team.schema.json
Normal file
|
|
@ -0,0 +1,544 @@
|
|||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://example.com/schemas/team.schema.json",
|
||||
"title": "Team Protocol Config",
|
||||
"description": "Portable team-level inventory and metadata for agents, skills, and rules. For v1 this schema enforces strict inventory membership/order; generator runtime still validates referenced files exist on disk.",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"version",
|
||||
"agents",
|
||||
"skills",
|
||||
"rules"
|
||||
],
|
||||
"properties": {
|
||||
"version": {
|
||||
"type": "integer",
|
||||
"const": 1
|
||||
},
|
||||
"agents": {
|
||||
"$ref": "#/$defs/inventory_agents"
|
||||
},
|
||||
"skills": {
|
||||
"$ref": "#/$defs/inventory_skills"
|
||||
},
|
||||
"rules": {
|
||||
"$ref": "#/$defs/inventory_rules"
|
||||
}
|
||||
},
|
||||
"$defs": {
|
||||
"id_agent": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-z][a-z0-9-]*$"
|
||||
},
|
||||
"id_skill": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-z][a-z0-9-]*$"
|
||||
},
|
||||
"id_rule": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9]{2}-[a-z0-9-]+$"
|
||||
},
|
||||
"tool_name": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Read",
|
||||
"Write",
|
||||
"Edit",
|
||||
"Glob",
|
||||
"Grep",
|
||||
"Bash",
|
||||
"WebFetch",
|
||||
"WebSearch"
|
||||
]
|
||||
},
|
||||
"target_name": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"claude",
|
||||
"codex"
|
||||
]
|
||||
},
|
||||
"agent_item": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"id",
|
||||
"name",
|
||||
"description",
|
||||
"model",
|
||||
"effort",
|
||||
"permission_mode",
|
||||
"tools",
|
||||
"disallowed_tools",
|
||||
"max_turns",
|
||||
"skills",
|
||||
"instruction_file"
|
||||
],
|
||||
"properties": {
|
||||
"id": {
|
||||
"$ref": "#/$defs/id_agent"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"model": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"haiku",
|
||||
"sonnet",
|
||||
"opus"
|
||||
]
|
||||
},
|
||||
"effort": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"",
|
||||
"low",
|
||||
"medium",
|
||||
"high",
|
||||
"max"
|
||||
]
|
||||
},
|
||||
"permission_mode": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"",
|
||||
"plan",
|
||||
"acceptEdits"
|
||||
]
|
||||
},
|
||||
"tools": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/tool_name"
|
||||
},
|
||||
"uniqueItems": true
|
||||
},
|
||||
"disallowed_tools": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/tool_name"
|
||||
},
|
||||
"uniqueItems": true
|
||||
},
|
||||
"max_turns": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"skills": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/id_skill"
|
||||
},
|
||||
"uniqueItems": true
|
||||
},
|
||||
"background": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"memory": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"project"
|
||||
]
|
||||
},
|
||||
"isolation": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"worktree"
|
||||
]
|
||||
},
|
||||
"instruction_file": {
|
||||
"type": "string",
|
||||
"pattern": "^agents/[a-z0-9-]+\\.md$"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skill_item": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"id",
|
||||
"name",
|
||||
"description",
|
||||
"instruction_file",
|
||||
"applies_to",
|
||||
"install_mode"
|
||||
],
|
||||
"properties": {
|
||||
"id": {
|
||||
"$ref": "#/$defs/id_skill"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"instruction_file": {
|
||||
"type": "string",
|
||||
"pattern": "^skills/[a-z0-9-]+/SKILL\\.md$"
|
||||
},
|
||||
"applies_to": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/target_name"
|
||||
},
|
||||
"minItems": 1,
|
||||
"uniqueItems": true
|
||||
},
|
||||
"install_mode": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"shared"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"rule_item": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"id",
|
||||
"source_file",
|
||||
"applies_to"
|
||||
],
|
||||
"properties": {
|
||||
"id": {
|
||||
"$ref": "#/$defs/id_rule"
|
||||
},
|
||||
"source_file": {
|
||||
"type": "string",
|
||||
"pattern": "^rules/[0-9]{2}-[a-z0-9-]+\\.md$"
|
||||
},
|
||||
"applies_to": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/target_name"
|
||||
},
|
||||
"minItems": 1,
|
||||
"uniqueItems": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"inventory_agents": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"description": "Agent inventory for protocol v1. This schema enforces exact order, exact keys, and key/id equality for the current repository inventory.",
|
||||
"required": [
|
||||
"order",
|
||||
"items"
|
||||
],
|
||||
"properties": {
|
||||
"order": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/id_agent"
|
||||
},
|
||||
"uniqueItems": true,
|
||||
"const": [
|
||||
"architect",
|
||||
"auditor",
|
||||
"debugger",
|
||||
"documenter",
|
||||
"researcher",
|
||||
"reviewer",
|
||||
"worker"
|
||||
]
|
||||
},
|
||||
"items": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"architect",
|
||||
"auditor",
|
||||
"debugger",
|
||||
"documenter",
|
||||
"researcher",
|
||||
"reviewer",
|
||||
"worker"
|
||||
],
|
||||
"properties": {
|
||||
"architect": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/agent_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "architect" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"auditor": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/agent_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "auditor" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"debugger": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/agent_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "debugger" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"documenter": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/agent_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "documenter" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"researcher": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/agent_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "researcher" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"reviewer": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/agent_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "reviewer" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"worker": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/agent_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "worker" }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"inventory_skills": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"description": "Skill inventory for protocol v1. This schema enforces exact order, exact keys, and key/id equality for the current repository inventory.",
|
||||
"required": [
|
||||
"order",
|
||||
"items"
|
||||
],
|
||||
"properties": {
|
||||
"order": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/id_skill"
|
||||
},
|
||||
"uniqueItems": true,
|
||||
"const": [
|
||||
"conventions",
|
||||
"message-schema",
|
||||
"orchestrate",
|
||||
"qa-checklist",
|
||||
"worker-protocol"
|
||||
]
|
||||
},
|
||||
"items": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"conventions",
|
||||
"message-schema",
|
||||
"orchestrate",
|
||||
"qa-checklist",
|
||||
"worker-protocol"
|
||||
],
|
||||
"properties": {
|
||||
"conventions": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/skill_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "conventions" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"message-schema": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/skill_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "message-schema" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"orchestrate": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/skill_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "orchestrate" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"qa-checklist": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/skill_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "qa-checklist" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"worker-protocol": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/skill_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "worker-protocol" }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"inventory_rules": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"description": "Rule inventory for protocol v1. This schema enforces exact order, exact keys, and key/id equality for the current repository inventory.",
|
||||
"required": [
|
||||
"order",
|
||||
"items"
|
||||
],
|
||||
"properties": {
|
||||
"order": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/id_rule"
|
||||
},
|
||||
"uniqueItems": true,
|
||||
"const": [
|
||||
"01-session",
|
||||
"02-responses",
|
||||
"03-git",
|
||||
"04-tools",
|
||||
"05-verification",
|
||||
"06-nix",
|
||||
"07-research"
|
||||
]
|
||||
},
|
||||
"items": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"01-session",
|
||||
"02-responses",
|
||||
"03-git",
|
||||
"04-tools",
|
||||
"05-verification",
|
||||
"06-nix",
|
||||
"07-research"
|
||||
],
|
||||
"properties": {
|
||||
"01-session": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/rule_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "01-session" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"02-responses": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/rule_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "02-responses" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"03-git": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/rule_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "03-git" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"04-tools": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/rule_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "04-tools" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"05-verification": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/rule_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "05-verification" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"06-nix": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/rule_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "06-nix" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"07-research": {
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/rule_item" },
|
||||
{
|
||||
"properties": {
|
||||
"id": { "const": "07-research" }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
105
spec/agent-runtime-v1.md
Normal file
105
spec/agent-runtime-v1.md
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
# Agent Runtime Config v1
|
||||
|
||||
`SETTINGS.yaml` is the human-authored source of truth for portable runtime intent in this repo.
|
||||
|
||||
Team inventory metadata is defined separately in `TEAM.yaml` (see `spec/team-protocol-v1.md`). This spec only covers runtime policy.
|
||||
|
||||
## Goals
|
||||
|
||||
- Keep one editable config for approval, filesystem, network, and model intent.
|
||||
- Generate backward-compatible Claude and Codex outputs from that shared intent.
|
||||
- Make adapter lossiness explicit where provider config surfaces do not line up.
|
||||
|
||||
## Scope
|
||||
|
||||
Version 1 standardizes:
|
||||
|
||||
- portable model tier and reasoning level
|
||||
- filesystem access intent
|
||||
- approval intent
|
||||
- network access intent
|
||||
- portable tool classes
|
||||
- protected path rules
|
||||
- dangerous shell command prompts
|
||||
- target-specific escape hatches only when the target exposes settings with no shared equivalent
|
||||
|
||||
Version 1 does not attempt to standardize:
|
||||
|
||||
- every provider model name
|
||||
- provider-specific tool grammars
|
||||
- every future runtime capability for local agents, IDE plugins, or hosted agents
|
||||
|
||||
## Shared fields
|
||||
|
||||
### `model`
|
||||
|
||||
- `class`: `fast | balanced | powerful`
|
||||
- `reasoning`: `low | medium | high | max`
|
||||
|
||||
### `runtime`
|
||||
|
||||
- `filesystem`: `read-only | workspace-write`
|
||||
- `approval`: `manual | guarded-auto | full-auto`
|
||||
- `network_access`: boolean
|
||||
- `tools`: portable tool classes such as `shell`, `read`, `edit`, `write`, `glob`, `grep`, `web_fetch`, `web_search`
|
||||
|
||||
### `safety`
|
||||
|
||||
- `protected_paths`: glob patterns that should remain blocked from normal reads or writes
|
||||
- `dangerous_shell_commands.ask`: shell command patterns that should remain approval-gated
|
||||
|
||||
### `targets`
|
||||
|
||||
Target blocks are escape hatches, not the main schema. Use them only where a runtime exposes a knob with no shared equivalent.
|
||||
|
||||
Current target-specific fields:
|
||||
|
||||
- `targets.claude.claude_md_excludes`
|
||||
- `targets.codex.approval_policy`
|
||||
- `targets.codex.network_access`
|
||||
|
||||
## Adapter rules
|
||||
|
||||
### Claude Code
|
||||
|
||||
`settings.json` is generated as a compatibility artifact.
|
||||
|
||||
- `runtime.filesystem = read-only` -> `permissions.defaultMode = "plan"`
|
||||
- `runtime.filesystem = workspace-write` -> `permissions.defaultMode = "acceptEdits"`
|
||||
- `runtime.tools` -> Claude tool allow-list
|
||||
- `safety.protected_paths` -> Claude `deny` entries for `Read`, `Write`, and `Edit`
|
||||
- `dangerous_shell_commands.ask` -> Claude `ask` entries wrapped as `Bash(...)`
|
||||
|
||||
Lossiness:
|
||||
|
||||
- Claude vends `allow` / `deny` / `ask` as tool-pattern rules.
|
||||
- Shared `approval` intent does not map 1:1 to Claude beyond `plan` vs `acceptEdits`.
|
||||
|
||||
### Codex CLI
|
||||
|
||||
`codex/config.toml` is generated directly from shared intent.
|
||||
|
||||
- `runtime.filesystem = read-only` -> `sandbox_mode = "read-only"`
|
||||
- `runtime.filesystem = workspace-write` -> `sandbox_mode = "workspace-write"`
|
||||
- `runtime.approval = manual` -> `approval_policy = "on-request"`
|
||||
- `runtime.approval = guarded-auto` -> `approval_policy = "untrusted"`
|
||||
- `runtime.approval = full-auto` -> `approval_policy = "never"`
|
||||
- `runtime.network_access` -> `[sandbox_workspace_write].network_access`
|
||||
|
||||
Lossiness:
|
||||
|
||||
- Codex does not expose Claude-style per-tool `allow` / `deny` / `ask` pattern controls in `config.toml`.
|
||||
- Protected paths and dangerous command prompts are therefore only partially representable in Codex config today.
|
||||
|
||||
## Compatibility contract
|
||||
|
||||
The repo preserves these compatibility artifacts:
|
||||
|
||||
- `settings.json`
|
||||
- `claude/settings.json`
|
||||
- `claude/CLAUDE.md`
|
||||
- `codex/config.toml`
|
||||
- `codex/AGENTS.md`
|
||||
- generated agent outputs for both targets
|
||||
|
||||
These are build artifacts, not authored source files. `SETTINGS.yaml` is the required runtime input.
|
||||
136
spec/team-protocol-v1.md
Normal file
136
spec/team-protocol-v1.md
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
# Team Protocol v1
|
||||
|
||||
`TEAM.yaml` defines the team metadata and inventory protocol for portable generation targets in this repo.
|
||||
|
||||
Implementation status:
|
||||
|
||||
- Wave 1: protocol + documentation introduced
|
||||
- Wave 2: generator + install integration completed; TEAM metadata is the active source of truth for team inventory behavior
|
||||
|
||||
## Goals
|
||||
|
||||
- Define a neutral, schema-backed source for agents, skills, and rules metadata.
|
||||
- Keep Claude and Codex as adapter targets rather than protocol sources.
|
||||
- Preserve Markdown as the human-authored instruction content format.
|
||||
- Preserve current generated output behavior unless a narrow caveat is explicitly documented.
|
||||
|
||||
## Scope
|
||||
|
||||
Version 1 standardizes:
|
||||
|
||||
- agent inventory and metadata required for generation
|
||||
- skill inventory metadata
|
||||
- rule inventory and deterministic ordering
|
||||
- adapter boundaries for Claude and Codex
|
||||
- validation requirements needed by the generator
|
||||
|
||||
Version 1 does not standardize:
|
||||
|
||||
- full prose structure for skills/rules/agents
|
||||
- provider-specific runtime/tool grammars
|
||||
- every future adapter target
|
||||
|
||||
## Source-of-Truth Split
|
||||
|
||||
- `SETTINGS.yaml`: runtime policy protocol (filesystem, approval intent, network, model intent)
|
||||
- `TEAM.yaml`: team inventory protocol (agents, skills, rules metadata and references)
|
||||
- Markdown files: instruction bodies
|
||||
- agents: `agents/*.md`
|
||||
- skills: `skills/*/SKILL.md`
|
||||
- rules: `rules/*.md`
|
||||
|
||||
Generated artifacts remain:
|
||||
|
||||
- `settings.json`
|
||||
- `claude/`
|
||||
- `codex/`
|
||||
|
||||
## Required TEAM Inventories
|
||||
|
||||
`TEAM.yaml` must contain:
|
||||
|
||||
- `agents`
|
||||
- `skills`
|
||||
- `rules`
|
||||
|
||||
## Agent Contract
|
||||
|
||||
Each agent entry includes metadata required for adapter generation:
|
||||
|
||||
- `id`
|
||||
- `name`
|
||||
- `description`
|
||||
- `model`
|
||||
- `effort`
|
||||
- `permission_mode`
|
||||
- `tools`
|
||||
- `disallowed_tools`
|
||||
- `max_turns`
|
||||
- `skills`
|
||||
- optional `background`
|
||||
- optional `memory`
|
||||
- optional `isolation`
|
||||
- `instruction_file`
|
||||
|
||||
`instruction_file` points to the Markdown source for long-form instructions.
|
||||
|
||||
## Skill Contract
|
||||
|
||||
Each skill entry includes lightweight metadata and content reference:
|
||||
|
||||
- `id`
|
||||
- `description`
|
||||
- `instruction_file`
|
||||
- optional target/install metadata
|
||||
|
||||
Skill prose remains in `skills/*/SKILL.md`.
|
||||
|
||||
## Rule Contract
|
||||
|
||||
Each rule entry includes:
|
||||
|
||||
- `id`
|
||||
- `source_file`
|
||||
- deterministic order metadata
|
||||
- optional target metadata
|
||||
|
||||
Rule prose remains in `rules/*.md`.
|
||||
|
||||
## Adapter Boundaries
|
||||
|
||||
Claude and Codex are render targets.
|
||||
|
||||
Current target behavior:
|
||||
|
||||
- Claude generation consumes TEAM metadata + Markdown content and outputs:
|
||||
- `claude/CLAUDE.md`
|
||||
- `claude/settings.json`
|
||||
- `claude/agents/*.md`
|
||||
- Codex generation consumes TEAM metadata + Markdown content and outputs:
|
||||
- `codex/config.toml`
|
||||
- `codex/AGENTS.md`
|
||||
- `codex/agents/*.toml`
|
||||
|
||||
## Validation Requirements
|
||||
|
||||
TEAM validation enforces schema + runtime checks for:
|
||||
|
||||
- schema version correctness
|
||||
- required sections present
|
||||
- unique IDs for agents/skills/rules
|
||||
- referenced files exist
|
||||
- deterministic rule ordering inputs are valid
|
||||
- `order` IDs match declared inventory keys
|
||||
- item `id` matches keyed map entry
|
||||
|
||||
## Compatibility Caveats
|
||||
|
||||
- Existing YAML frontmatter in `agents/*.md` may remain for editorial continuity, but generation does not use it for team metadata.
|
||||
- Output diffs that are purely formatting-related are acceptable; semantic behavior changes are not unless explicitly documented.
|
||||
- TEAM schema is intentionally rigid/repo-specific in v1; inventory additions/removals require schema updates in lockstep.
|
||||
|
||||
## Out of Scope
|
||||
|
||||
- Rewriting instruction prose for style
|
||||
- Full content schemas for skill/rule prose
|
||||
- Generalizing all future adapters in v1
|
||||
Loading…
Add table
Add a link
Reference in a new issue