-
-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Parent Issue
Closes part of #560
Problem
frontend-developer is currently the DEFAULT_ACT_AGENT — the fallback when no intent pattern matches. This is inappropriate for the majority of tasks:
| Scenario | frontend-developer provides | Actually needed |
|---|---|---|
| NestJS API work | React/Vue/CSS perspective | Server logic expertise |
| Utility scripts | UI component patterns | Language-agnostic implementation |
| Refactoring | Frontend best practices | Domain-neutral code quality |
| Rust / Python / Go code | Nothing relevant | General programming competence |
Solution
Create a new software-engineer agent designed specifically to be the universal default — domain-agnostic, language-agnostic, web-agnostic.
Why not just switch to backend-developer?
backend-developer still carries domain assumptions (APIs, servers, authentication). software-engineer is intentionally neutral:
| Agent | Domain assumption |
|---|---|
frontend-developer |
Web UI, React/Vue/CSS |
backend-developer |
APIs, servers, databases |
software-engineer |
None — any language, any domain |
Design Principles
software-engineerintentionally has no intent patterns.
It only activates when all other agents fail to match.
This is by design — it is the fallback of last resort.
Default behavior: analyze existing code context first, then implement without domain assumptions.
Implementation
1. Agent JSON — packages/rules/.ai-rules/agents/software-engineer.json
Key fields:
- role: General-purpose implementation engineer
- expertise: Language-agnostic coding (TypeScript, Python, Go, Rust, SQL, Shell), TDD, SOLID, Design Patterns, Refactoring, Algorithms & Data Structures
- default_behavior: Read existing code context → infer domain → implement accordingly
- no domain assumptions: Does not default to web UI, API, or any specific paradigm
2. keyword.types.ts
// Change default
export const DEFAULT_ACT_AGENT = 'software-engineer' as const;
// Add to ACT_PRIMARY_AGENTS — placed LAST to signal it's not a pattern-match target
export const ACT_PRIMARY_AGENTS = [
'tooling-engineer',
'platform-engineer',
'data-engineer',
'ai-ml-engineer',
'mobile-developer',
'frontend-developer',
'backend-developer',
'devops-engineer',
'agent-architect',
'software-engineer', // ← fallback default, no intent patterns
] as const;
// Add to ACT_AGENT_DISPLAY_INFO
'software-engineer': {
name: 'Software Engineer',
description: 'General-purpose engineer — any language, any domain, TDD-first',
},3. act-agent.strategy.ts
Update fallback reason string:
'ACT mode default: software-engineer (no domain detected — language-agnostic generalist)'4. act-mode.json
Update delegates_to from frontend-developer to software-engineer.
5. No changes to intent-pattern-checks.ts
software-engineer is intentionally excluded from intent patterns.
Acceptance Criteria
-
software-engineer.jsoncreated with full role definition -
DEFAULT_ACT_AGENTchanged to'software-engineer' -
software-engineeradded toACT_PRIMARY_AGENTS(last position) -
software-engineeradded toACT_AGENT_DISPLAY_INFO -
act-mode.jsonupdated —delegates_to: software-engineer - Unit test: unrecognized prompts resolve to
software-engineer(notfrontend-developer) - Unit test:
software-engineeris NOT selectable via intent patterns - All existing agent resolution tests pass (no regression)
-
plan-agent.strategy.tsfallback also benefits (referencesDEFAULT_ACT_AGENT)
Files
packages/rules/.ai-rules/agents/software-engineer.json(new)apps/mcp-server/src/keyword/keyword.types.tsapps/mcp-server/src/keyword/strategies/act-agent.strategy.tsapps/mcp-server/src/keyword/strategies/act-agent.strategy.spec.tspackages/rules/.ai-rules/agents/act-mode.json
Related
- Supersedes the
DEFAULT_ACT_AGENTchange planned in refactor(agent-selection): Update act-mode.json hardcoding + reorder intent patterns #567 (scope updated accordingly) - Blocks refactor(agent-selection): Update act-mode.json hardcoding + reorder intent patterns #567 — refactor(agent-selection): Update act-mode.json hardcoding + reorder intent patterns #567's
act-mode.jsonupdate depends on this issue completing first - Part of feat(agent-selection): Improve ACT Mode Primary Agent Selection [Parent] #560