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.
Issue Draft:
bd sparkTitle
feat:
bd spark— capture content-worthy moments during sessionsBody
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 likebd rememberstores ("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 rememberis 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 sparkandbd sparkscommands following the same pattern asremember/memories:The agent or the human can call
bd sparkmid-session when something worth keeping surfaces.Implementation Approach
After reviewing the codebase, this is intended to follow the
memory.gopattern:cmd/bd/spark.goconfigtable withkv.spark.*prefix (same pattern askv.memory.*)kv.spark.<timestamp>.<tag>.<slug>for chronological sorting and tag filteringsparkCmdandsparksCmdregistered torootCmdvia Cobra"setup", or a new group if that fits betterSetConfig/GetConfig/GetAllConfigTags
Tags would be free-form strings (not an enforced enum), but docs would suggest common ones:
analogyframinginsightdiscoverymetaWhy 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
spark/sparksthe right name? Alternatives:note/notes,seed/seeds,moment/moments. Happy to go with whatever fits the project's voice."setup", or does it warrant its own group?kv.spark.2026-04-12T14:30:22Z.analogy.slug) enables chronological listing. Is there a preferred key format convention?bd sparkalso 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.