What ddday Does
Record your daily work. Migrate your data. Resume instantly on a new machine.
ddday is a personal work journal and migration toolkit. It tracks all your projects, generates daily HTML dashboards and markdown logs, and when you switch machines, packs everything into a portable bundle that any AI agent can read to immediately understand your full work context.
Setup
Step 1 — Initialize ddday
Create the ddday directory and workspace config:
CODEBLOCK0
Step 2 — Create workspace.json
Register your projects. Edit $DDDAY_HOME/workspace.json:
CODEBLOCK1
Supported types: node, python, shopify, design, workspace, INLINECODE6
Step 3 — Register as Claude Code skill
CODEBLOCK2
Step 4 — Set up daily cron (optional)
CODEBLOCK3
Commands
CODEBLOCK4
Mode Recognition
Parse user input to select mode:
- - Contains
add + a path → Mode 2 (Register project) - Contains
context → Mode 3 (AI context pack) - Contains
export → Mode 4 (Migration export) - Contains
setup → Mode 5 (New machine restore) - Contains
doctor → Mode 6 (Health check) - Contains
snapshot → Mode 7 (Work snapshot) - Contains
log → Read latest log file - Contains
status → Quick scan, no file output - Default → Mode 1 (Daily scan + record)
Mode 1 — Daily Scan + Record (Default)
Step 1 — Load workspace
CODEBLOCK5
Step 2 — Scan each project
For each registered project folder:
CODEBLOCK6
Also read the project's CLAUDE.md or README.md if present.
Step 3 — Generate daily log
Save scan results to logs/YYYY-MM-DD.md:
CODEBLOCK7
Step 4 — Generate HTML dashboard
Run the dashboard generator to create dashboard.html:
- - Project cards with status indicators
- Commit history per project
- Stats bar (total commits, active projects, pending changes)
- Light/dark theme toggle
Step 5 — Update project overview
Save context/projects-overview.md for AI consumption.
Mode 2 — Register Project (/ddday add )
Step 1 — Validate path and detect type
CODEBLOCK8
Step 2 — Add to workspace.json
Append project entry, check for duplicates first.
Step 3 — Ask for description
Use AskUserQuestion to get a brief description from the user.
Mode 3 — AI Context Pack (/ddday context)
Generates context/projects-overview.md containing:
- - All project metadata, paths, descriptions
- Recent git log per project
- Key file listings
- Current status
Purpose: feed to any new AI conversation for instant project awareness.
Mode 4 — Migration Export (/ddday export)
What it does
- 1. Generates a work snapshot first (Mode 7)
- Collects all data:
- ddday directory (logs, context, config)
- Report archives (e.g.,
~/.shopadmin/ or custom report dirs)
- Claude Code skills
- Credential files (user-configured paths)
- Claude project memory (
~/.claude/projects/*/memory/)
- Crontab backup
- Python requirements
- 3. Creates
manifest.json: path mappings, credentials index, cron jobs, dependencies - Packs into INLINECODE24
- Includes
READ-ME-FIRST.md at pack root (= the work snapshot)
Migration bundle structure
CODEBLOCK9
Mode 5 — New Machine Restore (/ddday setup)
Run on new machine after extracting the migration bundle:
CODEBLOCK10
setup.sh automatically:
- 1. Detects new
$HOME and username - Installs missing dependencies (Homebrew, Python, Git)
- Installs Python packages
- Copies all files to correct locations
- Replaces all hardcoded paths (old
$HOME → new $HOME) - Creates skill symlinks
- Registers cron jobs
Mode 6 — Health Check (/ddday doctor)
Checks 8 categories:
- 1. Project paths — Do all registered projects exist?
- Core files — SKILL.md, workspace.json, scripts present?
- Credentials — Required credential files in place?
- Python deps — Required packages installed?
- Skills — Symlinks correct, skill directories intact?
- Cron jobs — Registered and scripts exist?
- API connectivity — Can reach configured APIs?
- Path consistency — Any stale paths from old machine?
Output: traffic-light report with pass/warn/fail counts.
Mode 7 — Work Snapshot (/ddday snapshot)
Generates a self-contained Markdown file that any AI can read to immediately resume all work:
- 1. User profile — Role, tech stack, work style
- Project panorama — Path, git status, README, .env keys, recent commits
- Business data — Latest reports from all configured report directories
- AI memory — Claude Code project memory files
- Recent logs — Last 7 days of ddday logs
- Team handbook — Available skills and their triggers
- Environment — Cron, credentials, symlinks, system info
- Quick start guide — How to immediately pick up work
Output:
- -
context/work-snapshot-YYYY-MM-DD.md — dated archive - INLINECODE30 — latest copy (AI reads this)
Full Migration Flow
Old machine
CODEBLOCK11
New machine
tar xzf ddday-migration-*.tar.gz
cd ddday-migration
cat READ-ME-FIRST.md # AI reads this → instantly knows all your work
bash setup.sh # Auto-restore environment
python3 doctor.py # Health check
/ddday # Start working
Configuration
ddday uses $DDDAY_HOME (defaults to ~/Desktop/ddday) as its root:
CODEBLOCK13
Customization
Adding report directories
If you have report tools (analytics, monitoring, etc.), edit export.py to include their output directories in the migration bundle. The work snapshot (work_snapshot.py) can also be extended to read from custom report paths.
Extending project types
Add new type detection logic in Mode 2 by checking for framework-specific files (e.g., Cargo.toml for Rust, go.mod for Go).
ddday 的功能
记录你的日常工作。迁移你的数据。在新机器上无缝恢复。
ddday 是一个个人工作日志与迁移工具包。它能追踪你所有的项目,生成每日 HTML 仪表盘和 Markdown 日志,当你切换机器时,将所有内容打包成一个便携包,任何 AI 代理都能读取并立即理解你的完整工作上下文。
设置
第一步 — 初始化 ddday
创建 ddday 目录和工作区配置:
bash
DDDAY_HOME=$HOME/Desktop/ddday
mkdir -p $DDDAY_HOME/{logs,context}
第二步 — 创建 workspace.json
注册你的项目。编辑 $DDDAY_HOME/workspace.json:
json
{
version: 1.0.0,
updated: YYYY-MM-DD,
projects: [
{
name: my-project,
path: /path/to/my-project,
type: node,
emoji: 📦,
description: 项目的简要描述
}
]
}
支持的类型:node、python、shopify、design、workspace、skill
第三步 — 注册为 Claude Code 技能
bash
ln -sfn $DDDAY_HOME $HOME/.claude/skills/ddday
第四步 — 设置每日定时任务(可选)
bash
chmod +x $DDDAYHOME/generatedashboard.py
(crontab -l 2>/dev/null; echo 2 18 * cd $DDDAYHOME && python3 generatedashboard.py) | crontab -
命令
/ddday — 扫描所有项目,生成每日日志 + 仪表盘
/ddday add — 注册新项目
/ddday context — 生成 AI 上下文包(用于新的 AI 对话)
/ddday snapshot — 完整工作快照(所有数据 + 业务报告 + AI 记忆)
/ddday export — 一键迁移包到桌面
/ddday doctor — 环境健康检查(迁移后运行)
/ddday log — 查看最新每日日志
/ddday status — 快速项目状态(不写入日志)
模式识别
解析用户输入以选择模式:
- - 包含 add + 路径 → 模式 2(注册项目)
- 包含 context → 模式 3(AI 上下文包)
- 包含 export → 模式 4(迁移导出)
- 包含 setup → 模式 5(新机器恢复)
- 包含 doctor → 模式 6(健康检查)
- 包含 snapshot → 模式 7(工作快照)
- 包含 log → 读取最新日志文件
- 包含 status → 快速扫描,无文件输出
- 默认 → 模式 1(每日扫描 + 记录)
模式 1 — 每日扫描 + 记录(默认)
第一步 — 加载工作区
python
import json, os
DDDAYHOME = os.environ.get(DDDAYHOME, os.path.expanduser(~/Desktop/ddday))
wsfile = os.path.join(DDDAYHOME, workspace.json)
with open(ws_file, r) as f:
workspace = json.load(f)
projects = workspace.get(projects, [])
print(f已注册 {len(projects)} 个项目)
for p in projects:
print(f - {p[name]}: {p[path]})
第二步 — 扫描每个项目
对于每个已注册的项目文件夹:
bash
PROJECT_PATH=/path/to/project
echo === 今日提交 ===
cd $PROJECT_PATH && git log --oneline --since=today 2>/dev/null || echo 不是 git 仓库
echo === 未提交的更改 ===
cd $PROJECT_PATH && git diff --stat 2>/dev/null
echo === 未追踪的文件 ===
cd $PROJECT_PATH && git status --short 2>/dev/null | head -20
echo === 最近修改的文件(24小时内) ===
find $PROJECT_PATH -maxdepth 3 -type f -mtime -1 \
-not -path /node_modules/ \
-not -path /.git/ \
-not -path /dist/ \
-not -name .DS_Store \
2>/dev/null | head -20
如果存在,也读取项目的 CLAUDE.md 或 README.md。
第三步 — 生成每日日志
将扫描结果保存到 logs/YYYY-MM-DD.md:
markdown
ddday 工作日志 · {date}
概览
- - 今日提交数:{total_commits}
- 活跃项目:{active}/{total}
- 待处理更改:{pending}
{emoji} {project_name} ({type})
- - 状态:{statusemoji} {statustext}
- 分支:{branch}
- 今日提交数:{count}
- {commit_messages}
总结
- - 已完成:{from git commits}
- 进行中:{from diff}
- 下一步:{AI suggestions}
第四步 — 生成 HTML 仪表盘
运行仪表盘生成器以创建 dashboard.html:
- - 带有状态指示器的项目卡片
- 每个项目的提交历史
- 统计栏(总提交数、活跃项目、待处理更改)
- 浅色/深色主题切换
第五步 — 更新项目概览
保存 context/projects-overview.md 供 AI 使用。
模式 2 — 注册项目(/ddday add )
第一步 — 验证路径并检测类型
python
import os
path = os.path.expanduser()
has_git = os.path.isdir(os.path.join(path, .git))
has_package = os.path.isfile(os.path.join(path, package.json))
has_shopify = os.path.isdir(os.path.join(path, .shopify))
has_python = os.path.isfile(os.path.join(path, requirements.txt))
project_type = unknown
if hasshopify: projecttype = shopify
elif haspackage: projecttype = node
elif haspython: projecttype = python
第二步 — 添加到 workspace.json
追加项目条目,先检查重复项。
第三步 — 询问描述
使用 AskUserQuestion 从用户获取简要描述。
模式 3 — AI 上下文包(/ddday context)
生成 context/projects-overview.md,包含:
- - 所有项目元数据、路径、描述
- 每个项目的最近 git 日志
- 关键文件列表
- 当前状态
目的:提供给任何新的 AI 对话,实现即时项目认知。
模式 4 — 迁移导出(/ddday export)
功能说明
- 1. 首先生成工作快照(模式 7)
- 收集所有数据:
- ddday 目录(日志、上下文、配置)
- 报告归档(例如 ~/.shopadmin/ 或自定义报告目录)
- Claude Code 技能
- 凭证文件(用户配置的路径)
- Claude 项目记忆(~/.claude/projects/*/memory/)
- Crontab 备份
- Python 依赖
- 3. 创建 manifest.json:路径映射、凭证索引、定时任务、依赖
- 打包到 ~/Desktop/ddday-migration-{date}.tar.gz
- 包含 READ-ME-FIRST.md 在包根目录(即工作快照)
迁移包结构
ddday-migration/
├── READ-ME-FIRST.md # 工作快照 — 新 AI 首先读取此文件
├── manifest.json # 路径映射、依赖、定时任务
├── ddday/ # 完整的 ddday 目录
├── skills/ # 自定义技能定义
├── credentials/ # 凭证文件
├── claude-memory/ # Claude 项目记忆文件
├── crontab.bak # Crontab 备份
├── requirements.txt # Python 依赖
├── setup.sh # 一键恢复脚本
├── doctor.py # 健康检查脚本
└── work_snapshot.py # 快照生成器
模式 5 — 新机器恢复(/ddday setup)
在新机器上解压迁移包后运行:
bash
tar xzf ddday-migration-*.tar.gz
cd ddday-migration
bash setup.sh
setup.sh 自动