feat: add SOP skills, daily notes, and memory forgetting #1

Merged
morten-olsen merged 1 commit from feat/skills-daily-notes-forget into main 2026-08-17 10:16:27 +02:00
Owner

Skills:

  • Contribute a skills/ directory to Pi through the resources_discover
    hook, so stored SKILL.md procedures load on demand by description
  • Add skill_list and confirmation-gated skill_update, validating name
    and description against the Agent Skills spec so a written skill is
    always loadable by Pi's own loader

Daily notes:

  • Add per-day daily/YYYY-MM-DD.md scratchpads for light orchestration,
    snapshotted at session start to preserve the prompt-cache prefix
  • Add daily_note_get and daily_note_update, capped at 8 KiB

Forgetting:

  • Add MemoryEngine.forget, removing canonical Markdown files and their
    index rows for cases supersession cannot express, where the key itself
    changes and the old record has no successor
  • Expose it as confirmation-gated memory_forget

Following:

  • Default memory_follow to scope: all, since the agent is navigating a
    link it has already been shown, and report per-key reasons so a filtered
    link is not mistaken for a missing one

Also extract index row parsing into memory-index-rows.ts, and scope the
max-params ESLint exemption to src/pi/*.ts, where Pi's fixed
five-argument execute signature applies.

Skills: - Contribute a `skills/` directory to Pi through the `resources_discover` hook, so stored SKILL.md procedures load on demand by description - Add `skill_list` and confirmation-gated `skill_update`, validating name and description against the Agent Skills spec so a written skill is always loadable by Pi's own loader Daily notes: - Add per-day `daily/YYYY-MM-DD.md` scratchpads for light orchestration, snapshotted at session start to preserve the prompt-cache prefix - Add `daily_note_get` and `daily_note_update`, capped at 8 KiB Forgetting: - Add `MemoryEngine.forget`, removing canonical Markdown files and their index rows for cases supersession cannot express, where the key itself changes and the old record has no successor - Expose it as confirmation-gated `memory_forget` Following: - Default `memory_follow` to `scope: all`, since the agent is navigating a link it has already been shown, and report per-key reasons so a filtered link is not mistaken for a missing one Also extract index row parsing into memory-index-rows.ts, and scope the `max-params` ESLint exemption to `src/pi/*.ts`, where Pi's fixed five-argument `execute` signature applies.
Skills:
- Contribute a `skills/` directory to Pi through the `resources_discover`
  hook, so stored SKILL.md procedures load on demand by description
- Add `skill_list` and confirmation-gated `skill_update`, validating name
  and description against the Agent Skills spec so a written skill is
  always loadable by Pi's own loader

Daily notes:
- Add per-day `daily/YYYY-MM-DD.md` scratchpads for light orchestration,
  snapshotted at session start to preserve the prompt-cache prefix
- Add `daily_note_get` and `daily_note_update`, capped at 8 KiB

Forgetting:
- Add `MemoryEngine.forget`, removing canonical Markdown files and their
  index rows for cases supersession cannot express, where the key itself
  changes and the old record has no successor
- Expose it as confirmation-gated `memory_forget`

Following:
- Default `memory_follow` to `scope: all`, since the agent is navigating a
  link it has already been shown, and report per-key reasons so a filtered
  link is not mistaken for a missing one

Also extract index row parsing into memory-index-rows.ts, and scope the
`max-params` ESLint exemption to `src/pi/*.ts`, where Pi's fixed
five-argument `execute` signature applies.
morten-olsen deleted branch feat/skills-daily-notes-forget 2026-08-17 10:16:27 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ai/pi-memory!1
No description provided.