Skip to content

Automations

Five automations run on schedule. Each can be triggered manually or toggled off individually. Managed by SchedulerService — a 60-second tick loop with per-task last-run tracking in SQLite so restarts don’t cause duplicate runs.

TimeTaskPurpose
8:00 AMDaily standupGit activity, active errors, Jira/GitLab tickets
9:00 AMCode health checkTODOs, large files, hotspots, tech-debt trends
11:00 AMDependency checkOutdated packages, vulnerabilities, lockfile sync
Every 2 hrsGit watchdogUncommitted changes, stale branches, upstream drift
5:00 PMEnd-of-day summaryCommits, lines changed, files touched

Morning briefing → CodeBuddy Standup output channel. Data sources:

  • Last context — your 3 most recent chat messages (truncated to 100 chars)
  • Modified files — currently unsaved
  • Active errors — editor diagnostics at Error severity (max 50)
  • Git summary — current branch, commits last 24 h, diff stats, uncommitted (max 15)
  • Jira tickets — assigned to you via jira issue list -a me --limit 5
  • GitLab issues — assigned to you via the GitLab CLI

Agent tools: standup_intelligence lets the agent ingest notes / retrieve tasks / find blockers / search history. team_graph provides collaboration analytics.

Scans for tech debt indicators + tracks trends. Output → CodeBuddy Health channel.

What it checks:

  • TODO / FIXME / HACK comments with file + line
  • Large files over threshold (default 300 lines)
  • Git hotspots — most-changed files in last 30 days (configurable min changes)
  • Index freshness — is codebase analysis > 24 h old?

Trend tracking: health_snapshots SQLite table. Each run compares against previous (”↑ 3 new TODOs since last check”).

Notification: summary with Refresh Index + View Report actions.

Auto-detects package manager (npm / yarn / pnpm). Checks:

  • Wildcard versions (* / "latest" — unreproducible builds)
  • Outdated packages sorted by major-version drift
  • Security vulnerabilities via npm/yarn/pnpm audit
  • Lockfile sync with package.json

Notification: View Report + Run npm audit fix actions.

Every 2 hours:

CheckTriggerActions offered
Uncommitted changesNo commit in > 2 h + staged/modified filesGenerate Commit Message, Open Source Control, Snooze
Stale branches≥ 3 merged branches not cleaned upView Branches, Dismiss
Upstream divergenceBehind remote after fetchInformational alert

Protected branches (configurable) excluded from stale-branch checks.

5:00 PM → CodeBuddy Daily Summary output channel.

Reports: current branch, commits today (since midnight), lines changed (+/-), files touched, uncommitted count, error count (editor diagnostics, max 500).

Actions: View Summary + Copy as Markdown.

CommandFires
Trigger Daily StandupStandup report immediately
Trigger Code Health CheckHealth scan immediately
Trigger Dependency CheckDependency audit immediately
Trigger Git WatchdogGit state check immediately
Trigger End-of-Day SummaryDaily summary immediately
SettingDefaultPurpose
codebuddy.automations.dailyStandup.enabledtrue8 AM standup
codebuddy.automations.codeHealth.enabledtrue9 AM health check
codebuddy.automations.codeHealth.hotspotMinChanges3Min changes to flag a hotspot
codebuddy.automations.codeHealth.largeFileThreshold300Lines threshold
codebuddy.automations.codeHealth.maxTodoItems50Max TODOs to list
codebuddy.automations.dependencyCheck.enabledtrue11 AM dep check
codebuddy.automations.gitWatchdog.enabledtrue2-hour git watchdog
codebuddy.automations.gitWatchdog.protectedBranches["main", "master", "develop", "dev", "feature/*", ...]Branches excluded from stale check
codebuddy.automations.endOfDaySummary.enabledtrue5:00 PM summary
codebuddy.standup.myName""Your name (falls back to git config user.name)

Settings → Co-Worker shows all automations with toggles + Trigger Now buttons. Grouped:

  • Morning Briefing — Daily Standup
  • Codebase Pulse — Code Health + Dependency Guardian
  • Git Guardian — Git Watchdog
  • Daily Wrap-up — End-of-Day Summary
graph TB A[setInterval — 60 s] --> B[For each registered task] B --> C{Enabled in settings?} C -->|no| B C -->|yes| D{Time to run?<br/>Check schedule vs last_run} D -->|no| B D -->|yes| E[Execute<br/>Catch + log errors] E --> F[Update last_run_at<br/>SQLite scheduled_tasks] F --> B

Dedup: last_run_at in scheduled_tasks SQLite table. Daily tasks fire at most once per calendar day; interval tasks once per interval period.

Cleanup on deactivate: interval cleared, in-flight tasks allowed to complete (not cancelled), SQLite connection closed.