Skip to content

Adapt onboarding to Antigravity (AGY) - #57

Merged
alongd merged 1 commit into
mainfrom
agy-onboarding
Aug 4, 2026
Merged

Adapt onboarding to Antigravity (AGY)#57
alongd merged 1 commit into
mainfrom
agy-onboarding

Conversation

@alongd

@alongd alongd commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

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.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_URL and new proxy/service setup guidance.
  • Replaced cc-watchdog installation flow with a /schedule-based silent-stall mitigation approach.
Suppressed comments (4)

onboarding/ONBOARDING.md:140

  • Headroom is installed with --scope system here, but later steps manage the service using systemctl --user and 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-watchdog in 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 for slack-ask/slack-notify is 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 in onboarding/agents/ (only the four *.md role 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>.

Comment thread onboarding/ONBOARDING.md
Comment thread onboarding/ONBOARDING.md Outdated
Comment thread onboarding/ONBOARDING.md Outdated
Comment thread onboarding/ONBOARDING.md Outdated
@alongd

alongd commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

Addressed all 8 Copilot findings (4 inline + 4 suppressed), squashed into the branch commit — force-pushed as 160bc64. All four CI checks pass.

# Finding Fix
1 "your own Claude account" in an AGY doc → "your own Antigravity account"
2 "A Antigravity session" → "An"
3 statusline/install-agy.sh doesn't exist Replaced the fake command with an honest note: the existing installer is Claude-Code-only, skip it on AGY
4 >> ~/.bashrc appends on every re-run Guarded with grep -qxF … ||
5 --scope system vs systemctl --user (suppressed) --scope provider, matching the codex profile and main
6 Herdr step still cited "the cc-watchdog guard (step 13)" that step 13 removes (suppressed) Rewrote both references
7 SLACK_WEBHOOK_URL vs the bot token slack-notify actually uses (suppressed) Marked the ping optional and pointed at the bot-token row in MAINTAINING.md
8 agents/subagents-hook.json doesn't exist (suppressed) Rewrote step 7 to use the four agents/*.md role files that do exist

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 install-agy.sh "also at 99 and 137". grep finds exactly one occurrence of each. The findings themselves were real; only the extra locations were not.

One defect Copilot missed: the runbook jumped step 5 → step 7. This PR merged main's steps 5 and 6 without renumbering, leaving a hole a reader following step-by-step would hit. Renumbered 7→6 … 13→12 and updated every cross-reference, including three in MAINTAINING.md and one in CLAUDE.global.md.

While there I also fixed two contradictions this PR created in MAINTAINING.md, which wasn't in the diff so Copilot never saw it: "First pass: Claude Code only" (now AGY), and the cc-watchdog row still claiming "this ships to members".

Left deliberately: the gstack references in step 5, the smoke test, and the two MAINTAINING.md gstack rows. Those are owned by the follow-up PR that removes gstack from onboarding entirely.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 bash but contains a call: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 agy and --profile codex both show running /
    healthy
    . In a freshly started Antigravity session, running !echo $GEMINI_BASE_URL
    prints http://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>

@alongd alongd changed the title docs: Migrate onboarding to Antigravity (AGY) Adapt onboarding to Antigravity (AGY) Aug 4, 2026
@alongd
alongd merged commit 9ba8251 into main Aug 4, 2026
5 checks passed
@alongd

alongd commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

Second Copilot pass on 160bc64 returned zero inline comments and 7 suppressed findings. Six addressed, squashed into the branch commit — now e807c30.

Two were regressions I introduced in the previous round (N5 MAINTAINING.md:34, N7 CLAUDE.global.md:56): my rewrite of step 7 replaced the ~/.claude/agents/ symlink with per-session define_subagent, and I updated only the step numbers in those two files, not the mechanism they describe. Both now name both mechanisms explicitly. Good catch by the bot.

The rest:

  • ONBOARDING.md:140 — comment said "generic or Google backend depending on Headroom support" while the command hard-codes --backend google; reworded.
  • ONBOARDING.md:197 — the bash fence wrapped call:default_api:schedule{…}, an AGY tool call. Relabelled text and stated plainly it is not a shell command.
  • ONBOARDING.md:256 — the smoke test used !echo $GEMINI_BASE_URL; ! is Claude Code's shell escape and means nothing in AGY. Now a plain shell check, with the reminder to open a new shell since step 11 only appends to ~/.bashrc.

One I corrected rather than obeyed. On ONBOARDING.md:206 Copilot flagged the Slack token path ~/.claude/.slack-bot-token as possibly wrong for AGY, hedging "if the slack skill truly uses ~/.claude, this is an oversight." It isn't — agent-skills/bin/cc-slack-post.py defaults to exactly that path, with CC_SLACK_TOKEN_FILE as the override. Changing it would break the skill. I documented why the path is what it is instead.

MAINTAINING.md:48 (gstack clone row) is deliberately left. It genuinely contradicts step 5, but both sides of that contradiction are gstack claims that the follow-up PR removes outright — and step 5's "natively available in AGY" is itself false. Aligning the row to a false claim would make the doc worse. It's owned by the de-gstack PR, not dropped.

alongd added a commit that referenced this pull request Aug 4, 2026
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.
alongd added a commit that referenced this pull request Aug 5, 2026
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants