Adapt onboarding to Antigravity (AGY) - #57
Conversation
There was a problem hiding this comment.
Pull request overview
Updates the onboarding runbook to switch the recommended agent workflow from Claude Code to Antigravity (AGY), including updated Headroom proxy instructions and replacing cc-watchdog guidance with AGY-native scheduling.
Changes:
- Reworked onboarding steps to use
agy, Antigravity config locations, and ported skills/subagents language. - Updated Headroom instructions to route AGY via
GEMINI_BASE_URLand new proxy/service setup guidance. - Replaced
cc-watchdoginstallation flow with a/schedule-based silent-stall mitigation approach.
Suppressed comments (4)
onboarding/ONBOARDING.md:140
- Headroom is installed with
--scope systemhere, but later steps manage the service usingsystemctl --userand user drop-ins under~/.config/systemd/user/.... With--scope system, the service would be system-level and those user-scoped commands/configs won't apply.
# Start a systemd service for AGY proxy (using generic or Google backend depending on Headroom support)
headroom install apply --preset persistent-service --runtime python --scope system \
--providers manual --target generic --backend google --port 8787 --profile agy
onboarding/ONBOARDING.md:65
- This section still describes Herdr/tmux as being driven by the "cc-watchdog guard (step 13)", but step 13 now explicitly removes
cc-watchdogin favor of AGY-native scheduling. These references should be updated to avoid pointing people at a guard that no longer exists.
A multiplexer keeps your panes (and long agent sessions) alive across
disconnects, and is what the cc-watchdog guard (step 13) drives.
**Use [Herdr](https://herdr.dev)** — it's the group's recommended default because
it's agent-aware (shows each agent's live state in a sidebar) and the cc-watchdog
guard and the PI's watchers gate on that state natively. tmux is also fully
supported if you deliberately prefer a keyboard-first, ubiquitous multiplexer.
onboarding/ONBOARDING.md:195
- This tells the reader to export
SLACK_WEBHOOK_URL, but elsewhere in the repo the Slack integration forslack-ask/slack-notifyis described as using a bot token file (and Slack is also described as deferred). Either make the Slack requirement explicitly optional here or reference the same setup mechanism used by the Slack skills.
The agent's rules (`GEMINI.md`) instruct it to always set a `TimerCondition: any` timer before long waits. If the background tasks finish early, the timer is aborted. If the deadline passes, the timer fires a high-priority message directly into the agent's context, and the agent uses the `slack-notify` skill to ping you.
*You do not need to install `watchdog/install.sh` anymore.* Just ensure your `SLACK_WEBHOOK_URL` is exported in your environment.
onboarding/ONBOARDING.md:104
- This step references
onboarding/agents/subagents-hook.json, but there is no such file inonboarding/agents/(only the four*.mdrole files). Either add the JSON hook file in this PR or update the instructions to point at the files that actually exist.
In Antigravity, **Subagents** are spawned dynamically via the `define_subagent` and `invoke_subagent` tools.
You can pre-register our four group roles (`snippet-classifier`, `code-implementer`, `architecture-reviewer`, `project-executor`) by pointing Antigravity to our group subagents hook:
```bash
mkdir -p ~/.gemini/config/hooks
cp <path-to-this-DRGScripts-clone>/onboarding/agents/subagents-hook.json ~/.gemini/config/hooks/
</details>
---
💡 <a href="/DanaResearchGroup/DRGScripts/new/main?filename=.github/instructions/*.instructions.md" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Add Copilot custom instructions</a> for smarter, more guided reviews. <a href="https://docs.github.com/en/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Learn how to get started</a>.
|
Addressed all 8 Copilot findings (4 inline + 4 suppressed), squashed into the branch commit — force-pushed as
Two of Copilot's location claims were wrong, worth noting for anyone re-reading the thread: it reported the "Claude account" wording "also appears at lines 60 and 193" and One defect Copilot missed: the runbook jumped step 5 → step 7. This PR merged While there I also fixed two contradictions this PR created in Left deliberately: the |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.
Suppressed comments (7)
onboarding/ONBOARDING.md:140
- The comment claims the backend may vary "depending on Headroom support", but the command is hard-coded to
--backend google. This is confusing for someone following the runbook; either document the exact backend being used here, or provide explicit alternative commands.
# Start a systemd service for AGY proxy (using generic or Google backend depending on Headroom support)
onboarding/ONBOARDING.md:197
- This code block is labeled as
bashbut contains acall:default_api:schedule{...}tool invocation, which is not a shell command. In a step-by-step onboarding flow, this should be expressed as something to run inside an AGY session (e.g./schedule ...) or the fence should be changed to avoid implying it’s runnable in a terminal.
Before a session goes quiet while waiting on something, the agent must simply set an early-termination timer:
```bash
# Agent sets a timer to check back if stalled (natively handled within AGY):
call:default_api:schedule{"DurationSeconds":"2400", "Prompt":"Check on the command status. If it stalled, ping Slack.", "TimerCondition":"any"}
**onboarding/ONBOARDING.md:206**
* This section says Antigravity configs/rules live under `~/.gemini/...`, but the Slack bot token location is documented as `~/.claude/.slack-bot-token`. Unless the slack skill truly still reads from `~/.claude`, this is a likely migration oversight and will send new AGY users to the wrong place.
The Slack ping is optional — Slack is deferred in this first pass (section D). If you do want
it, the slack-notify skill authenticates with a bot token, not a webhook: follow the Slack row
in MAINTAINING.md to create the token and write it to
~/.claude/.slack-bot-token. Without it the timer still fires into the agent's context; you just
don't get the push notification.
**onboarding/ONBOARDING.md:256**
* The smoke test suggests running `!echo $GEMINI_BASE_URL` inside an Antigravity session, but `!cmd` is Claude Code-specific shell-escape syntax and isn’t explained elsewhere in this AGY onboarding. This should be a normal shell command (or document the equivalent AGY mechanism) to avoid confusing new members.
-
headroom install status --profile agyand--profile codexboth show running /
healthy. In a freshly started Antigravity session, running!echo $GEMINI_BASE_URL
printshttp://127.0.0.1:8787.
**onboarding/MAINTAINING.md:34**
* This artifact-map row says the role agent files are symlinked into `~/.claude/agents/` in ONBOARDING step 7, but ONBOARDING step 7 now describes AGY subagents registered per-session via `define_subagent` (no `~/.claude/agents/` symlink step). The map should match the new AGY onboarding so maintainers don’t keep updating the wrong workflow.
| onboarding/agents/*.md | DRGScripts | Four subagent role definitions (snippet-classifier/haiku, code-implementer/sonnet, architecture-reviewer/opus, project-executor/fable), symlinked into ~/.claude/agents/ in ONBOARDING step 7. Paired with the "Subagent model routing" section in CLAUDE.global.md. | The role set, model/effort assignments, or the routing boundary changes — keep the agent files and the CLAUDE.global.md routing section in lockstep. |
**onboarding/MAINTAINING.md:48**
* This decision row still documents a manual gstack clone into `~/.claude/skills/gstack`, but ONBOARDING step 5 now says gstack skills are natively available in AGY and do not need to be cloned. Leaving the clone instruction here makes the MAINTAINING rationale contradict the member-facing runbook.
| gstack skills | member installs in ONBOARDING step 5 | CLAUDE.global.md and the smoke test reference /browse, /review, /ship, … — so gstack must be part of the member setup, not PI-only. It's a separate repo (garrytan/gstack) cloned into ~/.claude/skills/gstack; git-ignored inside agent-skills. |
**onboarding/CLAUDE.global.md:56**
* This sentence points readers to ONBOARDING step 7 but also says the role agents are installed in `~/.claude/agents/`. In the updated onboarding, step 7 is the AGY flow and does not install anything under `~/.claude/agents/`, so this parenthetical is now misleading.
Regardless of which model THIS session runs on, when dispatching a subagent prefer one of the four group role agents (installed in ~/.claude/agents/, see ONBOARDING step 7) over the generic general-purpose/claude agent, matching the work to the role. Each role pins its own model + effort, so the routing holds no matter the mother model — a Sonnet, Opus, Fable, or Haiku mother that dispatches code-implementer still gets Sonnet, etc.
</details>
|
Second Copilot pass on Two were regressions I introduced in the previous round (N5 The rest:
One I corrected rather than obeyed. On
|
PR #57 merged at 160bc64 while a second review round was in flight, so these six fixes were force-pushed to the branch but never merged. - ONBOARDING step 11: the systemd comment claimed the backend was chosen "depending on Headroom support" while the command hard-codes --backend google. - ONBOARDING step 12: the schedule example sat in a ```bash fence, but call:default_api:schedule{...} is an AGY tool call, not a shell command a member can paste into a terminal. - ONBOARDING step 12: record why the Slack token lives at ~/.claude/.slack-bot-token in a ~/.gemini world — it is the skill's own default (bin/cc-slack-post.py), overridable via CC_SLACK_TOKEN_FILE. - ONBOARDING smoke test: `!echo $GEMINI_BASE_URL` used Claude Code's shell escape, which means nothing in AGY. - MAINTAINING + CLAUDE.global.md: both still described the four role files as symlinked into ~/.claude/agents/, which step 7 replaced with per-session define_subagent. Name both mechanisms.
PR #57 merged at 160bc64 while a second review round was in flight, so these six fixes were force-pushed to the branch but never merged. - ONBOARDING step 11: the systemd comment claimed the backend was chosen "depending on Headroom support" while the command hard-codes --backend google. - ONBOARDING step 12: the schedule example sat in a ```bash fence, but call:default_api:schedule{...} is an AGY tool call, not a shell command a member can paste into a terminal. - ONBOARDING step 12: record why the Slack token lives at ~/.claude/.slack-bot-token in a ~/.gemini world — it is the skill's own default (bin/cc-slack-post.py), overridable via CC_SLACK_TOKEN_FILE. - ONBOARDING smoke test: `!echo $GEMINI_BASE_URL` used Claude Code's shell escape, which means nothing in AGY. - MAINTAINING + CLAUDE.global.md: both still described the four role files as symlinked into ~/.claude/agents/, which step 7 replaced with per-session define_subagent. Name both mechanisms.
Adapts the onboarding guide for Antigravity (AGY), updates Headroom token compression to use GEMINI_BASE_URL, updates skills location, and uses native AGY scheduling instead of cc-watchdog.