feat: add 'review-pr' skill and sunset 'async-pr-review'

This commit is contained in:
mkorwel
2026-03-13 19:39:41 -07:00
parent 8692b347f0
commit 295831105b
9 changed files with 156 additions and 502 deletions
+13
View File
@@ -74,3 +74,16 @@ The orchestration logic for this skill is fully tested. To run the tests:
npx vitest .gemini/skills/offload/tests/orchestration.test.ts
```
These tests mock the external environment (SSH, GitHub CLI, and the file system) to ensure that the orchestration scripts generate the correct commands and handle environment isolation accurately.
## Future roadmap: Offload V2 (Fleet)
The current version of `offload` focuses on a persistent SSH workstation. The long-term vision for this tool includes:
- **Elastic compute**: Moving from a single machine to a fleet of ephemeral
remote containers (for example, using Cloud Run Jobs or GKE Pods).
- **Immutable base images**: Building a Docker container for every commit to
`main` to ensure a guaranteed, pristine verification environment.
- **Stateless execution**: Eliminating the need for manual cleanup by using
on-demand, disposable compute nodes for every offload task.
- **Massive parallelism**: Enabling dozens of simultaneous PR reviews and
implementations across the elastic fleet.
+24 -1
View File
@@ -29,12 +29,35 @@ toolName = "codebase_investigator"
decision = "allow"
priority = 100
# --- SKILLS ---
[[rule]]
toolName = "activate_skill"
decision = "allow"
priority = 100
[rule.toolParameters]
name = "review-pr"
[[rule]]
toolName = "activate_skill"
decision = "allow"
priority = 100
[rule.toolParameters]
name = "fix-pr"
[[rule]]
toolName = "activate_skill"
decision = "allow"
priority = 100
[rule.toolParameters]
name = "pr-address-comments"
# --- SHELL COMMANDS ---
# Git (Safe/Read-only)
# Git (Safe/Read-only + Local State)
[[rule]]
toolName = "run_shell_command"
commandPrefix = [
"git checkout",
"git blame",
"git show",
"git grep",
@@ -10,8 +10,7 @@ export async function runReviewPlaybook(prNumber: string, targetDir: string, pol
runner.register([
{ id: 'build', name: 'Fast Build', cmd: `cd ${targetDir} && npm ci && npm run build` },
{ id: 'ci', name: 'CI Checks', cmd: `gh pr checks ${prNumber}` },
{ id: 'review', name: 'Gemini Analysis', cmd: `${geminiBin} --policy ${policyPath} --cwd ${targetDir} -p "/review-frontend ${prNumber}"` },
{ id: 'verify', name: 'Behavioral Proof', cmd: `${geminiBin} --policy ${policyPath} --cwd ${targetDir} -p "Analyze the code in ${targetDir} and exercise it to prove it works."`, dep: 'build' }
{ id: 'review', name: 'Offloaded Review', cmd: `${geminiBin} --policy ${policyPath} --cwd ${targetDir} -p "Please activate the 'review-pr' skill and use it to conduct a behavioral review of PR #${prNumber}."` }
]);
return runner.run();