agent-tempo 1.2.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/CLAUDE.md +219 -219
  2. package/LICENSE +21 -21
  3. package/README.md +289 -289
  4. package/assets/icon-dark.svg +9 -9
  5. package/assets/icon.svg +9 -9
  6. package/assets/logo-dark.svg +11 -11
  7. package/assets/logo-light.svg +11 -11
  8. package/dashboard/README.md +91 -91
  9. package/dashboard/dist/assets/index-D6Xyje_n.js.map +1 -1
  10. package/dashboard/dist/index.html +19 -19
  11. package/dashboard/package.json +47 -47
  12. package/dist/adapters/copilot/adapter.js +12 -1
  13. package/dist/cli/global-wrapper.d.ts +19 -0
  14. package/dist/cli/global-wrapper.js +169 -0
  15. package/dist/cli/help-text.js +97 -97
  16. package/dist/cli/startup.js +11 -0
  17. package/dist/cli/upgrade-command.js +81 -81
  18. package/dist/cli.js +12 -0
  19. package/dist/daemon.js +5 -0
  20. package/dist/scripts/verify-daemon-isolation-guard.js +24 -24
  21. package/dist/server.js +4 -0
  22. package/dist/spawn.js +12 -12
  23. package/dist/tools/coat-check-evict.js +2 -2
  24. package/dist/tools/coat-check-get.js +2 -2
  25. package/dist/tools/coat-check-put.js +4 -4
  26. package/dist/tools/fetch-state.js +2 -2
  27. package/dist/tools/save-state.js +13 -13
  28. package/dist/utils/grpc-shutdown-guard.d.ts +52 -0
  29. package/dist/utils/grpc-shutdown-guard.js +88 -0
  30. package/examples/agents/tempo-composer.md +56 -56
  31. package/examples/agents/tempo-conductor.md +117 -117
  32. package/examples/agents/tempo-critic.md +73 -73
  33. package/examples/agents/tempo-improv.md +74 -74
  34. package/examples/agents/tempo-liner.md +75 -75
  35. package/examples/agents/tempo-roadie.md +61 -61
  36. package/examples/agents/tempo-soloist.md +71 -71
  37. package/examples/agents/tempo-tuner.md +94 -94
  38. package/examples/ensembles/tempo-big-band.yaml +146 -146
  39. package/examples/ensembles/tempo-dev-team.yaml +58 -58
  40. package/examples/ensembles/tempo-headless-jam.yaml +77 -77
  41. package/examples/ensembles/tempo-jam-session.yaml +41 -41
  42. package/examples/ensembles/tempo-mock-jam.yaml +79 -79
  43. package/examples/ensembles/tempo-review-squad.yaml +32 -32
  44. package/package.json +173 -173
  45. package/packaging/launchd/com.agent.tempo.plist +46 -46
  46. package/packaging/systemd/agent-tempo.service +32 -32
  47. package/packaging/windows/install-task.ps1 +71 -71
  48. package/scenarios/conductor-recruit-mock.yaml +33 -33
  49. package/scenarios/echo-roundtrip.yaml +15 -15
  50. package/scenarios/multi-player-handoff.yaml +38 -38
  51. package/scenarios/recruit-cascade.yaml +38 -38
  52. package/scenarios/two-player-conversation.yaml +33 -33
  53. package/workflow-bundle.js +1 -1
  54. package/dist/activities/claude-stop.d.ts +0 -21
  55. package/dist/activities/claude-stop.js +0 -94
  56. package/dist/channel.d.ts +0 -3
  57. package/dist/channel.js +0 -48
  58. package/dist/copilot-bridge.d.ts +0 -22
  59. package/dist/copilot-bridge.js +0 -565
  60. package/dist/scripts/258-spotcheck.js +0 -303
  61. package/dist/tools/detach.d.ts +0 -4
  62. package/dist/tools/detach.js +0 -45
  63. package/dist/tools/encore.d.ts +0 -4
  64. package/dist/tools/encore.js +0 -31
  65. package/dist/tools/pause-ensemble.d.ts +0 -4
  66. package/dist/tools/pause-ensemble.js +0 -58
  67. package/dist/tools/resume-ensemble.d.ts +0 -4
  68. package/dist/tools/resume-ensemble.js +0 -79
  69. package/dist/tools/stop.d.ts +0 -4
  70. package/dist/tools/stop.js +0 -29
  71. package/dist/tui/client.d.ts +0 -6
  72. package/dist/tui/client.js +0 -9
  73. package/dist/tui/components/ActivityLog.d.ts +0 -16
  74. package/dist/tui/components/ActivityLog.js +0 -36
  75. package/dist/tui/components/CommandOverlay.d.ts +0 -15
  76. package/dist/tui/components/CommandOverlay.js +0 -34
  77. package/dist/tui/components/ConductorChat.d.ts +0 -16
  78. package/dist/tui/components/ConductorChat.js +0 -32
  79. package/dist/tui/components/EnsembleListView.d.ts +0 -14
  80. package/dist/tui/components/EnsembleListView.js +0 -32
  81. package/dist/tui/components/EnsemblePanel.d.ts +0 -12
  82. package/dist/tui/components/EnsemblePanel.js +0 -40
  83. package/dist/tui/components/InputBar.d.ts +0 -13
  84. package/dist/tui/components/InputBar.js +0 -58
  85. package/dist/tui/components/ScheduleOverlay.d.ts +0 -13
  86. package/dist/tui/components/ScheduleOverlay.js +0 -113
  87. package/dist/tui/components/TopBar.d.ts +0 -12
  88. package/dist/tui/components/TopBar.js +0 -15
  89. package/dist/tui/core-api.d.ts +0 -26
  90. package/dist/tui/core-api.js +0 -67
  91. package/dist/tui/hooks/useEnsembleDiscovery.d.ts +0 -3
  92. package/dist/tui/hooks/useEnsembleDiscovery.js +0 -30
  93. package/dist/tui/hooks/useMaestroPoller.d.ts +0 -3
  94. package/dist/tui/hooks/useMaestroPoller.js +0 -36
  95. package/dist/tui/hooks/useSendCommand.d.ts +0 -7
  96. package/dist/tui/hooks/useSendCommand.js +0 -29
  97. package/dist/utils/bg-preflight.d.ts +0 -25
  98. package/dist/utils/bg-preflight.js +0 -154
@@ -1,77 +1,77 @@
1
- name: tempo-headless-jam
2
- description: >
3
- Subscription-billed headless ensemble for scheduled / CI / background work
4
- where you don't want to spawn visible terminals or burn Console workspace
5
- credits. Every player runs `agent: claude-code-headless` — the host's
6
- installed `claude` CLI is invoked per-turn via `claude -p`, so turns bill
7
- against the operator's existing Claude Code subscription extra-usage
8
- pool (Pro / Max plans), NOT a `sk-ant-api03-...` Console key.
9
-
10
- Requires:
11
- - `claude` binary on PATH (`npm install -g @anthropic-ai/claude-code`
12
- or follow https://claude.com/download)
13
- - Logged-in Claude Code session (`claude auth login`) — the recruit
14
- pre-flight rejects with an actionable error if either check fails
15
-
16
- Use cases:
17
- - Scheduled cleanup PRs, doctor checks, gate evaluators that you want
18
- to run without a human-in-the-loop terminal window
19
- - CI / build-bot ensembles on hosts where the operator already has
20
- a Pro / Max subscription and wants to use it instead of Console credits
21
- - "Pair with claude-code-headless" runs where one headless explorer +
22
- one headless prototyper iterate on a problem, with the operator
23
- reading transcripts via the dashboard rather than driving via
24
- terminal interactions
25
-
26
- Headless players have FULL Claude Code tool access (Bash, Read, Write,
27
- Edit, Glob, Grep, WebSearch, WebFetch) by inheritance from the spawned
28
- CLI — strictly more capable than `claude-api` headless players (which
29
- have MCP-only tool access).
30
-
31
- See [docs/design/520-claude-code-headless-adapter.md](../../docs/design/520-claude-code-headless-adapter.md)
32
- for the full design and §16 spike findings.
33
-
34
- conductor:
35
- type: tempo-conductor
36
- agent: claude-code-headless
37
- permissionMode: acceptEdits
38
- instructions: >
39
- You are driving a headless ensemble for scheduled or CI work. Your
40
- players have full Claude Code tool access AND the agent-tempo MCP
41
- surface. Decompose the operator's task, delegate to the explorer +
42
- prototyper, synthesize results. Report cleanly via `report` —
43
- operators read transcripts via the dashboard, not by joining a
44
- terminal session.
45
-
46
- players:
47
- - name: explorer
48
- type: tempo-improv
49
- agent: claude-code-headless
50
- permissionMode: acceptEdits
51
- instructions: >
52
- You are the headless researcher. Investigate the operator's task
53
- via Read / Grep / Glob / WebSearch / WebFetch. Report findings
54
- with structured comparisons (pros / cons / trade-offs / recommendation).
55
- You have full file-read access — no per-tool gating beyond
56
- Claude Code's default `acceptEdits` permission mode. Show your
57
- work — document what you tried and what you ruled out.
58
-
59
- - name: prototyper
60
- type: tempo-soloist
61
- agent: claude-code-headless
62
- permissionMode: acceptEdits
63
- instructions: >
64
- You build small implementations to validate the explorer's
65
- findings. Write minimal code with Bash + Edit + Write. Run tests
66
- where appropriate. Don't over-engineer — focus on proving or
67
- disproving the approach. Report what worked and what didn't.
68
-
69
- # No `schedules` block — headless ensembles are typically driven by
70
- # external triggers (cron, CI hooks) or operator cues from the dashboard.
71
- # Add a `schedules:` block if you want a periodic progress check, e.g.:
72
- #
73
- # schedules:
74
- # - name: progress-check
75
- # message: "Share what you've found so far."
76
- # target: all
77
- # every: 30m
1
+ name: tempo-headless-jam
2
+ description: >
3
+ Subscription-billed headless ensemble for scheduled / CI / background work
4
+ where you don't want to spawn visible terminals or burn Console workspace
5
+ credits. Every player runs `agent: claude-code-headless` — the host's
6
+ installed `claude` CLI is invoked per-turn via `claude -p`, so turns bill
7
+ against the operator's existing Claude Code subscription extra-usage
8
+ pool (Pro / Max plans), NOT a `sk-ant-api03-...` Console key.
9
+
10
+ Requires:
11
+ - `claude` binary on PATH (`npm install -g @anthropic-ai/claude-code`
12
+ or follow https://claude.com/download)
13
+ - Logged-in Claude Code session (`claude auth login`) — the recruit
14
+ pre-flight rejects with an actionable error if either check fails
15
+
16
+ Use cases:
17
+ - Scheduled cleanup PRs, doctor checks, gate evaluators that you want
18
+ to run without a human-in-the-loop terminal window
19
+ - CI / build-bot ensembles on hosts where the operator already has
20
+ a Pro / Max subscription and wants to use it instead of Console credits
21
+ - "Pair with claude-code-headless" runs where one headless explorer +
22
+ one headless prototyper iterate on a problem, with the operator
23
+ reading transcripts via the dashboard rather than driving via
24
+ terminal interactions
25
+
26
+ Headless players have FULL Claude Code tool access (Bash, Read, Write,
27
+ Edit, Glob, Grep, WebSearch, WebFetch) by inheritance from the spawned
28
+ CLI — strictly more capable than `claude-api` headless players (which
29
+ have MCP-only tool access).
30
+
31
+ See [docs/design/520-claude-code-headless-adapter.md](../../docs/design/520-claude-code-headless-adapter.md)
32
+ for the full design and §16 spike findings.
33
+
34
+ conductor:
35
+ type: tempo-conductor
36
+ agent: claude-code-headless
37
+ permissionMode: acceptEdits
38
+ instructions: >
39
+ You are driving a headless ensemble for scheduled or CI work. Your
40
+ players have full Claude Code tool access AND the agent-tempo MCP
41
+ surface. Decompose the operator's task, delegate to the explorer +
42
+ prototyper, synthesize results. Report cleanly via `report` —
43
+ operators read transcripts via the dashboard, not by joining a
44
+ terminal session.
45
+
46
+ players:
47
+ - name: explorer
48
+ type: tempo-improv
49
+ agent: claude-code-headless
50
+ permissionMode: acceptEdits
51
+ instructions: >
52
+ You are the headless researcher. Investigate the operator's task
53
+ via Read / Grep / Glob / WebSearch / WebFetch. Report findings
54
+ with structured comparisons (pros / cons / trade-offs / recommendation).
55
+ You have full file-read access — no per-tool gating beyond
56
+ Claude Code's default `acceptEdits` permission mode. Show your
57
+ work — document what you tried and what you ruled out.
58
+
59
+ - name: prototyper
60
+ type: tempo-soloist
61
+ agent: claude-code-headless
62
+ permissionMode: acceptEdits
63
+ instructions: >
64
+ You build small implementations to validate the explorer's
65
+ findings. Write minimal code with Bash + Edit + Write. Run tests
66
+ where appropriate. Don't over-engineer — focus on proving or
67
+ disproving the approach. Report what worked and what didn't.
68
+
69
+ # No `schedules` block — headless ensembles are typically driven by
70
+ # external triggers (cron, CI hooks) or operator cues from the dashboard.
71
+ # Add a `schedules:` block if you want a periodic progress check, e.g.:
72
+ #
73
+ # schedules:
74
+ # - name: progress-check
75
+ # message: "Share what you've found so far."
76
+ # target: all
77
+ # every: 30m
@@ -1,41 +1,41 @@
1
- name: tempo-jam-session
2
- description: Exploratory ensemble for spikes, research, and problems where the path forward is unclear
3
-
4
- conductor:
5
- type: tempo-conductor
6
- instructions: >
7
- You are leading a jam session — the goal is exploration, not delivery. Break the
8
- unknown into research questions, assign them to the improv player and soloist,
9
- and have the composer evaluate findings architecturally. Synthesize discoveries
10
- into a clear recommendation or next steps. Time-box aggressively — report
11
- findings even if incomplete.
12
-
13
- players:
14
- - name: explorer
15
- type: tempo-improv
16
- instructions: >
17
- You are the primary researcher. Investigate the unknown: read docs, explore
18
- codebases, test hypotheses, evaluate options. Report findings with structured
19
- comparisons (pros, cons, trade-offs, recommendation). Show your work —
20
- document what you tried and what you ruled out.
21
-
22
- - name: prototyper
23
- type: tempo-soloist
24
- instructions: >
25
- You build throwaway prototypes to test hypotheses from the explorer's findings.
26
- Write quick, minimal code to prove or disprove an approach. Don't over-engineer —
27
- this is a spike, not production code. Report what worked and what didn't.
28
-
29
- - name: composer
30
- type: tempo-composer
31
- instructions: >
32
- Evaluate the explorer's findings and prototyper's results through an architectural
33
- lens. Assess how each option would fit into the existing system. Identify risks,
34
- integration challenges, and long-term implications. Provide a recommendation
35
- to the conductor.
36
-
37
- schedules:
38
- - name: progress-check
39
- message: "Share what you've found so far, even if incomplete. What have you tried? What looks promising? What's a dead end?"
40
- target: all
41
- every: 15m
1
+ name: tempo-jam-session
2
+ description: Exploratory ensemble for spikes, research, and problems where the path forward is unclear
3
+
4
+ conductor:
5
+ type: tempo-conductor
6
+ instructions: >
7
+ You are leading a jam session — the goal is exploration, not delivery. Break the
8
+ unknown into research questions, assign them to the improv player and soloist,
9
+ and have the composer evaluate findings architecturally. Synthesize discoveries
10
+ into a clear recommendation or next steps. Time-box aggressively — report
11
+ findings even if incomplete.
12
+
13
+ players:
14
+ - name: explorer
15
+ type: tempo-improv
16
+ instructions: >
17
+ You are the primary researcher. Investigate the unknown: read docs, explore
18
+ codebases, test hypotheses, evaluate options. Report findings with structured
19
+ comparisons (pros, cons, trade-offs, recommendation). Show your work —
20
+ document what you tried and what you ruled out.
21
+
22
+ - name: prototyper
23
+ type: tempo-soloist
24
+ instructions: >
25
+ You build throwaway prototypes to test hypotheses from the explorer's findings.
26
+ Write quick, minimal code to prove or disprove an approach. Don't over-engineer —
27
+ this is a spike, not production code. Report what worked and what didn't.
28
+
29
+ - name: composer
30
+ type: tempo-composer
31
+ instructions: >
32
+ Evaluate the explorer's findings and prototyper's results through an architectural
33
+ lens. Assess how each option would fit into the existing system. Identify risks,
34
+ integration challenges, and long-term implications. Provide a recommendation
35
+ to the conductor.
36
+
37
+ schedules:
38
+ - name: progress-check
39
+ message: "Share what you've found so far, even if incomplete. What have you tried? What looks promising? What's a dead end?"
40
+ target: all
41
+ every: 15m
@@ -1,79 +1,79 @@
1
- name: tempo-mock-jam
2
- description: >
3
- All-mock ensemble for autonomous validation harnesses (ADR 0014 §5.5).
4
- One-command spin-up of a multi-player dev environment with mixed modes —
5
- no real LLM calls, no terminal windows, no "trust this folder" prompts.
6
- Pair with `agent-tempo --dev up --lineup tempo-mock-jam` and drive via
7
- Chrome MCP / dashboard / `cue`.
8
-
9
- Mode mix exercises every PR-3 mock surface in one ensemble:
10
- - conductor → scripted (conductor-recruit-mock scenario)
11
- - alice → scripted (multi-player-handoff scenario)
12
- - bob → echo (baseline round-trip; default mock behavior)
13
- - silent-witness → silent (heartbeat-stale phase validation)
14
- - chaos-monkey → chaos (probabilistic fail/crash injection)
15
-
16
- All five slots are mock — zero real LLM calls, zero terminal windows,
17
- zero "trust this folder" prompts. Use the dashboard / TUI / `cue` to
18
- drive the ensemble from outside.
19
-
20
- To swap the conductor back to real Claude (human-driven demo):
21
- open the TUI (/recruit-conductor) or use the MCP `recruit` tool with
22
- agent: "claude" — the mock conductor will be replaced on the next
23
- `claimAttachment`.
24
-
25
- Override the scripted player's scenario per-run via the CLI:
26
- agent-tempo --dev up --lineup tempo-mock-jam --scenario echo-roundtrip
27
- That forces EVERY mock player into `mockMode: scripted` with the named
28
- scenario regardless of the per-player `mockMode` here. Useful for
29
- one-command "all mocks reply via this scenario" runs.
30
-
31
- conductor:
32
- type: tempo-conductor
33
- agent: mock
34
- mockMode: scripted
35
- mockScenario: conductor-recruit-mock
36
- instructions: >
37
- You're driving a mock-only ensemble for autonomous validation. The
38
- players reply deterministically — no real LLM calls, no terminal
39
- windows, no human-in-the-loop. Cue them, watch the dashboard, capture
40
- bugs as scenario YAMLs.
41
-
42
- players:
43
- - name: alice
44
- agent: mock
45
- mockMode: scripted
46
- mockScenario: multi-player-handoff
47
- instructions: >
48
- Scripted three-way handoff player. Try: `cue alice "ship feature
49
- caching"`. Splits the task to bob + carol-shaped peers, reports
50
- progress through the conductor's outbox.
51
-
52
- - name: bob
53
- agent: mock
54
- mockMode: echo
55
- instructions: >
56
- Echo round-trip baseline. Used as the receiving end of multi-player
57
- handoff scenarios; every inbound cue comes back as `[ECHO] <text>`.
58
-
59
- - name: silent-witness
60
- agent: mock
61
- mockMode: silent
62
- instructions: >
63
- Drains messages without ever replying. The heartbeat watcher should
64
- transition this player to `awaiting` after the staleness threshold;
65
- the dashboard should render the staleness indicator. Useful for
66
- validating timeout / encore / pause flows.
67
-
68
- - name: chaos-monkey
69
- agent: mock
70
- mockMode: chaos
71
- instructions: >
72
- Probabilistic failure injection. Configure rates via env vars on the
73
- daemon: `AGENT_TEMPO_MOCK_CHAOS_DELAY_MS`,
74
- `AGENT_TEMPO_MOCK_CHAOS_FAIL_RATE`,
75
- `AGENT_TEMPO_MOCK_CHAOS_CRASH_RATE`,
76
- `AGENT_TEMPO_MOCK_CHAOS_SEED` (pin for reproducibility). Defaults
77
- are conservative (5 % fail, 1 % crash, no delay) so an idle ensemble
78
- doesn't churn — set higher rates explicitly to stress the
79
- supervisor-restart + outbox-retry paths.
1
+ name: tempo-mock-jam
2
+ description: >
3
+ All-mock ensemble for autonomous validation harnesses (ADR 0014 §5.5).
4
+ One-command spin-up of a multi-player dev environment with mixed modes —
5
+ no real LLM calls, no terminal windows, no "trust this folder" prompts.
6
+ Pair with `agent-tempo --dev up --lineup tempo-mock-jam` and drive via
7
+ Chrome MCP / dashboard / `cue`.
8
+
9
+ Mode mix exercises every PR-3 mock surface in one ensemble:
10
+ - conductor → scripted (conductor-recruit-mock scenario)
11
+ - alice → scripted (multi-player-handoff scenario)
12
+ - bob → echo (baseline round-trip; default mock behavior)
13
+ - silent-witness → silent (heartbeat-stale phase validation)
14
+ - chaos-monkey → chaos (probabilistic fail/crash injection)
15
+
16
+ All five slots are mock — zero real LLM calls, zero terminal windows,
17
+ zero "trust this folder" prompts. Use the dashboard / TUI / `cue` to
18
+ drive the ensemble from outside.
19
+
20
+ To swap the conductor back to real Claude (human-driven demo):
21
+ open the TUI (/recruit-conductor) or use the MCP `recruit` tool with
22
+ agent: "claude" — the mock conductor will be replaced on the next
23
+ `claimAttachment`.
24
+
25
+ Override the scripted player's scenario per-run via the CLI:
26
+ agent-tempo --dev up --lineup tempo-mock-jam --scenario echo-roundtrip
27
+ That forces EVERY mock player into `mockMode: scripted` with the named
28
+ scenario regardless of the per-player `mockMode` here. Useful for
29
+ one-command "all mocks reply via this scenario" runs.
30
+
31
+ conductor:
32
+ type: tempo-conductor
33
+ agent: mock
34
+ mockMode: scripted
35
+ mockScenario: conductor-recruit-mock
36
+ instructions: >
37
+ You're driving a mock-only ensemble for autonomous validation. The
38
+ players reply deterministically — no real LLM calls, no terminal
39
+ windows, no human-in-the-loop. Cue them, watch the dashboard, capture
40
+ bugs as scenario YAMLs.
41
+
42
+ players:
43
+ - name: alice
44
+ agent: mock
45
+ mockMode: scripted
46
+ mockScenario: multi-player-handoff
47
+ instructions: >
48
+ Scripted three-way handoff player. Try: `cue alice "ship feature
49
+ caching"`. Splits the task to bob + carol-shaped peers, reports
50
+ progress through the conductor's outbox.
51
+
52
+ - name: bob
53
+ agent: mock
54
+ mockMode: echo
55
+ instructions: >
56
+ Echo round-trip baseline. Used as the receiving end of multi-player
57
+ handoff scenarios; every inbound cue comes back as `[ECHO] <text>`.
58
+
59
+ - name: silent-witness
60
+ agent: mock
61
+ mockMode: silent
62
+ instructions: >
63
+ Drains messages without ever replying. The heartbeat watcher should
64
+ transition this player to `awaiting` after the staleness threshold;
65
+ the dashboard should render the staleness indicator. Useful for
66
+ validating timeout / encore / pause flows.
67
+
68
+ - name: chaos-monkey
69
+ agent: mock
70
+ mockMode: chaos
71
+ instructions: >
72
+ Probabilistic failure injection. Configure rates via env vars on the
73
+ daemon: `AGENT_TEMPO_MOCK_CHAOS_DELAY_MS`,
74
+ `AGENT_TEMPO_MOCK_CHAOS_FAIL_RATE`,
75
+ `AGENT_TEMPO_MOCK_CHAOS_CRASH_RATE`,
76
+ `AGENT_TEMPO_MOCK_CHAOS_SEED` (pin for reproducibility). Defaults
77
+ are conservative (5 % fail, 1 % crash, no delay) so an idle ensemble
78
+ doesn't churn — set higher rates explicitly to stress the
79
+ supervisor-restart + outbox-retry paths.
@@ -1,32 +1,32 @@
1
- name: tempo-review-squad
2
- description: Three critics with different focus areas for thorough parallel code review
3
-
4
- conductor:
5
- type: tempo-conductor
6
- instructions: >
7
- You are coordinating a code review squad. Assign code areas or PRs to critics
8
- based on their specialization. Each critic reviews the same changes but focuses
9
- on their area. Collect their feedback, synthesize findings into a unified review,
10
- and report the overall verdict.
11
-
12
- players:
13
- - name: security-critic
14
- type: tempo-critic
15
- instructions: >
16
- Focus your review on security: input validation, authentication, authorization,
17
- injection vulnerabilities, secrets handling, OWASP top 10, and dependency risks.
18
- Flag anything that could be exploited. Blockers only for real vulnerabilities.
19
-
20
- - name: perf-critic
21
- type: tempo-critic
22
- instructions: >
23
- Focus your review on performance: algorithmic complexity, memory usage, unnecessary
24
- allocations, N+1 queries, caching opportunities, bundle size, and hot paths.
25
- Flag anything that would degrade user experience under load.
26
-
27
- - name: quality-critic
28
- type: tempo-critic
29
- instructions: >
30
- Focus your review on code quality: readability, maintainability, test coverage,
31
- error handling, naming conventions, and adherence to project standards. Flag
32
- anything that would make the code harder to work with in six months.
1
+ name: tempo-review-squad
2
+ description: Three critics with different focus areas for thorough parallel code review
3
+
4
+ conductor:
5
+ type: tempo-conductor
6
+ instructions: >
7
+ You are coordinating a code review squad. Assign code areas or PRs to critics
8
+ based on their specialization. Each critic reviews the same changes but focuses
9
+ on their area. Collect their feedback, synthesize findings into a unified review,
10
+ and report the overall verdict.
11
+
12
+ players:
13
+ - name: security-critic
14
+ type: tempo-critic
15
+ instructions: >
16
+ Focus your review on security: input validation, authentication, authorization,
17
+ injection vulnerabilities, secrets handling, OWASP top 10, and dependency risks.
18
+ Flag anything that could be exploited. Blockers only for real vulnerabilities.
19
+
20
+ - name: perf-critic
21
+ type: tempo-critic
22
+ instructions: >
23
+ Focus your review on performance: algorithmic complexity, memory usage, unnecessary
24
+ allocations, N+1 queries, caching opportunities, bundle size, and hot paths.
25
+ Flag anything that would degrade user experience under load.
26
+
27
+ - name: quality-critic
28
+ type: tempo-critic
29
+ instructions: >
30
+ Focus your review on code quality: readability, maintainability, test coverage,
31
+ error handling, naming conventions, and adherence to project standards. Flag
32
+ anything that would make the code harder to work with in six months.