Good afternoon, Alex Chen β¨
Tue 07 Jul Β· here's where everything stands.
Focus
π In flight Β· 3
cp-031Q3 access reviews (SOC 2 evidence)complianceP1
gr-012Empty-state redesign (activation step-2 leak)growthP1
pf-101Billing dual-write reconciliation report (cutover go/no-go)platformP0
Next 7 days3 due
pf-101Billing dual-write reconciliation report (cutover go/no-go)platformP0
pf-104v2 load test at 5x peak (launch gate)platformP0
cp-031Q3 access reviews (SOC 2 evidence)complianceP1
Waiting on2 blocked
| mb-032 | Submitted 07-05; waiting on Apple review (typical 2-4 days). | mobile |
βοΈ Tasks touched Β· 5
β‘ Commands Β· 2
π° Output Β· 4
Goalsfrom projects/TASKS.md
πWeekly
- - [ ] Ship the pf-101 reconciliation report and clear the exporter bug (pf-099)
- - [ ] Run the 5x load test and publish the launch go/no-go (pf-104)
- - [x] Confirm step-2 funnel baseline on production data (31%)
- - [ ] Finish Okta + AWS access reviews (cp-031)
π―Monthly
- - [ ] v2 launched July 21 with zero Sev-1s in week one
- - [ ] Usage-based billing cutover Aug 1, reconciliation-gated
- - [ ] Weekly active workspaces 1,840 β 2,100
π§Yearly
- - Q3: v2 launch + billing migration + SOC 2 Type II fieldwork clean
- - Q4: 2,500 weekly active workspaces; hire 2 senior platform engineers
Tasks
8 open tasks across 4 projects.
π This week Β· 4
pf-101Billing dual-write reconciliation report (cutover go/no-go)platformP0
pf-104v2 load test at 5x peak (launch gate)platformP0
cp-031Q3 access reviews (SOC 2 evidence)complianceP1
mb-032Mobile 3.2 App Store review + releasemobileP1
π This month Β· 2
gr-012Empty-state redesign (activation step-2 leak)growthP1
cp-028Vendor inventory + DPA sweepcomplianceP2
βΎ No due date Β· 2
pf-099Fix timezone rounding in legacy billing exporterplatformP1
mb-034Push-notification opt-in experimentmobileP2
Projects
4 projects β click one to see its tasks.
platform1 active Β· 2 open
Core API, billing, and infrastructure. Owns the v2 launch and the usage-based billing migration.
β 1 / 425%
compliance1 active Β· 1 open
SOC 2 Type II track. Audit fieldwork starts Aug 4.
β 0 / 20%
growth1 active
Activation funnel, onboarding, SEO. North star: weekly active workspaces.
β 1 / 250%
βΆ Active Β· 1
gr-012Empty-state redesign (activation step-2 leak)P1
Sessions
What you and Ace worked on, captured automatically.
Volumelast 7 days
Latest radar2026-07-07 08:27 Β· open
Launch-week prep across three threads: billing reconciliation, the load-test harness, and SOC 2 evidence.
1. Billing reconciliation walk Β· 15m ago
Week-1 dual-write numbers reviewed with Ace; exporter bug root-caused and filed as pf-099.
2. Load-test harness update Β· 4h ago
Traffic replay scripts migrated to v2 endpoints; staging run booked for Thursday.
3. SOC 2 evidence sprint Β· yesterday
Access reviews 3 of 5 done; Ace drafted the Okta review checklist.
2026-07-07
2026-07-06
2026-07-05
Brain
Ace's living memory of your world β compiled from every session.
Context loaded every session7 sources Β· 9.3 KB
| source | size | |
|---|---|---|
| β | CLAUDE.md project | 525 B |
| β | SOUL.md | 683 B |
| β | IDENTITY.md | 729 B |
| β | USER.md | 426 B |
| β | knowledge/index.mdThe master catalog β a table of contents for the whole knowledge base. It lists every permanent article with a one-line description, so Kevin can find and load just what it needs on demand instead of pulling the entire brain into context every session. | 1.2 KB |
| β | knowledge/memory/index.mdKevinβs long-term memory: active threads, recent decisions, learnings, and key context distilled from past sessions during compile (the βdreamingβ step). Loaded every session so Kevin wakes up knowing where things stand. | 3.2 KB |
| β | projects/TASKS.mdA high-level overview of every task across projects β priorities, whatβs overdue, whatβs being worked on right now. A distilled snapshot, not the full per-task detail, so Kevin sees the lay of the land without loading every task file. | 2.6 KB |
Path-scoped rules3 active
| rule | applies to | size |
|---|---|---|
| mobile project | apps/mobile/** | 183 B |
| sql project | **/*.sql**/migrations/** | 322 B |
| typescript project | **/*.ts**/*.tsx | 240 B |
Injected at SessionStart2.3 KB
| entry | size | |
|---|---|---|
| β | session tail | 1.8 KB |
| β | today's reports | 366 B |
| β | git: knowledge | 0 B |
Learningshow Ace self-corrects
Pendingopen loops Ace is tracking
Active threads5 live
Recent decisions
Compile pipelineΞ£ $0.00
| sessions ingested | 0 |
| pending | 3 session(s) waiting for /agent-kevin:sync |
| last compiled | never |
| inbox to absorb | 1 |
Memory footprint
| curated wiki | 7.6 KB |
| memory index | 3.2 KB |
| learnings | 3 |
| daily memory files | 3 (14-day retention) |
| feedback log | 249 B |
Last lint run2026-07-07T08:26:00-04:00
| errors | 0 |
| warnings | 0 |
| suggestions | 0 |
| report | open lint.md |
Issues0
Reports
Briefings, plans, and audits Ace has produced. Click any title to open it.
2026-07-07
2026-07-06
Scheduler β°
Recurring routines and when to run them β manual for now.
Capabilities
Everything you can ask Ace to do β skills by name, tools under the hood.
| when | say | what happens |
|---|---|---|
| Morning and evening | /agent-kevin:sync | Full refresh β compile, lint, flywheel, dashboard β then a briefing. Picks morning automatically before 3pm, evening from 3pm to 3am (or say `sync morning` / `sync evening`). |
| Between sessions | /agent-kevin:quick-pulse | A fast status check without the heavy maintenance pass. |
| Feeling lost | /agent-kevin:where-am-i | Radar of your recent sessions β what each was about, where it left off, how to resume it. |
| After a busy day | /agent-kevin:knowledge-compile | Absorb captured sessions, feedback, and inbox drops into long-term memory. |
| 1st of the month | /agent-kevin:monthly-goals | Set the monthβs themes and big rocks (weekly-goals does the same per week). |
| Quarterly | /agent-kevin:yearly-goals | Plan the year ahead quarter by quarter β run mid-year it shapes the remaining quarters; run in Q4 it drafts next year from Q1. |
| Once a month | /agent-kevin:self-review | The agent reviews its own behavior against your feedback and proposes improvements. |
| Save anything | βcapture this: <url, text, or file>β | Drops it into the inbox; the next compile absorbs it into the wiki. |
| File work | βcreate a task in <project>: β¦β | New task file with id, priority, and due date; shows up here and in TASKS.md. |
| Grab a page | βscreenshot https://β¦β | Headless-browser PNG into reports/captures/. |
| Make a PDF | βturn <file or url> into a styled PDFβ | Markdown/page rendered to PDF (mermaid included) in reports/captures/. |
| Research something | βresearch <topic> and write it upβ | Web research with sources, persisted as a report you can reread. |
| Refresh this page | /agent-kevin:dashboard | Regenerates this dashboard (and TASKS.md) from current state. |
Usage
Groups
Task commands
Capture commands
Hook commands (internal β wired into Claude Code hooks; safe to run manually for testing)
Knowledge commands
Compile commands
Worktree commands
Database commands
Environment
Examples
knowledge/raw/sessions/YYYY-MM-DD.md. This is how every session is saved β later compiled into long-term memory.kevin session-capture --mode=session-endAlex Chen π€
Who Ace is working for β compiled from every session.
Ace π€
Your life co-pilot β who he is and how he runs.
Ace is Acme's private company agent. It pairs with engineering on real tickets, compiles the company's knowledge into a living brain, and briefs leadership every morning. Self-hosted on Acme infrastructure; nothing leaves the building.
Core Rolefrom IDENTITY.md
- Agentic engineering: coding, debugging, monitoring, planning with full company context.
- Company brain: capture, compile, and serve institutional knowledge.
- Daily briefings, task tracking, and incident support.
Vibefrom SOUL.md
- You are Ace, Acme's company agent. Sharp, direct, allergic to fluff. You ship with the engineering team daily and brief the leadership floor every morning. Clever over polite; useful over impressive.
Core Truthsfrom SOUL.md
- Do the thing. Do not narrate what you are about to do.
- Verify before you claim. Numbers, statuses, and customer facts get a source check or stay out.
- Have a spine. If the plan is wrong, say so.
- Figure it out. Read the file, check the context, come back with answers.
Boundariesfrom SOUL.md
- Customer data stays inside Acme systems. Always.
- When in doubt, ask before acting externally.
Files
Runtime
| version | v0.3.7 |
| plugin | agent-kevin |
| marketplace | β |
| plugin path | ~/agent-kevin |
| home | /home/acme/agent-acme |
| timezone | America/New_York |
System
The machinery β settings, logs, releases.
Settings layers12 allow Β· 52 deny total
| scope | file | allow | deny | env |
|---|---|---|---|---|
| user | ~/.claude/settings.json | 2 | 49 | 5 |
| project | /home/acme/agent-acme/.claude/settings.json | 10 | 3 | 1 |
| local | /home/acme/agent-acme/.claude/settings.local.json (absent) | β | β | β |
Plugin
| plugin | not detected |
| plugins enabled | skill-creator Β· typescript-lsp Β· swift-lsp Β· pyright-lsp Β· frontend-design |
Environment6 vars
| key | value | scope |
|---|---|---|
| CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICTurns off non-essential network traffic (telemetry, auto-update pings, etc.) β keeps Claude Code quiet on the wire. | 1 | user |
| CLAUDE_CODE_NO_FLICKERRenders the prompt without the flicker-prone redraw. Upside: you can click anywhere in the prompt input box to move the cursor. Trade-off: to highlight/select text in Claudeβs responses you have to hold Shift while dragging. | 1 | user |
| ANTHROPIC_DEFAULT_HAIKU_MODELRemaps the lightweight βHaikuβ tier the harness uses for small background tasks to a more capable model, so quick auxiliary calls arenβt under-powered. | claude-sonnet-4-6 | user |
KEVIN_HOMEKevinβs home directory β the root of the knowledge tree, projects, and reports. The MCP server resolves every path from here. Defaults to the directory you launch Claude from; set this in ~/.claude/settings.json if you ever start Claude from elsewhere, so paths donβt silently resolve to the wrong place. | ~/agent-acme | user |
| ACE_HOME | /home/acme/agent-acme | workspace |
Secrets0 set Β· values never shown
Health
| file | /home/acme/agent-acme/.kevin/logs/app.log (183 B) |
| today | 0 warn Β· 0 err |
| all-time | 0 warn Β· 0 err |
Tail122 B
2026-07-07T18:54:09.782Z INFO [π€ system] [cli] dashboard2026-07-07T18:45:23.611Z INFO [π€ system] [cli] dashboard
v0.3.7 Β· your baseline2026-07-06
Fixed
- Report-writing skills (`where-am-i`, `flywheel`, `morning-briefing`, `evening-briefing`, `self-review`, `weekly-goals`, `monthly-goals`, `yearly-goals`) now surface the absolute `path` returned by `report_write` instead of the relative `relPath`, so the "π Saved to β¦" line is command-clickable in any terminal (e.g. cmux) without a base directory.
β¬ Upgrade
v0.3.62026-07-01
Changed
- `.env` deny baseline in `/init` narrowed: the catch-all `Read(**/.env.*)` is replaced by explicit denies for the secret-bearing variants (`.env.local`, `.env.*.local`, `.env.development`, `.env.production`, `.env.staging`, `.env.test`). Template files (`.env.example`, `.env.sample`, `.env.template`) now read freely, since Claude Code evaluates deny before allow with no glob negation, so narrowing the deny is the only way to whitelist one file. The bare `.env` stays denied; secrets in `.kevin/secrets/` are unaffected.
β¬ Upgrade
| change | level | detail |
|---|---|---|
settings | optional | in `.claude/settings.json` β `permissions.deny`, replace `Read(**/.env.*)` with `Read(**/.env.local)`, `Read(**/.env.*.local)`, `Read(**/.env.development)`, `Read(**/.env.production)`, `Read(**/.env.staging)`, `Read(**/.env.test)`. Purely a relaxation so `.env.example` becomes readable; skip if you prefer the broader deny. |
v0.3.52026-06-30
Added
- `sync` now closes with a next-steps interview: after the dashboard render, it turns the surfaced backlog into a single `AskUserQuestion`. Pick a concrete next move (a suggested move, a flagged overdue/stale item, a due cadence skill, or a pending upgrade), then act on it now or queue it as a task. Gated to fire only when something is actually surfaced; a clean bill still ends on the `β Sync complete` one-liner. Cadence/upgrade picks collapse to surfacing the slash command (they stay operator-gated).
β¬ Upgrade
v0.3.42026-06-25
Added
- Read-only GitHub pack: nine MCP tools that shell out to `gh --json` β `github_pr_list` / `github_pr_view` / `github_pr_diff` / `github_pr_checks`, `github_run_list` / `github_run_view` / `github_run_log`, and `github_issue_list` / `github_issue_view`. Lets Kevin review PRs and issues, pull diffs and check status, and diagnose failing GitHub Actions runs (failed-step logs). No write subcommands β commenting, merging, and re-running workflows stay human-in-terminal by design. Runs from inside the MCP server (outside the Bash sandbox, where `gh`'s keychain TLS would otherwise fail), authenticating via a `GITHUB_TOKEN` from `.kevin/secrets/.env`. Repo defaults to `origin` of `KEVIN_CODE_PATH` / first `KEVIN_GIT_REPOS` entry; override per-call with `repo="owner/repo"`.
- GitHub is now an opt-in pack in `/init` and `configure-skills` (new A.2d walk), alongside SEO / Browser / Database.
Changed
- `self-review` and `yearly-goals` skills now persist their summaries via the `report_write` MCP tool, so each run leaves a durable report in the audit trail.
β¬ Upgrade
| change | level | detail |
|---|---|---|
settings | optional | the GitHub pack is opt-in. To activate, run `/agent-kevin:configure-skills` (GitHub walk): it grants the nine `github_*` tool permissions, ensures `.kevin/secrets/.env`, and surfaces the steps to mint a fine-grained read-only PAT (`GITHUB_TOKEN`). Requires the `gh` CLI on PATH (`brew install gh`). Existing homes are unaffected until they opt in. |
v0.3.32026-06-25
Added
- Sync now surfaces cadence nudges: planning and review skills (the weekly/monthly/yearly-goals trio + self-review) that have come due are listed with the exact slash command to run, driven by a `cadence` block in each skill and a shared `skills/sync/scripts/cadence.ts`.
- Dashboard Skills tab gained auto/manual filter chips so you can split model-invocable skills from slash-only ones.
- `kevin` CLI gained a `database` command group (list/schema/query/fork) mirroring the Database MCP tools for use outside Claude Code.
Changed
- Consolidated every `process.env` read into a single config-free `shared/env.ts` module. Secret-reading tools (web-search, serpapi, open-page-rank, gsc, database, database_fork) now self-load `.kevin/secrets/.env` on first access regardless of import order, instead of relying on a sibling importing `config.ts` first. A build-time guard test fails if any module outside `shared/env.ts` reads `process.env` directly.
- self-review skill: fixed path drift, added an output watermark and a template-promotion track.
- Dashboard settings/env/secrets tables now wrap long values instead of overflowing.
Fixed
- Sandbox secrets deny never bit. v0.3.0/v0.3.1 wrote the secrets deny under `sandbox.filesystem.read.denyOnly` β the harness's internal *resolved* shape, not a real settings input key β so Claude Code silently ignored it and files nested under `.kevin/secrets/` (Google OAuth tokens, `.kevin/secrets/.env`) stayed readable by sandboxed Bash, even though `ls` of the dir was blocked. The real key is `sandbox.filesystem.denyRead`; pointing it at the directory (no glob) denies it and everything under it at the OS level, which also sidesteps the gitignore `**`-won't-descend-into-`.kevin` dot-dir trap. `/init` now scaffolds `denyRead` plus a forward-compatible `sandbox.credentials.files` entry (honored on Claude Code v2.1.187+, ignored on older).
β¬ Upgrade
| change | level | detail |
|---|---|---|
script | required | run `skills/upgrade/scripts/0.3.3.ts` via the `run_upgrade` MCP tool. It drops the dead `sandbox.filesystem.read.denyOnly` key, adds `sandbox.filesystem.denyRead: [".kevin/secrets"]`, and seeds `sandbox.credentials.files`. Idempotent. |
manual | none | restart/reload Claude Code after the migration so Seatbelt loads the corrected policy. Verify with `wc -c < .kevin/secrets/<a-token-file>` β it should report "Operation not permitted" (not a byte count). |
v0.3.22026-06-24
Added
- New `database_fork` MCP tool: clones a Postgres database into a private copy via `CREATE DATABASE <fork> TEMPLATE <source>` (pure SQL, no `pg_dump`/`pg_restore`, cross-platform), so risky or destructive schema work runs against a scratch copy instead of a shared/live DB. Refuses remote hosts (local only), defaults to the first connection, names the fork after the current git branch, can repoint an env file at the fork, and tears down with `drop: true`. This is what `setup-worktree` now uses to give a worktree its own database on demand.
- Dashboard now shows a presence-only secrets inventory of `.kevin/secrets/` (env key names + Google OAuth files): names and presence checks only, never values.
Changed
- Database tools renamed for consistency: `db_list` β `database_list`, `db_schema` β `database_schema`, `db_query` β `database_query`. Consumer-visible (permission grants change; see Upgrade).
- `setup-worktree` skill wires up `database_fork` to provision a worktree's database.
- README database section rewritten for the v0.3.0 secrets layout: `KEVIN_DB_*` connection strings now live in `.kevin/secrets/.env`, not `settings.local.json`.
Fixed
- Hardened the not-yet-released `0.3.0.ts` / `0.3.1.ts` secrets migrations: purge the old `settings.local.json` env block after relocation and strengthen the secrets deny path.
β¬ Upgrade
| change | level | detail |
|---|---|---|
settings | mandatory | only if you use the Database pack. Replace the renamed tool grants in your project `.claude/settings.json`: remove `mcp__plugin_agent-kevin_kevin__db_list`, `mcp__plugin_agent-kevin_kevin__db_query`, `mcp__plugin_agent-kevin_kevin__db_schema`; add `mcp__plugin_agent-kevin_kevin__database_list`, `mcp__plugin_agent-kevin_kevin__database_query`, `mcp__plugin_agent-kevin_kevin__database_schema`, `mcp__plugin_agent-kevin_kevin__database_fork`. |
v0.3.12026-06-24
Fixed
- Completed the secret-file deny baseline for homes upgraded via the contract. v0.3.0 broadened `/init`'s `permissions.deny` (the dotenv / cert / credential globs plus the two `curl β¦ | sh` Bash denies) and its narrow sandbox `denyOnly`, but the v0.3.0 migration wrote only the secrets-dir Read deny β so a home that ran `/upgrade` (rather than a fresh `/init`) was left with just `Read(**/.kevin/secrets/**)` and missed the rest of the hardening.
Changed
- `google-auth` tool gained a comment documenting the secrets-dir layout (parity with the worktree + Walle).
β¬ Upgrade
| change | level | detail |
|---|---|---|
script | required | run `skills/upgrade/scripts/0.3.1.ts` via `run_upgrade`. Tops the project `.claude/settings.json` up to the full `/init` baseline: adds the remaining Read denies (`**/.env`, `**/.env.*`, `**/secrets/**`, `**/credentials/**`, `**/*.pem`, `**/*.key`) and the two `curl β¦ | sh` Bash denies to `permissions.deny`, and `**/.env` + `**/.env.*` to the sandbox `filesystem.read.denyOnly`. Additive and idempotent β never removes or reorders existing entries. Touches only the project settings file, never the global `~/.claude/settings.json`. |
v0.3.02026-06-24
Added
- Secrets are centralized into a deny-gated `.kevin/secrets/` directory: credential env vars (`PERPLEXITY_API_KEY`, `SERPAPI_KEY`, `OPENPAGERANK_API_KEY`, `KEVIN_DB_*`) live in `.kevin/secrets/.env` and Google OAuth files in `.kevin/secrets/google/`, loaded once at boot by the MCP server / CLI and never exposed to ad-hoc Bash. A `Read(**/.kevin/secrets/**)` deny keeps the agent from reading its own secrets.
- Versioned upgrade-script mechanism: a heavy one-time HOME migration ships at `skills/upgrade/scripts/<version>.ts` and runs via the new always-on `run_upgrade` MCP tool (outside the Bash sandbox, so it can touch deny-gated paths). Scripts are self-contained, idempotent, fail-loud, and pruned once the minimum baseline passes them.
Changed
- `/agent-kevin:upgrade` now runs `script:`-tagged migrations through `run_upgrade`; `/agent-kevin:release` detects an in-range migration script and locks the version to its filename instead of asking for a bump.
- `init` and `configure-skills` skills updated for the secrets layout and the new always-on core tool list.
β¬ Upgrade
| change | level | detail |
|---|---|---|
script | required | run `skills/upgrade/scripts/0.3.0.ts` via `run_upgrade` (relocates secrets to `.kevin/secrets/` and writes the Read deny). Breaking HOME-layout move; idempotent and verified before it strips the originals. |
settings | mandatory | add permission `mcp__plugin_agent-kevin_kevin__run_upgrade` (new always-on core tool) and the deny `Read(**/.kevin/secrets/**)`. |
v0.2.92026-06-23
Added
- Dashboard Tasks page now has project filter chips (All + one per project, busiest first, with the project's color dot), mirroring the Reports page. They appear on both the agenda and the Needs-attention view, and stay hidden when there's only one project to filter between.
- Task rows show a π¬ comment counter chip (thread entry count) in the summary, and `depends on` ids in the expanded body now link to their task files (live or archived).
Changed
- Redesigned the expanded task-detail body: a quiet, dot-separated key/value meta block (status Β· due Β· updated Β· depends on) replaces the old `Β·`-joined dim line, with the blocker reason on its own amber-edged note line. The id itself is now the open-the-file link (no separate footer).
- Needs-attention view rebuilt: Blocked and Going-stale are filterable grouped rows under one filter box (Blocked reads as a single id Β· why Β· project row) instead of two separate tables.
- Plugin description updated to engine-agnostic tool wording (headless browser / web search, not Playwright / Perplexity) and a stable "20+ skills" count.
β¬ Upgrade
v0.2.82026-06-23
Fixed
- Task prefix resolution is now consistent end-to-end. `buildPrefixMap` gives a project whose prefix is inferred from existing task files precedence over an empty project that derives the same prefix, so an empty project can no longer displace a tasked project's IDs (which would misroute `findTaskById`). `getNextId` now mints IDs through the same collision-resolved prefix that `findTaskById` looks up, removing a second source of truth.
- `create-project` and `archive-project` skills: removed references to the deleted hardcoded `TASKS.PREFIX_MAP` (prefixes are now filesystem-derived), corrected stale `app/` paths to `mcp-server/`, fixed malformed MCP tool invocations, and dropped the dead `HEARTBEAT.md` cleanup step.
Changed
- Pure task-prefix logic extracted to `mcp-server/src/tasks/prefix.ts` (`derivePrefix`, `assignPrefixes`), keeping `scan.ts` as the filesystem wiring and making the logic unit-testable without a config-backed HOME.
β¬ Upgrade
v0.2.72026-06-22
Fixed
- SessionStart banner: the "upgrade available" row now matches the `Label: value` shape of the Agent/Knowledge/Projects rows (`β¬οΈ Upgrade: run ...`) and drops the em-dash, so it aligns with the sibling lines.
β¬ Upgrade
v0.2.62026-06-21
Changed
- `templates/CLAUDE.md` engineering standards gain a **Comments** subsection: default to no comment, keep only the *why*, JSDoc-for-consumer-APIs only (always multi-line), no tombstones/archaeology, and fix the name or abstraction instead of explaining awkward code.
β¬ Upgrade
| change | level | detail |
|---|---|---|
template/CLAUDE.md | mandatory | new "Comments" subsection under Engineering Standards. Additive content; appended after "Code style". |
v0.2.52026-06-21
Changed
- `sync` now checks for a pending plugin upgrade as part of its needs-attention step: it compares the installed plugin version against the home's migrated baseline (`.kevin/version.json`) and surfaces a dedicated `β¬οΈ Upgrade` line in the report when they drift. The check is read-only: `sync` never runs `/upgrade`; the migration stays an operator-gated command. Mirrors the dashboard staleness-warning pattern.
Fixed
- Dashboard persona-head no longer repeats the agent name + emoji next to the avatar (it already appears in the page title).
β¬ Upgrade
v0.2.42026-06-20
Changed
- The `sync` skill is now model-invocable (dropped `disable-model-invocation`), so Kevin can run a full state refresh on its own and other skills can chain it via the Skill tool (`/upgrade` now chains `sync` after applying a HOME migration). Added to the canonical onboarding grant list (eight β nine skill grants).
β¬ Upgrade
| change | level | detail |
|---|---|---|
settings | mandatory | add permission `Skill(agent-kevin:sync)` to `settings.json` β `permissions.allow`. Without it, model invocations of `sync` (including the chain from `/upgrade`) prompt for confirmation each time. |
v0.2.32026-06-20
Added
- Dashboard now surfaces each session's tasks and plans (radar-refs), so the activity view links straight to the work a session touched.
- Database tool: target a specific database per query and support db-less connections (`db_query` accepts a per-call database; connections without a default database now work). (#5)
Changed
- **Engine-agnostic MCP tool names.** The browser tools `playwright_screenshot`/`playwright_pdf`/`playwright_markdown`/`playwright_record` are renamed to `browser_screenshot`/`browser_pdf`/`browser_markdown`/`browser_record`, and `perplexity_search` is renamed to `web_search`. The underlying engines are unchanged; only the tool names are now engine-neutral. (`browser_flows` keeps its name.)
- Dashboard History: doubled the captured-briefing snippet cap to 240 chars.
- `release` skill: now asks the maintainer which bump to take (patch/minor/major, each shown with its concrete target version) and, after staging, asks how far to go (commit / commit + tag / commit + tag + push) instead of free-text proposing.
- README: promoted the upgrade/release docs to their own section and simplified the diagram.
Fixed
- Upgrade-available alert spacing in the dashboard.
β¬ Upgrade
| change | level | detail |
|---|---|---|
settings | mandatory | only if the **Browser pack** is active. The renamed tools need their `permissions.allow` grants in `settings.json` swapped: remove the old names and add the new ones β `mcp__plugin_agent-kevin_kevin__perplexity_search` β `β¦web_search`, `β¦playwright_screenshot` β `β¦browser_screenshot`, `β¦playwright_pdf` β `β¦browser_pdf`, `β¦playwright_markdown` β `β¦browser_markdown`, `β¦playwright_record` β `β¦browser_record`. (`β¦browser_flows` is unchanged.) Homes that never activated the Browser pack have no playwright/perplexity grants and need no change. |
v0.2.22026-06-20
Fixed
- `init` and `upgrade` skills: the gitignore-tracking logic used the shell `!` negation operator, which fails in the Claude Code Bash tool's eval wrapper (`command not found: !`). Rewritten to be fully `!`-free (nested if/else, octal `\041` for the literal `!`), so the `.kevin/version.json` and compile-cursor negations land regardless of shell. Completes the shell-`!` hardening begun in 0.2.1.
Changed
- README: added a "How upgrades & releases work" section documenting the two-phase model (plugin code vs. home reconciliation), local behind-detection, the consumer/maintainer flows, and the Upgrade-block format.
β¬ Upgrade
v0.2.12026-06-20
Fixed
- `init` and `upgrade` skills: a literal leading `!` in a shell command can be mangled to `\!` by some interactive shells (zsh history expansion), which silently broke the `.gitignore` negations that keep `.kevin/version.json` and the compile cursor git-tracked. The `!` is now emitted via its octal code `\041` and existence is detected with `!`-free greps, so the negations land regardless of shell.
β¬ Upgrade
v0.2.02026-06-20
Added
- **`/agent-kevin:upgrade`** β applies pending HOME migrations after a `/plugin update`: runs `bun install` when a release needs it, auto-applies functionality-critical changes (permissions, new rule/concept files), and asks before touching anything you may have personalized (a SOUL/CLAUDE section). Handles being several versions behind in one pass, backs up to `.kevin/updates/` first, and ends with a sync.
- **`/agent-kevin:release`** β producer tool that cuts a versioned release: detects what consumers need, bumps the version, writes the CHANGELOG entry + Upgrade block, and stages the commit + tag for approval.
- **`CHANGELOG.md`** and the machine-actionable `### Upgrade` block format that `/agent-kevin:upgrade` consumes.
- **Dashboard** β System β Changelog tab, plus an amber "upgrade available" sidebar badge (and a SessionStart banner nudge), driven by a local, zero-network compare of the home baseline against the installed version.
- **`.kevin/version.json`** β the home's template baseline, git-tracked so it survives a clone/restore.
Changed
- `/init` now records `.kevin/version.json` for fresh homes and grants the upgrade/release skills.
- The `.gitignore` template now tracks `.kevin/version.json` (the same way it already tracks the compile cursor). For existing homes, `/agent-kevin:upgrade` applies this automatically.
β¬ Upgrade
| change | level | detail |
|---|---|---|
settings | mandatory | add `Skill(agent-kevin:upgrade)` and `Skill(agent-kevin:release)` to `.claude/settings.json` `permissions.allow`. |
v0.1.252026-06-19
β¬ Upgrade
| change | level | detail |
|---|---|---|
none | none | None β code-only baseline, no bun install or HOME changes. |
Status π
1 signal(s) need attention. The sidebar badge is green only when the four blocking signals below are all zero.