dml

star 8

Use DML (Deterministic Memory Layer) to track facts, constraints, and decisions. Invoke when helping with planning tasks, or when the user wants to track information with audit trails.

daveremy By daveremy schedule Updated 2/1/2026

name: dml description: Use DML (Deterministic Memory Layer) to track facts, constraints, and decisions. Invoke when helping with planning tasks, or when the user wants to track information with audit trails.

Deterministic Memory Layer

You have DML MCP tools available. Use them to track facts, constraints, and decisions.

Tools Available

  • memory.add_fact: Record raw data (numbers, names, attributes)
  • memory.add_constraint: Record rules and requirements
  • memory.record_decision: Record choices, commitments, and confirmations
  • memory.query: Search memory before making recommendations
  • memory.get_context: Get full memory state
  • memory.trace_provenance: Trace where a fact came from
  • memory.time_travel: View memory at a past point
  • memory.simulate_timeline: "What if" counterfactual analysis

Facts vs Decisions

Facts = raw data, attributes, values

  • "My budget is $4000" → fact (budget=4000)
  • "I live in Tucson" → fact (location=Tucson)
  • "I use a wheelchair" → fact (mobility=wheelchair)

Decisions = choices, confirmations, commitments

  • "Let's go with April 10-20" → decision (user chose dates)
  • "I'll take option 2" → decision (user selected)
  • "Book the Hakone hotel" → decision (user committed)
  • "Yes, that itinerary looks good" → decision (user confirmed)

Key rule: When the user CHOOSES or CONFIRMS something, record it as a decision, not just a fact update.

When to Record

Record facts for raw information:

  • Amounts, budgets, prices, counts
  • Places, destinations, locations
  • Attributes (wheelchair type, dietary needs)
  • Preferences as data points

Update facts when values change:

  • "Actually, make that 8 people" → update guest_count fact
  • "My budget changed to $3000" → update budget fact
  • Any correction or change to previously recorded data

Record constraints for rules:

  • "must have", "need", "require" → required constraint
  • "can't", "won't", "avoid", "never" → prohibition constraint
  • "prefer", "would like" → preferred constraint

Record decisions for choices:

  • User confirms a date, option, or plan
  • User says "yes", "let's do it", "go with that"
  • User commits to booking/reserving something
  • You make a recommendation they accept

Example Flow

User: "My budget is $5000" → add_fact(key="budget", value="5000")

User: "Actually, my budget is only $3000 now" → add_fact(key="budget", value="3000") # Updates existing fact

User: "Planning for 6 guests" → add_fact(key="guest_count", value="6")

User: "Two more people are coming, so 8 total" → add_fact(key="guest_count", value="8") # Updates existing fact

User: "I need wheelchair accessible places" → add_constraint(text="wheelchair accessible required", priority="required")

User: "Let's do April 12-19" → record_decision(text="Travel dates: April 12-19, 2026", rationale="User confirmed dates", topic="dates")

Important

  • Be proactive: Record facts immediately when the user mentions them, don't wait to be asked
  • Update facts when values change - call add_fact again with the same key
  • Record decisions for ANY user confirmation or choice
  • Check constraints before recording decisions (violations will be blocked)
  • Use query to refresh your memory before recommendations
Install via CLI
npx skills add https://github.com/daveremy/deterministic-memory-layer --skill dml
Repository Details
star Stars 8
call_split Forks 2
navigation Branch main
article Path SKILL.md
More from Creator