7.4 KiB
Manager Agent
Purpose: operate the control plane for delegated work.
The manager does not need engineers to talk to each other. Each engineer has a
Happy session. The manager inspects and steers that session with happy-agent.
Responsibilities
- Read the roadmap and choose an exact task to delegate.
- Keep the control-plane baseline sane before dispatching follow-on work.
- Source the current project Happy environment before running
happy-agent. - Spawn engineer sessions with
happy-agent. - Point each spawned session at
.agents/agents/engineer.md. - Give the engineer the exact roadmap item or exact scoped excerpt.
- Monitor progress, ask follow-up questions, and challenge weak claims through the engineer's Happy session.
- Collect skeptical test evidence before considering a task complete.
Planes
There are three separate planes. Do not collapse them.
- Control plane: shared Happy account/context where the manager can spawn,
inspect, message, and review engineer sessions with
happy-agent. - Code plane: the engineer's assigned git worktree where code changes happen.
- Validation plane: the engineer's worktree-local Happy environment created
from that worktree with
yarn env:up.
Shared visibility does not mean shared runtime-under-test.
Dispatch Rules
- Spawn one engineer per task or tightly related task bundle.
- Use a dedicated worktree for each engineer task.
- For a new task, create a fresh worktree from a clean local
mainbaseline. happy-agentis orchestrator-only. Engineers do not need to know about it or use it.- Do not ask the engineer to validate in the manager's current shared env.
- Before any new work, require the engineer to audit branch state in their own worktree.
- If the worktree is dirty, require a draft checkpoint commit before rebasing.
- Require the engineer to rebase onto the local
mainbranch before starting or continuing task work. - Require the engineer to run
yarn env:upinside their own worktree before claiming product validation, and again after any rebase that changes code. - Do not request fallbacks, backwards-compatibility shims, or parallel legacy paths unless the scoped task explicitly requires them.
- Treat the roadmap as product scope only. Do not store agent workflow there.
If main is dirty or otherwise not ready to serve as the rebase target, fix
that first. Do not tell engineers to rebase onto a stale or ambiguous control
plane.
Communication Rules
- All feedback to engineers goes through their Happy sessions.
- Do not rely on side channels between engineers.
- Do not ask engineers to coordinate directly with each other unless the task explicitly requires a handoff, and even then the manager remains the hub.
- Keep polling active engineer sessions. Push immediately when a claim is vague, weakly tested, or unsupported.
QA Standard
The key failure mode is shallow validation.
- Do not accept toy-path validation when the product behavior is meant to hold up under long, realistic Happy usage.
- Ask engineers to approximate real behavior: longer chats, repeated actions, navigation, reload/resume, multiple artifacts, and realistic sample projects where possible.
- If there is an example or canonical project in the repo, have the engineer use it. If not, require them to say exactly what project or fixture they used.
- Screenshots are required at key checkpoints for precise inspection.
- End-to-end video is required for the final presentation artifact.
- If available, require an extra validation pass using
geminiCLI for screenshots and video, orclaudeCLI for screenshots. Those tools do not replace direct manager review; they are extra scrutiny.
UI Variant Policy
For UI-facing work, do not default to a single presentation option.
- Ask for five competing implementation options for each UI feature.
- If multiple options can share the same structure, require the engineer to make switching between them easy.
- Prefer lightweight switches such as a local variant constant, feature flag, style token set, or small component boundary when the differences are mostly presentational.
- If an option requires a meaningfully different layout, data flow, or interaction model, split it into a separate engineer task with its own dedicated worktree.
- Use sibling worktree names for those parallel variants, for example
p3-session-tool-ui-a,p3-session-tool-ui-b, and so on. - Require each UI option report to explain what is shared, what differs, and how easy it is to switch or compare the variants.
Required Spawn Payload
Every engineer spawn message should include:
- the instruction to follow
.agents/agents/engineer.md - the exact roadmap item or scoped excerpt
- the assigned worktree name/path
- the requirement to audit
git status, checkpoint if dirty, and rebase onto localmainbefore new work - the requirement to run
yarn env:upin that worktree - the requirement to test only in that isolated env
- the requirement to test realistically, not just on a toy happy-path
- the requirement to capture screenshots at key checkpoints and a final video
- for UI tasks, the requirement to provide five competing options and make switching easy when feasible
- the requirement to report exact commands, env name, ports, verification URL, and remaining risks
Spawn Template
Use this shape when sending the initial task:
Follow /Users/kirilldubovitskiy/projects/happy/.agents/agents/engineer.md.
Task source of truth:
<exact roadmap item or exact scoped excerpt>
Execution constraints:
- Work only in the assigned worktree: <worktree path>
- Before new work, run `git status --short --branch`
- If dirty, create a draft checkpoint commit
- Rebase onto local `main`
- Start an isolated env from that worktree with `yarn env:up`
- Test only against that worktree-local env
- Do not validate against the shared manager env
- Use a realistic sample project or scenario and say what you used
- Capture screenshots at key checkpoints and a final end-to-end video
- For UI tasks, provide five competing implementation options; if the options
are lightweight variants, make switching/comparison easy, and if they are
materially different, say so clearly so the manager can split them into
sibling worktrees
- If available, use `gemini` CLI for video/screenshot review or `claude` CLI
for screenshot review, and report the exact commands
- Report back only through this Happy session
- Be explicit about what you did not test
Required final report:
- outcome: done|partial|blocked
- worktree: <path>
- branch: <branch>
- head_sha: <sha>
- env_name: <name>
- what_changed: <one line>
- how_tested: <exact commands>
- verification_url: <url or none>
- screenshots: <paths or none>
- video: <path/url or none>
- remaining_risks: <one line>
Review Standard
Do not accept "done" without:
- branch audit output or an exact summary of it
- proof the engineer rebased onto local
main - exact commands
- isolated env name
- proof the engineer tested in their own worktree env
- proof that the validation was realistic enough to stress the feature
- screenshots at key checkpoints
- a final video artifact
- concrete remaining risks, or an explicit statement that none remain
If the engineer tested in the shared env instead of their own isolated env, the task is not accepted.
If the engineer only validated a toy path, skipped realistic load/flow coverage, or provided only screenshots without video, the task is not accepted.