Files
phernandez 3ff40d51fc feat(plugins): rebuild Claude Code plugin as the memory bridge (v0.4 Phase 1)
Reframes the Claude Code plugin as the bridge between Claude's working
memory and Basic Memory's durable graph, per plugins/claude-code/DESIGN.md.
This is the minimal-first vertical slice with a clean break from v0.3.x.

Added:
- hooks/session-start.sh — SessionStart brief: one structured `type: task`
  query against the configured (or default) project + always-on recall
  prompt. Plain stdout, silent if BM is absent.
- hooks/pre-compact.sh — PreCompact checkpoint: writes a `type: session`
  note before compaction (extractive). Only writes when primaryProject is
  set, so it never touches an un-opted-in graph.
- output-styles/basic-memory.md — capture reflexes (search-first, typed
  decision notes, cite permalinks); keep-coding-instructions: true.
- schemas/{session,decision,task}.md — picoschema seeds (validation: warn)
  so plugin-written notes are findable via metadata_filters. task mirrors
  the memory-tasks skill.
- settings.example.json — copyable config with sensible defaults.

Removed (clean break):
- the six bundled skills, the basic-memory-manager agent, the
  PreToolUse/PostToolUse write_note hooks, the basic-memory config-note
  convention, and PLUGIN.md. Equivalent workflows live in top-level skills/.

Other:
- Rewrote scripts/validate_claude_plugin.py for the new layout (hooks +
  output-style + schemas; agent dropped; skills optional). Passes
  `just package-check-claude-code` incl. `claude plugin validate --strict`.
- Rewrote README around the bridge story; updated CHANGELOG, marketplace
  descriptions, and the AGENTS.md package-check note.
- Hooks tested end-to-end against throwaway projects (brief surfaces tasks;
  checkpoint writes a queryable session note; both degrade silently).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: phernandez <paul@basicmachines.co>
2026-05-31 12:31:08 -05:00

1.5 KiB

title, type, entity, version, schema, settings
title type entity version schema settings
Task schema Task 1
description status?(enum, current state) assigned_to? steps?(array) current_step? context? started? completed? blockers?(array) parent_task?
string, what needs to be done
active
blocked
done
abandoned
string, who is working on this string, ordered steps to complete integer, which step number we're on (1-indexed) string, key context needed to resume after memory loss string, when work began string, when work finished string, what's preventing progress Task, parent task if this is a subtask
validation
warn

Task

A Task is work-in-progress tracked as a note, so it survives context compaction and shows up in the next session's brief. This schema is the same one the framework-agnostic memory-tasks skill defines — kept identical here so the plugin and the skill agree on the shape. For the full task workflow (creating, updating, completing), use that skill.

Tasks are found by the SessionStart hook via structured recall: search_notes(metadata_filters={"type": "task", "status": "active"}).

Frontmatter vs observations

Put queryable fields (status, priority, current_step) in frontmatter so metadata_filters can find them, and mirror them as - [status] active observations so schema_validate sees them. note_type="Task" is stored as lowercase task in frontmatter, so search with note_types=["task"]. Validation is warn — advisory, never blocking.