Skip to content

Re-platform default agents as harness-driven configs, not scaffold-embedded artifacts #1986

Description

@ralphbean

What happens

Fullsend's six default agents (triage, code, review, fix, prioritize, retro) are delivered through a different mechanism than custom agents:

  • Their workflow files, harness configs, agent definitions, skills, scripts, and policies are embedded in the fullsend binary via internal/scaffold/fullsend-repo/
  • They are layered at runtime via ADR 0035 (upstream defaults overlaid with customized/ overrides)
  • Their roles are hardcoded in ValidRoles() and DefaultAgentRoles()
  • Each has a dedicated workflow file with a # fullsend-stage: marker and a dedicated reusable workflow (reusable-triage.yml, reusable-code.yml, etc.)

This means default agents and custom agents use fundamentally different delivery and configuration paths. An org admin looking at their .fullsend repo sees no trace of the default agents in their config — they're invisible infrastructure that "just exists."

What should happen

Default agents should be configured using the same mechanism as custom agents. When an org admin looks at their config.yaml, they should see entries for triage, code, review, etc. that look exactly like an entry for a third-party agent — harness references pointing to fullsend-ai/fullsend (or fullsend-ai/library) with the same URL+SHA256 format.

This means:

  • An admin can remove a default agent by deleting its config entry, not by understanding the scaffold layering model
  • An admin can add a default agent the same way they'd add any other agent
  • The scaffold for a fresh install produces a config.yaml with explicit harness references for each default agent, not an implicit "you get all six"
  • Installing with no agents and enabling one at a time becomes the natural default path

Context

Depends on #1985 (harness-driven dispatch routing) being implemented first.

This is the "eat your own dogfood" step: if the custom agent installation path is good enough for third parties, it should be good enough for fullsend's own agents.

Related:

Metadata

Metadata

Assignees

Labels

blockedBlocked by another issue or external dependencycomponent/dispatchWorkflow dispatch and triggerscomponent/harnessAgent harness, config, and skills loadingcomponent/installCLI install and app setuppriority/mediumNormal priority, plan for next cycletype/featureNew capability request

Type

No type
No fields configured for issues without a type.

Projects

Status
Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions