← Back to Skills Marketplace
cosmofang

ddday

by Cosmos Fang · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
86
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install ddday
Description
Daily work journal + machine migration toolkit. Auto-scans all registered projects (git activity, file changes, API status), generates a daily dashboard, and...
README (SKILL.md)

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:

DDDAY_HOME="$HOME/Desktop/ddday"
mkdir -p "$DDDAY_HOME"/{logs,context}

Step 2 — Create workspace.json

Register your projects. Edit $DDDAY_HOME/workspace.json:

{
  "version": "1.0.0",
  "updated": "YYYY-MM-DD",
  "projects": [
    {
      "name": "my-project",
      "path": "/path/to/my-project",
      "type": "node",
      "emoji": "📦",
      "description": "Brief description of the project"
    }
  ]
}

Supported types: node, python, shopify, design, workspace, skill

Step 3 — Register as Claude Code skill

ln -sfn "$DDDAY_HOME" "$HOME/.claude/skills/ddday"

Step 4 — Set up daily cron (optional)

chmod +x "$DDDAY_HOME/generate_dashboard.py"
(crontab -l 2>/dev/null; echo "2 18 * * * cd $DDDAY_HOME && python3 generate_dashboard.py") | crontab -

Commands

/ddday              — Scan all projects, generate daily log + dashboard
/ddday add \x3Cpath>   — Register a new project
/ddday context      — Generate AI context pack (for new AI conversations)
/ddday snapshot     — Full work snapshot (all data + business reports + AI memory)
/ddday export       — One-command migration bundle to Desktop
/ddday doctor       — Environment health check (run after migration)
/ddday log          — View latest daily log
/ddday status       — Quick project status (no log written)

Mode Recognition

Parse user input to select mode:

  • Contains add + a path → Mode 2 (Register project)
  • Contains contextMode 3 (AI context pack)
  • Contains exportMode 4 (Migration export)
  • Contains setupMode 5 (New machine restore)
  • Contains doctorMode 6 (Health check)
  • Contains snapshotMode 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

import json, os

DDDAY_HOME = os.environ.get("DDDAY_HOME", os.path.expanduser("~/Desktop/ddday"))
ws_file = os.path.join(DDDAY_HOME, "workspace.json")

with open(ws_file, "r") as f:
    workspace = json.load(f)

projects = workspace.get("projects", [])
print(f"Registered {len(projects)} projects")
for p in projects:
    print(f"  - {p['name']}: {p['path']}")

Step 2 — Scan each project

For each registered project folder:

PROJECT_PATH="/path/to/project"

echo "=== Today's commits ==="
cd "$PROJECT_PATH" && git log --oneline --since="today" 2>/dev/null || echo "Not a git repo"

echo "=== Uncommitted changes ==="
cd "$PROJECT_PATH" && git diff --stat 2>/dev/null

echo "=== Untracked files ==="
cd "$PROJECT_PATH" && git status --short 2>/dev/null | head -20

echo "=== Recently modified files (24h) ==="
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

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:

# ddday work log · {date}

## Overview
- Today's commits: {total_commits}
- Active projects: {active}/{total}
- Pending changes: {pending}

## {emoji} {project_name} ({type})
- Status: {status_emoji} {status_text}
- Branch: {branch}
- Today's commits: {count}
  - {commit_messages}
- Uncommitted changes: {diff_stat}

## Summary
- Completed: {from git commits}
- In progress: {from diff}
- Next steps: {AI suggestions}

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 \x3Cpath>)

Step 1 — Validate path and detect type

import os

path = os.path.expanduser("\x3Cuser-provided-path>")
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 has_shopify: project_type = "shopify"
elif has_package: project_type = "node"
elif has_python: project_type = "python"

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)
  2. 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
  4. Packs into ~/Desktop/ddday-migration-{date}.tar.gz
  5. Includes READ-ME-FIRST.md at pack root (= the work snapshot)

Migration bundle structure

ddday-migration/
├── READ-ME-FIRST.md       # Work snapshot — new AI reads this first
├── manifest.json           # Path mappings, dependencies, cron
├── ddday/                  # Full ddday directory
├── skills/                 # Custom skill definitions
├── credentials/            # Credential files
├── claude-memory/          # Claude project memory files
├── crontab.bak             # Crontab backup
├── requirements.txt        # Python dependencies
├── setup.sh                # One-command restore script
├── doctor.py               # Health check script
└── work_snapshot.py        # Snapshot generator

Mode 5 — New Machine Restore (/ddday setup)

Run on new machine after extracting the migration bundle:

tar xzf ddday-migration-*.tar.gz
cd ddday-migration
bash setup.sh

setup.sh automatically:

  1. Detects new $HOME and username
  2. Installs missing dependencies (Homebrew, Python, Git)
  3. Installs Python packages
  4. Copies all files to correct locations
  5. Replaces all hardcoded paths (old $HOME → new $HOME)
  6. Creates skill symlinks
  7. Registers cron jobs

Mode 6 — Health Check (/ddday doctor)

Checks 8 categories:

  1. Project paths — Do all registered projects exist?
  2. Core files — SKILL.md, workspace.json, scripts present?
  3. Credentials — Required credential files in place?
  4. Python deps — Required packages installed?
  5. Skills — Symlinks correct, skill directories intact?
  6. Cron jobs — Registered and scripts exist?
  7. API connectivity — Can reach configured APIs?
  8. 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
  2. Project panorama — Path, git status, README, .env keys, recent commits
  3. Business data — Latest reports from all configured report directories
  4. AI memory — Claude Code project memory files
  5. Recent logs — Last 7 days of ddday logs
  6. Team handbook — Available skills and their triggers
  7. Environment — Cron, credentials, symlinks, system info
  8. Quick start guide — How to immediately pick up work

Output:

  • context/work-snapshot-YYYY-MM-DD.md — dated archive
  • context/LATEST-SNAPSHOT.md — latest copy (AI reads this)

Full Migration Flow

Old machine

/ddday export       # Auto-generates snapshot + packs everything

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:

$DDDAY_HOME/
├── SKILL.md              # This skill definition
├── workspace.json        # Project registry
├── generate_dashboard.py # Dashboard generator
├── work_snapshot.py      # Snapshot generator
├── export.py             # Migration exporter
├── setup.sh              # New machine restore
├── doctor.py             # Health check
├── run_ddday.sh          # Cron entry point
├── dashboard.html        # Latest dashboard (auto-generated)
├── logs/                 # Daily logs (YYYY-MM-DD.md)
└── context/              # AI context files
    ├── projects-overview.md
    ├── LATEST-SNAPSHOT.md
    └── work-snapshot-*.md

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).

Usage Guidance
This skill appears to do what it says (scanning projects and building migration bundles) but has important privacy risks by default. Before installing or running it: 1) Only register explicit project paths — never add home (~/) or root, or entire disks. 2) Review workspace.json after adding projects to ensure paths are correct. 3) Expect the export/snapshot to include everything in each registered project directory; explicitly exclude directories or file patterns that contain secrets (e.g., .env, credentials, private keys, build artifacts). 4) Inspect any generated bundle before transferring it off-device. 5) Don't enable the optional cron until you have a reviewed generate_dashboard.py script in place and are confident about what gets collected. 6) If you need assurance the skill won't collect agent memory or other sensitive config, ask the author (or review the missing Mode 4 export details) — the truncated instructions make it unclear whether 'AI memory' or other agent files are collected. Additional information that would change this assessment: the full Mode 4 export procedure, explicit exclusion rules for secrets, and confirmation that no network upload of bundles occurs.
Capability Analysis
Type: OpenClaw Skill Name: ddday Version: 1.0.0 The ddday skill (SKILL.md) functions as a work journal and migration toolkit that explicitly instructs the AI agent to collect sensitive information, including credential files, .env keys, and Claude project memory, into a migration bundle. While these capabilities are consistent with the stated goal of machine migration, the broad access to secrets and the automated modification of system configurations (crontab, dependency installation) represent significant security risks. No evidence of unauthorized remote exfiltration was found, but the tool's design facilitates the aggregation of highly sensitive data.
Capability Assessment
Purpose & Capability
The skill claims to scan registered projects and produce migration bundles; the required tools and actions (reading project files, running git, find, writing logs) align with that purpose. It does not request unrelated credentials or binaries.
Instruction Scope
The runtime instructions direct the agent to read arbitrary files under each registered project, run git commands, and produce a bundled 'snapshot' that includes 'all data' and 'AI memory'. The instructions do not enumerate safe exclusions (e.g., .env, secret files) and are vague about what 'AI memory' includes. That vagueness could lead to accidental collection of sensitive files or agent memory outside the intended scope.
Install Mechanism
This is an instruction-only skill with no install spec and no code files — low install risk. It instructs the user to create a local symlink into $HOME/.claude/skills, which is a benign, local setup step for an agent skill.
Credentials
The skill requests no credentials or config paths, which is proportional. However, because it reads arbitrary project directories and packs 'all data', it can still collect secrets that happen to be in those directories; the skill does not require or declare access to any external credentials but can exfiltrate local secrets if misused.
Persistence & Privilege
The skill is not always-enabled and does not request elevated platform privileges. It does instruct creating a symlink within the user's skills directory (normal). No instructions were found that modify other skills or system-wide configurations beyond the skill's own path.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install ddday
  3. After installation, invoke the skill by name or use /ddday
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
v1.0.0: Initial release — daily work journal + machine migration toolkit. Features: auto project scanning, HTML dashboard, work snapshot, one-command export/restore, environment health check.
Metadata
Slug ddday
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is ddday?

Daily work journal + machine migration toolkit. Auto-scans all registered projects (git activity, file changes, API status), generates a daily dashboard, and... It is an AI Agent Skill for Claude Code / OpenClaw, with 86 downloads so far.

How do I install ddday?

Run "/install ddday" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is ddday free?

Yes, ddday is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does ddday support?

ddday is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created ddday?

It is built and maintained by Cosmos Fang (@cosmofang); the current version is v1.0.0.

💬 Comments