test-repo/memory/2026-02-26.md

10 KiB

🌙 Late-Night Check — 2026-02-26 (3:04 AM)

📊 Status:

  • Active tasks: 5 (hardening queued; cron active)
  • Overdue: 0
  • Git: Uncommitted changes (BRAIN.md, MEMORY.md, research/ scripts—commit AM)
  • Tomorrow's priority: Hardening task (ed4bc5aa-8c84-4f95-b339-cf2ea17fd02b)—cron/Bob progress.

🎯 Suggestion: Morning: Gantt Board for hardening (test if complete), git commit workspace. Builds reliable agents for iOS empire—rest well.


[2026-02-26 16:46] Created daily-digest.sh script

What was requested

Matt wanted a shell script to generate the daily digest reliably (to fix the broken cron job).

What was done

  • Created /Users/mattbruce/.openclaw/workspace/scripts/daily-digest.sh
  • Script handles JSON escaping properly using jq
  • Uses temp files to avoid argument length issues
  • Checks for existing digest before creating
  • Generates proper format with emojis and [Read more →](URL) links
  • Can be run manually: ./daily-digest.sh [YYYY-MM-DD]

Usage

# Run for today
./scripts/daily-digest.sh

# Run for specific date
./scripts/daily-digest.sh 2026-02-26

[2026-02-26 15:52] Fixed blog-backup skill to match mission-control-docs pattern

What was requested

Continue working to fix issues with the daily blog and create a skill similar to mission-control-docs.

What was done

  • Updated ~/.agents/skills/blog-backup/lib/blog.sh to use shared auth-api transport
  • Created /Users/mattbruce/Documents/Projects/OpenClaw/Web/blog-backup/scripts/blog.sh CLI
  • Added contract tests at ~/.agents/skills/blog-backup/tests/test_contract.sh (all 6 pass)
  • Updated SKILL.md with full documentation
  • Updated TOOLS.md with CLI usage examples
  • Committed changes to both workspace and blog-backup repo
  • Pushed to Gitea

Files Created/Modified

  • ~/.agents/skills/blog-backup/lib/blog.sh - Updated with auth-api integration
  • ~/.agents/skills/blog-backup/SKILL.md - Full documentation
  • ~/.agents/skills/blog-backup/tests/test_contract.sh - Contract tests
  • /Users/mattbruce/Documents/Projects/OpenClaw/Web/blog-backup/scripts/blog.sh - CLI script
  • ~/.openclaw/workspace/TOOLS.md - Updated documentation

Architecture

Following API-centric CLI pattern:

Skill (blog.sh) → auth-api transport → API (x-api-key) → Database

Testing

# Run contract tests
bash ~/.agents/skills/blog-backup/tests/test_contract.sh
# Result: PASS: blog-backup contract tests

[2026-02-26 10:36] Completed - Shared auth-api skill integration

What was requested

Matt asked to build/integrate/test a no-duplication auth API layer shared by gantt-tasks and mission-control-docs.

What was decided

  • Do NOT merge domain skills.
  • Create shared auth-api transport skill/module and wire both domain skills to it.

What was done

  • Created new skill: ~/.agents/skills/auth-api/
    • SKILL.md
    • lib/auth_api.sh with api_call, api_preflight, api_require_token
  • Refactored gantt-tasks/lib/tasks.sh
    • Added source to shared auth_api.sh
    • Replaced local _api_call implementation to delegate to shared api_call
  • Refactored mission-control-docs/lib/docs.sh
    • Added source to shared auth_api.sh
    • Replaced local _api_call implementation to delegate to shared api_call
  • Updated both SKILL docs to reflect architecture:
    • Domain Skill -> auth-api transport -> API -> DB
  • Added tests:
    • ~/.agents/skills/auth-api/tests/test_auth_api.sh (mocked curl contract test)
  • Ran tests:
    • Initial fail due to grep pattern parsing; fixed with grep -F --
    • Final: PASS: auth-api transport tests
  • Smoke checks passed:
    • both domain libs source/load correctly
    • both _api_call functions route through shared transport layer

Follow-ups

  • Optionally add retry/backoff policy in auth_api.sh once behavior is agreed.

Additional completed (2026-02-26 10:39)

  • Added per-domain contract tests with mocked shared transport:
    • ~/.agents/skills/gantt-tasks/tests/test_contract.sh
      • verifies task_create contract (GET /sprints, POST /tasks)
      • verifies task_update contract (GET /tasks, POST /tasks with status change)
    • ~/.agents/skills/mission-control-docs/tests/test_contract.sh
      • verifies mc_doc_create contract (POST /documents payload)
      • verifies mc_doc_update contract (GET /documents?id=..., PATCH /documents payload)
  • Improved mock-call logging by base64-encoding payloads for multiline-safe assertions.
  • Ran full suite:
    • PASS: gantt-tasks contract tests
    • PASS: mission-control-docs contract tests
    • PASS: auth-api transport tests

Additional completed (2026-02-26 10:40)

  • Fixed consuming workflow skill url-research-to-documents-and-tasks to remove duplicate/orphan logic path.
  • Replaced orchestrator.sh implementation with a thin wrapper that delegates to hardened script only:
    • orchestrator.sh -> bin/url-research.sh
  • Updated skill docs to point production entrypoint to orchestrator.sh (single source of truth).
  • Verified script syntax:
    • bash -n orchestrator.sh
    • bash -n bin/url-research.sh
  • Verified wrapper execution path:
    • no-arg usage correctly routes and prints hardened usage
    • run with URL starts hardened workflow phases/logging

Rationale

  • Prevents workflow drift where old orchestrator code and hardened code diverge.
  • Keeps one execution path for future fixes and reliability improvements.

Additional completed (2026-02-26 10:53)

  • Implemented new shared skill: workflow-checkpoints
    • ~/.agents/skills/workflow-checkpoints/SKILL.md
    • ~/.agents/skills/workflow-checkpoints/lib/checkpoints.sh
    • ~/.agents/skills/workflow-checkpoints/tests/test_checkpoints.sh
  • Added URL-keyed stable checkpoint model with 7-day TTL:
    • key = sha256(normalized_url)
    • payload files by type:
      • <key>-content.json
      • <key>-analysis.json
      • <key>-plan.md
    • metadata file:
      • <key>-meta.json (expiresAtEpoch, ttl, sourceUrl)
  • Integrated checkpoints into URL research workflow (bin/url-research.sh):
    • extract-content phase: reuse from checkpoint if present, else compute and save
    • analyze-fit phase: reuse from checkpoint if present, else compute and save
    • create-plan phase: reuse from checkpoint if present, else compute and save
    • touch checkpoint TTL on reuse
  • Verified tests and syntax:
    • PASS: workflow-checkpoints tests
    • PASS: auth-api transport tests
    • PASS: gantt-tasks contract tests
    • PASS: mission-control-docs contract tests
    • bash -n for updated workflow script passed

Follow-up suggestions

  • Add explicit progress comment text when checkpoint is reused (e.g., "reused checkpoint") for user visibility.
  • Optionally add checkpoint_list <url> helper for quick debugging of cached artifacts.

Additional completed (2026-02-26 10:58-11:00)

  • Fixed all phase progress comments in URL research workflow to show consistent phase numbering (0-5):
    • Phase 0: Task created
    • Phase 1: Content extraction
    • Phase 2: Document creation
    • Phase 3: Fit analysis
    • Phase 4: Implementation plan
    • Phase 5: Final review and handoff
  • Added Phase 4 success comment immediately after plan attachment (was missing before).
  • Added source indicators to progress comments:
    • [reused checkpoint] when using cached data
    • [reused existing] when reusing doc from task description
  • Made Phase 2 idempotent by parsing task description for existing Document ID.
  • Created workflow summary doc: WORKFLOW_SUMMARY.md showing complete phase flow.
  • Verified script syntax: bash -n url-research.sh

Result

Now every phase visibly updates the task comment with a checked box, and reruns efficiently skip completed work using checkpoints + task description parsing.

Additional completed (2026-02-26 11:13)

  • Implemented cleanup + doc consolidation for Alice workflow skill:
    • Added run.sh unified entrypoint for standalone shell usage.
    • Kept OpenClaw mode explicit in SKILL.md: always execute via Alice-Researcher (sessions_spawn).
    • Updated mandatory read section to consolidated docs only:
      • SKILL.md
      • WORKFLOW_SUMMARY.md
    • Removed legacy drift-prone docs:
      • ANTI-PATTERNS.md
      • TASK-FIRST-WORKFLOW.md
  • Verified syntax:
    • bash -n run.sh
    • bash -n orchestrator.sh

Outcome

  • Inside OpenClaw: route to Alice.
  • Outside OpenClaw: run ~/.agents/skills/url-research-to-documents-and-tasks/run.sh directly.
  • Fewer docs, less drift, clearer operational path.

Additional completed (2026-02-26 11:16)

  • Implemented dry-run mode (option C):
    • --dry-run (mock generators when checkpoints missing)
    • --dry-run-real (real generators, still no writes)
  • Updated bin/url-research.sh:
    • Added flags parsing for dry-run modes
    • Added no-write behavior for task/doc/attachment/status operations
    • Checkpoints are read-only in dry-run (no put/touch writes)
    • Added dry-run summary output at end
  • Updated docs:
    • run.sh header examples for dry-run usage
    • SKILL.md standalone section includes dry-run commands
  • Validation:
    • bash -n checks passed for modified scripts

Additional completed (2026-02-26 14:29)

  • Implemented native macOS Swift CLI quote paster at scripts/skrybe.swift.
  • Added subcommand structure scaffold:
    • skrybe quotes --paste (implemented)
    • skrybe quotes --list (planned placeholder)
    • skrybe quotes --add (planned placeholder)
  • Implemented --paste flow:
    • Fetches random quote from http://localhost:3001/quote
    • Parses JSON response { "quote": string, "author": string }
    • Formats output as Quote — Author
    • Uses NSPasteboard to stage text and CGEvent Cmd+V to paste at cursor
  • Added explicit error handling for:
    • Invalid usage / unsupported subcommands
    • API URL issues, unreachable API, bad HTTP status
    • Invalid/malformed JSON response
    • Pasteboard write failures
    • Missing Accessibility permission
    • Keyboard event creation failures
  • Verified compilation with:
    • swiftc scripts/skrybe.swift -o scripts/skrybe
  • Verified CLI help output and error path when API is offline:
    • scripts/skrybe help
    • scripts/skrybe quotes --paste returns clean API-unreachable error when server is down