subagent-driven-development
OBobra/superpowers298k2,631 new stars in the last 7 days
Use when wiring inMemory() from @tanstack/ai-memory/in-memory — explains setup, options (embedder, extract, topK/minScore), when to pick it (dev/tests/single-process demos), and what NOT to use it for (multi-process or persistent).
Zero-dependency recall/save adapter backed by a Map. Records vanish on process
restart.
Map; users get
inconsistent memory.For production, use redis() (see the tanstack-ai-memory-redis skill).
import { memoryMiddleware } from '@tanstack/ai-memory'
import { inMemory } from '@tanstack/ai-memory/in-memory'
const memory = inMemory()
// A static scope is fine for dev/tests; derive it from the session in real apps.
memoryMiddleware({
adapter: memory,
scope: { threadId: 'demo-thread', userId: 'alice' },
})
inMemory(options?) accepts:
topK (default 6), minScore (default 0.15), kinds — recall tuning.embedder: { embed(text): Promise<number[]> } — enable semantic scoring (both
recall and save embed through it).extract(turn, scope) — return derived facts to persist alongside the raw turn
(e.g. call an LLM to pull out preferences). Without it, save stores the raw
user/assistant messages and recall scores them lexically + by recency.render(hits) — replace the built-in prompt renderer.The adapter scans every record in a scope per recall. Fine up to ~100k records; beyond
that, switch to Redis.
OBobra/superpowers298k2,631 new stars in the last 7 days
MAmattpocock/skills288k10,178 new stars in the last 7 days
MAmattpocock/skills288k10,178 new stars in the last 7 days
MAmattpocock/skills288k10,178 new stars in the last 7 days
AFaffaan-m/ECC278k4,046 new stars in the last 7 days
AFaffaan-m/ECC278k4,046 new stars in the last 7 days