一人のVC業務をAIエージェントに任せる:自作デスクトップアプリ Work OS の目的・機能・使い方

メールや会議のTODOから仕事を作ってAIエージェントに任せ、別のモデルが検査した成果物だけを受け取る。自作アプリ Work OS の目的、エージェントとSkillsの仕組み、動画での使い方、実測した導入効果をまとめる。

17th Oct 2026
メールが仕事のカードになり、AIエージェントの列と検査リングを通って文書になる概念図

メールや会議のTODOから仕事を作ってAIエージェントに任せ、別のモデルが検査した成果物だけを受け取る。自作アプリ Work OS の目的、エージェントとSkillsの仕組み、動画での使い方、実測した導入効果をまとめる。

Sponsored affiliate banner

一人のVC業務をAIエージェントに任せる:自作デスクトップアプリ Work OS の目的・機能・使い方

バージョン注記: 2026年10月17日時点の Work OS 0.14.7(リリース候補、Windows専用)を使っている。自分の仕事のために作ったアプリで、一般向けの配布はしていない。エージェントの実行には Claude Code、Codex、Antigravity の各CLI(同日時点)を使う。同じ名前の他社サービスとは関係がない。本文の動画と計測値は、架空のデモデータで撮影・計測したものだ。

5月に書いた一人会社のAIエージェント組織の記事では、12体のサブエージェントを「組織」として回す設計を紹介した。そこで一番強調した教訓は「AIの組織は静かに壊れる」だった。あれから5か月、その仕組みを自分の毎日の仕事の道具として作り直した。それが Work OS だ。

きっかけは地味なものだった。朝いちばんの30分が、「今日、自分が判断すること」を探す時間に消えていた。メール、予定、会議のTODOは別々の場所にある。どれを自分で決め、どれを任せられるのかを、毎朝ゼロから仕分けていた。

TL;DR:この記事でわかること

最初に、記事の中身を表にまとめておく。

テーマ内容
目的メール・予定・会議TODOから仕事を作り、AIに任せ、検査済みの成果物だけを受け取る
AIエージェント24体を4チームに分け、Claude Code・Codex・Antigravity のCLIで動かす
品質の仕組み作成と検査を別の実行に分け、不合格なら最大2巡まで修正する
SkillsSKILL.md で仕事の型を渡す。成果物の形式(Wordなど)もスキルが決める
使い方受信トレイから任せ、実行を見守り、成果物を承認する(動画3本)
導入効果朝の仕分けは約30分から約10分に(体感)。一番効いたのは、判断待ちが見えること

先に結論を書いておく。AIが速く書いてくれること自体の価値は、思っていたより小さかった。効いたのは別のところだ。


なぜ作ったか:チャットではなく「運用」として残す

作ってみて分かったのは、足りなかったのはAIの賢さではなく、仕事の置き場所だったということだ。

Work OS の目的は一文で書ける。今日判断することを整理し、メール・予定・会議のTODOから仕事を作り、AIに任せ、検査済みの成果物を受け取る。

チャット型のAIでも、同じことは一回ならできる。ただ、会話は終わると流れてしまう。誰が何を頼み、どの資料を見て、誰が確かめたのかが残らない。似た仕事を次に頼むとき、前提をまた最初から説明することになる。コンセプトに「チャットではなく、運用として残す」を掲げたのは、このためだ。

設計で一番こだわったのは、作る人と確かめる人を分けることだった。投資チームに加わったとき、検討の品質基準が人によってばらばらで、それを揃えるのに3か月かかった。そのとき身にしみたのは、品質は個人の頑張りでは保てず、確かめる工程を仕組みに組み込んだときに初めて安定する、ということだ。Work OS では、成果物を作るエージェントとは別の実行が、読み取り専用で成果物を検査する。あのときの考え方を、そのままコードにした。

アプリの形も変わった。5月の時点では Next.js・Neon・Vercel のWebアプリだったが、7月に Electron とローカルの SQLite で作り直した。メールや予定という個人のデータを扱う道具なので、データは手元のPCに置きたかった。利用者ごとのデータをクラウドで分けて持つ構成は、一人で使う道具には重すぎた。

2026年5月から10月までのWork OSの変化。Web版からElectronとローカルSQLiteへの移行、24体のエージェント、Skills、受信トレイの追加を示すタイムライン

反対に、やらないことも決めた。案件やポートフォリオの管理、チームでの共有、予定の自動組み替え、外部向けのAPIは対象外だ。なお、課金付きのWeb版も別系統で作っているが、こちらは登録から支払いまでの動作確認がまだ終わっていないので、本稿では扱わない。


全体像:受信トレイから成果物まで

一つの仕事がアプリの中をどう流れるかを、先に図で示す。

受信トレイ、タスクボード、エージェント実行、レビュー、成果物の順に仕事が流れるWork OSの構成図

メールと予定は、MCP(Model Context Protocol)経由で読み取り専用で取り込む。受信トレイで「任せる」と決めたものがタスクになり、エージェントが成果物を作り、別の実行がそれを検査する。合格したものだけが「成果物」画面に並ぶ。メールの送信や予定の変更、ファイルの共有のように外へ出ていく操作は、必ず承認キューで止まる。

チャット型AIや一般的なタスク管理アプリと並べると、違いは次のようになる。

観点Work OSチャット型AI一般的なタスク管理アプリ
仕事の入口メール・予定・会議TODOを自動で候補にする自分で貼り付ける自分で登録する
実行する主体担当エージェント(CLI経由)会話相手のAI自分
品質の確認別の実行が読み取り専用で検査し、最大2巡修正自分で読む自分で読む
成果物の置き場タスクごとの作業フォルダ(Word・PDF・Markdown)会話の中添付ファイル
外部への送信承認キューを通るまで実行しないツールによる対象外
データの場所手元のPC(SQLite)提供元のクラウド提供元のクラウド

表の中で一番効いているのは「品質の確認」の行だと思う。ここが自分以外になるかどうかで、任せられる仕事の幅が変わる。

メールが3つのレーンのタスクカードに仕分けられ、検査リングを通って文書になる概念図


Sponsored affiliate banner

AIエージェント:24体を4チームに分ける

エージェントは、5月の12体から24体に増えた。仕事の種類ごとに、使える道具と指示を絞りたかったからだ。

内訳は content(記事・資料づくり)が6体、engineering(開発)が5体、infra(受信の整理や定時処理)が5体、investment(調査・文書)が8体。ここに人間のオペレーター枠が一つ付く。エージェント画面では、全員がキャラクターとしてフロアに並ぶ。

Work OSのエージェント画面。24体のエージェントがキャラクターとして並び、下に承認キューがある

エージェント1体の定義は、.claude/agents/<名前>.md の1ファイルだ。frontmatter にモデル、使える道具、スキル、思考の深さ、最大ターン数を書き、本文がそのままシステムプロンプトになる。調査担当の例を抜粋する。

---
name: investment-market-research
description: Use to research a market, a competitive landscape, comparable financings, or a trend behind an investment question. ...
model: sonnet
tools: [Read, Write, Glob, Grep, WebSearch, WebFetch, mcp__claude_ai_Gmail__search_threads, ...]
effort: high
maxTurns: 20
skills: [handoff]
---

アプリ自体はAIのSDKを持っていない。手元でログイン済みの Claude Code、Codex、Antigravity のCLIを子プロセスとして起動し、その出力を流しながら画面に映す。Claude Code を使う場合の起動は、簡略化すると次のようになる。

claude -p --output-format stream-json --verbose --include-partial-messages \
  --tools "Read,Write,Glob,Grep,WebSearch,WebFetch" --strict-mcp-config \
  --add-dir "<ナレッジフォルダ>" --add-dir "<タスクの作業フォルダ>" \
  --model "<モデルID>" --effort high --allowedTools "Read,Write,Glob,Grep"

エージェントを動かす入口は4つある。タスク画面の「エージェントで実行」ボタン、タスクごとのチャット、受信トレイからの委任、そしてオプトインで有効にする担当未定タスクの自動割り当てだ。

中心にあるのは「作成→独立チェック→修正」の流れだ。作成役が成果物を作ると、別の実行が読み取り専用でそれを検査する。不合格なら指摘を付けて作成役に戻し、修正は最大2巡まで。各工程は最大3回まで再試行し、同時に動く工程は3つまでに抑えている。

デモを撮っていて面白かったのは、作成と検査で別のモデルが動いたことだ。作成は Claude(sonnet)、検査は Codex(gpt-6.1-sol)が担当した。同じモデルに自分の仕事を採点させるより、系統の違うモデルに確かめさせた方が、見落としの種類がずれる。──少なくとも、私にはそう見えている。

ほかにも、エージェントからエージェントへの引き継ぎ(既定では間に人の承認が入る)、別のエージェントでやり直したときにその振り分けを覚える仕組み、毎朝7時のブレスト・7時半の記事ダイジェスト・月曜の週次ブリーフといった定時ルーティンがある。どのエージェントから出た操作でも、メール送信・予定変更・ファイル共有は承認キューで止まる。


Skills:仕事の型をファイルで渡す

エージェントが「誰がやるか」を決めるなら、Skillsは「どうやるか」を決める。

スキルは SKILL.md を含むフォルダで、Claude の Agent Skills と同じ形式を使っている。組み込みが10個(設計判断の記録、引き継ぎメモ、週次ブリーフ、夜間QAなど)あり、外部のスキルは .skill や .zip をまとめてインストールできる。インストール前に中身のプレビューが出て、確定するまでは何も書き込まない。

動画で使ったデモ用スキルの中身は、これだけだ。

---
name: public-research-memo-word
description: Turn a public-information research request into a short comparison memo saved as Word (.docx), with a source and a date on every claim.
description-ja: 公開情報だけを使った調査依頼を、出典と日付付きの短い比較メモにまとめ、Word (.docx) で保存する。
version: 1.0.0
---

# Public research memo (Word)

1. Restate the question in one sentence.
2. Use public sources only. Every row or claim carries a source URL and the date it was checked.
3. Put the comparison in one table first, then at most five short findings.
4. Keep facts and inference under separate headings.
5. Two A4 pages at most.

説明文に「Word (.docx)」とあるので、このスキルを付けたタスクの成果物は自動的にWord形式になる。スキルが形式まで決めるこの仕組みは、10月10日の0.14.2で入れた。

スキルまわりの仕組みを表にまとめる。

仕組み内容狙い
割り当てエージェント単位・タスク単位で付ける。skills:none で外せる同じエージェントでも仕事ごとに型を変える
プロンプトへの埋め込みCLIに探させず、本文を直接渡す。上限は32KiBどのCLIにも同じ指示が届く
出力形式の判定説明文やコードから Word・Excel・PowerPoint を判定する形式の指定漏れを防ぐ
スクリプトの承認同梱のPythonは、フォルダのSHA-256に紐づけて承認してから動かす中身が変わったら承認し直す
書式チェック生成したWordファイルの書式を検査して記録する「開いたら崩れていた」を減らす

自分でスキルを書くようになって気づいたのは、良いスキルほど短いということだ。上のデモ用スキルも、手順は5行しかない。長い指示は32KiBの上限に当たるうえ、検査役が何を基準に見ればよいのかもぼやけてしまう。


Sponsored affiliate banner

その他の機能

ここまでがAIまわりの話で、残りは仕事を受け止める側の機能になる。

  • 受信トレイ:Gmail、Outlookのメールと予定、Googleカレンダー、Googleドライブ、会議のTODOを15分ごとに取り込み、直近3日分を重複なく並べる。各候補は「任せる」「既存タスクに追加」「明日まで保留」「対象外」のどれかに決める
  • タスク:リストとかんばんの2つの表示がある。期限まで2日を切ると赤、エージェントの実行中は青、確認待ちは黄色の枠が付く
  • 会議:録音したまま別の画面に移れる。whisper.cpp による一括とリアルタイムの文字起こし、場面ごとの要約、TODOの抽出、Wordへの書き出しまでを扱う
  • 成果物:MarkdownとPDFはアプリ内で表示し、その場で「承認して完了」か「修正を依頼」を選ぶ
  • ナレッジ:Obsidianと互換のフォルダをそのまま読む
  • その他:期限が近いときのWindows通知、要対応のベル、日本語・英語・韓国語のUI、ライトとダークの表示

使い方(動画付き)

使い方は、3本の動画で見てもらうのが早い。どれも架空のデモデータで撮影し、エージェントの待ち時間だけを16倍速にしている。

Step 0:準備

Windows のPCに、Claude Code・Codex・Antigravity のいずれかのCLIを入れてログインしておく。初回の案内で成果物フォルダとナレッジフォルダを決め、Googleのコネクタは自分で作ったOAuthクライアントで接続する。設定はユーザーデータ内の config.json に保存される。デモの撮影で使った主な設定は次のとおりだ。

{
  "knowledgeDir": "C:\\workos-demo\\ja\\knowledge",
  "workspaceOutputRoot": "C:\\workos-demo\\ja\\output",
  "locale": "ja",
  "theme": "dark",
  "aiOutputLang": "ja",
  "handoffApprovalMode": "confirm",
  "profile": { "organizationName": "ZYL0 Lab" }
}

Step 1:受信トレイから任せる

ダッシュボードの「次に判断すること」に、取り込んだメールが並ぶ。受信トレイで1通を選び、「依頼する仕事」を「出典付き調査メモ」にして「この内容で依頼」を押す。私の操作は4回で、タスクが作られ、担当のエージェントが動き始める。

動画1:ダッシュボードとエージェント画面を確認し、受信トレイのメールから調査メモを依頼する(等速、約20秒)

Step 2:実行を見守り、独立チェックの結果を読む

タスクの「履歴・チャット」タブに、作成と検査の進み具合が流れてくる。この回の検査役は、「24.5%はセル効率ではなくモジュール効率」「累積の導入目標と年間の生産能力を同じ物差しで比べている」といった誤りを指摘した。2巡修正しても合格しなかったので、タスクは「ブロック中」の黄色い枠で止まり、私の判断を待っている。

動画2:作成と独立チェックが3巡し、検査を通らなかったタスクがブロックされる(待ち時間は16倍速、約37秒)

正直に言えば、撮影前は合格する絵を想定していた。ただ、通らないものを通さないこと自体が、この仕組みの役目だ。そう考え直して、この回をそのまま使うことにした。

Step 3:スキルを入れて、Wordで受け取る

設定のスキル画面で .skill ファイルを選ぶと、中身のプレビューが出る。インストールしたらタスクの「依頼・参照元」でスキルにチェックを入れる。すると成果物の形式がWordに切り替わる。「エージェントで実行」を押せば、あとは待つだけだ。この回は3巡目で検査に合格し、成果物画面に .docx が並んだ。

動画3:スキルのインストール、タスクへの割り当て、Word成果物の受け取りと承認(待ち時間は16倍速、約64秒)

Step 4:受け取る

成果物画面では、検査に合格したファイルに「チェック合格」が付く。中身を読んで「承認して完了」を押すか、修正の指示を書いて「修正を依頼」を押す。メールの返信やファイルの共有が必要な仕事は、エージェント画面の承認キューに並び、私が承認するまで外には出ない。


Sponsored affiliate banner

導入効果

まず、デモで計測した数字を置く。日本語UIと英語UIで1回ずつ撮影したので、同じ2つの仕事を2回ずつ走らせた結果になる。

撮影仕事人の操作所要時間(作成+検査)修正結果Claude側の費用
日本語UI調査メモ(受信トレイから)4回6分03秒(4分12秒+1分51秒)2巡不合格のままブロック0.72ドル
日本語UIWord資料(スキル付き)5回4分39秒(3分34秒+1分05秒)2巡3巡目で合格0.93ドル
英語UI調査メモ(受信トレイから)4回5分00秒(3分20秒+1分40秒)2巡不合格のままブロック0.59ドル
英語UIWord資料(スキル付き)5回17分10秒(4分10秒+13分00秒)1巡2巡目で合格0.67ドル

人の操作の回数には、スキルのインストール(初回だけの4回)を含めていない。費用は Claude Code が報告した額で、検査を担当した Codex はサブスクリプションで動くため費用が記録されない。英語UIのWord資料では、最初の検査だけで13分かかった。原因はまだ追えていない。

デモで計測した4回の実行について、作成と検査にかかった時間を比べた棒グラフ

ここで正直に書いておきたい。調査メモ1本だけなら、手で書いた方が速い。慣れたテーマなら30分かからないし、Work OS が5分前後で返してきても、それを読んで判断する時間は私の側に残る。検査が13分かかった回もある。しかも1本目は検査を通らなかった。速さだけを比べるなら、この仕組みを作る意味は薄い。

効いたのは朝だ。メールと予定とTODOの仕分けは、体感で約30分から約10分になった(きちんと計測した数字ではない)。理由ははっきりしていて、判断待ちのものが見えるようになったからだ。ダッシュボードの「次に判断すること」と、タスクの赤・青・黄の枠を見れば、今朝自分が手を動かすべきものだけが分かる。デモの1本目がブロックされたときも、黄色い枠が「ここはあなたが決めて」と知らせてきた。

いま Work OS に任せているのは、公開情報の調査メモ、会議の準備と議事録、Word と PowerPoint の資料の下書き、朝と週次のブリーフだ。実運用のローカルログでは、成功した実行が22回、1回あたりの所要時間の中央値は約2分、Claude側の費用は累計17.24ドルだった。回数はまだ少なく、効果を数字で語るには早い。

この構成が向かない人もはっきりしている。チームで同じ仕事を回したい人(共有機能はない)、Macを使う人、AIのCLIを入れずに使いたい人、案件管理のCRMが欲しい人には合わない。単発の調査を速くしたいだけなら、チャット型のAIで十分だ。


落とし穴:作って分かったこと

ハマった順に挙げる。数えたら6つあった。

  • 「静かに壊れる」を自分で踏んだ:7月7日、定時ルーティンが1日で242回失敗し、11日にも36回失敗していた。どちらも、画面上は何事もないように見えていた。#15で書いた教訓をそのまま繰り返したことになる。今はダッシュボードと要対応のベルに出し、0.14.7ではエージェントとスキルの診断も加えた
  • Windowsのネイティブダイアログで入力が固まる:確認ダイアログを閉じた後、文字が打てなくなった。0.13.7ですべてアプリ内のダイアログに置き換えた
  • スキルの32KiB上限:割り当てたスキルが大きすぎると、参照渡しに切り替えるか、省いて警告を出す。気づかないと「スキルが効いていない」ように見える
  • CLIごとの差:Antigravity 経由の実行ではMCPが使えない。Codex と Antigravity では、参照フォルダを読み取り専用にする制約がプロンプトでの指示にとどまり、Claude Code のように道具の側で縛れない
  • 開発ビルドではリポジトリ全体が見えていた:撮影の準備中に気づいた。開発ビルドでは、エージェントにリポジトリ全体と設定ファイルが渡っていた。配布版にはない挙動だが、撮影では配布版と同じ条件にそろえた
  • 署名なしのインストーラ:Windowsの警告が出る。自分用なので後回しにしている

まとめ:速さより「何を判断すればいいか」が見える

ValuScopeの使い方の記事では、効果は自動化率より判断の質で測るべきだ、と書いた。Work OS を毎日使ってみて、そこにもう一つ足したくなった。判断の質より前に、そもそも判断すべきものが目の前に揃っているか。

作る人と確かめる人を分け、通らないものは止め、止まったものを色で見せる。やっていることは地味で、AIを速くする工夫はほとんどない。それでも、朝の20分が戻ってきた。この構成がベストだという自信はまだないが、少なくとも「AIの組織は静かに壊れる」を、黙って壊れさせない方向には進めたと思っている。

関連記事

参考資料

  1. Claude Code Docs, Run Claude Code programmatically
  2. Claude Docs, Agent Skills overview
  3. OpenAI, Codex CLI
  4. Model Context Protocol, Specification 2026-07-28
  5. Playwright, Electron API
  6. Electron Documentation

次号の記事案

  • 案1:別モデルの独立チェックは何を拾うか — 作成は Claude、検査は Codex という組み合わせで数十件のタスクを回し、指摘の種類と見逃しを数える。
  • 案2:SKILL.md を短く書く — 32KiBの上限と検査のしやすさから、良いスキルの長さと構成を実例で比べる。
  • 案3:Playwrightでデスクトップアプリのデモ動画を自動撮影する — 今回の撮影ハーネス(架空データ、カーソル表示、倍速編集)の作り方をまとめる。

本記事は情報提供を目的としており、特定の銘柄・サービス・投資行動を推奨するものではありません。執筆には生成AIを利用し、ソースコードとデモの実行記録をもとに内容を確認しています。詳細は免責事項をご覧ください。

Handing a Solo VC Workflow to AI Agents: The Purpose, Features and Use of My Desktop App, Work OS

Version note: This covers Work OS 0.14.7 (release candidate, Windows only) as of 17 October 2026. I built it for my own work and do not distribute it publicly. Agents run through the Claude Code, Codex and Antigravity CLIs as of the same date. It has nothing to do with any other service of the same name. Every video and measurement here was recorded with fictional demo data.

Back in May, in my post on running AI agents as an organization, I described running 12 subagents as an "organization" for a one-person company. The lesson I leaned on hardest was that an AI organization breaks quietly. Five months on, I have rebuilt that system into the tool I use for my own work every day. That tool is Work OS.

The trigger was mundane. The first half hour of every morning went into finding out what I actually had to decide that day. Mail, calendar and meeting to-dos lived in different places, and every morning I sorted them from scratch into what I had to decide myself and what I could hand off.

TL;DR: What You'll Learn

Here is the whole post in one table.

TopicWhat it covers
PurposeTurn mail, calendar and meeting to-dos into tasks, hand them to AI, receive checked work
AI agents24 agents in four teams, run through the Claude Code, Codex and Antigravity CLIs
Quality mechanismProduction and checking are separate runs, with up to two repair rounds on a failure
SkillsSKILL.md files carry the shape of a job, including the output format (Word and so on)
How to use itDelegate from the inbox, watch the run, approve the output (three videos)
EffectMorning triage went from about 30 to about 10 minutes (felt, not measured); the biggest win is seeing what is waiting on me

The conclusion up front: the value of AI writing quickly turned out to be smaller than I expected. What helped was something else.


Why I Built It: Keep the Work as Operations, Not as Chat

What building it taught me is that the missing piece was never how clever the AI was. It was where the work lived.

The purpose of Work OS fits in one sentence. Sort out what needs deciding today, turn mail, calendar and meeting to-dos into tasks, hand them to AI, and receive output that has been checked.

A chat assistant can do this once. But a conversation scrolls away when it ends. Nothing records who asked for what, which material was used, or who checked the result. The next time a similar job comes along, you explain the context all over again. That is why the concept I wrote down for it reads "keep it as operations, not as chat."

The design choice I cared about most was separating the person who makes a thing from the person who checks it. When I joined an investment team, the quality bar for evaluations varied from person to person, and it took three months to standardize it. What stuck with me was that quality does not come from individual effort; it holds only once checking is built into the process itself. In Work OS, a separate run inspects every deliverable read-only, apart from the agent that produced it. I turned that lesson directly into code.

The shape of the app changed too. In May it was a web app on Next.js, Neon and Vercel. In July I rebuilt it on Electron with a local SQLite database. It handles personal data like mail and calendars, so I wanted that data on my own machine. Keeping each user's data separated in the cloud was too heavy a setup for a tool used by one person.

Timeline of Work OS from May to October 2026, showing the move from the web to Electron and local SQLite, the 24 agents, Skills and the inbox

I also decided what it would not do: no deal or portfolio management, no team sharing, no automatic rescheduling, no public API. There is a separate paid web edition as well, but I have not finished verifying sign-up through payment, so it stays out of this post.


The Big Picture: From Inbox to Output

Here first is how one piece of work moves through the app.

Diagram of work moving through Work OS from the inbox to the task board, an agent run, a review and the outputs screen

Mail and calendar come in read-only over MCP (Model Context Protocol). Whatever I decide to delegate in the inbox becomes a task; an agent produces the deliverable and a separate run checks it. Only what passes shows up on the Outputs screen. Anything that leaves the machine, such as sending mail, changing the calendar or sharing a file, always stops in an approval queue.

Set beside a chat assistant and an ordinary task app, the differences look like this.

AspectWork OSChat assistantTypical task app
Where work entersMail, calendar and meeting to-dos become candidatesYou paste it inYou enter it
Who does itThe assigned agent, through a CLIThe AI in the chatYou
Quality checkA separate read-only run, up to two repair roundsYou read itYou read it
Where output livesA working folder per task (Word, PDF, Markdown)Inside the conversationAttachments
Outbound actionsNothing runs until approved in the queueDepends on the toolNot applicable
Where data livesYour own PC (SQLite)The vendor's cloudThe vendor's cloud

The row that matters most, to me, is the quality check. Whether someone other than you does it decides how much work you can actually hand over.

Concept image of envelopes sorted into three lanes of task cards and becoming a document under an inspection ring


Sponsored affiliate banner

AI Agents: 24 Agents in Four Teams

The roster grew from 12 subagents in May to 24. I wanted to narrow the tools and instructions each agent gets to one kind of work.

There are six in content (articles and documents), five in engineering, five in infra (inbox triage and scheduled jobs) and eight in investment (research and documents), plus one slot for the human operator. On the Agents screen, each one stands on a floor as a small character.

The Work OS Agents screen with 24 agents shown as characters and the approval queue below

Each agent is one file, .claude/agents/<name>.md. The frontmatter sets the model, tools, skills, reasoning effort and maximum turns, and the body is the system prompt. Here is an excerpt from the research agent.

---
name: investment-market-research
description: Use to research a market, a competitive landscape, comparable financings, or a trend behind an investment question. ...
model: sonnet
tools: [Read, Write, Glob, Grep, WebSearch, WebFetch, mcp__claude_ai_Gmail__search_threads, ...]
effort: high
maxTurns: 20
skills: [handoff]
---

The app itself ships no AI SDK. It launches the Claude Code, Codex or Antigravity CLI you are already logged into as a child process and streams the output onto the screen. Simplified, a Claude Code launch looks like this.

claude -p --output-format stream-json --verbose --include-partial-messages \
  --tools "Read,Write,Glob,Grep,WebSearch,WebFetch" --strict-mcp-config \
  --add-dir "<knowledge folder>" --add-dir "<task working folder>" \
  --model "<model id>" --effort high --allowedTools "Read,Write,Glob,Grep"

There are four ways to start an agent: the Run agent button on a task, a per-task chat, delegating from the inbox, and an opt-in rule that assigns unowned tasks automatically.

At the center is a produce, check, repair loop. The producing agent writes the deliverable, then a separate run inspects it read-only. A failure goes back to the producer with findings, for at most two repair rounds. Each step is retried up to three times, and no more than three steps run at once.

What I found interesting while recording the demo was that two different models did the work. Claude (sonnet) produced, and Codex (gpt-6.1-sol) checked. Having a different family of model check the work, rather than letting one model grade its own, seems to shift which kinds of mistakes get missed. That is how it looks to me so far, anyway.

Beyond that there are agent-to-agent handoffs (with my approval in between by default), a routing memory that remembers when I re-run a task with a different agent, and scheduled routines: a 7:00 brainstorm, a 7:30 article digest and a Monday weekly brief. Whatever agent it comes from, sending mail, changing the calendar or sharing a file stops in the approval queue.


Skills: Hand Over the Shape of a Job as a File

If agents decide who does the work, Skills decide how it gets done.

A skill is a folder containing a SKILL.md, in the same format as Claude's Agent Skills. Ten ship with the app (decision records, handoff notes, a weekly brief, a nightly QA pass and others), and outside skills can be installed in batches as .skill or .zip files. You get a preview of the contents before anything is written to disk.

The demo skill in the video contains nothing more than this.

---
name: public-research-memo-word
description: Turn a public-information research request into a short comparison memo saved as Word (.docx), with a source and a date on every claim.
description-ja: 公開情報だけを使った調査依頼を、出典と日付付きの短い比較メモにまとめ、Word (.docx) で保存する。
version: 1.0.0
---

# Public research memo (Word)

1. Restate the question in one sentence.
2. Use public sources only. Every row or claim carries a source URL and the date it was checked.
3. Put the comparison in one table first, then at most five short findings.
4. Keep facts and inference under separate headings.
5. Two A4 pages at most.

Because the description says "Word (.docx)", any task this skill is attached to produces a Word file automatically. Letting the skill decide the format arrived in 0.14.2 on 10 October.

The mechanics around skills are summarized below.

MechanismWhat it doesWhy
AssignmentPer agent or per task; skills:none turns them offOne agent can work to a different shape per job
Inlined into promptThe body is passed directly rather than discovered by the CLI; 32 KiB budgetEvery CLI receives the same instructions
Output formatWord, Excel or PowerPoint is detected from the description or codeNo forgotten format settings
Script approvalBundled Python runs only after approval tied to the folder's SHA-256A changed skill must be approved again
Format checkThe generated Word file is inspected and the result recordedFewer "it looked broken when I opened it" moments

Writing my own skills taught me that the good ones are short. The demo skill above has five steps. Long instructions run into the 32 KiB budget, and they also blur what the checking run is supposed to check against.


Sponsored affiliate banner

Other Features

That covers the AI side. The rest is about catching the work as it comes in.

  • Inbox: pulls in Gmail, Outlook mail and calendar, Google Calendar, Google Drive and meeting to-dos every 15 minutes and lists the last three days without duplicates. Each candidate is delegated, attached to an existing task, deferred until tomorrow, or dismissed
  • Tasks: list and kanban views. Rows get a red frame when the deadline is under two days away, blue while an agent is running, and yellow when they are waiting for review
  • Meetings: recording continues while you move to other screens, with batch and live transcription through whisper.cpp, scene-by-scene summaries, to-do extraction and Word export
  • Outputs: Markdown and PDF render inside the app, where you either approve and finish or request a revision
  • Knowledge: reads an Obsidian-compatible folder as-is
  • Everything else: Windows notifications for deadlines, an attention bell, Japanese, English and Korean UI, and light and dark themes

How to Use It (with Videos)

Three videos show it faster than words. All were recorded with fictional demo data, and only the agent waiting time is sped up 16x.

Step 0: Setup

On a Windows PC, install and log into at least one of the Claude Code, Codex or Antigravity CLIs. The first-run guide asks for an output folder and a knowledge folder, and Google connectors use an OAuth client you create yourself. Settings live in config.json in the user-data folder. These are the main settings used for the demo recording.

{
  "knowledgeDir": "C:\\workos-demo\\en\\knowledge",
  "workspaceOutputRoot": "C:\\workos-demo\\en\\output",
  "locale": "en",
  "theme": "dark",
  "aiOutputLang": "en",
  "handoffApprovalMode": "confirm",
  "profile": { "organizationName": "ZYL0 Lab" }
}

Step 1: Delegate from the Inbox

The imported mail shows up under "Needs your judgment" on the dashboard. In the inbox I pick one message, set the work template to Research memo and press Delegate this work. That is four actions on my side; a task is created and the assigned agent starts.

Video 1: A look at the dashboard and the Agents screen, then delegating a research memo from an inbox message (real time, about 20 seconds).

Step 2: Watch the Run and Read the Independent Check

The task's History & chat tab streams the progress of production and checking. In this run the reviewer flagged, among other things, that an earlier efficiency record had been misstated as 34.85%, and that the summary presented planned supply as established fact. After two repair rounds it still had not passed, so the task stopped as Blocked with a yellow frame, waiting for me to decide.

Video 2: Three rounds of production and independent checks; the task that never passed is blocked (waiting time at 16x, about 33 seconds).

To be honest, before recording I had pictured a run that passed. But refusing to pass work that is not good enough is exactly what this mechanism is for, so I kept the take as it was.

Step 3: Install a Skill and Get a Word File Back

In the Skills section of Settings, choosing a .skill file opens a preview of its contents. After installing it, I tick the skill under the task's Request & source tab, and the output format switches to Word. Then I press Run agent and wait. In this run the first check alone took about 13 minutes; the document passed on the second round, and a .docx appeared on the Outputs screen.

Video 3: Installing a skill, assigning it to a task, and receiving and approving the Word deliverable (waiting time at 64x, about 62 seconds).

Step 4: Receive the Work

On the Outputs screen, files that passed the check carry a "check passed" badge. I read them and either press Approve and finish, or write revision instructions and press Request revision. Work that needs a reply sent or a file shared waits in the approval queue on the Agents screen and goes nowhere until I approve it.


Sponsored affiliate banner

The Effect in Practice

First, the measured numbers from the demo. I recorded once with the Japanese UI and once with the English UI, so the same two jobs each ran twice.

RunJobHuman actionsTime (production + check)RepairsResultClaude spend
Japanese UIResearch memo (from inbox)46:03 (4:12 + 1:51)2Blocked, never passed$0.72
Japanese UIWord document (with a skill)54:39 (3:34 + 1:05)2Passed on round 3$0.93
English UIResearch memo (from inbox)45:00 (3:20 + 1:40)2Blocked, never passed$0.59
English UIWord document (with a skill)517:10 (4:10 + 13:00)1Passed on round 2$0.67

Human actions leave out installing the skill (four actions, once only). Spend is what Claude Code reported; the checking runs used Codex on a subscription, which records no cost. In the English-UI Word run, the first check alone took 13 minutes, and I have not yet tracked down why.

Bar chart comparing production and checking time across the four measured demo runs

I want to be honest here. For a single research memo, writing it by hand is faster. On a familiar topic it takes me under 30 minutes, and even when Work OS hands something back in about five minutes, reading it and deciding still falls to me. One check took 13 minutes on its own. On top of that, the first memo failed its check. If speed were the only measure, building this would hardly be worth it.

Where it helped was the morning. Triage of mail, calendar and to-dos went from about 30 minutes to about 10 by feel (I have not measured it properly). The reason is clear: what is waiting on my decision is now visible. The "Needs your judgment" panel on the dashboard and the red, blue and yellow task frames tell me exactly what needs my hands this morning. When the first demo memo got blocked, the yellow frame was the thing telling me "this one is yours to decide."

What I hand to Work OS today is public-information research memos, meeting preparation and minutes, first drafts of Word and PowerPoint documents, and the morning and weekly briefs. In my real local logs there have been 22 successful runs, a median of about two minutes per run, and 17.24 dollars of Claude spend in total. That is still too few runs to talk about the effect in numbers.

It is also clear who this setup is not for: people who want a team to work the same queue (there is no sharing), Mac users, anyone who does not want to install an AI CLI, and anyone who mainly wants a deal-management CRM. If all you want is faster one-off research, a chat assistant is enough.


Gotchas: What Building It Taught Me

In the order I hit them. I counted six.

  • I hit "it breaks quietly" myself: on 7 July the scheduled routines failed 242 times in a single day, and another 36 times on 11 July, while the screen looked perfectly normal. I repeated the exact lesson from post #15. Failures now surface on the dashboard and the attention bell, and 0.14.7 adds agent and skill diagnostics
  • Native Windows dialogs froze typing: after closing a confirmation dialog, the keyboard stopped working. 0.13.7 replaced every one with an in-app dialog
  • The 32 KiB skill budget: when assigned skills are too large, they are passed by reference or dropped with a warning. Miss the warning and it looks as if the skill simply is not working
  • Differences between CLIs: runs through Antigravity get no MCP. On Codex and Antigravity, keeping reference folders read-only is only an instruction in the prompt; unlike Claude Code, the tools themselves cannot enforce it
  • The development build could see the whole repository: I noticed while preparing the recording that in a development build the agents were given the entire repository and its settings file. Installed builds do not do this, and I matched installed-build conditions for the recording
  • An unsigned installer: Windows shows a warning. Since the app is for me, this is on the back burner

Wrap-up: Seeing What to Decide Beats Speed

In my ValuScope usage post I argued that the effect of agents should be measured by decision quality rather than automation rate. After using Work OS every day, I want to add one thing in front of that: before the quality of a decision, are the things you need to decide actually in front of you?

Separate the maker from the checker, stop what does not pass, and show what has stopped in color. None of it is glamorous, and almost none of it makes the AI faster. Even so, I got 20 minutes of my morning back. I am not yet sure this is the best structure, but at least it has moved "an AI organization breaks quietly" toward not letting it break in silence.

References

  1. Claude Code Docs, Run Claude Code programmatically
  2. Claude Docs, Agent Skills overview
  3. OpenAI, Codex CLI
  4. Model Context Protocol, Specification 2026-07-28
  5. Playwright, Electron API
  6. Electron Documentation

Next Issue Ideas

  • Idea 1: What does an independent check by a different model catch? — Run a few dozen tasks with Claude producing and Codex checking, and count the kinds of findings and misses.
  • Idea 2: Writing short SKILL.md files — Compare real skills to find a good length and structure, given the 32 KiB budget and how easy the result is to check.
  • Idea 3: Recording desktop app demos automatically with Playwright — How the recording harness behind this post works: fictional data, a visible cursor and sped-up editing.

This article is for informational purposes only and does not recommend any security, service or investment action. It was written with the help of generative AI and checked against the source code and the demo run records. See the disclaimer for details.

Sponsored affiliate banner