Skip to content

Repository files navigation

AI Daily Assistant

A personal AI assistant for software engineers, built on Claude Code. It runs throughout your workday — tracking notes and todos, watching GitHub and Jira, running background investigations, and giving you morning briefings and end-of-day summaries.

One command to start everything: assistant

┌──────────────────────┐     ┌───────────────────────────────┐
│  Claude Code (REPL)  │     │  Go Daemon (assistantd)       │
│  Interactive chat     │     │  Background workers:          │
│                      │     │    PR watcher         (5m)    │
│  CLAUDE.md persona   │────▶│    Inbox processor    (2m)    │
│  + plugin skills     │◀────│    Notification sender (1m)   │
│                      │     │    Manifest rebuilder  (5m)   │
│  Spawns background   │     │                               │
│  claude sessions in  │     │  HTTP API (:3847)             │
│  git worktrees       │     │                               │
└──────────┬───────────┘     └──────────────┬────────────────┘
           │                                │
           │    ┌──────────────────────┐    │
           └───▶│    ~/.assistant/     │◀───┘
                │   Markdown files     │
                │   Source of truth    │
                └──────────┬───────────┘
                           │
              ┌────────────▼─────────────┐
              │  React Dashboard (:5173) │
              │  Read-only + todo toggle │
              └──────────────────────────┘

The filesystem is the API. Claude Code writes to it. The daemon writes to it. The dashboard reads from it. If a session crashes, nothing is lost.

Prerequisites

  • Claude Code CLI installed and authenticated
  • Go 1.25+ (for building the daemon)
  • Node.js 18+ (for the dashboard)
  • gh CLI authenticated (for GitHub integration)
  • Jira MCP server configured in Claude Code (optional, for Jira integration)

Setup

git clone https://github.com/hypershift-community/ai-daily-assistant.git
cd ai-daily-assistant
./setup.sh

The setup script will:

  1. Create the ~/.assistant/ directory structure
  2. Generate a default ~/.assistant/config.json
  3. Build the Go daemon
  4. Symlink the assistant command to ~/bin/ (add ~/bin to your PATH if it isn't already)

After setup, edit the config:

$EDITOR ~/.assistant/config.json
{
  "version": 1,
  "github": {
    "repo": "your-org/your-repo",
    "pollIntervalMinutes": 5
  },
  "jira": {
    "project": "YOUR-PROJECT",
    "pollIntervalMinutes": 15
  },
  "models": {
    "trivial": "claude-haiku-4-5",
    "standard": "claude-sonnet-4-6",
    "deep": "claude-opus-4-6"
  },
  "daemon": {
    "port": 3847
  },
  "standup": {
    "days": ["monday", "thursday"],
    "remindAt": "09:00"
  },
  "workingHours": {
    "start": "08:00",
    "end": "18:00"
  }
}

Customizing CLAUDE.md

CLAUDE.md drives the assistant's personality and behavior. It ships with references to openshift/hypershift as a working example. Edit it to match your project:

  • Update the ## Repos section with your repo path
  • Adjust the briefing skill's PR link format in skills/briefing/SKILL.md
  • Modify standup days/format in skills/standup/SKILL.md

Dashboard setup

cd dashboard
npm install

The dashboard starts automatically with the assistant command.

Usage

assistant

This starts the daemon + dashboard in the background, then launches Claude Code with the assistant persona. You get a morning briefing automatically.

Intended Workflow

You launch the assistant when you start your day. It gives you a morning briefing — open PRs, Jira updates, todos carried over, and what you were thinking about yesterday.

Then you keep it running. Throughout the day you chat with it naturally:

  • "note: SRE says the issue is in the token rotation logic" — logged immediately
  • "todo: follow up with Alice on the flaky test" — added to your list
  • "I think the real problem is the retry backoff, not the timeout" — captured as hot context so it survives session restarts

When real work comes in — reviewing a PR, investigating a bug, implementing a feature — you kick it off as a background task: "investigate why CI is failing on the release branch." The daemon spawns a separate Claude session in a git worktree, picks the right model tier, and runs the work without blocking your main session. You keep chatting, taking notes, and working.

When a background task finishes, you pull the results into your main session: "show task 3." Now you can discuss the findings interactively — ask follow-up questions, refine the approach, or approve posting review comments. The main session is always available, always has your context, and never gets bogged down with heavy code analysis.

At the end of the day, run /assistant:wrapup for a summary of what you accomplished and what's carrying over to tomorrow.

Talking to the assistant

Speak naturally. The assistant recognizes these patterns:

Notes and todos

  • note: the SRE test pattern is broken repo-wide — saves a timestamped note
  • todo: review PR #1234 — adds to today's todo list
  • done: review PR #1234 — marks it complete

Background tasks

  • investigate why CI is failing on the release branch — spawns a background AI agent
  • look into the performance regression in PR #456 — same, runs in a git worktree
  • what tasks are running? — shows active background tasks
  • show task 3 — displays the result of a completed task

Session management

  • refresh — saves context and restarts the session (clears the context window)

Skills

Skill Description
/assistant:briefing Morning briefing — PRs, Jira updates, todos, hot context, suggested focus
/assistant:wrapup End-of-day summary — accomplishments, open items, context pruning
/assistant:standup Generates standup update for Slack

The assistant also uses Claude Code's built-in skills when appropriate: /review, /jira:catch-me-up, /jira:solve, etc.

Background task tiers

When spawning background tasks, the assistant picks the cheapest model that can handle the job:

Tier Model Use case
trivial Haiku Quick lookups, file listing, simple commands
standard Sonnet PR reviews, code analysis, investigations
deep Opus Complex reasoning, multi-file refactoring, design tasks

Dashboard

The React dashboard runs at http://localhost:5173 and provides a read-only view of:

  • Overview — morning briefing, hot context
  • Tasks — background task status and results
  • Todos — todo list with checkbox toggle
  • Timeline — activity log for the day

File structure

All persistent data lives in ~/.assistant/:

~/.assistant/
├── config.json                      # Your configuration
├── state/                           # Daemon state (PR tracking, heartbeats)
├── memory/
│   └── hot-context.md               # Working memory — decisions, reasoning, intent
├── notes/
│   ├── inbox.md                     # Quick notes
│   ├── todos.md                     # Active todos
│   └── done.md                      # Completed items
├── logs/
│   └── YYYY-MM-DD.jsonl             # Daily activity log (append-only)
├── inbox/                           # Background task requests (JSON)
├── outbox/
│   ├── pending/                     # Task results waiting for review
│   └── delivered/                   # Task results already seen
├── tasks/
│   └── index.json                   # Task registry
└── notifications/
    └── pending/                     # Desktop notifications queue

How it works

CLAUDE.md-first design. The interactive experience is driven by the CLAUDE.md instructions, not heavy plugin code. Claude Code reads it on every session start and follows the persona. Only three custom skills exist where CLAUDE.md alone isn't sufficient (briefing, wrapup, standup).

Smart background tasks. The daemon uses cheap gh api polling to detect GitHub changes (zero AI cost). It only spawns Claude sessions when there's new activity to analyze. Background tasks run in isolated git worktrees.

Context management. Long conversations fill the context window and degrade quality. The assistant can "refresh" — save hot-context to disk, exit, and the wrapper script relaunches immediately. Nothing is lost because all state is in files.

No external actions without approval. The assistant never pushes code, posts PR comments, closes issues, or transitions Jira tickets without your explicit go-ahead.

Development

Build the daemon:

go build -o bin/assistantd ./cmd/assistantd

Run the dashboard in dev mode:

cd dashboard
npm run dev

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages