- Integrated maintenance.sh into the end-of-day protocol. - Added hygiene and documentation checklists to EOD workflow. - Updated daily-routine.sh with morning and evening phases.
201 lines
6.1 KiB
Bash
Executable File
201 lines
6.1 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# saTway Daily Routine - 7-phase morning workflow
|
|
# Implements "Morning Start Protocol (15 Min)"
|
|
|
|
mkdir -p "$HOME/logs" 2>/dev/null || true
|
|
LOCAL_LOG="$HOME/logs/daily-routine-$(date +%Y%m%d).log"
|
|
HEALTH_SCRIPT="$(dirname "$0")/morning-health-check.sh"
|
|
MAINTENANCE_SCRIPT="$(dirname "$0")/maintenance.sh"
|
|
WORKSPACE="$HOME/internal/mw-pfeddersheim-workstation"
|
|
|
|
# ANSI colors
|
|
RED='\033[0;31m'
|
|
YELLOW='\033[0;33m'
|
|
GREEN='\033[0;32m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
log() {
|
|
echo -e "$1" | tee -a "$LOCAL_LOG"
|
|
}
|
|
|
|
phase_header() {
|
|
log "\n${BLUE}--- Phase $1: $2 ---${NC}"
|
|
}
|
|
|
|
run_health_check() {
|
|
log "Running health check..."
|
|
if [ -x "$HEALTH_SCRIPT" ]; then
|
|
HEALTH_EXIT=0
|
|
# Disable set -e for the health check call
|
|
set +e
|
|
bash "$HEALTH_SCRIPT" 2>&1 | tee -a "$LOCAL_LOG"
|
|
HEALTH_EXIT=$?
|
|
set -e
|
|
|
|
if [ "$HEALTH_EXIT" -eq 2 ]; then
|
|
log "\n${RED}CRITICAL: Health check failed with critical errors.${NC}"
|
|
# Still proceed for the morning-full routine but with a big warning?
|
|
# Or exit? Let's follow the previous script logic for health:
|
|
# morning-full should probably still show the rest of the protocol
|
|
# so the user can see everything.
|
|
elif [ "$HEALTH_EXIT" -eq 1 ]; then
|
|
log "\n${YELLOW}WARNING: Health check finished with warnings.${NC}"
|
|
fi
|
|
else
|
|
log "${YELLOW}WARNING: Health check script not found or not executable${NC}"
|
|
fi
|
|
}
|
|
|
|
phase_0_readiness() {
|
|
phase_header "0" "Physical & Mental Readiness"
|
|
log "Checklist:"
|
|
log " [ ] Hydrated"
|
|
log " [ ] Light movement"
|
|
log " [ ] 1-minute mindfulness"
|
|
log " [ ] Time block established"
|
|
|
|
log "\nActivating DND (macOS)..."
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
osascript -e 'do shell script "defaults write com.apple.controlcenter \"NSStatusItem Visible DoNotDisturb\" -bool true"' || log " Failed to set DND"
|
|
pkill -f "Slack" 2>/dev/null || true
|
|
pkill -f "Discord" 2>/dev/null || true
|
|
log " DND enabled and distractions closed."
|
|
else
|
|
log " SKIP: Not on macOS"
|
|
fi
|
|
}
|
|
|
|
phase_1_context() {
|
|
phase_header "1" "Context Restoration"
|
|
log "Recent WIP commits:"
|
|
git -C "$WORKSPACE" log -5 --pretty=format:"%h %s" --grep="wip:" || log " No WIP commits found"
|
|
|
|
log "\nRecent learnings:"
|
|
ls -lt "$WORKSPACE/docs/learnings/" 2>/dev/null | head -3 || log " No learnings found"
|
|
|
|
log "\nGit status:"
|
|
git -C "$WORKSPACE" status --short
|
|
}
|
|
|
|
phase_2_validation() {
|
|
phase_header "2" "Environment Validation"
|
|
run_health_check
|
|
}
|
|
|
|
phase_3_priority() {
|
|
phase_header "3" "Priority Framework (MoSCoW)"
|
|
log "Define exactly 3 priorities. No more."
|
|
log " 1. [MUST] _____________________"
|
|
log " 2. [MUST/SHOULD] ______________"
|
|
log " 3. [SHOULD] ___________________"
|
|
}
|
|
|
|
phase_4_sync() {
|
|
phase_header "4" "Team Synchronization"
|
|
log " [ ] Async Standup: Post yesterday, today, blockers, availability."
|
|
log " [ ] Block Focus Time: Calendar updated."
|
|
}
|
|
|
|
phase_5_warmup() {
|
|
phase_header "5" "Cognitive Warmup"
|
|
log "Choose ONE (2-5 minutes):"
|
|
log " - Review simple PR"
|
|
log " - Fix trivial lint warning"
|
|
log " - Write small test case"
|
|
log " - Document one function"
|
|
}
|
|
|
|
phase_6_ai_setup() {
|
|
phase_header "6" "AI Setup"
|
|
if command -v cline &> /dev/null; then
|
|
log "cline version:"
|
|
cline --version | head -n 1 | tee -a "$LOCAL_LOG"
|
|
else
|
|
log "${YELLOW}WARNING: cline CLI not found${NC}"
|
|
fi
|
|
}
|
|
|
|
phase_7_launch() {
|
|
phase_header "7" "Launch Deep Work"
|
|
log "Ready to start?"
|
|
log " 1. Create branch: git checkout -b feat/\$(date +%Y%m%d)_morning_start"
|
|
log " 2. Start timer: timer 90m \"Deep work complete!\" &"
|
|
log " 3. FIRST ACTION: Write ONE thing that proves work has started (e.g., 1 failing test)."
|
|
}
|
|
|
|
# --- EOD Protocol Phases ---
|
|
|
|
eod_hygiene_git() {
|
|
phase_header "EOD-1" "Git, Hygiene & Verification"
|
|
log "Git status:"
|
|
git -C "$WORKSPACE" status --short || log "${RED} Git status failed${NC}"
|
|
|
|
log "\nChecking for large untracked files..."
|
|
find "$WORKSPACE" -maxdepth 2 -not -path '*/.*' -size +10M -ls || true
|
|
|
|
log "\nValidation Checklist:"
|
|
log " [ ] Tests passed (run manually if needed)"
|
|
log " [ ] No temporary files or logs left behind"
|
|
log " [ ] Work committed (including WIP if necessary)"
|
|
}
|
|
|
|
eod_knowledge_documentation() {
|
|
phase_header "EOD-2" "Knowledge & Documentation"
|
|
log "Documentation Checklist:"
|
|
log " [ ] README updated with major achievements"
|
|
log " [ ] CHANGELOG updated"
|
|
log " [ ] NEXT_STEPS.md updated for tomorrow"
|
|
log " [ ] Learnings captured in docs/learnings/"
|
|
}
|
|
|
|
eod_ops_automation() {
|
|
phase_header "EOD-3" "Ops & Automation"
|
|
log "Running system maintenance..."
|
|
if [ -x "$MAINTENANCE_SCRIPT" ]; then
|
|
bash "$MAINTENANCE_SCRIPT" | tee -a "$LOCAL_LOG"
|
|
else
|
|
log "${YELLOW}WARNING: Maintenance script not found or not executable${NC}"
|
|
fi
|
|
|
|
log "\nFinal Ops Checklist:"
|
|
log " [ ] Services stopped"
|
|
log " [ ] Docker pruned (via maintenance.sh)"
|
|
}
|
|
|
|
# Command line interface
|
|
case "${1:-morning}" in
|
|
"health")
|
|
run_health_check
|
|
;;
|
|
"morning")
|
|
log "--- Starting Lightweight Daily Routine $(date) ---"
|
|
phase_2_validation
|
|
log "\n--- Daily Routine Finished $(date) ---"
|
|
;;
|
|
"morning-full")
|
|
log "--- Starting Full Morning Protocol $(date) ---"
|
|
phase_0_readiness
|
|
phase_1_context
|
|
phase_2_validation
|
|
phase_3_priority
|
|
phase_4_sync
|
|
phase_5_warmup
|
|
phase_6_ai_setup
|
|
phase_7_launch
|
|
log "\n--- Full Morning Protocol Finished $(date) ---"
|
|
;;
|
|
"eod")
|
|
log "--- Starting End of Day Protocol $(date) ---"
|
|
eod_hygiene_git
|
|
eod_knowledge_documentation
|
|
eod_ops_automation
|
|
log "\n--- End of Day Protocol Finished $(date) ---"
|
|
;;
|
|
*)
|
|
echo "Usage: $0 {health|morning|morning-full|eod}"
|
|
exit 1
|
|
;;
|
|
esac |