Memory manager
Internal plugin skill. Use this skill when a plugin command directs you to perform a memory operation: log-delegation, resolve-delegation, update-checkin, or query-pending. Called by /schedule, /complete-task, /delegate, /review-week, /today, and /review-org. Do NOT invoke this skill based on user phrases — it is a plugin-internal service.From its SKILL.md
npx -y skills add chriscantu/claude-eisenhower --skill memory-managerAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.4 KB, as published. Nobody here has run it
Memory Manager
Single writer for delegation memory CREATE and UPDATE operations in the
claude-eisenhower plugin. DELETE operations are owned by /forget
(commands/forget.md) and write directly to memory/glossary.md and
memory/people/*.md — see issue #42 for the rationale (the destructive
correction loop has different atomicity, confirmation, and PII concerns from
the routine operations below).
This partition is intentional. The schema is shared (see
docs/specs/memory-schema-spec.md), so changes to the row format must update
both this skill AND commands/forget.md's delete logic in the same commit.
Adding a new operation here? If it's CREATE/UPDATE, extend this skill. If it's
DELETE, extend /forget instead.
The backend is local markdown files only — there is no external skill fallback or
primary store. See docs/adrs/single-backend-memory.md for the architectural decision
that retired the prior dual-backend abstraction.
See references/memory-operations.md for local file formats, return shapes, and
failure mode details.
Gotchas
High-signal traps. Read before adding or changing an operation.
- Every CREATE/UPDATE is a DUAL write. Each operation touches BOTH
memory/glossary.md(the## Stakeholder Follow-upstable) ANDmemory/people/[alias-filename].md. Update one without the other and the two stores desync —/forgetandquery-pendingthen read inconsistent state. - DELETE does not live here. This skill is CREATE/UPDATE only. Deletes are
owned by
/forget(commands/forget.md). Routing a delete through this skill is wrong; routing a CREATE/UPDATE through/forgetis wrong. - The row schema is shared with
/forget. It is specced indocs/specs/memory-schema-spec.md. Any change to the row/column format MUST update this skill ANDcommands/forget.md's delete logic in the same commit, or the other writer's reads break. - Dedup is the CALLER's job.
query-pendingreturns raw pending rows; the calling command suppresses entries already in TASKS.md Delegated (TASKS.md is authoritative). This skill never cross-references TASKS.md itself. - Alias filename is derived per spec — don't guess it.
memory/people/filenames follow the derivation rule in the schema spec. An ad-hoc filename orphans the per-person file from its glossary row. - Pending-status match is case-insensitive. Filter rows on
Pendingcase-insensitively; an exact-case compare silently drops valid entries.
Operations
log-delegation
Purpose: Create a new pending delegation entry when a task is delegated.
Inputs:
alias— delegate's display alias (e.g., "Alex R.")task_title— title of the delegated taskcheck_in_date— YYYY-MM-DD date for follow-up
Execution:
- Ensure
memory/people/directory exists (create if absent). - Write using the canonical schema in
docs/specs/memory-schema-spec.md:- Append a new row to the
## Stakeholder Follow-upstable inmemory/glossary.md:| [alias] | [task_title] | [YYYY-MM-DD] | [check_in_date] | Pending | - Create or append to
memory/people/[alias-filename].md(filename derived per spec):| [task_title] | [YYYY-MM-DD] | [check_in_date] | Pending | — |
- Append a new row to the
- If the write fails: "Could not record this follow-up ([reason]). Track it manually."
Returns: success | failed
resolve-delegation
Purpose: Mark a pending delegation as resolved when the delegated task is complete.
Inputs:
alias— delegate's display aliastask_title— title of the delegated taskresolved_date— YYYY-MM-DD date of resolution (today)
Execution:
- Find the row matching
alias+task_titlein the## Stakeholder Follow-upstable ofmemory/glossary.md - Update its Status cell to:
Resolved — [resolved_date] - Apply the same status update to the matching row in
memory/people/[alias-filename].md - If no matching row found: log warning internally, continue (non-blocking).
Returns: success | not-found (non-blocking)
update-checkin
Purpose: Extend a delegation's check-in date when a task is still in progress.
Inputs:
alias— delegate's display aliastask_title— title of the delegated tasknew_check_in_date— YYYY-MM-DD new check-in date
Execution:
- Find the row matching
alias+task_titlein the## Stakeholder Follow-upstable ofmemory/glossary.md - Update its Check-by cell to
new_check_in_date - Apply the same check-in update to the matching row in
memory/people/[alias-filename].md - If no matching row found: log warning internally, continue (non-blocking).
Returns: success | not-found (non-blocking)
query-pending
Purpose: Retrieve pending delegation entries with check-in dates within a given range.
Inputs:
within_business_days— number of business days from today to search (e.g., 5)
Execution:
- Read the
## Stakeholder Follow-upstable inmemory/glossary.md. If the file is missing or unreadable, return[](non-blocking). - Parse rows with Status =
Pending(case-insensitive). - Filter for: Check-by date within
within_business_daysbusiness days from today.
Deduplication (caller's responsibility): Cross-reference results against TASKS.md Delegated records before displaying. If the same alias + task_title appears in both, suppress the memory-only entry — TASKS.md is the authoritative source for that record.
Returns: list of entries (see references/memory-operations.md for return shape).
Empty list if memory/glossary.md is missing or unreadable (non-blocking).
Failure Modes
| Scenario | Behavior |
|---|---|
memory/people/ missing | Create the directory; write new files |
memory/glossary.md missing on read | Return empty result (non-blocking for query-pending) |
| Write fails (permissions, disk) | Surface non-blocking warning; instruct manual tracking |
| Entry not found on resolve/update | Non-blocking; log warning internally |