Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

325 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

daily-logger

Read the live blog: log.jim.software

Part of the ojfbot org — building Frame, an AI App OS that hosts Claude-powered applications inside a unified, natural-language shell. This repo is Phase 9 of the Frame roadmap: the self-documenting development system.

daily-logger generates one markdown blog article per day by sweeping the last 24 h of commits (and 7 days of PRs/issues, both open and closed) across all Frame stack repos, feeding that context to Claude Sonnet, and opening a draft PR for editorial review. An editorial revision CI workflow then self-reviews the draft. Merging the PR deploys the article to Vercel.


Reading the blog

https://log.jim.software/

Each article lives at /articles/YYYY-MM-DD.


How it works

09:00 UTC cron (or manual dispatch)
  → collect-context.ts   sweeps: commits (24 h), PRs/issues (7 d, open + closed) across all Frame repos
                         injects ROADMAP.md context (~2500 chars) into the prompt
  → generate-article.ts  Claude Sonnet → JSON → markdown
  → index.ts             writes articles/YYYY-MM-DD.md

  → CI: git checkout -b article/YYYY-MM-DD
        git commit + push
        gh pr create --draft  ← structured PR template for editorial review
        editorial revision CI (`pnpm exec tsx`) self-reviews the draft
        auto-merge job merges accepted article PRs for morning draft visibility

  → you: review draft PR + editorial suggestions, edit on the branch if needed, merge to publish

  → deploy-vercel.yml    fires on push to main → Vercel serverless build + deploy

Repos swept: shell, cv-builder, BlogEngine, TripPlanner, core, MrPlug, purefoy, daily-logger, lean-canvas, seh-study, core-reader, gastown-pilot, frame-ui-components, capture-agent (formerly gcgcca), fairway, browser-automation, node-template, dive-briefing, switchboard, agent-anatomy, f1-pit-wall, f1-substrate, lofi-beaver, golf-platform-scripts, f1-doctrine.

Architecture

┌──────────────────────────────────────────────────────────────────┐
│  Phase 1: Collect Context                                        │
│  collect-context.ts — GitHub API sweep across 20+ repos          │
│  Commits (24h) + PRs/Issues (7d) + ROADMAP.md injection         │
│  + Claude Code telemetry aggregation (skill/tool usage)          │
└──────────────┬───────────────────────────────────────────────────┘
               ▼
┌──────────────────────────────────────────────────────────────────┐
│  Phase 2: Draft Article                                          │
│  generate-article.ts — Claude API (Sonnet, 8192 max tokens)     │
│  Structured prompt: 4 required sections + frontmatter            │
│  Telemetry woven into narrative (skills, quality coverage)       │
└──────────────┬───────────────────────────────────────────────────┘
               ▼
┌──────────────────────────────────────────────────────────────────┐
│  Phase 3: Editorial Council                                      │
│  4 editorial personas review the draft independently             │
│  Each persona: Claude API call (2048 tokens), domain-specific    │
│  critique + structured feedback                                  │
└──────────────┬───────────────────────────────────────────────────┘
               ▼
┌──────────────────────────────────────────────────────────────────┐
│  Phase 4: Synthesis + Publish                                    │
│  Final article synthesized from council feedback (8192 tokens)   │
│  PR created → editorial revision CI → merge → Vercel deploy     │
└──────────────────────────────────────────────────────────────────┘

Telemetry integration: The pipeline reads skill and tool telemetry from ~/.claude/*.jsonl (synced to a telemetry/daily branch via core/scripts/sync-telemetry.sh). Skill usage, quality coverage, and lint activity are woven into the article narrative — not a separate section.


What this demonstrates

  • Automated content pipeline — cron trigger, cross-repo context sweep via GitHub API, Claude generation, PR-based editorial review, Vercel deploy on merge
  • Structured AI prompting — ROADMAP.md context injection (~2500 chars), enforced article schema (frontmatter + 4 required sections), deterministic PR template
  • Observable development — every day's work across 24 repos is public at log.jim.software

The Frame stack

Repo Role
shell Frame OS — Vite Module Federation host + frame-agent LLM gateway + K8s
cv-builder Multi-agent resume builder; CI/CD flagship with visual regression pipeline
BlogEngine AI blog platform; daily-logger publishes here
TripPlanner AI trip planning
core Workflow framework — 30+ Claude Code skills + TypeScript engine + suggest-skills engine
MrPlug Chrome extension for AI UI/UX feedback; Frame dev companion
purefoy Roger Deakins knowledge base; roadmap: podcast AI agent in Frame
lean-canvas Lean canvas tool
seh-study SEH study resource
core-reader Documentation viewer for the core workflow framework
gastown-pilot Multi-agent coordination dashboard
frame-ui-components Shared UI component library (Carbon DS)
daily-logger This repo — self-documenting dev system

Development

cp .env.example .env
# Fill in ANTHROPIC_API_KEY and a GITHUB_TOKEN with read access to ojfbot repos

pnpm install

# Dry run — prints article to stdout, writes nothing
pnpm generate:dry

# Live run — writes articles/YYYY-MM-DD.md
pnpm generate

# Generate for a specific date
DATE_OVERRIDE=2026-02-20 pnpm generate:dry

Requirements: Node ≥ 24, pnpm 9, gh CLI authenticated.


Source files

File Purpose
src/index.ts Entry point — orchestrates collect → generate → write
src/collect-context.ts GitHub API sweep via gh CLI; reads ROADMAP.md for prompt context
src/generate-article.ts Claude API call + system prompt, JSON → markdown
src/types.ts Shared TypeScript types
ROADMAP.md Living roadmap — first ~2500 chars injected into every generation prompt
.github/scripts/build_pr_body.py Builds the deterministic draft PR body from article frontmatter

Article format

---
title: "..."
date: YYYY-MM-DD
tags: ["tag1", "tag2"]
summary: "One sentence preview."
---

Required body sections: ## What shipped, ## The decisions, ## Roadmap pulse, ## What's next.


Customisation

Add repos to the sweep — edit the REPOS array in src/collect-context.ts. Run gh repo list ojfbot to audit.

Update project context — edit ROADMAP.md. The "Where we are now" section should be updated weekly. The system prompt lives in src/generate-article.ts.


Deployment


Secrets

Secret Required Notes
ANTHROPIC_API_KEY Yes Claude API key
GH_PAT Yes PAT with read access to all ojfbot repos (for cross-repo sweep)
GITHUB_TOKEN Auto Provided by Actions; used for branch push and PR creation
BLOGENGINE_API_URL No e.g. https://blog.ojfbot.dev — enables live publish to BlogEngine

Manual dispatch

Actions → Daily Dev Blog → Run workflow

Input Notes
date_override Generate for a past date (YYYY-MM-DD)
dry_run Print article to logs without writing, committing, or opening a PR

License

MIT

Frame OS Ecosystem

Part of Frame OS — an AI-native application OS.

Repo Description
shell Module Federation host + frame-agent LLM gateway
core Workflow framework — 30+ skills + TypeScript engine
cv-builder AI-powered resume builder with LangGraph agents
blogengine AI blog content creation platform
TripPlanner AI trip planner with 11-phase pipeline
core-reader Documentation viewer for the core framework
lean-canvas AI-powered lean canvas business model tool
gastown-pilot Multi-agent coordination dashboard
seh-study NASA SEH spaced repetition study tool
daily-logger Automated daily dev blog pipeline (this repo)
purefoy Roger Deakins cinematography knowledge base
MrPlug Chrome extension for AI UI feedback
frame-ui-components Shared component library (Carbon DS)
capture-agent Golf-course capture agent (formerly gcgcca; renamed 2026-07-30) — TX imagery → segmentation model → HF; Pydantic + TypeScript type bridge
fairway Golf digital twin — explorable twin surface (decomposed from mirrorworld 2026-07-30)
switchboard FastAPI proxy — byte-for-byte SSE passthrough
f1-pit-wall F1 pit-wall telemetry surface
f1-substrate F1 data substrate layer
f1-doctrine F1 question layer — taxonomy and corpus register
lofi-beaver Lofi beaver game
golf-platform-scripts Golf platform automation scripts

About

Daily Claude-written dev log for ojfbot — auto-commits to GitHub Pages

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages