Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
b6006c7
perf: Optimize StopInfo/RouteInfo serialization using explicit to_dict
google-labs-jules[bot] Feb 2, 2026
0a5ecd8
fix: Remove unused asdict import in transit_data.py
google-labs-jules[bot] Feb 2, 2026
4d77247
fix: Format test_transit_data.py to pass CI checks
google-labs-jules[bot] Feb 2, 2026
3764ae4
build(deps): bump ruff from 0.14.14 to 0.15.0 in /backend
dependabot[bot] Feb 9, 2026
72b9b59
build(deps-dev): bump globals from 17.1.0 to 17.3.0 in /frontend
dependabot[bot] Feb 9, 2026
3e6390e
build(deps-dev): bump autoprefixer from 10.4.23 to 10.4.24 in /frontend
dependabot[bot] Feb 10, 2026
e21aa17
build(deps-dev): bump msw from 2.12.7 to 2.12.9 in /frontend
dependabot[bot] Feb 10, 2026
e434cf2
perf: Optimize datetime calculations in GTFSScheduleService
google-labs-jules[bot] Feb 12, 2026
50c0769
Merge pull request #161 from rburketaylor/bolt/optimize-gtfs-schedule…
rburketaylor Feb 12, 2026
282b68f
Merge pull request #137 from rburketaylor/bolt/optimize-transit-data-…
rburketaylor Feb 12, 2026
f6bfa05
chore: retarget dependabot updates to develop
rburketaylor Feb 12, 2026
d3545a2
build(deps): bump the production-npm group across 1 directory with 3 …
dependabot[bot] Feb 12, 2026
fc4fde5
build(deps): bump the production-python group across 1 directory with…
dependabot[bot] Feb 12, 2026
7a085ca
build(deps): bump the docker-images group across 1 directory with 6 u…
dependabot[bot] Feb 12, 2026
139afe8
Merge pull request #162 from rburketaylor/dependabot/npm_and_yarn/fro…
rburketaylor Feb 12, 2026
caef772
Merge pull request #159 from rburketaylor/dependabot/docker_compose/d…
rburketaylor Feb 12, 2026
502100b
Merge pull request #155 from rburketaylor/dependabot/npm_and_yarn/fro…
rburketaylor Feb 12, 2026
6de4196
Merge pull request #154 from rburketaylor/dependabot/pip/backend/prod…
rburketaylor Feb 12, 2026
41bd84b
Merge pull request #153 from rburketaylor/dependabot/npm_and_yarn/fro…
rburketaylor Feb 12, 2026
7084b21
Merge pull request #152 from rburketaylor/dependabot/pip/backend/ruff…
rburketaylor Feb 12, 2026
94d2569
Merge pull request #143 from rburketaylor/dependabot/npm_and_yarn/fro…
rburketaylor Feb 12, 2026
7979ff8
build(deps-dev): bump jsdom from 27.4.0 to 28.0.0 in /frontend
dependabot[bot] Feb 12, 2026
385c7d1
Merge pull request #151 from rburketaylor/dependabot/npm_and_yarn/fro…
rburketaylor Feb 12, 2026
c27ae3b
feat: Optimize GTFSScheduleService.get_stop_departures query
google-labs-jules[bot] Feb 13, 2026
a80e63b
feat: Optimize GTFSScheduleService.get_stop_departures query
google-labs-jules[bot] Feb 13, 2026
9ddb0bb
Merge pull request #163 from rburketaylor/bolt-optimize-gtfs-schedule…
rburketaylor Feb 13, 2026
414eb81
Delete .jules/bolt.md
rburketaylor Feb 13, 2026
1fedf38
chore(skills): add agent metadata for atomic-commits skill
rburketaylor Feb 13, 2026
80212b5
feat(skills): add gh-code-scanning-triage skill and helper script
rburketaylor Feb 13, 2026
71313c1
docs(skills): speed up atomic-commits pre-commit workflow
rburketaylor Feb 13, 2026
740caee
feat(frontend-ui): add shared radix primitives
rburketaylor Feb 14, 2026
a973fc9
style(frontend): refresh app shell theming
rburketaylor Feb 14, 2026
8b0c6d4
refactor(frontend): modernize page layouts and control panels
rburketaylor Feb 14, 2026
2a8406a
refactor(backend): modernize GTFS SQLAlchemy model typing
rburketaylor Feb 15, 2026
3e8faec
docs(backend): add GTFS-RT monitoring operations guide
rburketaylor Feb 15, 2026
8be9198
docs(skills): make atomic-commits full pre-commit check optional
rburketaylor Feb 15, 2026
50ce0e5
docs(plans): add logic bugs analysis report
rburketaylor Feb 15, 2026
fa24f4a
fix(backend-models): enforce GTFS schema constraints and deterministi…
rburketaylor Feb 17, 2026
dc65894
fix(backend-heatmap): harden cache single-flight and miss handling
rburketaylor Feb 17, 2026
3789238
fix(backend-rt): stabilize GTFS-RT locking and processing semantics
rburketaylor Feb 17, 2026
09c8867
fix(backend-transit): tighten validation and aggregation edge cases
rburketaylor Feb 17, 2026
c9c45e8
fix(frontend-api): prevent refresh overlap and improve diagnostics
rburketaylor Feb 17, 2026
17c2d28
docs(plans): add remediation tracker and profiling blueprint
rburketaylor Feb 17, 2026
8a1e68e
docs(plans): move refactor plans under docs/plans/refactor
rburketaylor Feb 18, 2026
10086c1
docs(plans): add silent-fallbacks remediation plan
rburketaylor Feb 18, 2026
e6d266d
docs(plans): add voiceover demo planning docs
rburketaylor Feb 18, 2026
f6a3369
build(deps): bump ruff from 0.15.0 to 0.15.4 in /backend (#195)
dependabot[bot] Mar 4, 2026
b48f9d3
build(deps): bump aquasecurity/trivy-action from 0.33.1 to 0.34.2 (#198)
dependabot[bot] Mar 4, 2026
f1928b8
fix(frontend-station): stabilize departures board row keys
rburketaylor Feb 19, 2026
5a0176c
feat(frontend-heatmap): canonicalize cancellations query keys
rburketaylor Feb 20, 2026
b35de80
fix(api-health): standardize readiness errors payload shape
rburketaylor Feb 21, 2026
65a0f74
perf(frontend-heatmap): memoize filters and harden map tests
rburketaylor Feb 23, 2026
644d070
feat(frontend-ui): add dialog transitions and select error states
rburketaylor Feb 25, 2026
ba69cf5
docs(refactor): refresh logic-bugs tracker and remediation handoff
rburketaylor Feb 26, 2026
3c90c7d
docs(refactor): remove completed logic-bugs planning docs
rburketaylor Feb 27, 2026
17e3dde
docs(plans): add principal risk fraud implementation docs
rburketaylor Mar 8, 2026
7b56d5c
⚡ Bolt: Optimize JSON serialization in cache service (#234)
rburketaylor Mar 27, 2026
454f092
feat(backend): stream GTFS downloads and improve error logging
rburketaylor Apr 24, 2026
f8f6863
build(deps): fix docker-compose socat tag, add alembic to image, bump…
rburketaylor Apr 24, 2026
ced48e3
feat(frontend): support live time range in station stats and heatmap …
rburketaylor Apr 24, 2026
a388827
refactor(frontend): unify heatmap legend colors with marker styles
rburketaylor Apr 24, 2026
daba000
chore(gitignore): add local tool configs and accidental root npm inst…
rburketaylor Apr 24, 2026
1ec4262
build(ci): bump trivy-action to v0.36.0
rburketaylor Apr 24, 2026
1e57880
build(deps): bump frontend deps and add minimatch override
rburketaylor Apr 24, 2026
2aac20e
docs(skills): refine atomic-commits skill with safety guards and trou…
rburketaylor Apr 24, 2026
f4faf1f
docs(plans): add efficiency optimization planning docs
rburketaylor Apr 28, 2026
a9f920f
feat(backend): add shared efficiency controls and API timing
rburketaylor Apr 28, 2026
f262569
feat(realtime): add validated hourly retention cleanup
rburketaylor Apr 28, 2026
6b0cbf9
feat(gtfs): compact static schedule storage and imports
rburketaylor Apr 28, 2026
d13b9aa
perf(heatmap): aggregate station breakdowns in SQL
rburketaylor Apr 28, 2026
2881dae
docs(skills): refine atomic commit workflow
rburketaylor Apr 28, 2026
901a04d
feat(gtfs): add live import progress tracking
rburketaylor Apr 28, 2026
f063463
feat(monitoring): show GTFS import progress in Ingestion tab
rburketaylor Apr 28, 2026
ef90935
feat(gtfs): add streaming stop_times import mode
rburketaylor Apr 29, 2026
f685e1e
docs(gtfs): document streaming import mode env var
rburketaylor Apr 29, 2026
f70ac70
fix: resolve Semgrep security findings and migration test failures
rburketaylor May 1, 2026
9e4879f
fix: update postgres volume mount for 18+ compatibility
rburketaylor May 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
172 changes: 94 additions & 78 deletions .claude/skills/atomic-commits/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,32 @@ description: Plan and create organized atomic commits with clear Conventional Co

Create a small set of self-contained commits with descriptive messages and verified checks.

---

## Workflow

### Step 1: Analyze Changes
### Step 1: Gather State (no destructive actions)

Gather information about the current state:
Inspect the current state of the repository:

```bash
# Goal: identify all modified, staged, and untracked files that belong to this change set
git status
git diff
git diff --staged
git diff # all unstaged modifications
git diff --staged # any previously staged changes
git log --oneline -10

# Clear staging area to ensure clean slate for atomic commits
git reset
```

**GUARD: Do NOT run `git reset` here.** If there are already staged changes:

1. Ask the user: _"You have N files already staged. Should I unstage before planning, or plan around them?"_
2. Only unstaged if the user explicitly says to — and even then, use `git reset HEAD -- <file>` per-file, never a bare `git reset`.

If the staging area is clean, proceed directly to Step 2.

### Step 2: Plan Atomic Commits

Analyze the changes and group them into logical atomic commits. Each commit should:
Analyze the diffs and group changes into logical atomic commits. Each commit should:

- Be self-contained and buildable
- Contain logically related changes
Expand All @@ -41,84 +48,82 @@ Analyze the changes and group them into logical atomic commits. Each commit shou

Common commit types:

- `feat:` - New feature
- `fix:` - Bug fix
- `refactor:` - Code refactoring (no behavior change)
- `chore:` - Maintenance tasks, dependencies, config
- `docs:` - Documentation changes
- `test:` - Test changes
- `build:` - Build system or dependency changes
- `perf:` - Performance improvements
- `feat:` New feature
- `fix:` Bug fix
- `refactor:` Code refactoring (no behavior change)
- `chore:` Maintenance tasks, dependencies, config
- `docs:` Documentation changes
- `test:` Test changes
- `build:` Build system or dependency changes
- `perf:` Performance improvements

### Step 3: Present the Plan
For each planned commit, identify which **functions, classes, or sections** belong to it (not just which files). This will be used later to verify that the right hunks are staged.

Before committing, present the planned commits to the user in a clear format:
### Step 3: Run All Checks and Resolve Issues

```
Planned commits (N total):
**Do this BEFORE presenting the plan to the user**, because `pre-commit --all-files` may auto-modify files (e.g., formatting), which can change the commit plan.

1. [type]: brief description
Files: path/to/file1, path/to/file2
Details: explanation of what changes and why
Run checks ONCE for all changes:

2. [type]: brief description
Files: path/to/file3
Details: explanation of what changes and why
```bash
pre-commit run --all-files
```

Ask for user confirmation before proceeding.
If this repo uses `direnv`, ensure it is allowed before running. Otherwise activate the dev env (often `source .dev-env`) before running Python tooling.

### Step 4: Run All Checks ONCE (Before Creating Commits)
**If checks pass:** proceed to Step 4.

**IMPORTANT:** Run checks ONCE for all changes before starting to create commits. Pre-commit will run again during each `git commit`, so this catches issues upfront and avoids repeated runs.
**If checks fail:**

```bash
# Run pre-commit on all files (catches linting, type-check, test issues)
pre-commit run --all-files
```
1. Fix the issues.
2. Re-run `pre-commit run --all-files` (not individual checks).
3. If checks still fail after **3 fix attempts**, **STOP** and report the failure to the user with the full output. Ask for direction. Do not loop beyond 3 attempts.
4. **CRITICAL: Do NOT proceed to create commits until all checks pass.**

If this repo uses `direnv`, ensure it is allowed before running. Otherwise activate the dev env (often `source .dev-env`) before running Python tooling.
After checks pass, re-examine the plan from Step 2. If `pre-commit` auto-modified any files, adjust the commit groupings accordingly before presenting.

**Why this approach:**
### Step 4: Present and Confirm the Plan

- Pre-commit already runs linting, type-checking, and tests
- Running once before committing is more efficient than per-commit
- Prevents the pre-commit hook from failing mid-commit sequence
Present the verified plan to the user:

Continue to Step 5 only after all checks pass.
```
Planned commits (N total):

### Step 5: Resolve Issues
1. [type]: brief description
Scope: <functions/sections this commit covers>
Files: path/to/file1, path/to/file2
Details: explanation of what changes and why

If `pre-commit run --all-files` fails:
2. [type]: brief description
Scope: <functions/sections this commit covers>
Files: path/to/file3
Details: explanation of what changes and why
```

1. Fix the issues
2. Re-run `pre-commit run --all-files` (not individual checks)
3. Repeat until all checks pass
4. **CRITICAL: Do NOT proceed to create commits until all checks pass**
5. Only then proceed to Step 6
Ask for user confirmation before proceeding.

### Step 6: Create Commits
### Step 5: Create Commits

**GUARD: Only proceed here after ALL pre-commit checks have passed.**
**GUARD: Only proceed here after the user has confirmed the plan AND all pre-commit checks have passed.**

Create commits one at a time, staging only the files for each commit:
Create commits one at a time. For each planned commit:

```bash
# For each planned commit:
# Stage only the files for this commit
git add <files-for-this-commit>

# CRITICAL: Verify what will actually be committed before committing
git diff --cached
# CRITICAL: Verify what will actually be committed
git diff --cached # Goal: confirm staged hunks match ONLY this commit's scope
```

**Review the staged diff carefully:**

- Does it contain ONLY the changes described in this commit?
- Are there unrelated changes bundled in? (especially if a file has multiple logical changes)
- If wrong changes are staged, use `git reset` and re-stage more carefully
- For files with multiple independent changes, consider using `git add -p` to stage specific hunks
- Does it contain ONLY the changes described in this commit's scope?
- Are there unrelated changes bundled in? (especially if a single file has changes for multiple commits)
- If wrong changes are staged, use `git reset HEAD -- <file>` to unstage that specific file, then re-stage more carefully.
- Do NOT use bare `git reset` — it unstages ALL files and destroys your commit-in-progress.

Only AFTER verifying the staged diff matches the planned commit:
After verifying the staged diff matches the planned commit:

```bash
git commit -F - <<'EOF'
Expand All @@ -129,21 +134,28 @@ git commit -F - <<'EOF'
EOF
```

**IMPORTANT:**
**GUARD: If `git commit` fails** (e.g., pre-commit hook rejects it):

1. Do NOT amend — fix the issue and create a new commit attempt.
2. If the failure suggests the plan was wrong, **stop the sequence**, report what commits were created and what failed, and ask the user how to proceed.
3. Only continue to the next planned commit after the current one succeeds.

**Rules for creating commits:**

- Always verify with `git diff --cached` BEFORE committing
- Always use HEREDOC syntax for commit messages to ensure proper formatting
- Each commit must be created separately (never batch multiple logical commits)
- Do NOT use `git commit --amend` - always create new commits
- Do NOT push commits - the skill only creates them locally
- Pre-commit hooks will run during each `git commit` (but should pass since you ran `--all-files` first)
- Always verify with `git diff --cached` BEFORE committing.
- Always use HEREDOC syntax for commit messages.
- Each commit must be created separately (never batch multiple logical commits).
- Do NOT use `git add -p` or any interactive command — use file-level staging only.
- Do NOT use `git commit --amend` — always create new commits.
- Do NOT push commits — the skill only creates them locally.
- Pre-commit hooks will run during each `git commit`. This is expected and safe because you already passed `--all-files` in Step 3.

### Step 7: Verify and Report
### Step 6: Verify and Report

After all commits are created:

```bash
# Show the commits created
# Goal: confirm all intended commits were created and working tree is clean
git log --oneline -10
git status
```
Expand All @@ -152,12 +164,12 @@ Report to the user:

- Number of commits created
- Brief summary of each commit
- Confirmation that tests passed
- Confirmation that checks passed
- Reminder that commits are local and not pushed

## Example Output
---

After completing, report to the user like this:
## Example Output

```
✓ Created 3 atomic commits:
Expand All @@ -176,15 +188,19 @@ After completing, report to the user like this:
- Added authentication flow diagrams
- Documented token refresh mechanism

All tests passed. Commits are ready locally (not pushed).
All checks passed. Commits are ready locally (not pushed).
```

## Important Notes
---

- **NEVER commit without verifying** - Always run `git diff --cached` after staging and BEFORE committing to verify exactly what will be committed
- **Never skip tests** - Always run the full test suite before committing
- **Never push** - This skill only creates local commits
- **Always use HEREDOC** for commit message formatting
- **Always create new commits** - never amend existing ones
- **Group logically** - Atomic commits should be self-contained units
- **Follow project style** - Match existing commit message patterns
## Troubleshooting

| Problem | Action |
| --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| User had pre-staged work | Ask whether to preserve or unstage before planning. Unstaged per-file with `git reset HEAD -- <file>`, never bare `git reset`. |
| `pre-commit --all-files` fails | Fix and re-run. After 3 failed fix attempts, stop and ask the user. |
| Auto-formatting changed files | Re-examine the commit plan — those changes may need different grouping. |
| Wrong files staged for a commit | `git reset HEAD -- <file>` to unstage specific files, not bare `git reset`. |
| `git commit` rejected by hook | Fix the issue, then create a new commit (never amend). If the fix changes the plan, stop the sequence and ask. |
| A file has changes for multiple commits | Split at file boundaries (whole-file per commit). Interactive `git add -p` is not supported; stage files as wholes only. If a file truly needs splitting, ask the user to split it manually first. |
| Partial sequence failure (2 of 3 commits succeeded) | Report what was created and what failed. Ask user whether to continue, re-plan, or start over. Never amend already-created commits. |
Loading
Loading