mcpField
D
Daemon

Daemon

github.com/danielmiessler生産性19.6k64 回インストール今日更新
リポジトリ

Daemon について

Daemonは、LifeOSのデータから公開プロフィールを作成・公開するスキルです。決定的なルールで内容をフィルタリングし、機密ファイルを除外したうえで、デプロイ前にプレビューと承認を行います。

主な機能

  1. 01指定されたLifeOSソースを集約
  2. 02決定的なルールで内容をフィルタリング
  3. 03集約時に機密ファイルを除外
  4. 04承認前に変更をプレビュー
  5. 05静的サイトをデプロイ

活用シーン

  1. 01LifeOSから公開プロフィールを更新
  2. 02公開前にプロフィールの変更を確認
  3. 03現在のプロフィールデータを確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/danielmiessler/lifeos --skill daemon

インストール後、Claude Code で/daemonを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

Docs/
SecurityClassification.md
Tools/
SecurityFilter.ts
DaemonAggregator.ts
Workflows/
DeployDaemon.md
PreviewDaemon.md
ReadDaemon.md
UpdateDaemon.md

詳細

カスタマイズ

実行する前に、次の場所にユーザーのカスタマイズがあるか確認してください。 ~/.claude/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/Daemon/

このディレクトリが存在する場合は、そこにある SecurityOverrides.md または PREFERENCES.md を読み込み、適用してください。これらの設定は、既定のセキュリティ分類より優先されます。ディレクトリが存在しない場合は、スキルの既定の設定に従ってください。

音声通知

curl -s -X POST http://localhost:31337/notify \
  -H "Content-Type: application/json" \
  -d '{"message": "Running the WORKFLOWNAME workflow in the Daemon skill to ACTION"}' \
  > /dev/null 2>&1 &

Daemon スキル

機能

公開用の Daemon プロフィールを管理します。プロフィールは、現在取り組んでいること、考えていること、読んでいること、作っていることを掲載する、常に更新されるページです。LifeOS システムからデータを取得し、決定論的なセキュリティフィルターにかけて、公開しても安全なコンテンツだけを残し、静的サイトをデプロイします。ワークフローでは、更新、閲覧、プレビュー、デプロイを行います。

課題

毎週プロフィールページを手作業で編集せず、個人情報を漏らすこともなく、常に最新の公開ページを維持したいとします。実際のコンテキストは LifeOS にあります。目標、プロジェクト、アイデア、アイデンティティのほか、連絡先、財務情報、健康情報、名前、パス、認証情報など、決して公開してはならない情報も含まれています。安全な情報を手作業でコピーするのは時間がかかり、ミスをすれば取り消せない情報を公開してしまいます。このスキルは、安全な情報源を集約し、コードレベルで機密情報をブロックして、公開前にプレビューして承認する仕組みを提供します。

仕組み

DaemonAggregator は LifeOS の情報源を読み取り、daemon-data.json に統合します。決定論的な SecurityFilter(LLM ではなくパターンマッチング)が、名前、パス、認証情報、内部参照を除去します。デプロイ時には、完全な静的サイトをビルドします。機密ファイルが DaemonAggregator によって開かれることはありません。

ワークフローの振り分け

ワークフロートリガーファイル
UpdateDaemon「daemon を更新」「daemon を再読み込み」Workflows/UpdateDaemon.md
ReadDaemon「daemon を読む」「daemon を確認」「daemon の状態」Workflows/ReadDaemon.md
PreviewDaemon「daemon をプレビュー」「daemon の差分」Workflows/PreviewDaemon.md
DeployDaemon「daemon をデプロイ」「daemon をプッシュ」「daemon を公開」Workflows/DeployDaemon.md

アーキテクチャ

2 つのリポジトリを使うパターンです。公開用フレームワークと非公開コンテンツを分けます。

LifeOS SOURCES (private, read-only)
  TELOS/ (missions, goals, books, movies, wisdom)
  KNOWLEDGE/Ideas/ (title + thesis only)
  PROJECTS.md (public projects only)
  MEMORY/WORK/ (abstracted to topic themes)
  PRINCIPAL_IDENTITY.md (public bio data)
    │
    ├──[DaemonAggregator.ts]──→ Reads sources, merges with existing data
    │
    ├──[SecurityFilter.ts]──→ Deterministic code-level allowlist filter
    │                          Strips names, paths, credentials, internal refs
    │                          NOT an LLM filter — enforced by pattern matching
    │
    └──→ daemon-data.json → ~/Projects/daemon-dm/ (PRIVATE repo)
              │
              ├──[Tools/DeployGate.ts]──→ Deterministic pre-deploy gate (blocks on
              │                            expired/ungated ephemera, street-address/ZIP/
              │                            coordinate/home-area strings, unapproved
              │                            real-time phrasing, credentials, private feed URLs)
              │
              └──[deploy.sh]──→ Copies JSON into framework → VitePress build → Cloudflare WORKER
                                    │
                              ~/Projects/daemon/ (PUBLIC repo — forkable framework)
                                    │
                              src/worker.ts (generic):
                                • /daemon-data.json — served through the edge with expired
                                  ephemera STRIPPED at request time (status/now/offerings/
                                  requesting items with past `expires`; non-default location
                                  falls back to location_default)
                                • /feed.json — live-activity items aggregated every 30 min
                                  (cron + lazy refresh) from PUBLIC sources only, configured
                                  in daemon-data.json `feeds` (rss | beehiiv | github | x);
                                  cached in KV FEED_KV
                                • secrets (CF worker secrets, never in code): X_BEARER_TOKEN,
                                  BEEHIIV_API_KEY

    STRUCTURALLY EXCLUDED (never read):
          CONTACTS.md, FINANCES/, HEALTH/, TRAUMAS.md,
          KNOWLEDGE/People/, KNOWLEDGE/Companies/,

スキルの構成

skills/Daemon/
├── SKILL.md              (this file)
├── Tools/
│   ├── DaemonAggregator.ts   (reads LifeOS sources → daemon-data.json)
│   └── SecurityFilter.ts     (deterministic content sanitizer)
├── Workflows/
│   ├── UpdateDaemon.md       (aggregate → preview → approve → deploy)
│   ├── ReadDaemon.md         (read current daemon-data.json)
│   ├── PreviewDaemon.md      (show diff without deploying)
│   └── DeployDaemon.md       (bash deploy.sh from daemon-dm)
└── Docs/
    └── SecurityClassification.md  (public/private data categories)

重要なパス

用途パス
非公開データリポジトリ~/Projects/daemon-dm/
daemon-data.json~/Projects/daemon-dm/daemon-data.json
デプロイスクリプト~/Projects/daemon-dm/deploy.sh
公開用フレームワークリポジトリ~/Projects/daemon/
セキュリティ分類${LIFEOS_SKILL_DIR}/Docs/SecurityClassification.md
セキュリティの上書き設定${LIFEOS_USER_DIR}/CUSTOMIZATIONS/SKILLS/Daemon/SecurityOverrides.md

公開中のエンドポイント

エンドポイント用途
daemon.example.com公開ウェブサイト(Cloudflare Pages、完全な静的サイト)

セキュリティの考え方

  1. 既定では非公開: 明示的に公開に分類されるまで、すべてのデータは非公開です。
  2. コードレベルで適用: SecurityFilter.ts は決定論的なパターンマッチングであり、LLM による判断ではありません。
  3. 構造的な除外: 機密ファイル(CONTACTS、FINANCES、HEALTH)が DaemonAggregator によって開かれることはありません。
  4. 多層防御: Aggregator フィルター + SecurityFilter + pre-commit フック + 手動承認
  5. 安全側に倒す: 判断に迷う場合は、コンテンツを除外します。

データソース

DaemonAggregator は、以下の LifeOS ソースを読み込みます。各ソースは存在する場合にのみ読み込まれます(existsSync で確認)。統合された単一ファイルの TELOS.md レイアウトを使用するインストールには、以下の個別ファイルの TELOS ソースがないため、アグリゲーターはそれらを正常にスキップします(--sources でソースごとの OK/MISSING 状態を確認できます)。

ソース抽出内容セクション
TELOS/MISSION.mdM1、M2(公開ミッション)[MISSION]
TELOS/GOALS.md公開プロジェクトの目標[TELOS]
TELOS/BOOKS.md書籍のタイトル[FAVORITE_BOOKS]
TELOS/MOVIES.md映画のタイトル[FAVORITE_MOVIES]
TELOS/WISDOM.md上位5件の引用[WISDOM]
KNOWLEDGE/Ideas/_index.md最近のアイデア10件(タイトル+主張)[RECENT_IDEAS]
PROJECTS.md公開リポジトリとサイトプロジェクトの統合
MEMORY/WORK/トピックのテーマ(直近14日間)[CURRENTLY_WORKING_ON]
PRINCIPAL_IDENTITY.md公開プロフィール、役割、注力分野[ABOUT]
既存の daemon.md保持されるセクション(予測、ルーティン、ポッドキャスト、好み)複数

コミュニティによるフォーク

このスキルは汎用的に使えるよう設計されています。

  1. 公開 Daemon リポジトリをフォークします
  2. daemon-data.json を含む独自のプライベートデータリポジトリを作成します
  3. 独自のブロック対象名/パスを指定して を設定します
  4. アグリゲーターは標準の LifeOS ディレクトリ構造から読み込みます
  5. deploy.sh を使用してビルドし、独自の Cloudflare Pages にデプロイします

例

例1:更新サイクル全体

User: "update daemon"
→ Aggregates LifeOS data sources
→ Applies security filter (deterministic)
→ Shows preview diff to user
→ User approves
→ Writes daemon-data.json to daemon-dm → deploys static site

例2:現在の状態を確認

User: "check daemon"
→ Reads daemon-data.json from daemon-dm
→ Shows section-by-section status

例3:コミット前にプレビュー

User: "preview daemon"
→ Runs aggregator in preview mode
→ Shows diff against current daemon-data.json
→ No writes, no deploys

注意点

  • リポジトリは2つあります: 公開フレームワーク(~/Projects/daemon/)と非公開コンテンツ(~/Projects/daemon-dm/)です。フレームワークはフォークできます。コンテンツはご自身のものです。
  • deploy.sh は最初に DeployGate を実行し、その後ビルド時にフレームワークへデータをコピーしてから、クリーンアップします。 ゲートに失敗するとデプロイはブロックされます。データを修正し、ゲートを回避しないでください。個人データが公開リポジトリにコミットされることはありません。
  • SecurityFilter はコードであり、プロンプトではありません。 新しいブロック対象パターンを追加する場合は、ワークフローの Markdown ではなく SecurityFilter.ts を編集してください。
  • 一時データには expires が必要です。 status、now(now_meta 経由)、期間限定の提供項目やリクエスト項目、デフォルト以外の場所には、いずれも ISO 形式の expires フィールドが必要です。適用レイヤーは3つあります:DeployGate(ブロック)、worker(配信時に除去)、dashboard(クライアント側で非表示)。古くなった status を更新するには、daemon-data.json の expires を新しい値に編集して deploy.sh を実行してください。
  • 位置情報の原則:原則は大まかに、例外としてリアルタイムにします。 市や地域の粒度にとどめます。通り名、郵便番号、座標、自宅周辺を示す文字列はゲートでブロックされます。「今夜」「今いる場所」といった表現には、その項目に明示的な realtime_approved: true が必要です。これは、本人が見つけてもらうことを望むイベントに限って使用します。GPS やカレンダーとの自動連携パイプラインはなく、位置情報は明示的なコマンドでのみ変更されます。
  • ライブフィードで利用できるのは、公開済みのコンテンツのみです。 worker はブログの RSS、Beehiiv(公式 API)、YouTube RSS、GitHub の公開イベント、オーナー自身の X の投稿をポーリングします。いずれもすでに公開されたコンテンツであり、設計上プライバシーリスクはありません。LifeOS 内部のソースを feeds に追加しないでください。
  • Beehiiv は RSS スクレイパーをブロックします(403)。 ニュースレターのソースには /feed URL ではなく、公式 Beehiiv API(type: "beehiiv" と BEEHIIV_API_KEY worker シークレット)を使用します。
  • 配信はエッジで動的に行われ、ページシェルは静的です。 /daemon-data.json と /feed.json はリクエストごとに worker(run_worker_first)が生成し、それ以外は静的アセットです。データを変更した場合は、引き続き deploy.sh が必要です。フィードのコンテンツは自動更新されます。
  • 上流のフレームワークリポジトリが公開するのは、生成済みのテンプレートです(マージバックの原則)。 その main ブランチは、スクラブ済みのステージングコピーから公開される、汎用のクリーンなテンプレートです。作業ツリーを直接プッシュすることはありません。このテンプレートには、分析機能、ライセンス対象のフォント、ファビコン、すべての個人コンテンツは含まれず、アイデンティティは daemon-data.json のデータ(owner_name/owner_handle/fork_url)によって設定されます。公開ワークフローはメンテナー側のもので、配布されません。インストール済みのシステムでは、daemon のコンテンツはご自身の非公開リポジトリに保存され、フォークできるのはフレームワークのみです。

実行ログ

ワークフローの完了後、JSONL エントリを1つ追記してください:

echo '{"ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","skill":"Daemon","workflow":"WORKFLOW_USED","input":"8_WORD_SUMMARY","status":"ok|error","duration_s":SECONDS}' >> ~/.claude/LIFEOS/MEMORY/SKILLS/execution.jsonl

コメント