Eval driven agent roles and personas
  • Go 89.3%
  • Python 3.6%
  • Shell 2.9%
  • TypeScript 1.9%
  • CSS 1.6%
  • Other 0.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
coilyco-ops[bot] c03e85aba8
All checks were successful
release / release (push) Successful in 54s
chore(evalkit): move the eval subject to the deepseek pro route
The board's subject becomes `evaluation/deepseek-v4-pro` rather than
`evaluation/deepseek-v4-flash`, per Kai's call on measuring against the better
model rather than the cheaper one.

The route does not exist yet. Agent Proxy currently serves six and none is a pro
variant, so a run against this pin fails at the first call until Deploy adds the
alias. That provisioning is a live-service action this seat defers, handed off
in coilyco-bridge/deploy#783 with the file, format, and precedent it needs.

`evaluations/pilot/authority-probe-2026-08-12/responses.json` keeps
`deepseek-v4-flash`, because a graded record names the subject that actually
answered it. Rewriting it would falsify the evidence rather than update it.

`AGENT_PROXY_MODEL` still overrides, so a run can name any live route without a
commit while the alias is being provisioned.

Refs coilyco-bridge/deploy#783

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Agent-Role: ai
2026-08-22 18:36:24 -07:00
.agents/skills/repo-agent-compose chore(skills): regenerate the repo pointer skill from Forgejo metadata 2026-08-20 00:37:50 -07:00
.forgejo/workflows chore: drop CODEOWNERS so agents stop reading a review request as a gate 2026-08-20 02:06:05 -07:00
.github chore: drop CODEOWNERS so agents stop reading a review request as a gate 2026-08-20 02:06:05 -07:00
.ward refactor(just): retire per-repo ward exec, carry every verb in the justfile 2026-08-15 22:49:21 -07:00
assets docs: merge 65 docs to 40 and advance the hook pin 2026-08-16 22:07:13 -07:00
cmd/agent-compose feat(person)!: reflow the Core Roster to seven bonded seats 2026-08-22 13:12:18 -07:00
docs chore(evalkit): move the eval subject to the deepseek pro route 2026-08-22 18:36:24 -07:00
evalkit chore(evalkit): move the eval subject to the deepseek pro route 2026-08-22 18:36:24 -07:00
evaluations refactor(evalkit)!: adopt entity and attribute, and owe aos-eval its projection 2026-08-22 17:32:56 -07:00
examples feat(person)!: reflow the Core Roster to seven bonded seats 2026-08-22 13:12:18 -07:00
internal feat(person)!: reflow the Core Roster to seven bonded seats 2026-08-22 13:12:18 -07:00
scripts chore(evalkit): move the eval subject to the deepseek pro route 2026-08-22 18:36:24 -07:00
testdata/contracts feat(person)!: reflow the Core Roster to seven bonded seats 2026-08-22 13:12:18 -07:00
web/personality-palette feat(person)!: reflow the Core Roster to seven bonded seats 2026-08-22 13:12:18 -07:00
.gitattributes fix(windows): make the suite pass on a native Windows checkout 2026-08-20 00:58:00 -07:00
.gitignore feat(evalkit): wire the transport and the composed-prompt producer 2026-08-10 12:53:38 -07:00
.pre-commit-config.yaml feat(color): derive role favorites from the whole roster so they stay tellable apart 2026-08-17 11:12:32 -07:00
.typos.toml test(evals): preserve the graded ops pilot board (#262) 2026-08-12 00:19:05 -07:00
AGENTS.md refactor(just): retire per-repo ward exec, carry every verb in the justfile 2026-08-15 22:49:21 -07:00
challenges.yaml refactor(evalkit)!: adopt entity and attribute, and owe aos-eval its projection 2026-08-22 17:32:56 -07:00
CLAUDE.md docs: establish repository shell 2026-07-16 01:04:32 -07:00
go.mod feat(launch): pause for assigned identity, closes #137 2026-07-30 02:52:56 -07:00
go.sum feat(launch): pause for assigned identity, closes #137 2026-07-30 02:52:56 -07:00
justfile refactor(evalkit)!: adopt challenge, and derive onto the shared model 2026-08-22 14:52:19 -07:00
LICENSE docs: establish repository shell 2026-07-16 01:04:32 -07:00
pyproject.toml refactor(evalkit)!: adopt entity and attribute, and owe aos-eval its projection 2026-08-22 17:32:56 -07:00
README.md feat(person)!: reflow the Core Roster to seven bonded seats 2026-08-22 13:12:18 -07:00
uv.lock refactor(evalkit)!: adopt entity and attribute, and owe aos-eval its projection 2026-08-22 17:32:56 -07:00

agent-compose

agent-compose and $ acompose, eval driven agent roles and personas

$ acompose creates eval driven agent roles and personas.

Ownership boundary

Agent-compose owns the context boundary and its bundled public-safe Core Roster:

  • canonical role skills, role-bound methods, and shared doctrine boundaries plus role-driven personality meld resolution with host-only native adaptation for inferred roles and boundaries
  • Developer Advocate-owned audience research, proof, community continuity, decision support, and communication, with external action separately authorized
  • one selected roster package, with roster:core as the zero-config default
  • external person packages that fully replace the default roster
  • role-neutral personality catalog bindings, definitions, invariant, and curated compatibility
  • complete selected-role terminal metadata, including role-stable agent identity, harness selectors, personality primitives, and renderer expressions
  • ordinary and role-composed skill selection
  • three stable model tiers with fail-closed per-role compatibility and identical selected context across supported tiers
  • native-skill and compiled-context delivery with source entry-point promotion
  • local ordinary-skill catalogues projected through one native path
  • role-scoped providers for assigned bundles
  • immutable bundle materialization and caching
  • harness load-point adapters and launch-time refresh
  • host doctrine convergence and native skill installation
  • bundle inspection, validation, and compatibility reporting
  • compact text and JSON identity overlays with caller-supplied state
  • a roster-derived behavior board, run through Inspect and graded by hand

Knowledge providers own reusable doctrine, general skills, capability sources, and editorial validation. Agent-compose combines those sources with its selected person provider to build the concrete context surface for each harness. External person packages and private overlays remain outside this public repo. Launch consumers own executable authority, runtime facts, mounts, and lifecycle. Personality and operating framing never alter consumer permissions. Infrastructure installs the resulting system across hosts.

Core Roster

The opinionated roster:core default has seven seats: Developer Platform Engineer (platform), Systems Administrator (sysadmin), Agent Evaluation Engineer (eval), Frontend Design Engineer (frontend), Game Developer (gamedev), Technical Program Manager (tpm), and Developer Advocate (devrel). They operate the real open-source, platform, community, personal, and gaming portfolio without inventing a company or active commercial venture. Each seat melds one signature trait with one bond shared with a sibling seat. Potential contracting and SaaS work stays evidence-qualified.

Another deployment can select a complete package using the same validated layout. The selection is exclusive: an external package contributes its own roles, seats, personality definitions, and evaluation context without loading roster:core. An external-only policy makes that boundary fail closed across the machine. See person packages.

Status

Current releases ship the Go composition engine, verified deterministic bundles, transactional repo and container-home projection, decision inspection, refresh-then-exec, the absorbed AOS cascade, host convergence, and package-manager distribution. Trusted roots use .agents/roles.kdl for skill-provider repositories, composed skills, and strict repository policy. Cascade compiles one availability and residency plan. Verified bundles retain repository provenance for launch consumers. Imported graphs do not recurse. The default roster:core provider supplies the personality invariant, all ten canonical definitions, and the eval seat's cross-role evaluation methods, so its host roster convergence needs no external personality source. A configured external person package replaces that provider as one unit. Each Core role carries one name and pronoun pair across every harness selector. The repository also ships a local personality palette explorer, identity overlay, and Core Roster v2 behavior matrices. Bare acompose consumes AOS-verified local catalogue roots, converges the host, and refreshes the versioned person snapshot. acompose -- <command> launches with inferred context. Assigned native role launches render canonical identity colors, and bare Codex prompts its seat to introduce itself. acompose --reapply rewrites the generated compose outputs and recreates global load-point links even when they are current. acompose --verbose prints every composition source and load-point file as source => destination.

Composition adapters can project a verified bundle into an empty staged home, remove agent-compose's projection state, and wrap the remaining selected load points in their own schema. See staged-home.md.

Install

Via Homebrew (macOS and Linux):

brew tap coilyco-flight-deck/tap https://forgejo.coilysiren.me/coilyco-flight-deck/homebrew-tap.git
brew install coilyco-flight-deck/tap/agent-compose

Via Scoop (Windows):

scoop bucket add coilyco https://forgejo.coilysiren.me/coilyco-flight-deck/scoop-bucket.git
scoop install coilyco/agent-compose

Both managers also install acompose, which is the compose verb directly: bare for host convergence, acompose -- <command> for refresh-then-exec.

Release binaries (darwin-arm64, linux-amd64/arm64, windows-amd64) also attach to tagged Forgejo releases directly. From source, just install builds into GOBIN. agent-compose version reports the build you are running. Every push to canonical main validates and publishes the next minor release.

Development

Development commands are recipes in the justfile. just test runs the Go and palette tests plus the full pre-commit sweep. just smoke builds the real acompose entry point and converges an isolated temporary home twice, covering roster, cascade, skills, load points, and idempotence without touching live host state or the network. It reports each stage. just smoke-verbose also prints both captured convergence transcripts. build, lint, install, and tidy cover the remaining Go verbs.

just palette-serve generates browser data from the embedded person source and starts the local explorer. palette-build, palette-test, and palette-tidy cover its remaining development lifecycle. See the personality palette walkthrough.

License

Agent-compose is available under the MIT License.

See also