Skip to content

feat: jules-fleet#96

Merged
davideast merged 8 commits intomainfrom
fleet-cli
Feb 26, 2026
Merged

feat: jules-fleet#96
davideast merged 8 commits intomainfrom
fleet-cli

Conversation

@davideast
Copy link
Collaborator

@google/jules-fleet

Continuous analysis and development, driven by simple goal files.

Overview

Fleet connects your development goals to Jules. You write goals as markdown files describing what you want — improved test coverage, API drift detection, triaging open issues. Fleet continuously analyzes your repository against those goals, creates actionable issues, dispatches Jules sessions to implement them, and sequentially merges the resulting PRs.

goals → analyze → dispatch → [Jules works] → merge

The entire pipeline runs on a schedule via GitHub Actions, or on-demand from the CLI.

How it works

1. Define goals

Goals live in .fleet/goals/ as markdown files. Each goal describes a focus area for your repository:

# .fleet/goals/test-coverage.md
---
milestone: "3"
---
Find modules with less than 60% test coverage and create
focused issues for each, with specific test cases to add.

A built-in triage goal ships with Fleet — it automatically triages unmilestoned open issues unless you provide your own triage.md.

2. Fleet does the rest

Step Command What happens
Analyze jules-fleet analyze Reads goals, fetches repo context, dispatches Jules analyzer sessions that create fleet-labeled issues
Dispatch jules-fleet dispatch Picks up undispatched fleet issues, fires Jules worker sessions to implement each one
Merge jules-fleet merge Sequentially merges Jules PRs — updates branch, waits for CI, squash merges. Optionally re-dispatches on conflict

3. Set up in one command

npx @google/jules-fleet init

This creates a PR with GitHub Actions workflows for analyze, dispatch, and merge — plus configures the required repo labels. Merge the PR, add your JULES_API_KEY secret, and Fleet runs on schedule.

CLI

All commands auto-detect owner/repo from GITHUB_REPOSITORY (Actions) or your local git remote.

jules-fleet init                        # scaffold workflows via PR
jules-fleet configure labels            # manage repo labels
jules-fleet analyze --goals-dir .fleet/goals
jules-fleet dispatch --milestone 3
jules-fleet merge --mode label --re-dispatch

Auth

Fleet auto-detects authentication:

  1. GitHub AppGITHUB_APP_ID + GITHUB_APP_PRIVATE_KEY_BASE64 + GITHUB_APP_INSTALLATION_ID
  2. PAT fallbackGITHUB_TOKEN

Architecture

Every command follows the Spec & Handler pattern — Zod-validated inputs, typed Result outputs (never throws), isolated ops per file to minimize merge conflicts.

analyze/    — goal processing, milestone context, prompt building
dispatch/   — issue polling, session dispatch, status tracking
merge/      — branch updates, CI waiting, squash merging, conflict re-dispatch
init/       — PR scaffolding, template management
configure/  — label management
shared/     — auth (GitHub App + PAT), result types, schemas

This PR

  • Adds packages/fleet/ — library + CLI, 72 tests
  • Removes scripts/fleet/ — replaced by the library
  • Removes fleet-*.yml workflows — will be re-added via fleet init after npm publish

@davideast davideast merged commit ca70ed2 into main Feb 26, 2026
3 checks passed
@davideast davideast deleted the fleet-cli branch February 26, 2026 02:38
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.

1 participant