Agent skill

maestro:note

Capture decisions, constraints, and context to persistent memory. Global memory is injected into every session and implementation run. Per-feature memory tracks working context.

Stars 26
Forks 4

Install this agent skill to your Project

npx add-skill https://github.com/ReinaMacCredy/maestro/tree/main/skills/built-in/maestro:note

SKILL.md

Note -- Persistent Working Memory

Notes are the cross-cutting memory layer. They persist across sessions, survive context resets, and -- for global memory -- are automatically injected into every worker prompt.

Core principle: If a future session needs this to avoid a mistake, capture it. If not, skip it.

Mental Model

Two-tier system mapped to the v2 memory architecture:

  • Global Memory = pinned message in a channel. Every agent sees it, every time. Hard constraints that, if violated, produce wrong code. Workers cannot ask clarifying questions -- they need these upfront. Stored via maestro memory-write --global / maestro memory-write.
  • Feature Memory = searchable thread history scoped to the active feature. Insights, learnings, and soft observations accumulated during implementation. Available on demand, pruned periodically. Stored via maestro memory-write / maestro memory-write (defaults to active feature).
  • Promoted Memory = feature-scoped insights promoted to global after proving valuable. Use maestro memory-promote / maestro memory-promote to elevate.

When to Capture

Always:

  • Decisions that constrain future work (API choice, library version, architecture direction)
  • Constraints discovered mid-implementation (rate limits, API quirks, platform bugs)
  • User decisions on blockers (the "why" behind the choice, so no one re-asks)
  • Cross-feature dependencies ("feature X depends on auth refactor from feature Y")

Never:

  • Status updates ("started task 3") -- use maestro task-done / maestro task-block
  • Things already in spec or plan -- don't duplicate
  • Temporary debugging notes ("tried X, didn't work") -- ephemeral, discard

Decision heuristic: "Will a future session need this to avoid a mistake?" Yes = capture. No = skip.

Global Memory vs Feature Memory

Attribute Global Memory Feature Memory
Injection Every session + every worker prompt On-demand via maestro memory-read
Audience All agents, including workers who cannot ask Orchestrator and feature workers
Content Hard constraints, blocking decisions Insights, learnings, soft preferences
Lifespan Until constraint lifts Until feature completes or pruned
Volume 3-7 entries max (more = noise) Unlimited (prune periodically)
Format Imperative constraint Dated insight with feature context
Storage .maestro/memory/ .maestro/features/<feature-name>/memory/

Promoting to Global: If a feature memory note keeps causing mistakes across sessions, promote it with maestro memory-promote / maestro memory-promote. If a global note no longer applies, delete it with maestro memory-delete.

Good Notes vs Bad Notes

See reference/note-patterns.md for more examples across decisions, constraints, discoveries, and dependencies.

Arguments

$ARGUMENTS

Input Action
<content> (no flag) Write to active feature memory
--global <content> Write to global memory
--show Display all memory (maestro memory-list)
--prune Remove stale feature memory entries
--clear <scope> Clear memory (global, feature, all)

Execution

Step 1: Ensure Memory System Ready

Check that maestro is initialized (maestro status --json or maestro status). If .maestro/ does not exist: "Run maestro init first."

Step 2: Parse and Execute

Add (default or --global):

  1. Determine scope: --global writes to .maestro/memory/, default writes to active feature memory
  2. Generate a key from the content (kebab-case, descriptive, 2-4 words)
  3. Call maestro memory-write --key <key> "<content>" (add --global for global scope)
  4. Display confirmation with the key and scope

Show (--show):

  1. Call maestro memory-list to show all memory entries
  2. If no entries: "No memory entries found. Use maestro:note <content> to start."

Prune (--prune):

  1. Call maestro memory-list for the active feature
  2. Review each entry for staleness
  3. Remove stale entries with maestro memory-delete --key <key>
  4. Keep global memory intact
  5. Show what was removed and what was kept
  6. If uncertain about an item, ask the user

Clear (--clear <scope>):

  1. Parse scope: global, feature, or all
  2. If clearing global: confirm with user first
  3. Delete all entries in the specified scope
  4. Confirm deletion

Note Lifecycle

Create --> Review (session start) --> Update (constraint changes) --> Promote/Archive/Delete (resolved)
Trigger Action
New decision or constraint discovered Write memory (choose scope)
Session start Review global memory -- still accurate?
Constraint changed Update the memory entry (overwrite with same key)
Feature shipped Prune feature memory, promote valuable insights to global
Constraint lifted Delete the global memory entry
Insight proved valuable across features maestro memory-promote to elevate to global

Anti-Patterns

Anti-Pattern Why It Hurts Fix
Notes too vague ("the API thing") Future sessions cannot act on it Include specifics: which API, what behavior, what constraint
Notes too long (full paragraphs) Agents skim or skip long entries One line per note. Details go in a separate memory entry
Duplicating spec/plan content Two sources of truth that drift apart Reference the spec; don't copy it
Global memory bloat (>7 items) Agents stop reading; noise drowns signal Prune aggressively. Only hard constraints belong in global
Never pruning feature memory Graveyard of stale insights misleads agents Prune after each feature completion
Status updates as notes Notes are for decisions and constraints, not progress Use maestro task-done / maestro task-block for status

Section Contracts

Scope Written By Read By Persistence
Global memory User via --global, maestro memory-promote maestro:implement workers, all sessions Until manually deleted
Feature memory Default maestro:note, auto-capture during implementation Orchestrator and feature workers Until feature completes or pruned

Relationship to Other Commands

  • maestro init -- Initialize maestro for the project
  • maestro feature-create -- Create a feature to work on
  • maestro skill maestro:new-feature -- Create feature with spec and plan
  • maestro skill maestro:implement -- Execute implementation (reads global memory at start)
  • maestro skill maestro:review -- Verify implementation correctness
  • maestro status --json -- Check progress across all features
  • maestro skill maestro:note -- You are here. Capture decisions and context to persistent memory

Global memory is automatically loaded by maestro:implement at execution start and injected into worker prompts. Feature memory accumulates insights from both manual notes and auto-capture during implementation. Use --prune after each feature completion to keep memory relevant. Use maestro memory-promote to elevate high-value feature insights to global scope.

Expand your agent's capabilities with these related and highly-rated skills.

ReinaMacCredy/maestro

maestro-skill-author

Create, update, or debug maestro built-in skills. Covers SKILL.md frontmatter, reference directory structure, step-file architecture, build-time embedding, naming conventions, alias management, and registry validation. Use when creating a new maestro built-in skill, modifying an existing SKILL.md, adding reference files, debugging skill loading failures, updating the skills registry, or working on the skills full port. Also use when frontmatter validation fails, skills don't appear in skill-list, or reference files fail to load.

26 4
Explore
ReinaMacCredy/maestro

maestro:brainstorming

Use before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.

26 4
Explore
ReinaMacCredy/maestro

mcp-builder

Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).

26 4
Explore
ReinaMacCredy/maestro

maestro:plan-review-loop

Deep-review any plan (maestro, Codex, Claude Code plan mode, or plain markdown) using iterative subagent review loops with BMAD-inspired adversarial edge-case discovery. Spawns reviewer subagents that find issues using pre-mortem, inversion, and red-team techniques, auto-fixes them with structured fix strategies, and re-reviews until the plan passes with zero actionable issues. Use when the user says 'review the plan', 'deep review', 'check the plan thoroughly', 'review loop', 'validate before approving', or wants rigorous plan validation before execution. Also use proactively before plan-approve when the plan is complex or high-risk.

26 4
Explore
ReinaMacCredy/maestro

maestro:research

Structured research workflow for maestro features. Guides tool selection across three tiers (codebase exploration, Context7 for library docs, NotebookLM for deep analysis), defines research patterns, finding organization via memory_write, and completion criteria. Use during the research pipeline stage after feature_create and before plan_write. Also use when investigating a problem space, comparing technical approaches, gathering context on unfamiliar code, or needing to understand external library APIs before making architectural decisions.

26 4
Explore
ReinaMacCredy/maestro

cli-for-agents

Designs or reviews CLIs so coding agents can run them reliably: non-interactive flags, layered --help with examples, stdin/pipelines, fast actionable errors, idempotency, dry-run, and predictable structure. Use when building a CLI, adding commands, writing --help, or when the user mentions agents, terminals, or automation-friendly CLIs.

26 4
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results