Skip to main content
WorkProjects

Prometheus

Personal Claude Code configuration — 32 skills, 20 hooks, cross-device sync

stable
View raw

A Claude Code configuration repo that clones into ~/.claude and turns the vanilla CLI into an opinionated assistant with memory, specialized skills, voice output, event capture, and auto-sync. Not a product. Not a demo. The assistant I actually run.

What it is

Prometheus is personal infrastructure, not a shippable app. One git repo lives at ~/.claude on every machine I use (two Macs + Termux on Android). A SessionStart hook pulls the latest; a SessionEnd hook pushes back. The "brain" — skills, hooks, learnings, profile, knowledge — syncs via git. Raw session data, vector stores, and device-specific binaries stay local. Inspired by Daniel Miessler's PAI and its kai CLI, built around my own skill set, life state, and the pillar framing I use (ERGON / LOGOS / ARETE / OIKOS / TELOS).

By the numbers

MetricValue
Custom skills32
Lifecycle hooks20
Sync target~/.claude on every device
Devices in lockstep3 (two Macs + Termux on Android)
Commits in build window16 between 2026-01-03 and 2026-01-05
StatusDormant repo, still the live ~/.claude
PortableNo — hardcoded paths, pinned Node, macOS-only voice
LicensePrivate — contains personal profile + life state

Architecture

Device A (Mac)        Device B (Mac)        Device C (Termux)
     |                      |                      |
     +-- ~/.claude/ <---- git <---- ~/.claude/ ---+
                            |
                            v
              SessionStart  -> pull-prometheus.ts
              SessionEnd    -> sync-prometheus.ts
                            |
                            v
            Synced:   skills/ hooks/ agents/ history/
                      knowledge/ config/ profile + life-state
            Local:    memory/.venv  raw session data  device bins

Every Claude Code event routes through a hook: SessionStart, PreToolUse, PostToolUse, UserPromptSubmit, Stop, SubagentStop, SessionEnd. The prometheus CLI at bin/prometheus wraps Claude Code with context load, voice, and skill dispatch in a single command.

Key features

  • 32 skills under skills/ — each with its own SKILL.md defining triggers, workflows, and domain knowledge. Coverage: software dev (Coder, SoftwareDev, Architect, DevOps, QA, Security, Data), research (Research, Journalist, SEC, FEC, FederalRegister, Census, FBICrime, Congress), writing (Writing, WebEssay), meta (CORE, Orchestrator, Agents, CreateSkill, SelfOptimize, SelfUpdate, Prompting), ops (Git, NotionSync, WebScraper, Seed, CreateTests, SpecKit), and Art.
  • 20 lifecycle hooks under hooks/ — auto-pull on start, core context load, proactive suggestions, security validation, tab-title updates, voice confirmations, session summarization, learning extraction, auto-push on end.
  • Cross-device syncpull-prometheus.ts at session start, sync-prometheus.ts at session end. Verified working on MacBook Pro
    • Termux.
  • Vector memory at memory/sentence-transformers for semantic search across extracted learnings. Per-device .venv, intentionally not synced.
  • Knowledge pipelinebin/fetch-ai-sources.py pulls from a curated AI.json (YouTube channels, repos, sites); Claude synthesizes into knowledge/synthesized/*.md.
  • Agent personality v0.9 (tag JARVIS v0.9) — proactive action hooks, agent voice mapping, observability layer.
  • Single CLI entry pointprometheus "..." wraps Claude Code with context, voice, and dispatch. Inspired by Miessler's kai.

What makes it stand out

  • Honest about what it is — a config bundle, not a product. The repo is dormant because the patterns graduated into daily Claude Code usage; it stopped needing commits.
  • Git as sync transport — no bespoke backend. The repo IS the sync layer. Personal data is in-repo because the repo is private.
  • Opinionated, not portable — hardcoded paths, pinned Node version (~/.nvm/versions/node/v20.19.6), macOS-specific voice (say). Anyone else cloning it rewrites settings.json first.
  • Philosophical framing baked infardin-profile.md and fardin-life-state.md load at session start. Pillars and goal (eudaimonia, not comfort) are context, not aesthetics.

Stack

LayerTechnology
Runtime shellClaude Code (hooks, skills, settings.json)
CLI + hooksBun + TypeScript, tsx via nvm-pinned Node 20.19.6
Vector memoryPython 3 + sentence-transformers + torch
VoicemacOS say + ElevenLabs
IntegrationsNotion API, Linear API, Google APIs
Sync transportGit + GitHub