Skip to content

feat: bd spark — capture content-worthy moments during sessions #3229

@LV-262

Description

@LV-262

Issue Draft: bd spark

Title

feat: bd spark — capture content-worthy moments during sessions

Body

Problem

I've been running beads as my primary tracker during AI pair programming sessions, and there's a gap I'm looking to address. There are many moments that come out of a session that I would like to capture later for content creation and writing purposes.

These moments aren't things that require bd create. They're not operational facts like bd remember stores ("dolt requires CGO", "deploy target is Railway"). They're decision points, "aha moments", and story threads that I often find myself losing when going back through and summarizing work over many prior sessions.

bd remember is close but it solves a different problem of storing persistent facts. There's an opportunity for a lightweight way to capture moments to retain for content material such as blog posts, talks, and documentation.

Proposed Solution

Add bd spark and bd sparks commands following the same pattern as remember/memories:

# Capture a moment with a tag
bd spark "compliance is choreography, not a checklist" --tag analogy
bd spark "the pizza diagram works because what's missing is the point" --tag framing
bd spark "fresh context windows are a feature, not a bug" --tag insight

# Retrieve
bd sparks                         # list all sparks
bd sparks --tag analogy           # filter by tag
bd sparks --search "compliance"   # keyword search
bd sparks --since 7d              # recent sparks

The agent or the human can call bd spark mid-session when something worth keeping surfaces.

Implementation Approach

After reviewing the codebase, this is intended to follow the memory.go pattern:

  • New file: cmd/bd/spark.go
  • Storage: config table with kv.spark.* prefix (same pattern as kv.memory.*)
  • Key format: kv.spark.<timestamp>.<tag>.<slug> for chronological sorting and tag filtering
  • Commands: sparkCmd and sparksCmd registered to rootCmd via Cobra
  • Group: Alongside memory commands in "setup", or a new group if that fits better
  • No schema changes. Uses existing SetConfig/GetConfig/GetAllConfig

Tags

Tags would be free-form strings (not an enforced enum), but docs would suggest common ones:

Tag Use case
analogy Metaphors and comparisons that clarify
framing Ways of describing a problem that shift perspective
insight Realizations or aha moments
discovery Something learned that was unexpected
meta Observations about process or workflow

Why this fits beads

Beads already bridges the gap between issue tracking and developer workflow. Sparks extend that into the creative side of development: the observations that happen while building but aren't about the build itself.

At what point does a good session become more than shipped code? When the thinking behind it is capturable too.

The implementation is intended to be minimal with the UX mirroring bd remember.

Open Questions

  • Naming: Is spark/sparks the right name? Alternatives: note/notes, seed/seeds, moment/moments. Happy to go with whatever fits the project's voice.
  • Group placement: Should this sit alongside memory commands in "setup", or does it warrant its own group?
  • Key format: The timestamp-first key (kv.spark.2026-04-12T14:30:22Z.analogy.slug) enables chronological listing. Is there a preferred key format convention?
  • Scope: Should bd spark also support --forget / cleanup, or keep the first PR minimal and add that later?

I'm a first-time contributor to any open source repo and honestly this is super exciting for me. Happy to implement this and submit a PR. Let me know if the scope or approach needs adjusting.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions